{"version":3,"sources":["../../../../src/adapters/a2a/serve/server.ts"],"names":["logger","Logger","root","child","name","A2AServerConfig","host","port","protocol","A2AServer","Server","ready","config","register","input","metadata","members","length","ValueError","registerMany","_","serve","member","factory","getFactory","metadataByInput","get","executor","agentCard","createAgentCard","taskStore","InMemoryTaskStore","requestHandler","DefaultRequestHandler","eventBusManager","pushNotificationStore","pushNotificationSender","appBuilder","A2AExpressApp","expressApp","setupRoutes","express","_req","res","timeout","ms","Promise","reject","setTimeout","Error","healthPromise","healthCheck","resolve","healthy","race","status","send","listen","info","AGENT_CARD_PATH","agent","meta","description","url","version","protocolVersion","provider","defaultInputModes","defaultOutputModes","capabilities","streaming","pushNotifications","stateTransitionHistory","skills","id","tags","supportsAuthenticatedExtendedCard","toolCallingAgentFactory","ToolCallingAgentExecutor","registerFactory","ToolCallingAgent","ReActAgentFactory","ReActAgentExecutor","ReActAgent"],"mappings":"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","file":"server.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { Server } from \"@/serve/server.js\";\nimport {\n  InMemoryTaskStore,\n  TaskStore,\n  AgentExecutor,\n  DefaultRequestHandler,\n  PushNotificationSender,\n  ExecutionEventBusManager,\n  PushNotificationStore,\n} from \"@a2a-js/sdk/server\";\nimport { ReActAgentExecutor, ToolCallingAgentExecutor } from \"./agent_executor.js\";\nimport {\n  AGENT_CARD_PATH,\n  AgentCapabilities,\n  AgentCard,\n  AgentProvider,\n  AgentSkill,\n} from \"@a2a-js/sdk\";\nimport { A2AExpressApp } from \"@a2a-js/sdk/server/express\";\nimport express, { Request, Response } from \"express\";\nimport { ToolCallingAgent } from \"@/agents/toolCalling/agent.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ReActAgent } from \"@/agents/react/agent.js\";\n\nconst logger = Logger.root.child({\n  name: \"A2A server\",\n});\n\nexport class A2AServerConfig {\n  host = \"0.0.0.0\";\n  port = 9999;\n  protocol: \"jsonrpc\" = \"jsonrpc\" as const;\n}\n\ninterface A2AServerMetadata {\n  name?: string;\n  description?: string;\n  url?: string;\n  version?: string;\n  provider?: AgentProvider;\n  defaultInputModes?: string[];\n  defaultOutputModes?: string[];\n  capabilities?: AgentCapabilities;\n  skills?: AgentSkill[];\n  taskStore?: TaskStore;\n  eventBusManager?: ExecutionEventBusManager;\n  pushNotificationStore?: PushNotificationStore;\n  pushNotificationSender?: PushNotificationSender;\n  healthCheck?: () => Promise<boolean>;\n}\n\nexport class A2AServer extends Server<AnyAgent, AgentExecutor, A2AServerConfig, A2AServerMetadata> {\n  private ready = false;\n\n  constructor(config: A2AServerConfig = new A2AServerConfig()) {\n    super(config);\n  }\n\n  public register(input: AnyAgent, metadata?: A2AServerMetadata) {\n    if (this.members.length != 0) {\n      throw new ValueError(\"A2AServer only supports one agent.\");\n    } else {\n      super.register(input, metadata);\n    }\n    return this;\n  }\n\n  public registerMany(_: AnyAgent[]): this {\n    throw new ValueError(\"RegisterMany is not implemented for A2AServer\");\n  }\n\n  public async serve(): Promise<void> {\n    if (this.members.length === 0) {\n      throw new ValueError(\"No agents registered to the server.\");\n    }\n\n    const member = this.members[0];\n    const factory = this.getFactory(member);\n    const config = this.metadataByInput.get(member) || {};\n    const executor = await factory(member, config);\n    const agentCard = this.createAgentCard(config, member);\n\n    const taskStore: TaskStore = config.taskStore || new InMemoryTaskStore();\n\n    const requestHandler = new DefaultRequestHandler(\n      agentCard,\n      taskStore,\n      executor,\n      config.eventBusManager,\n      config.pushNotificationStore,\n      config.pushNotificationSender,\n    );\n\n    const appBuilder = new A2AExpressApp(requestHandler);\n    const expressApp = appBuilder.setupRoutes(express());\n\n    expressApp.get(\"/health\", async (_req: Request, res: Response) => {\n      const timeout = (ms: number) =>\n        new Promise<never>((_, reject) => setTimeout(() => reject(new Error(\"timeout\")), ms));\n\n      try {\n        const healthPromise = config.healthCheck\n          ? config.healthCheck()\n          : Promise.resolve(this.ready);\n        const healthy = await Promise.race([healthPromise, timeout(2000)]);\n        res.status(healthy ? 200 : 503).send(healthy ? \"ok\" : \"not ready\");\n      } catch {\n        res.status(503).send(\"not ready\");\n      }\n    });\n\n    expressApp.listen(this.config.port, this.config.host, () => {\n      this.ready = true;\n      logger.info(\n        `[${agentCard.name}] Server started on http://${this.config.host}:${this.config.port}`,\n      );\n      logger.info(\n        `[${agentCard.name}] Agent Card: http://${this.config.host}:${this.config.port}/${AGENT_CARD_PATH}`,\n      );\n      logger.info(`[${agentCard.name}] Press Ctrl+C to stop the server`);\n    });\n  }\n\n  private createAgentCard(config: A2AServerMetadata, agent: AnyAgent): AgentCard {\n    return {\n      name: config.name || agent.meta.name,\n      description: config.description || agent.meta.description,\n      url: config.url || `http://${this.config.host}:${this.config.port}`,\n      version: config.version || \"1.0.0\",\n      protocolVersion: \"0.1.0\",\n      provider: config.provider,\n      defaultInputModes: config.defaultInputModes || [\"text\"],\n      defaultOutputModes: config.defaultOutputModes || [\"text\", \"task-status\"],\n      capabilities: config.capabilities || {\n        streaming: true,\n        pushNotifications: false,\n        stateTransitionHistory: false,\n      },\n      skills: config.skills || [\n        {\n          id: agent.meta.name,\n          name: agent.meta.name,\n          description: agent.meta.description,\n          tags: [],\n        },\n      ],\n      supportsAuthenticatedExtendedCard: false,\n    };\n  }\n}\n\nconst toolCallingAgentFactory = async (\n  agent: AnyAgent,\n  _?: A2AServerMetadata,\n): Promise<ToolCallingAgentExecutor> => {\n  return new ToolCallingAgentExecutor(agent);\n};\n\nA2AServer.registerFactory(ToolCallingAgent, toolCallingAgentFactory);\n\nconst ReActAgentFactory = async (\n  agent: AnyAgent,\n  _?: A2AServerMetadata,\n): Promise<ReActAgentExecutor> => {\n  return new ReActAgentExecutor(agent);\n};\n\nA2AServer.registerFactory(ReActAgent, ReActAgentFactory);\n"]}