{"version":3,"sources":["/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-JC6XNNMC.cjs","../../src/controllers/a2a.controller.ts"],"names":[],"mappings":"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","file":"/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-JC6XNNMC.cjs","sourcesContent":[null,"import type {\n\tA2AResponse,\n\tAgentCard,\n\tJSONRPCErrorResponse,\n\tJSONRPCSuccessResponse,\n} from \"@a2a-js/sdk\";\nimport type {\n\tAgentExecutor,\n\tExecutionEventBusManager,\n\tTaskStore,\n} from \"@a2a-js/sdk/server\";\nimport {\n\tA2AError,\n\tDefaultExecutionEventBusManager,\n\tDefaultRequestHandler,\n\tJsonRpcTransportHandler,\n} from \"@a2a-js/sdk/server\";\nimport type { Request, Response } from \"express\";\nimport type { A2AService } from \"@/services/a2a.service.js\";\nimport { loggers } from \"@/utils/logger.js\";\n\n/**\n * Handles the transport layer for A2A communication.\n * It orchestrates the A2A-JS SDK components and manages the HTTP request/response lifecycle.\n */\n\nclass AINRequestHandler extends DefaultRequestHandler {\n\tprivate cardGenerator: () => AgentCard;\n\n\tconstructor(\n\t\tcardGenerator: () => AgentCard,\n\t\ttaskStore: TaskStore,\n\t\texecutor: AgentExecutor,\n\t\teventBusManager: ExecutionEventBusManager = new DefaultExecutionEventBusManager(),\n\t) {\n\t\tconst card = cardGenerator();\n\t\tsuper(card, taskStore, executor, eventBusManager);\n\t\tthis.cardGenerator = cardGenerator;\n\t}\n\n\tasync getAgentCard(): Promise<AgentCard> {\n\t\treturn this.cardGenerator();\n\t}\n}\n\nexport class A2AController {\n\tprivate jsonRpcTransportHandler: JsonRpcTransportHandler;\n\n\tconstructor(\n\t\ta2aService: A2AService,\n\t\ttaskStore: TaskStore,\n\t\tcardGenerator: () => AgentCard,\n\t) {\n\t\t// The controller is responsible for setting up the SDK components.\n\t\tconst requestHandler = new AINRequestHandler(\n\t\t\tcardGenerator,\n\t\t\ttaskStore,\n\t\t\ta2aService, // Injecting the service here as the executor\n\t\t);\n\t\tthis.jsonRpcTransportHandler = new JsonRpcTransportHandler(requestHandler);\n\t}\n\n\t/**\n\t * Handles the POST /a2a request.\n\t */\n\tpublic handleA2ARequest = async (req: Request, res: Response) => {\n\t\ttry {\n\t\t\tconst rpcResponseOrStream = await this.jsonRpcTransportHandler.handle(\n\t\t\t\treq.body,\n\t\t\t);\n\n\t\t\t// Handle streaming responses (AsyncGenerator)\n\t\t\tif (\n\t\t\t\ttypeof (rpcResponseOrStream as any)?.[Symbol.asyncIterator] ===\n\t\t\t\t\"function\"\n\t\t\t) {\n\t\t\t\tconst stream = rpcResponseOrStream as AsyncGenerator<\n\t\t\t\t\tJSONRPCSuccessResponse,\n\t\t\t\t\tvoid,\n\t\t\t\t\tundefined\n\t\t\t\t>;\n\t\t\t\tthis.streamSse(req, res, stream);\n\t\t\t} else {\n\t\t\t\t// Handle single JSON-RPC response\n\t\t\t\tconst rpcResponse = rpcResponseOrStream as A2AResponse;\n\t\t\t\tres.status(200).json(rpcResponse);\n\t\t\t}\n\t\t} catch (error: unknown) {\n\t\t\tthis.handleError(req, res, error);\n\t\t}\n\t};\n\n\tprivate async streamSse(\n\t\treq: Request,\n\t\tres: Response,\n\t\tstream: AsyncGenerator<JSONRPCSuccessResponse, void, undefined>,\n\t) {\n\t\tres.setHeader(\"Content-Type\", \"text/event-stream\");\n\t\tres.setHeader(\"Cache-Control\", \"no-cache\");\n\t\tres.setHeader(\"Connection\", \"keep-alive\");\n\t\tres.flushHeaders();\n\n\t\ttry {\n\t\t\tfor await (const event of stream) {\n\t\t\t\tres.write(`id: ${Date.now()}\\n`);\n\t\t\t\tres.write(`data: ${JSON.stringify(event)}\\n\\n`);\n\t\t\t}\n\t\t} catch (streamError: unknown) {\n\t\t\tloggers.server.error(\n\t\t\t\t`Error during SSE streaming (request ${req.body?.id}):`,\n\t\t\t\tstreamError,\n\t\t\t);\n\t\t\tconst a2aError =\n\t\t\t\tstreamError instanceof A2AError\n\t\t\t\t\t? streamError\n\t\t\t\t\t: A2AError.internalError(\"Streaming error\");\n\t\t\tconst errorResponse: JSONRPCErrorResponse = {\n\t\t\t\tjsonrpc: \"2.0\",\n\t\t\t\tid: req.body?.id || null,\n\t\t\t\terror: a2aError.toJSONRPCError(),\n\t\t\t};\n\t\t\tres.write(`id: ${Date.now()}\\n`);\n\t\t\tres.write(\"event: error\\n\");\n\t\t\tres.write(`data: ${JSON.stringify(errorResponse)}\\n\\n`);\n\t\t} finally {\n\t\t\tif (!res.writableEnded) {\n\t\t\t\tres.end();\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleError(req: Request, res: Response, error: unknown) {\n\t\tloggers.server.error(\n\t\t\t\"Unhandled error in AINAgent A2A POST handler:\",\n\t\t\terror,\n\t\t);\n\t\tconst a2aError =\n\t\t\terror instanceof A2AError\n\t\t\t\t? error\n\t\t\t\t: A2AError.internalError(\"General processing error\");\n\t\tconst errorResponse: JSONRPCErrorResponse = {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid: req.body?.id || null,\n\t\t\terror: a2aError.toJSONRPCError(),\n\t\t};\n\t\tif (!res.headersSent) {\n\t\t\tres.status(500).json(errorResponse);\n\t\t} else if (!res.writableEnded) {\n\t\t\tres.end();\n\t\t}\n\t}\n}\n"]}