nat.plugins.a2a.server.agent_executor_adapter#
Adapter to bridge NAT workflows with A2A AgentExecutor interface.
This module implements a message-only A2A agent for Phase 1, providing stateless request/response interactions without task lifecycle management.
Attributes#
Classes#
Adapts NAT workflows to A2A AgentExecutor interface as a message-only agent. |
Module Contents#
- logger#
- class NATWorkflowAgentExecutor(
- session_manager: nat.runtime.session.SessionManager,
Bases:
a2a.server.agent_execution.AgentExecutorAdapts NAT workflows to A2A AgentExecutor interface as a message-only agent.
This adapter implements Phase 1 support for A2A integration, providing stateless message-based interactions. Each request is handled independently without maintaining conversation state or task lifecycle.
Key characteristics: - Stateless: Each message is processed independently - Synchronous: Returns immediate responses (no long-running tasks) - Message-only: Returns Message objects, not Task objects - Concurrent: Uses SessionManager’s semaphore for concurrency control
Note: Multi-turn conversations and task-based interactions are deferred to Phase 5.
Initialize the adapter with a NAT SessionManager.
- Args:
- session_manager: The SessionManager for handling workflow execution
with concurrency control via semaphore
- session_manager#
- async execute(
- context: a2a.server.agent_execution.RequestContext,
- event_queue: a2a.server.events.EventQueue,
Execute the NAT workflow and return a message response.
This is a message-only implementation (Phase 1): 1. Extracts the user query from the A2A message 2. Runs the NAT workflow (stateless, no conversation history) 3. Returns the result as a Message object (not a Task)
For Phase 1, each message is handled independently with no state preservation between requests. The context_id and task_id from the A2A protocol are mapped to NAT’s conversation_id and user_message_id for tracing purposes only.
- Args:
context: The A2A request context containing the user message event_queue: Queue for sending the response message back to the client
- Raises:
ServerError: If validation fails or workflow execution errors occur
- _validate_request(
- context: a2a.server.agent_execution.RequestContext,
Validate the incoming request context.
- Args:
context: The request context to validate
- Returns:
True if validation fails, False if validation succeeds
- async cancel(
- _context: a2a.server.agent_execution.RequestContext,
- _event_queue: a2a.server.events.EventQueue,
Handle task cancellation requests.
Not applicable for message-only agents in Phase 1. Cancellation is a task-based feature that will be implemented in Phase 5 along with long-running task support.
- Args:
_context: The request context (unused in Phase 1) _event_queue: Event queue for sending updates (unused in Phase 1)
- Raises:
ServerError: Always raises UnsupportedOperationError