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