a2a-ruby 1.0.0

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.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +137 -0
  4. data/.simplecov +46 -0
  5. data/.yardopts +10 -0
  6. data/CHANGELOG.md +33 -0
  7. data/CODE_OF_CONDUCT.md +128 -0
  8. data/CONTRIBUTING.md +165 -0
  9. data/Gemfile +43 -0
  10. data/Guardfile +34 -0
  11. data/LICENSE.txt +21 -0
  12. data/PUBLISHING_CHECKLIST.md +214 -0
  13. data/README.md +171 -0
  14. data/Rakefile +165 -0
  15. data/docs/agent_execution.md +309 -0
  16. data/docs/api_reference.md +792 -0
  17. data/docs/configuration.md +780 -0
  18. data/docs/events.md +475 -0
  19. data/docs/getting_started.md +668 -0
  20. data/docs/integration.md +262 -0
  21. data/docs/server_apps.md +621 -0
  22. data/docs/troubleshooting.md +765 -0
  23. data/lib/a2a/client/api_methods.rb +263 -0
  24. data/lib/a2a/client/auth/api_key.rb +161 -0
  25. data/lib/a2a/client/auth/interceptor.rb +288 -0
  26. data/lib/a2a/client/auth/jwt.rb +189 -0
  27. data/lib/a2a/client/auth/oauth2.rb +146 -0
  28. data/lib/a2a/client/auth.rb +137 -0
  29. data/lib/a2a/client/base.rb +316 -0
  30. data/lib/a2a/client/config.rb +210 -0
  31. data/lib/a2a/client/connection_pool.rb +233 -0
  32. data/lib/a2a/client/http_client.rb +524 -0
  33. data/lib/a2a/client/json_rpc_handler.rb +136 -0
  34. data/lib/a2a/client/middleware/circuit_breaker_interceptor.rb +245 -0
  35. data/lib/a2a/client/middleware/logging_interceptor.rb +371 -0
  36. data/lib/a2a/client/middleware/rate_limit_interceptor.rb +142 -0
  37. data/lib/a2a/client/middleware/retry_interceptor.rb +161 -0
  38. data/lib/a2a/client/middleware.rb +116 -0
  39. data/lib/a2a/client/performance_tracker.rb +60 -0
  40. data/lib/a2a/configuration/defaults.rb +34 -0
  41. data/lib/a2a/configuration/environment_loader.rb +76 -0
  42. data/lib/a2a/configuration/file_loader.rb +115 -0
  43. data/lib/a2a/configuration/inheritance.rb +101 -0
  44. data/lib/a2a/configuration/validator.rb +180 -0
  45. data/lib/a2a/configuration.rb +201 -0
  46. data/lib/a2a/errors.rb +291 -0
  47. data/lib/a2a/modules.rb +50 -0
  48. data/lib/a2a/monitoring/alerting.rb +490 -0
  49. data/lib/a2a/monitoring/distributed_tracing.rb +398 -0
  50. data/lib/a2a/monitoring/health_endpoints.rb +204 -0
  51. data/lib/a2a/monitoring/metrics_collector.rb +438 -0
  52. data/lib/a2a/monitoring.rb +463 -0
  53. data/lib/a2a/plugin.rb +358 -0
  54. data/lib/a2a/plugin_manager.rb +159 -0
  55. data/lib/a2a/plugins/example_auth.rb +81 -0
  56. data/lib/a2a/plugins/example_middleware.rb +118 -0
  57. data/lib/a2a/plugins/example_transport.rb +76 -0
  58. data/lib/a2a/protocol/agent_card.rb +8 -0
  59. data/lib/a2a/protocol/agent_card_server.rb +584 -0
  60. data/lib/a2a/protocol/capability.rb +496 -0
  61. data/lib/a2a/protocol/json_rpc.rb +254 -0
  62. data/lib/a2a/protocol/message.rb +8 -0
  63. data/lib/a2a/protocol/task.rb +8 -0
  64. data/lib/a2a/rails/a2a_controller.rb +258 -0
  65. data/lib/a2a/rails/controller_helpers.rb +499 -0
  66. data/lib/a2a/rails/engine.rb +167 -0
  67. data/lib/a2a/rails/generators/agent_generator.rb +311 -0
  68. data/lib/a2a/rails/generators/install_generator.rb +209 -0
  69. data/lib/a2a/rails/generators/migration_generator.rb +232 -0
  70. data/lib/a2a/rails/generators/templates/add_a2a_indexes.rb +57 -0
  71. data/lib/a2a/rails/generators/templates/agent_controller.rb +122 -0
  72. data/lib/a2a/rails/generators/templates/agent_controller_spec.rb +160 -0
  73. data/lib/a2a/rails/generators/templates/agent_readme.md +200 -0
  74. data/lib/a2a/rails/generators/templates/create_a2a_push_notification_configs.rb +68 -0
  75. data/lib/a2a/rails/generators/templates/create_a2a_tasks.rb +83 -0
  76. data/lib/a2a/rails/generators/templates/example_agent_controller.rb +228 -0
  77. data/lib/a2a/rails/generators/templates/initializer.rb +108 -0
  78. data/lib/a2a/rails/generators/templates/push_notification_config_model.rb +228 -0
  79. data/lib/a2a/rails/generators/templates/task_model.rb +200 -0
  80. data/lib/a2a/rails/tasks/a2a.rake +228 -0
  81. data/lib/a2a/server/a2a_methods.rb +520 -0
  82. data/lib/a2a/server/agent.rb +537 -0
  83. data/lib/a2a/server/agent_execution/agent_executor.rb +279 -0
  84. data/lib/a2a/server/agent_execution/request_context.rb +219 -0
  85. data/lib/a2a/server/apps/rack_app.rb +311 -0
  86. data/lib/a2a/server/apps/sinatra_app.rb +261 -0
  87. data/lib/a2a/server/default_request_handler.rb +350 -0
  88. data/lib/a2a/server/events/event_consumer.rb +116 -0
  89. data/lib/a2a/server/events/event_queue.rb +226 -0
  90. data/lib/a2a/server/example_agent.rb +248 -0
  91. data/lib/a2a/server/handler.rb +281 -0
  92. data/lib/a2a/server/middleware/authentication_middleware.rb +212 -0
  93. data/lib/a2a/server/middleware/cors_middleware.rb +171 -0
  94. data/lib/a2a/server/middleware/logging_middleware.rb +362 -0
  95. data/lib/a2a/server/middleware/rate_limit_middleware.rb +382 -0
  96. data/lib/a2a/server/middleware.rb +213 -0
  97. data/lib/a2a/server/push_notification_manager.rb +327 -0
  98. data/lib/a2a/server/request_handler.rb +136 -0
  99. data/lib/a2a/server/storage/base.rb +141 -0
  100. data/lib/a2a/server/storage/database.rb +266 -0
  101. data/lib/a2a/server/storage/memory.rb +274 -0
  102. data/lib/a2a/server/storage/redis.rb +320 -0
  103. data/lib/a2a/server/storage.rb +38 -0
  104. data/lib/a2a/server/task_manager.rb +534 -0
  105. data/lib/a2a/transport/grpc.rb +481 -0
  106. data/lib/a2a/transport/http.rb +415 -0
  107. data/lib/a2a/transport/sse.rb +499 -0
  108. data/lib/a2a/types/agent_card.rb +540 -0
  109. data/lib/a2a/types/artifact.rb +99 -0
  110. data/lib/a2a/types/base_model.rb +223 -0
  111. data/lib/a2a/types/events.rb +117 -0
  112. data/lib/a2a/types/message.rb +106 -0
  113. data/lib/a2a/types/part.rb +288 -0
  114. data/lib/a2a/types/push_notification.rb +139 -0
  115. data/lib/a2a/types/security.rb +167 -0
  116. data/lib/a2a/types/task.rb +154 -0
  117. data/lib/a2a/types.rb +88 -0
  118. data/lib/a2a/utils/helpers.rb +245 -0
  119. data/lib/a2a/utils/message_buffer.rb +278 -0
  120. data/lib/a2a/utils/performance.rb +247 -0
  121. data/lib/a2a/utils/rails_detection.rb +97 -0
  122. data/lib/a2a/utils/structured_logger.rb +306 -0
  123. data/lib/a2a/utils/time_helpers.rb +167 -0
  124. data/lib/a2a/utils/validation.rb +8 -0
  125. data/lib/a2a/version.rb +6 -0
  126. data/lib/a2a-rails.rb +58 -0
  127. data/lib/a2a.rb +198 -0
  128. metadata +437 -0
