{"version":3,"file":"agent-utils.cjs","names":["A2UIMiddleware","MCPAppsMiddleware","OpenGenerativeUIMiddleware","extractForwardableHeaders","RunAgentInputSchema"],"sources":["../../../../../src/v2/runtime/handlers/shared/agent-utils.ts"],"sourcesContent":["import {\n  AbstractAgent,\n  RunAgentInput,\n  RunAgentInputSchema,\n} from \"@ag-ui/client\";\nimport { A2UIMiddleware } from \"@ag-ui/a2ui-middleware\";\nimport { MCPAppsMiddleware } from \"@ag-ui/mcp-apps-middleware\";\nimport { CopilotRuntimeLike } from \"../../core/runtime\";\nimport { OpenGenerativeUIMiddleware } from \"../../open-generative-ui-middleware\";\nimport { extractForwardableHeaders } from \"../header-utils\";\nimport { logger } from \"@copilotkit/shared\";\n\ntype MiddlewareCapableAgent = AbstractAgent & {\n  use?: (middleware: unknown) => void;\n  headers?: Record<string, string>;\n};\n\nexport interface RunAgentParameters {\n  request: Request;\n  runtime: CopilotRuntimeLike;\n  agentId: string;\n}\n\nexport interface ConnectRequestBody extends RunAgentInput {\n  lastSeenEventId?: string | null;\n}\n\nexport async function cloneAgentForRequest(\n  runtime: CopilotRuntimeLike,\n  agentId: string,\n): Promise<AbstractAgent | Response> {\n  const agents = await runtime.agents;\n\n  if (!agents[agentId]) {\n    return new Response(\n      JSON.stringify({\n        error: \"Agent not found\",\n        message: `Agent '${agentId}' does not exist`,\n      }),\n      {\n        status: 404,\n        headers: { \"Content-Type\": \"application/json\" },\n      },\n    );\n  }\n\n  return (agents[agentId] as AbstractAgent).clone() as AbstractAgent;\n}\n\nexport function configureAgentForRequest(params: {\n  runtime: CopilotRuntimeLike;\n  request: Request;\n  agentId: string;\n  agent: AbstractAgent;\n}): void {\n  const { runtime, request, agentId } = params;\n  const agent = params.agent as MiddlewareCapableAgent;\n\n  if (runtime.a2ui) {\n    const { agents: targetAgents, ...a2uiOptions } = runtime.a2ui;\n    const shouldApply = !targetAgents || targetAgents.includes(agentId);\n    if (shouldApply && typeof agent.use === \"function\") {\n      agent.use(new A2UIMiddleware(a2uiOptions));\n    }\n  }\n\n  if (runtime.mcpApps?.servers?.length) {\n    const mcpServers = runtime.mcpApps.servers\n      .filter((server) => !server.agentId || server.agentId === agentId)\n      .map((server) => {\n        const mcpServer = { ...server };\n        delete mcpServer.agentId;\n        return mcpServer;\n      });\n\n    if (mcpServers.length > 0 && typeof agent.use === \"function\") {\n      agent.use(new MCPAppsMiddleware({ mcpServers }));\n    }\n  }\n\n  if (runtime.openGenerativeUI) {\n    const config = runtime.openGenerativeUI;\n    const targetAgents = typeof config === \"object\" ? config.agents : undefined;\n    const shouldApply = !targetAgents || targetAgents.includes(agentId);\n    if (shouldApply && typeof agent.use === \"function\") {\n      agent.use(new OpenGenerativeUIMiddleware());\n    }\n  }\n\n  if (agent.headers) {\n    agent.headers = {\n      ...agent.headers,\n      ...extractForwardableHeaders(request),\n    };\n  }\n}\n\nexport async function parseRunRequest(\n  request: Request,\n): Promise<RunAgentInput | Response> {\n  try {\n    const requestBody = await request.json();\n    return RunAgentInputSchema.parse(requestBody);\n  } catch (error) {\n    logger.error(\"Invalid run request body:\", error);\n    return new Response(\n      JSON.stringify({\n        error: \"Invalid request body\",\n        details: error instanceof Error ? error.message : String(error),\n      }),\n      {\n        status: 400,\n        headers: { \"Content-Type\": \"application/json\" },\n      },\n    );\n  }\n}\n\nexport async function parseConnectRequest(request: Request): Promise<\n  | Response\n  | {\n      input: RunAgentInput;\n      lastSeenEventId: string | null;\n    }\n> {\n  try {\n    const requestBody = await request.json();\n    const input = RunAgentInputSchema.parse(requestBody);\n    let lastSeenEventId: string | null = null;\n\n    if (\n      \"lastSeenEventId\" in (requestBody as Record<string, unknown>) &&\n      (typeof (requestBody as Record<string, unknown>).lastSeenEventId ===\n        \"string\" ||\n        (requestBody as Record<string, unknown>).lastSeenEventId === null)\n    ) {\n      lastSeenEventId =\n        (requestBody as ConnectRequestBody).lastSeenEventId ?? null;\n    }\n\n    return { input, lastSeenEventId };\n  } catch (error) {\n    logger.error(\"Invalid connect request body:\", error);\n    return new Response(\n      JSON.stringify({\n        error: \"Invalid request body\",\n        details: error instanceof Error ? error.message : String(error),\n      }),\n      {\n        status: 400,\n        headers: { \"Content-Type\": \"application/json\" },\n      },\n    );\n  }\n}\n"],"mappings":";;;;;;;;;;AA2BA,eAAsB,qBACpB,SACA,SACmC;CACnC,MAAM,SAAS,MAAM,QAAQ;AAE7B,KAAI,CAAC,OAAO,SACV,QAAO,IAAI,SACT,KAAK,UAAU;EACb,OAAO;EACP,SAAS,UAAU,QAAQ;EAC5B,CAAC,EACF;EACE,QAAQ;EACR,SAAS,EAAE,gBAAgB,oBAAoB;EAChD,CACF;AAGH,QAAQ,OAAO,SAA2B,OAAO;;AAGnD,SAAgB,yBAAyB,QAKhC;CACP,MAAM,EAAE,SAAS,SAAS,YAAY;CACtC,MAAM,QAAQ,OAAO;AAErB,KAAI,QAAQ,MAAM;EAChB,MAAM,EAAE,QAAQ,cAAc,GAAG,gBAAgB,QAAQ;AAEzD,OADoB,CAAC,gBAAgB,aAAa,SAAS,QAAQ,KAChD,OAAO,MAAM,QAAQ,WACtC,OAAM,IAAI,IAAIA,sCAAe,YAAY,CAAC;;AAI9C,KAAI,QAAQ,SAAS,SAAS,QAAQ;EACpC,MAAM,aAAa,QAAQ,QAAQ,QAChC,QAAQ,WAAW,CAAC,OAAO,WAAW,OAAO,YAAY,QAAQ,CACjE,KAAK,WAAW;GACf,MAAM,YAAY,EAAE,GAAG,QAAQ;AAC/B,UAAO,UAAU;AACjB,UAAO;IACP;AAEJ,MAAI,WAAW,SAAS,KAAK,OAAO,MAAM,QAAQ,WAChD,OAAM,IAAI,IAAIC,6CAAkB,EAAE,YAAY,CAAC,CAAC;;AAIpD,KAAI,QAAQ,kBAAkB;EAC5B,MAAM,SAAS,QAAQ;EACvB,MAAM,eAAe,OAAO,WAAW,WAAW,OAAO,SAAS;AAElE,OADoB,CAAC,gBAAgB,aAAa,SAAS,QAAQ,KAChD,OAAO,MAAM,QAAQ,WACtC,OAAM,IAAI,IAAIC,kEAA4B,CAAC;;AAI/C,KAAI,MAAM,QACR,OAAM,UAAU;EACd,GAAG,MAAM;EACT,GAAGC,+CAA0B,QAAQ;EACtC;;AAIL,eAAsB,gBACpB,SACmC;AACnC,KAAI;EACF,MAAM,cAAc,MAAM,QAAQ,MAAM;AACxC,SAAOC,kCAAoB,MAAM,YAAY;UACtC,OAAO;AACd,4BAAO,MAAM,6BAA6B,MAAM;AAChD,SAAO,IAAI,SACT,KAAK,UAAU;GACb,OAAO;GACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;GAChE,CAAC,EACF;GACE,QAAQ;GACR,SAAS,EAAE,gBAAgB,oBAAoB;GAChD,CACF;;;AAIL,eAAsB,oBAAoB,SAMxC;AACA,KAAI;EACF,MAAM,cAAc,MAAM,QAAQ,MAAM;EACxC,MAAM,QAAQA,kCAAoB,MAAM,YAAY;EACpD,IAAI,kBAAiC;AAErC,MACE,qBAAsB,gBACrB,OAAQ,YAAwC,oBAC/C,YACC,YAAwC,oBAAoB,MAE/D,mBACG,YAAmC,mBAAmB;AAG3D,SAAO;GAAE;GAAO;GAAiB;UAC1B,OAAO;AACd,4BAAO,MAAM,iCAAiC,MAAM;AACpD,SAAO,IAAI,SACT,KAAK,UAAU;GACb,OAAO;GACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;GAChE,CAAC,EACF;GACE,QAAQ;GACR,SAAS,EAAE,gBAAgB,oBAAoB;GAChD,CACF"}