import { Request, Express, RequestHandler } from 'express'; import { U as User, A as A2ARequestHandler } from '../../a2a_request_handler-BuP9LgXH.js'; import { L as Logger } from '../../logger-DM9C11Ou.js'; import '../../extensions-DvruCIzw.js'; /** * Express Adapter for A2A Server (Core-based implementation) * * Provides A2AExpressApp using the web-standard core handlers. * This implementation bridges the Express Request/Response model to the * web-standard Request/Response model, allowing Express apps to use * the same core logic as edge runtime deployments. * * For the original Express implementation, use '@drew-foxall/a2a-js-sdk/server/express'. * * @example * ```ts * import express from 'express'; * import { A2AExpressApp } from '@drew-foxall/a2a-js-sdk/server/express-adapter'; * import { DefaultRequestHandler, InMemoryTaskStore } from '@drew-foxall/a2a-js-sdk/server'; * * const requestHandler = new DefaultRequestHandler(agentCard, new InMemoryTaskStore(), executor); * const a2aApp = new A2AExpressApp(requestHandler, { * logger: JsonLogger.create(), * enableRest: true, * }); * * const app = express(); * a2aApp.setupRoutes(app, '/a2a'); * app.listen(3000); * ``` */ /** * Express-specific options for the A2A app. */ interface ExpressA2AOptions { /** Logger instance for request/error logging */ logger?: Logger; /** Function to extract user from Express request */ userBuilder?: UserBuilder; /** Path for agent card endpoint (default: '/.well-known/agent-card.json') */ agentCardPath?: string; /** Enable REST API endpoints (default: false) */ enableRest?: boolean; /** Base path for REST endpoints (default: '/rest') */ restBasePath?: string; } /** * Type alias for Express UserBuilder. */ type UserBuilder = (req: Request) => Promise; /** * UserBuilder factory with common authentication patterns. */ declare const UserBuilder: { /** * Returns an unauthenticated user for all requests. */ noAuthentication: () => UserBuilder; }; /** * A2AExpressApp provides A2A protocol support for Express applications * using the core-based implementation. * * @example * ```ts * const a2aApp = new A2AExpressApp(requestHandler, { * logger: JsonLogger.create(), * enableRest: true, * }); * * const app = express(); * a2aApp.setupRoutes(app, '/a2a'); * ``` */ declare class A2AExpressApp { private requestHandler; private options?; constructor(requestHandler: A2ARequestHandler, options?: ExpressA2AOptions); /** * Adds A2A routes to an existing Express app. * * @param app - The Express app instance * @param baseUrl - The base URL for A2A endpoints (e.g., "/a2a") * @param middlewares - Optional array of Express middlewares to apply * @returns The Express app with A2A routes */ setupRoutes(app: Express, baseUrl?: string, middlewares?: RequestHandler[]): Express; } export { A2AExpressApp, type ExpressA2AOptions, UserBuilder };