agent2agent 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1eb5e86e467fd39706a3ae694f6f71c04ea759b589bbcda28abda260bb978a5
4
- data.tar.gz: 456b1c3fc52224a72a6b3e9b28b30f28d28b68ca1a092b575f6190dd8c5eb573
3
+ metadata.gz: 598d9fa16162458f08fe51814c50747d69f528deb7c4415957db6ba00add0ac6
4
+ data.tar.gz: ffb5eddcf94fb4f4ac0ef6553da882275d03244d939cb1dea1d9a019758fa92f
5
5
  SHA512:
6
- metadata.gz: 4b5f6dea4feaeab36a74f92dabc2f2051e00e38b41b30cdd3de4b960f67c15856f7f4706fb7c75284ede5480cc65e31426985b0fd38661c72faeaf7b46029fd0
7
- data.tar.gz: 9e9cb9a984a730a401a40ba20518ddda15269515637c3c8d20f7e9ebdc8be31ca686da2df897eb3833cc0a7dcd7bfefe21d908616a2272639852d8efe2907d8b
6
+ metadata.gz: a57ec2675cf8d47069d9971c4fbeb4fd4a22eb6b11a047471693279d6574c62c1c661c8338b5fb51589f2ceef956484a244b980d42660d447ced24cefc0731df
7
+ data.tar.gz: 9cc8a68f0d1e7d8624026ff316ded43df5d94b3d2d544ee1091dd0a99aa6d1a231c6b0ac94c2f5526872a275ad7e68eefa711990127de9fd943b493e19eb573c
data/config/traces.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Auto-loaded by the traces gem when a backend is enabled.
4
+ # Requires all A2A trace providers so that key methods are
5
+ # instrumented transparently.
6
+
7
+ def prepare
8
+ require "traces/provider/a2a"
9
+ end
@@ -47,12 +47,7 @@ module A2A
47
47
  env["a2a.json_rpc_method"] = method
48
48
  env["a2a.body"] = params
49
49
 
50
- begin
51
- @app.call(env)
52
- rescue => e
53
- Console.error(self) { "#{method} raised #{e.class}: #{e.message}\n#{e.backtrace&.join("\n")}" }
54
- return error_response(id, -32603, "Internal error")
55
- end
50
+ @app.call(env)
56
51
 
57
52
  # Check if handler signalled a JSON-RPC error
58
53
  if (err = env["a2a.error"])
@@ -40,12 +40,7 @@ module A2A
40
40
 
41
41
  env["a2a.body"] = params
42
42
 
43
- begin
44
- @app.call(env)
45
- rescue => e
46
- Console.error(self) { "#{env["a2a.verb"]} #{env["a2a.path"]} raised #{e.class}: #{e.message}\n#{e.backtrace&.join("\n")}" }
47
- return error_response(500, "Internal error")
48
- end
43
+ @app.call(env)
49
44
 
50
45
  # Check if handler signalled a REST error
51
46
  if (err = env["a2a.error"])
data/lib/a2a/client.rb CHANGED
@@ -30,6 +30,7 @@ module A2A
30
30
  method_name = op.name.gsub(/([A-Z])/) { "_#{$1.downcase}" }.sub(/^_/, "")
31
31
 
32
32
  define_method(method_name) do |params = {}|
33
+ Console.log(self) { "#{op.name}: #{params}" }
33
34
  json_rpc(op.name, params)
34
35
  end
35
36
  end
@@ -44,7 +45,7 @@ module A2A
44
45
  params: params,
45
46
  )
46
47
 
47
- response = post("/a2a", body, "application/json")
48
+ response = post("/", body, "application/json")
48
49
  parsed = JSON.parse(response)
49
50
 
50
51
  if (error = parsed["error"])
@@ -59,7 +59,7 @@ module A2A
59
59
  begin
60
60
  handler.call(env)
61
61
  rescue => e
62
- Console.error(self) { "Handler #{handler.class.name} raised #{e.class}: #{e.message}\n#{e.backtrace&.join("\n")}" }
62
+ Console.error(self, "Handler #{handler.class.name} raised #{e.class}", e)
63
63
  end
64
64
  end
65
65
  end
@@ -55,7 +55,7 @@ module A2A
55
55
  @complete_count += 1
56
56
  rescue => error
57
57
  @failed_count += 1
58
- Console.error(self) { "Background task failed: #{error.message}" }
58
+ Console.error(self, "Background task failed", error)
59
59
  ensure
60
60
  @call_count -= 1
61
61
  end
@@ -38,7 +38,7 @@ module A2A
38
38
  Async do
39
39
  deliver_single(config, payload)
40
40
  rescue => e
41
- Console.error(self) { "Webhook delivery failed for #{config["url"]}: #{e.message}" }
41
+ Console.error(self, "Webhook delivery failed for #{config["url"]}", e)
42
42
  end
