Class: A2A::Configuration
- Inherits:
-
Object
- Object
- A2A::Configuration
- Includes:
- Defaults, EnvironmentLoader, FileLoader, Inheritance, Validator, Utils::RailsDetection
- Defined in:
- lib/a2a-rails.rb,
lib/a2a/configuration.rb,
lib/a2a/configuration/defaults.rb,
lib/a2a/configuration/validator.rb,
lib/a2a/configuration/file_loader.rb,
lib/a2a/configuration/inheritance.rb,
lib/a2a/configuration/environment_loader.rb
Defined Under Namespace
Modules: Defaults, EnvironmentLoader, FileLoader, Inheritance, Validator
Instance Attribute Summary collapse
-
#authentication_required ⇒ Boolean
Require authentication for A2A endpoints.
-
#auto_mount ⇒ Boolean
Enable automatic mounting of A2A routes.
-
#config_file ⇒ String?
Configuration file path.
-
#cors_enabled ⇒ Boolean
Enable CORS middleware.
-
#default_input_modes ⇒ Array<String>
Default input MIME types.
-
#default_output_modes ⇒ Array<String>
Default output MIME types.
-
#default_timeout ⇒ Integer
Default timeout for HTTP requests in seconds.
-
#default_transport ⇒ String
Default transport protocol.
-
#environment ⇒ String
Environment for configuration (development, test, production).
-
#log_level ⇒ Symbol
Default log level.
-
#logger ⇒ Logger
Get the logger instance.
-
#logging_enabled ⇒ Boolean
Enable logging middleware.
-
#middleware_enabled ⇒ Boolean
Enable A2A middleware stack.
-
#mount_path ⇒ String
Rails mount path for A2A endpoints.
-
#overrides ⇒ Hash
Configuration overrides.
-
#parent_config ⇒ Configuration?
Parent configuration for inheritance.
-
#protocol_version ⇒ String
A2A protocol version to use.
-
#push_notifications_enabled ⇒ Boolean
Enable/disable push notifications.
-
#rails_integration ⇒ Boolean
Enable Rails integration.
-
#rate_limiting_enabled ⇒ Boolean
Enable rate limiting middleware.
-
#redis_config ⇒ Hash
Redis configuration for task storage and rate limiting.
-
#streaming_enabled ⇒ Boolean
Enable/disable streaming support.
-
#user_agent ⇒ String
User agent string for HTTP requests.
-
#webhook_authentication_required ⇒ Boolean
Require authentication for webhook endpoints.
Instance Method Summary collapse
-
#apply_overrides(overrides) ⇒ Object
private
Apply configuration overrides.
-
#initialize(environment: nil, parent: nil, **overrides) ⇒ Configuration
constructor
A new instance of Configuration.
-
#to_h ⇒ Hash
Convert configuration to hash.
Methods included from Inheritance
#child, #get, #merge!, #validate_inheritance!
Methods included from Validator
#validate!, #validate_basic_config, #validate_boolean_options, #validate_environment_config, #validate_log_level, #validate_protocol_version, #validate_rails_config, #validate_redis_config, #validate_timeout_values, #validate_transport_config
Methods included from FileLoader
#apply_hash_config, #load_from_file
Methods included from EnvironmentLoader
#detect_environment, #env_array, #env_bool, #env_int, #env_string, #env_symbol, #load_from_environment
Methods included from Defaults
Methods included from Utils::RailsDetection
#rails_application, #rails_available?, #rails_development?, #rails_environment, #rails_logger, #rails_production?, #rails_version, #rails_version_requires_validation?, #rails_version_supported?
Constructor Details
#initialize(environment: nil, parent: nil, **overrides) ⇒ Configuration
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/a2a-rails.rb', line 40 def initialize super # Rails-specific defaults @rails_integration = false @mount_path = "/a2a" @auto_mount = true @middleware_enabled = true @webhook_authentication_required = false end |
Instance Attribute Details
#authentication_required ⇒ Boolean
Require authentication for A2A endpoints
94 95 96 |
# File 'lib/a2a/configuration.rb', line 94 def authentication_required @authentication_required end |
#auto_mount ⇒ Boolean
Enable automatic mounting of A2A routes
37 38 39 |
# File 'lib/a2a-rails.rb', line 37 def auto_mount @auto_mount end |
#config_file ⇒ String?
Configuration file path
126 127 128 |
# File 'lib/a2a/configuration.rb', line 126 def config_file @config_file end |
#cors_enabled ⇒ Boolean
Enable CORS middleware
98 99 100 |
# File 'lib/a2a/configuration.rb', line 98 def cors_enabled @cors_enabled end |
#default_input_modes ⇒ Array<String>
Default input MIME types
66 67 68 |
# File 'lib/a2a/configuration.rb', line 66 def default_input_modes @default_input_modes end |
#default_output_modes ⇒ Array<String>
Default output MIME types
70 71 72 |
# File 'lib/a2a/configuration.rb', line 70 def default_output_modes @default_output_modes end |
#default_timeout ⇒ Integer
Default timeout for HTTP requests in seconds
42 43 44 |
# File 'lib/a2a/configuration.rb', line 42 def default_timeout @default_timeout end |
#default_transport ⇒ String
Default transport protocol
54 55 56 |
# File 'lib/a2a/configuration.rb', line 54 def default_transport @default_transport end |
#environment ⇒ String
Environment for configuration (development, test, production)
122 123 124 |
# File 'lib/a2a/configuration.rb', line 122 def environment @environment end |
#log_level ⇒ Symbol
Default log level
46 47 48 |
# File 'lib/a2a/configuration.rb', line 46 def log_level @log_level end |
#logger ⇒ Logger
Get the logger instance
114 115 116 |
# File 'lib/a2a/configuration.rb', line 114 def logger @logger end |
#logging_enabled ⇒ Boolean
Enable logging middleware
106 107 108 |
# File 'lib/a2a/configuration.rb', line 106 def logging_enabled @logging_enabled end |
#middleware_enabled ⇒ Boolean
Enable A2A middleware stack
37 38 39 |
# File 'lib/a2a-rails.rb', line 37 def middleware_enabled @middleware_enabled end |
#mount_path ⇒ String
Rails mount path for A2A endpoints
37 38 39 |
# File 'lib/a2a-rails.rb', line 37 def mount_path @mount_path end |
#overrides ⇒ Hash
Configuration overrides
134 135 136 |
# File 'lib/a2a/configuration.rb', line 134 def overrides @overrides end |
#parent_config ⇒ Configuration?
Parent configuration for inheritance
130 131 132 |
# File 'lib/a2a/configuration.rb', line 130 def parent_config @parent_config end |
#protocol_version ⇒ String
A2A protocol version to use
50 51 52 |
# File 'lib/a2a/configuration.rb', line 50 def protocol_version @protocol_version end |
#push_notifications_enabled ⇒ Boolean
Enable/disable push notifications
62 63 64 |
# File 'lib/a2a/configuration.rb', line 62 def push_notifications_enabled @push_notifications_enabled end |
#rails_integration ⇒ Boolean
Enable Rails integration
37 38 39 |
# File 'lib/a2a-rails.rb', line 37 def rails_integration @rails_integration end |
#rate_limiting_enabled ⇒ Boolean
Enable rate limiting middleware
102 103 104 |
# File 'lib/a2a/configuration.rb', line 102 def rate_limiting_enabled @rate_limiting_enabled end |
#redis_config ⇒ Hash
Redis configuration for task storage and rate limiting
74 75 76 |
# File 'lib/a2a/configuration.rb', line 74 def redis_config @redis_config end |
#streaming_enabled ⇒ Boolean
Enable/disable streaming support
58 59 60 |
# File 'lib/a2a/configuration.rb', line 58 def streaming_enabled @streaming_enabled end |
#user_agent ⇒ String
User agent string for HTTP requests
118 119 120 |
# File 'lib/a2a/configuration.rb', line 118 def user_agent @user_agent end |
#webhook_authentication_required ⇒ Boolean
Require authentication for webhook endpoints
37 38 39 |
# File 'lib/a2a-rails.rb', line 37 def webhook_authentication_required @webhook_authentication_required end |
Instance Method Details
#apply_overrides(overrides) ⇒ Object (private)
Apply configuration overrides
150 151 152 153 154 155 156 157 158 159 |
# File 'lib/a2a/configuration.rb', line 150 def apply_overrides(overrides) overrides.each do |key, value| setter = "#{key}=" unless respond_to?(setter, true) # Check for both public and private methods raise A2A::Errors::ConfigurationError, "Unknown configuration option: #{key}" end send(setter, value) end end |
#to_h ⇒ Hash
Convert configuration to hash
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/a2a/configuration.rb', line 176 def to_h { environment: @environment, default_timeout: @default_timeout, log_level: @log_level, protocol_version: @protocol_version, default_transport: @default_transport, streaming_enabled: @streaming_enabled, push_notifications_enabled: @push_notifications_enabled, default_input_modes: @default_input_modes, default_output_modes: @default_output_modes, redis_config: @redis_config, rails_integration: @rails_integration, mount_path: @mount_path, auto_mount: @auto_mount, middleware_enabled: @middleware_enabled, authentication_required: @authentication_required, cors_enabled: @cors_enabled, rate_limiting_enabled: @rate_limiting_enabled, logging_enabled: @logging_enabled, webhook_authentication_required: @webhook_authentication_required, user_agent: @user_agent } end |