Module: A2A

Defined in:
lib/a2a.rb,
lib/a2a-rails.rb,
lib/a2a/types.rb,
lib/a2a/errors.rb,
lib/a2a/plugin.rb,
lib/a2a/plugin.rb,
lib/a2a/modules.rb,
lib/a2a/version.rb,
lib/a2a/monitoring.rb,
lib/a2a/types/part.rb,
lib/a2a/types/task.rb,
lib/a2a/client/auth.rb,
lib/a2a/client/base.rb,
lib/a2a/rails/engine.rb,
lib/a2a/server/agent.rb,
lib/a2a/types/events.rb,
lib/a2a/client/config.rb,
lib/a2a/configuration.rb,
lib/a2a/protocol/task.rb,
lib/a2a/transport/sse.rb,
lib/a2a/types/message.rb,
lib/a2a/utils/helpers.rb,
lib/a2a/plugin_manager.rb,
lib/a2a/server/handler.rb,
lib/a2a/server/storage.rb,
lib/a2a/transport/grpc.rb,
lib/a2a/transport/http.rb,
lib/a2a/transport/http.rb,
lib/a2a/types/artifact.rb,
lib/a2a/types/security.rb,
lib/a2a/client/auth/jwt.rb,
lib/a2a/protocol/message.rb,
lib/a2a/types/agent_card.rb,
lib/a2a/types/base_model.rb,
lib/a2a/types/base_model.rb,
lib/a2a/utils/validation.rb,
lib/a2a/client/middleware.rb,
lib/a2a/protocol/json_rpc.rb,
lib/a2a/server/middleware.rb,
lib/a2a/utils/performance.rb,
lib/a2a/client/api_methods.rb,
lib/a2a/client/auth/oauth2.rb,
lib/a2a/client/http_client.rb,
lib/a2a/server/a2a_methods.rb,
lib/a2a/utils/time_helpers.rb,
lib/a2a/client/auth/api_key.rb,
lib/a2a/monitoring/alerting.rb,
lib/a2a/protocol/agent_card.rb,
lib/a2a/protocol/capability.rb,
lib/a2a/server/storage/base.rb,
lib/a2a/server/storage/base.rb,
lib/a2a/server/task_manager.rb,
lib/a2a/plugins/example_auth.rb,
lib/a2a/rails/a2a_controller.rb,
lib/a2a/server/apps/rack_app.rb,
lib/a2a/server/example_agent.rb,
lib/a2a/server/storage/redis.rb,
lib/a2a/utils/message_buffer.rb,
lib/a2a/server/storage/memory.rb,
lib/a2a/utils/rails_detection.rb,
lib/a2a/client/connection_pool.rb,
lib/a2a/configuration/defaults.rb,
lib/a2a/server/request_handler.rb,
lib/a2a/client/auth/interceptor.rb,
lib/a2a/client/json_rpc_handler.rb,
lib/a2a/configuration/validator.rb,
lib/a2a/server/apps/sinatra_app.rb,
lib/a2a/server/storage/database.rb,
lib/a2a/server/storage/database.rb,
lib/a2a/types/push_notification.rb,
lib/a2a/utils/structured_logger.rb,
lib/a2a/rails/controller_helpers.rb,
lib/a2a/configuration/file_loader.rb,
lib/a2a/configuration/inheritance.rb,
lib/a2a/plugins/example_transport.rb,
lib/a2a/server/events/event_queue.rb,
lib/a2a/client/performance_tracker.rb,
lib/a2a/plugins/example_middleware.rb,
lib/a2a/protocol/agent_card_server.rb,
lib/a2a/monitoring/health_endpoints.rb,
lib/a2a/monitoring/metrics_collector.rb,
lib/a2a/monitoring/metrics_collector.rb,
lib/a2a/server/events/event_consumer.rb,
lib/a2a/monitoring/distributed_tracing.rb,
lib/a2a/monitoring/distributed_tracing.rb,
lib/a2a/server/default_request_handler.rb,
lib/a2a/configuration/environment_loader.rb,
lib/a2a/rails/generators/agent_generator.rb,
lib/a2a/server/push_notification_manager.rb,
lib/a2a/server/middleware/cors_middleware.rb,
lib/a2a/rails/generators/install_generator.rb,
lib/a2a/client/middleware/retry_interceptor.rb,
lib/a2a/rails/generators/migration_generator.rb,
lib/a2a/server/middleware/logging_middleware.rb,
lib/a2a/client/middleware/logging_interceptor.rb,
lib/a2a/server/agent_execution/agent_executor.rb,
lib/a2a/server/agent_execution/request_context.rb,
lib/a2a/server/middleware/rate_limit_middleware.rb,
lib/a2a/client/middleware/rate_limit_interceptor.rb,
lib/a2a/server/middleware/authentication_middleware.rb,
lib/a2a/server/middleware/authentication_middleware.rb,
lib/a2a/client/middleware/circuit_breaker_interceptor.rb

Overview

Circuit breaker interceptor for fault tolerance

Implements the circuit breaker pattern to prevent cascading failures by temporarily stopping requests to a failing service.

Defined Under Namespace

Modules: Client, Errors, Monitoring, Plugin, Plugins, Protocol, Rails, Server, Transport, Types, Utils Classes: Configuration, PluginManager

Constant Summary collapse

VERSION =

The version of the A2A Ruby SDK

"1.0.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationA2A::Configuration

Global configuration for the A2A SDK

Returns:



82
83
84
# File 'lib/a2a.rb', line 82

def configuration
  @configuration
end

.plugin_managerA2A::PluginManager

Global plugin manager

Returns:



86
87
88
# File 'lib/a2a.rb', line 86

def plugin_manager
  @plugin_manager
end

Class Method Details

.child_config(**overrides) ⇒ A2A::Configuration

Create a child configuration with inheritance

Parameters:

  • Configuration overrides

Returns:



132
133
134
# File 'lib/a2a.rb', line 132

def child_config(**overrides)
  config.child(**overrides)
end

.configA2A::Configuration

Get the current configuration or create a default one

Returns:



120
121
122
# File 'lib/a2a.rb', line 120

def config
  self.configuration ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Configure the A2A SDK

Yields:

  • (config)

    Configuration block

Yield Parameters:



91
92
93
94
95
96
# File 'lib/a2a.rb', line 91

def configure
  self.configuration ||= Configuration.new
  yield(configuration) if block_given?
  configuration.validate!
  configuration
end

.configure_from_env(environment: nil) ⇒ A2A::Configuration

Configure from environment variables only

Parameters:

  • (defaults to: nil)

    Environment name

Returns:



112
113
114
115
116
# File 'lib/a2a.rb', line 112

def configure_from_env(environment: nil)
  self.configuration = Configuration.new(environment: environment)
  configuration.validate!
  configuration
end

.configure_from_file(file_path, environment: nil) ⇒ A2A::Configuration

Configure from YAML file

Parameters:

  • Path to YAML configuration file

  • (defaults to: nil)

    Environment section to load

Returns:



102
103
104
105
106
107
# File 'lib/a2a.rb', line 102

def configure_from_file(file_path, environment: nil)
  self.configuration ||= Configuration.new
  configuration.load_from_file(file_path, environment: environment)
  configuration.validate!
  configuration
end

.configure_plugins(*args) ⇒ Object

Configure plugins from hash

Parameters:

  • Plugin configurations



159
160
161
# File 'lib/a2a.rb', line 159

def configure_plugins(*args)
  plugins.configure_plugins(*args)
end

.initialize_monitoring!(config = self.config) ⇒ Object

Initialize monitoring system

Parameters:

  • (defaults to: self.config)

    Configuration instance



165
166
167
# File 'lib/a2a.rb', line 165

def initialize_monitoring!(config = self.config)
  A2A::Monitoring.initialize!(config)
end

.load_plugin(name, **config) ⇒ Object

Load a plugin

Parameters:

  • Plugin name

  • Plugin configuration



153
154
155
# File 'lib/a2a.rb', line 153

def load_plugin(name, **config)
  plugins.load_plugin(name, **config)
end

.loggerA2A::Monitoring::StructuredLogger

Get structured logger

Returns:



177
178
179
# File 'lib/a2a.rb', line 177

def logger
  A2A::Monitoring.logger
end

.metricsA2A::Monitoring::MetricsCollector

Get monitoring metrics

Returns:



171
172
173
# File 'lib/a2a.rb', line 171

def metrics
  A2A::Monitoring.metrics
end

.pluginsA2A::PluginManager

Get the plugin manager

Returns:



138
139
140
# File 'lib/a2a.rb', line 138

def plugins
  self.plugin_manager ||= PluginManager.new(config)
end

.record_metric(name, value, **labels) ⇒ Object

Record a metric

Parameters:

  • Metric name

  • Metric value

  • Metric labels



185
186
187
# File 'lib/a2a.rb', line 185

def record_metric(name, value, **labels)
  A2A::Monitoring.record_metric(name, value, **labels)
end

.register_plugin(name, plugin_class, **options) ⇒ Object

Register a plugin

Parameters:

  • Plugin name

  • Plugin class

  • Plugin options



146
147
148
# File 'lib/a2a.rb', line 146

def register_plugin(name, plugin_class, **options)
  A2A::Plugin.register(name, plugin_class, **options)
end

.reset_configuration!Object

Reset configuration to defaults



125
126
127
# File 'lib/a2a.rb', line 125

def reset_configuration!
  self.configuration = Configuration.new
end

.time(name, **labels) { ... } ⇒ Object

Time a block of code

Parameters:

  • Timer name

  • Timer labels

Yields:

  • Block to time

Returns:

  • Block result



194
195
196
# File 'lib/a2a.rb', line 194

def time(name, **labels, &block)
  A2A::Monitoring.time(name, **labels, &block)
end