43
43
  end
44
44
  end
data/lib/a2a/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module A2A
4
- VERSION = "1.0.1"
4
+ VERSION = "1.0.3"
5
5
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../../a2a/bindings/json_rpc"
4
+ require "traces/provider"
5
+
6
+ Traces::Provider(A2A::Bindings::JsonRpc) do
7
+ def call(env)
8
+ Traces.trace("a2a.bindings.json_rpc.call") do |span|
9
+ super.tap do |status, headers, body|
10
+ span["http.status_code"] = status
11
+
12
+ if method = env["a2a.json_rpc_method"]
13
+ span["rpc.method"] = method
14
+ end
15
+
16
+ if id = env["a2a.json_rpc_id"]
17
+ span["rpc.jsonrpc.request_id"] = id.to_s
18
+ end
19
+
20
+ if env["a2a.stream"]
21
+ span["a2a.response_type"] = "stream"
22
+ elsif env["a2a.error"]
23
+ span["a2a.response_type"] = "error"
24
+ else
25
+ span["a2a.response_type"] = "result"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../../a2a/bindings/rest"
4
+ require "traces/provider"
5
+
6
+ Traces::Provider(A2A::Bindings::Rest) do
7
+ def call(env)
8
+ Traces.trace("a2a.bindings.rest.call") do |span|
9
+ super.tap do |status, headers, body|
10
+ span["http.status_code"] = status
11
+
12
+ if verb = env["a2a.verb"]
13
+ span["a2a.verb"] = verb
14
+ end
15
+
16
+ if path = env["a2a.path"]
17
+ span["a2a.path"] = path
18
+ end
19
+
20
+ if env["a2a.stream"]
21
+ span["a2a.response_type"] = "stream"
22
+ elsif env["a2a.error"]
23
+ span["a2a.response_type"] = "error"
24
+ else
25
+ span["a2a.response_type"] = "result"
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../../a2a/server/dispatcher"
4
+ require "traces/provider"
5
+
6
+ Traces::Provider(A2A::Server::Dispatcher) do
7
+ def call(env)
8
+ attributes = {
9
+ "a2a.operation" => env["a2a.operation"],
10
+ }
11
+
12
+ Traces.trace("a2a.server.dispatcher.call", attributes: attributes) do |span|
13
+ super.tap do |status, headers, body|
14
+ span["http.status_code"] = status
15
+
16
+ if env["a2a.stream"]
17
+ span["a2a.response_type"] = "stream"
18
+ elsif env["a2a.error"]
19
+ span["a2a.response_type"] = "error"
20
+ elsif env["a2a.result"]
21
+ span["a2a.response_type"] = "result"
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../../a2a/server/triage"
4
+ require "traces/provider"
5
+
6
+ Traces::Provider(A2A::Server::Triage) do
7
+ def call(env)
8
+ Traces.trace("a2a.server.triage.call") do |span|
9
+ super.tap do
10
+ if op = env["a2a.operation"]
11
+ span["a2a.operation"] = op
12
+ end
13
+
14
+ if proto_op = env["a2a.proto_operation"]
15
+ span["a2a.proto_operation"] = proto_op.name
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../a2a/server"
4
+ require "traces/provider"
5
+
6
+ Traces::Provider(A2A::Server) do
7
+ def call(env)
8
+ attributes = {
9
+ "http.method" => env["REQUEST_METHOD"],
10
+ "http.path" => env["PATH_INFO"],
11
+ }
12
+
13
+ Traces.trace("a2a.server.call", attributes: attributes) do |span|
14
+ super.tap do |status, headers, body|
15
+ span["http.status_code"] = status
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "a2a/server"
4
+ require_relative "a2a/server/dispatcher"
5
+ require_relative "a2a/server/triage"
6
+ require_relative "a2a/bindings/json_rpc"
7
+ require_relative "a2a/bindings/rest"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agent2agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - A2A Contributors
@@ -154,6 +154,7 @@ executables: []
154
154
  extensions: []
155
155
  extra_rdoc_files: []
156
156
  files:
157
+ - config/traces.rb
157
158
  - data/a2a.json
158
159
  - data/a2a.proto
159
160
  - data/download-a2a-resources
@@ -193,6 +194,12 @@ files:
193
194
  - lib/a2a/store/webhooks.rb
194
195
  - lib/a2a/task_store.rb
195
196
  - lib/a2a/version.rb
197
+ - lib/traces/provider/a2a.rb
198
+ - lib/traces/provider/a2a/bindings/json_rpc.rb
199
+ - lib/traces/provider/a2a/bindings/rest.rb
200
+ - lib/traces/provider/a2a/server.rb
201
+ - lib/traces/provider/a2a/server/dispatcher.rb
202
+ - lib/traces/provider/a2a/server/triage.rb
196
203
  licenses:
197
204
  - MIT
198
205
  metadata: