agent2agentSourceA2AServer

class Server

Rack application that exposes an A2A-compliant agent server.

Composes two separate middleware stacks, one for each protocol binding:

/.well-known/agent-card.json → Env → serve agent card

/a2a (JSON-RPC 2.0) → Env → Bindings::JsonRpc → Triage → Dispatcher

/ (HTTP+JSON/REST) → Env → Bindings::Rest → Triage → Dispatcher

Usage:

agent = A2A::Agent.new do on "SendMessage" do |request| respond A2A::Schema["Send Message Response"].new() end end

app = A2A::Server.new(agent_card: "name" => "My Agent", ... ) app.register(agent)

run app

Nested

Definitions

def register(handler)

Register an Agent or a plain handler on the internal dispatcher.

Accepts either:

  • An Agent (responds to #handlers) — registers all its handlers
  • A plain handler (responds to #operations and #call)

Implementation

def register(handler)
  if handler.respond_to?(:handlers)
    handler.handlers.each { |h| @dispatcher.register(h) }
  else
    @dispatcher.register(handler)
  end
end