data/lib/a2a.rb ADDED
@@ -0,0 +1,198 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "a2a/modules"
4
+ require_relative "a2a/version"
5
+ require_relative "a2a/configuration"
6
+ require_relative "a2a/errors"
7
+ require_relative "a2a/types"
8
+ require_relative "a2a/plugin"
9
+ require_relative "a2a/plugin_manager"
10
+ require_relative "a2a/monitoring"
11
+
12
+ # Core protocol components (Task 2 - Core Protocol Implementation)
13
+ require_relative "a2a/protocol/json_rpc"
14
+
15
+ # Agent card system components (Task 3 - Agent Card System Implementation)
16
+ require_relative "a2a/protocol/capability"
17
+ require_relative "a2a/protocol/agent_card_server"
18
+
19
+ # Server components (Task 5 - Server-Side Components)
20
+ require_relative "a2a/server/agent"
21
+ require_relative "a2a/server/handler"
22
+ require_relative "a2a/server/request_handler"
23
+ require_relative "a2a/server/default_request_handler"
24
+ require_relative "a2a/server/middleware"
25
+ require_relative "a2a/server/task_manager"
26
+ require_relative "a2a/server/push_notification_manager"
27
+ require_relative "a2a/server/a2a_methods"
28
+
29
+ # Transport layer components (Task 7 - Transport Layer Implementation)
30
+ require_relative "a2a/transport/http"
31
+ require_relative "a2a/transport/sse"
32
+ require_relative "a2a/transport/grpc"
33
+
34
+ # Client components (Task 4 - Client-Side Components)
35
+ require_relative "a2a/client/base"
36
+ require_relative "a2a/client/config"
37
+ require_relative "a2a/client/http_client"
38
+ require_relative "a2a/client/auth"
39
+ require_relative "a2a/client/middleware"
40
+
41
+ # Rails integration (Task 8 - Rails Integration) - loaded conditionally
42
+ if defined?(Rails)
43
+ require_relative "a2a/rails/engine"
44
+ require_relative "a2a/rails/controller_helpers"
45
+ require_relative "a2a/rails/a2a_controller"
46
+ end
47
+
48
+ ##
49
+ # The A2A Ruby SDK
50
+ #
51
+ # This module provides a complete implementation of Google's Agent2Agent (A2A) Protocol
52
+ # for Ruby applications. It supports both client and server-side A2A implementations
53
+ # with multiple transport protocols.
54
+ #
55
+ # @example Basic client usage
56
+ # client = A2A::Client::HttpClient.new("https://agent.example.com/a2a")
57
+ # message = A2A::Types::Message.new(
58
+ # message_id: SecureRandom.uuid,
59
+ # role: "user",
60
+ # parts: [A2A::Types::TextPart.new(text: "Hello, agent!")]
61
+ # )
62
+ # response = client.send_message(message)
63
+ #
64
+ # @example Basic server usage
65
+ # class MyAgentController < ApplicationController
66
+ # include A2A::Server::Agent
67
+ #
68
+ # a2a_skill "greeting" do |skill|
69
+ # skill.description = "Greet users"
70
+ # skill.tags = ["greeting", "conversation"]
71
+ # end
72
+ #
73
+ # a2a_method "greet" do |params|
74
+ # { message: "Hello, #{params[:name]}!" }
75
+ # end
76
+ # end
77
+ #
78
+ module A2A
79
+ class << self
80
+ # Global configuration for the A2A SDK
81
+ # @return [A2A::Configuration]
82
+ attr_accessor :configuration
83
+
84
+ # Global plugin manager
85
+ # @return [A2A::PluginManager]
86
+ attr_accessor :plugin_manager
87
+
88
+ # Configure the A2A SDK
89
+ # @yield [config] Configuration block
90
+ # @yieldparam config [A2A::Configuration] The configuration object
91
+ def configure
92
+ self.configuration ||= Configuration.new
93
+ yield(configuration) if block_given?
94
+ configuration.validate!
95
+ configuration
96
+ end
97
+
98
+ # Configure from YAML file
99
+ # @param file_path [String] Path to YAML configuration file
100
+ # @param environment [String, nil] Environment section to load
101
+ # @return [A2A::Configuration]
102
+ def configure_from_file(file_path, environment: nil)
103
+ self.configuration ||= Configuration.new
104
+ configuration.load_from_file(file_path, environment: environment)
105
+ configuration.validate!
106
+ configuration
107
+ end
108
+
109
+ # Configure from environment variables only
110
+ # @param environment [String, nil] Environment name
111
+ # @return [A2A::Configuration]
112
+ def configure_from_env(environment: nil)
113
+ self.configuration = Configuration.new(environment: environment)
114
+ configuration.validate!
115
+ configuration
116
+ end
117
+
118
+ # Get the current configuration or create a default one
119
+ # @return [A2A::Configuration]
120
+ def config
121
+ self.configuration ||= Configuration.new
122
+ end
123
+
124
+ # Reset configuration to defaults
125
+ def reset_configuration!
126
+ self.configuration = Configuration.new
127
+ end
128
+
129
+ # Create a child configuration with inheritance
130
+ # @param **overrides [Hash] Configuration overrides
131
+ # @return [A2A::Configuration]
132
+ def child_config(**overrides)
133
+ config.child(**overrides)
134
+ end
135
+
136
+ # Get the plugin manager
137
+ # @return [A2A::PluginManager]
138
+ def plugins
139
+ self.plugin_manager ||= PluginManager.new(config)
140
+ end
141
+
142
+ # Register a plugin
143
+ # @param name [Symbol] Plugin name
144
+ # @param plugin_class [Class] Plugin class
145
+ # @param **options [Hash] Plugin options
146
+ def register_plugin(name, plugin_class, **options)
147
+ A2A::Plugin.register(name, plugin_class, **options)
148
+ end
149
+
150
+ # Load a plugin
151
+ # @param name [Symbol] Plugin name
152
+ # @param **config [Hash] Plugin configuration
153
+ def load_plugin(name, **config)
154
+ plugins.load_plugin(name, **config)
155
+ end
156
+
157
+ # Configure plugins from hash
158
+ # @param plugin_configs [Hash] Plugin configurations
159
+ def configure_plugins(*args)
160
+ plugins.configure_plugins(*args)
161
+ end
162
+
163
+ # Initialize monitoring system
164
+ # @param config [A2A::Configuration] Configuration instance
165
+ def initialize_monitoring!(config = self.config)
166
+ A2A::Monitoring.initialize!(config)
167
+ end
168
+
169
+ # Get monitoring metrics
170
+ # @return [A2A::Monitoring::MetricsCollector]
171
+ def metrics
172
+ A2A::Monitoring.metrics
173
+ end
174
+
175
+ # Get structured logger
176
+ # @return [A2A::Monitoring::StructuredLogger]
177
+ def logger
178
+ A2A::Monitoring.logger
179
+ end
180
+
181
+ # Record a metric
182
+ # @param name [String] Metric name
183
+ # @param value [Numeric] Metric value
184
+ # @param **labels [Hash] Metric labels
185
+ def record_metric(name, value, **labels)
186
+ A2A::Monitoring.record_metric(name, value, **labels)
187
+ end
188
+
189
+ # Time a block of code
190
+ # @param name [String] Timer name
191
+ # @param **labels [Hash] Timer labels
192
+ # @yield Block to time
193
+ # @return [Object] Block result
194
+ def time(name, **labels, &block)
195
+ A2A::Monitoring.time(name, **labels, &block)
196
+ end
197
+ end
198
+ end
metadata ADDED
@@ -0,0 +1,437 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: a2a-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - A2A Ruby Team
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2025-09-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '6.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: concurrent-ruby
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: faraday
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: jwt
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '2.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rack
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '2.0'
82
+ - - "<"
83
+ - !ruby/object:Gem::Version
84
+ version: '4.0'
85
+ type: :runtime
86
+ prerelease: false
87
+ version_requirements: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '2.0'
92
+ - - "<"
93
+ - !ruby/object:Gem::Version
94
+ version: '4.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: redis
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '4.0'
102
+ - - "<"
103
+ - !ruby/object:Gem::Version
104
+ version: '6.0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '4.0'
112
+ - - "<"
113
+ - !ruby/object:Gem::Version
114
+ version: '6.0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: puma
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '5.0'
122
+ - - "<"
123
+ - !ruby/object:Gem::Version
124
+ version: '7.0'
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '5.0'
132
+ - - "<"
133
+ - !ruby/object:Gem::Version
134
+ version: '7.0'
135
+ - !ruby/object:Gem::Dependency
136
+ name: rspec
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: '3.12'
142
+ type: :development
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: '3.12'
149
+ - !ruby/object:Gem::Dependency
150
+ name: vcr
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - "~>"
154
+ - !ruby/object:Gem::Version
155
+ version: '6.0'
156
+ type: :development
157
+ prerelease: false
158
+ version_requirements: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - "~>"
161
+ - !ruby/object:Gem::Version
162
+ version: '6.0'
163
+ - !ruby/object:Gem::Dependency
164
+ name: webmock
165
+ requirement: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '3.18'
170
+ type: :development
171
+ prerelease: false
172
+ version_requirements: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: '3.18'
177
+ - !ruby/object:Gem::Dependency
178
+ name: rubocop
179
+ requirement: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '1.57'
184
+ type: :development
185
+ prerelease: false
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ requirements:
188
+ - - "~>"
189
+ - !ruby/object:Gem::Version
190
+ version: '1.57'
191
+ - !ruby/object:Gem::Dependency
192
+ name: rubocop-performance
193
+ requirement: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: '1.19'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: '1.19'
205
+ - !ruby/object:Gem::Dependency
206
+ name: rubocop-rspec
207
+ requirement: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: '2.25'
212
+ type: :development
213
+ prerelease: false
214
+ version_requirements: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - "~>"
217
+ - !ruby/object:Gem::Version
218
+ version: '2.25'
219
+ - !ruby/object:Gem::Dependency
220
+ name: simplecov
221
+ requirement: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - "~>"
224
+ - !ruby/object:Gem::Version
225
+ version: '0.22'
226
+ type: :development
227
+ prerelease: false
228
+ version_requirements: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - "~>"
231
+ - !ruby/object:Gem::Version
232
+ version: '0.22'
233
+ - !ruby/object:Gem::Dependency
234
+ name: yard
235
+ requirement: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - "~>"
238
+ - !ruby/object:Gem::Version
239
+ version: '0.9'
240
+ type: :development
241
+ prerelease: false
242
+ version_requirements: !ruby/object:Gem::Requirement
243
+ requirements:
244
+ - - "~>"
245
+ - !ruby/object:Gem::Version
246
+ version: '0.9'
247
+ - !ruby/object:Gem::Dependency
248
+ name: benchmark-ips
249
+ requirement: !ruby/object:Gem::Requirement
250
+ requirements:
251
+ - - "~>"
252
+ - !ruby/object:Gem::Version
253
+ version: '2.12'
254
+ type: :development
255
+ prerelease: false
256
+ version_requirements: !ruby/object:Gem::Requirement
257
+ requirements:
258
+ - - "~>"
259
+ - !ruby/object:Gem::Version
260
+ version: '2.12'
261
+ - !ruby/object:Gem::Dependency
262
+ name: rake
263
+ requirement: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - "~>"
266
+ - !ruby/object:Gem::Version
267
+ version: '13.0'
268
+ type: :development
269
+ prerelease: false
270
+ version_requirements: !ruby/object:Gem::Requirement
271
+ requirements:
272
+ - - "~>"
273
+ - !ruby/object:Gem::Version
274
+ version: '13.0'
275
+ description: Complete A2A Protocol implementation for Ruby applications, enabling
276
+ agent-to-agent communication via JSON-RPC 2.0, gRPC, and HTTP+JSON transports
277
+ email:
278
+ - info@traylinx.com
279
+ executables: []
280
+ extensions: []
281
+ extra_rdoc_files: []
282
+ files:
283
+ - ".rspec"
284
+ - ".rubocop.yml"
285
+ - ".simplecov"
286
+ - ".yardopts"
287
+ - CHANGELOG.md
288
+ - CODE_OF_CONDUCT.md
289
+ - CONTRIBUTING.md
290
+ - Gemfile
291
+ - Guardfile
292
+ - LICENSE.txt
293
+ - PUBLISHING_CHECKLIST.md
294
+ - README.md
295
+ - Rakefile
296
+ - docs/agent_execution.md
297
+ - docs/api_reference.md
298
+ - docs/configuration.md
299
+ - docs/events.md
300
+ - docs/getting_started.md
301
+ - docs/integration.md
302
+ - docs/server_apps.md
303
+ - docs/troubleshooting.md
304
+ - lib/a2a-rails.rb
305
+ - lib/a2a.rb
306
+ - lib/a2a/client/api_methods.rb
307
+ - lib/a2a/client/auth.rb
308
+ - lib/a2a/client/auth/api_key.rb
309
+ - lib/a2a/client/auth/interceptor.rb
310
+ - lib/a2a/client/auth/jwt.rb
311
+ - lib/a2a/client/auth/oauth2.rb
312
+ - lib/a2a/client/base.rb
313
+ - lib/a2a/client/config.rb
314
+ - lib/a2a/client/connection_pool.rb
315
+ - lib/a2a/client/http_client.rb
316
+ - lib/a2a/client/json_rpc_handler.rb
317
+ - lib/a2a/client/middleware.rb
318
+ - lib/a2a/client/middleware/circuit_breaker_interceptor.rb
319
+ - lib/a2a/client/middleware/logging_interceptor.rb
320
+ - lib/a2a/client/middleware/rate_limit_interceptor.rb
321
+ - lib/a2a/client/middleware/retry_interceptor.rb
322
+ - lib/a2a/client/performance_tracker.rb
323
+ - lib/a2a/configuration.rb
324
+ - lib/a2a/configuration/defaults.rb
325
+ - lib/a2a/configuration/environment_loader.rb
326
+ - lib/a2a/configuration/file_loader.rb
327
+ - lib/a2a/configuration/inheritance.rb
328
+ - lib/a2a/configuration/validator.rb
329
+ - lib/a2a/errors.rb
330
+ - lib/a2a/modules.rb
331
+ - lib/a2a/monitoring.rb
332
+ - lib/a2a/monitoring/alerting.rb
333
+ - lib/a2a/monitoring/distributed_tracing.rb
334
+ - lib/a2a/monitoring/health_endpoints.rb
335
+ - lib/a2a/monitoring/metrics_collector.rb
336
+ - lib/a2a/plugin.rb
337
+ - lib/a2a/plugin_manager.rb
338
+ - lib/a2a/plugins/example_auth.rb
339
+ - lib/a2a/plugins/example_middleware.rb
340
+ - lib/a2a/plugins/example_transport.rb
341
+ - lib/a2a/protocol/agent_card.rb
342
+ - lib/a2a/protocol/agent_card_server.rb
343
+ - lib/a2a/protocol/capability.rb
344
+ - lib/a2a/protocol/json_rpc.rb
345
+ - lib/a2a/protocol/message.rb
346
+ - lib/a2a/protocol/task.rb
347
+ - lib/a2a/rails/a2a_controller.rb
348
+ - lib/a2a/rails/controller_helpers.rb
349
+ - lib/a2a/rails/engine.rb
350
+ - lib/a2a/rails/generators/agent_generator.rb
351
+ - lib/a2a/rails/generators/install_generator.rb
352
+ - lib/a2a/rails/generators/migration_generator.rb
353
+ - lib/a2a/rails/generators/templates/add_a2a_indexes.rb
354
+ - lib/a2a/rails/generators/templates/agent_controller.rb
355
+ - lib/a2a/rails/generators/templates/agent_controller_spec.rb
356
+ - lib/a2a/rails/generators/templates/agent_readme.md
357
+ - lib/a2a/rails/generators/templates/create_a2a_push_notification_configs.rb
358
+ - lib/a2a/rails/generators/templates/create_a2a_tasks.rb
359
+ - lib/a2a/rails/generators/templates/example_agent_controller.rb
360
+ - lib/a2a/rails/generators/templates/initializer.rb
361
+ - lib/a2a/rails/generators/templates/push_notification_config_model.rb
362
+ - lib/a2a/rails/generators/templates/task_model.rb
363
+ - lib/a2a/rails/tasks/a2a.rake
364
+ - lib/a2a/server/a2a_methods.rb
365
+ - lib/a2a/server/agent.rb
366
+ - lib/a2a/server/agent_execution/agent_executor.rb
367
+ - lib/a2a/server/agent_execution/request_context.rb
368
+ - lib/a2a/server/apps/rack_app.rb
369
+ - lib/a2a/server/apps/sinatra_app.rb
370
+ - lib/a2a/server/default_request_handler.rb
371
+ - lib/a2a/server/events/event_consumer.rb
372
+ - lib/a2a/server/events/event_queue.rb
373
+ - lib/a2a/server/example_agent.rb
374
+ - lib/a2a/server/handler.rb
375
+ - lib/a2a/server/middleware.rb
376
+ - lib/a2a/server/middleware/authentication_middleware.rb
377
+ - lib/a2a/server/middleware/cors_middleware.rb
378
+ - lib/a2a/server/middleware/logging_middleware.rb
379
+ - lib/a2a/server/middleware/rate_limit_middleware.rb
380
+ - lib/a2a/server/push_notification_manager.rb
381
+ - lib/a2a/server/request_handler.rb
382
+ - lib/a2a/server/storage.rb
383
+ - lib/a2a/server/storage/base.rb
384
+ - lib/a2a/server/storage/database.rb
385
+ - lib/a2a/server/storage/memory.rb
386
+ - lib/a2a/server/storage/redis.rb
387
+ - lib/a2a/server/task_manager.rb
388
+ - lib/a2a/transport/grpc.rb
389
+ - lib/a2a/transport/http.rb
390
+ - lib/a2a/transport/sse.rb
391
+ - lib/a2a/types.rb
392
+ - lib/a2a/types/agent_card.rb
393
+ - lib/a2a/types/artifact.rb
394
+ - lib/a2a/types/base_model.rb
395
+ - lib/a2a/types/events.rb
396
+ - lib/a2a/types/message.rb
397
+ - lib/a2a/types/part.rb
398
+ - lib/a2a/types/push_notification.rb
399
+ - lib/a2a/types/security.rb
400
+ - lib/a2a/types/task.rb
401
+ - lib/a2a/utils/helpers.rb
402
+ - lib/a2a/utils/message_buffer.rb
403
+ - lib/a2a/utils/performance.rb
404
+ - lib/a2a/utils/rails_detection.rb
405
+ - lib/a2a/utils/structured_logger.rb
406
+ - lib/a2a/utils/time_helpers.rb
407
+ - lib/a2a/utils/validation.rb
408
+ - lib/a2a/version.rb
409
+ homepage: https://github.com/traylinx/a2a-ruby
410
+ licenses:
411
+ - MIT
412
+ metadata:
413
+ homepage_uri: https://github.com/traylinx/a2a-ruby
414
+ source_code_uri: https://github.com/traylinx/a2a-ruby
415
+ changelog_uri: https://github.com/traylinx/a2a-ruby/blob/main/CHANGELOG.md
416
+ documentation_uri: https://a2a-protocol.org/latest/sdk/ruby/
417
+ rubygems_mfa_required: 'true'
418
+ post_install_message:
419
+ rdoc_options: []
420
+ require_paths:
421
+ - lib
422
+ required_ruby_version: !ruby/object:Gem::Requirement
423
+ requirements:
424
+ - - ">="
425
+ - !ruby/object:Gem::Version
426
+ version: 2.7.0
427
+ required_rubygems_version: !ruby/object:Gem::Requirement
428
+ requirements:
429
+ - - ">="
430
+ - !ruby/object:Gem::Version
431
+ version: '0'
432
+ requirements: []
433
+ rubygems_version: 3.4.10
434
+ signing_key:
435
+ specification_version: 4
436
+ summary: Agent2Agent (A2A) Protocol implementation for Ruby
437
+ test_files: []