Class: A2A::Server
- Inherits:
-
Object
- Object
- A2A::Server
- Defined in:
- lib/a2a/server.rb,
lib/a2a/server/env.rb,
lib/a2a/server/triage.rb,
lib/a2a/server/dispatcher.rb,
lib/a2a/server/bindings/rest.rb,
lib/a2a/server/bindings/json_rpc.rb
Overview
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
respond_with -> (env) {
A2A::Schema["Send Message Response"].new({})
}
end
end
app = A2A::Server.new(agent_card: { "name" => "My Agent", ... })
app.register(agent)
run app
Defined Under Namespace
Modules: Bindings Classes: Dispatcher, Env, Triage
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(agent_card: {}) ⇒ Server
constructor
A new instance of Server.
-
#register(handler) ⇒ Object
Register an Agent or a plain handler on the internal dispatcher.
Constructor Details
#initialize(agent_card: {}) ⇒ Server
Returns a new instance of Server.
40 41 42 43 44 |
# File 'lib/a2a/server.rb', line 40 def initialize(agent_card: {}) @agent_card = agent_card @dispatcher = Dispatcher.new @app = build_app end |
Instance Method Details
#call(env) ⇒ Object
60 61 62 |
# File 'lib/a2a/server.rb', line 60 def call(env) @app.call(env) end |
#register(handler) ⇒ Object
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)
52 53 54 55 56 57 58 |
# File 'lib/a2a/server.rb', line 52 def register(handler) if handler.respond_to?(:handlers) handler.handlers.each { |h| @dispatcher.register(h) } else @dispatcher.register(handler) end end |