Class: A2A::Configuration

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#load_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_requiredBoolean

Require authentication for A2A endpoints



94
95
96
# File 'lib/a2a/configuration.rb', line 94

def authentication_required
  @authentication_required
end

#auto_mountBoolean

Enable automatic mounting of A2A routes



37
38
39
# File 'lib/a2a-rails.rb', line 37

def auto_mount
  @auto_mount
end

#config_fileString?

Configuration file path



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

def config_file
  @config_file
end

#cors_enabledBoolean

Enable CORS middleware



98
99
100
# File 'lib/a2a/configuration.rb', line 98

def cors_enabled
  @cors_enabled
end

#default_input_modesArray<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_modesArray<String>

Default output MIME types



70
71
72
# File 'lib/a2a/configuration.rb', line 70

def default_output_modes
  @default_output_modes
end

#default_timeoutInteger

Default timeout for HTTP requests in seconds



42
43
44
# File 'lib/a2a/configuration.rb', line 42

def default_timeout
  @default_timeout
end

#default_transportString

Default transport protocol



54
55
56
# File 'lib/a2a/configuration.rb', line 54

def default_transport
  @default_transport
end

#environmentString

Environment for configuration (development, test, production)



122
123
124
# File 'lib/a2a/configuration.rb', line 122

def environment
  @environment
end

#log_levelSymbol

Default log level



46
47
48
# File 'lib/a2a/configuration.rb', line 46

def log_level
  @log_level
end

#loggerLogger

Get the logger instance



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

def logger
  @logger
end

#logging_enabledBoolean

Enable logging middleware



106
107
108
# File 'lib/a2a/configuration.rb', line 106

def logging_enabled
  @logging_enabled
end

#middleware_enabledBoolean

Enable A2A middleware stack



37
38
39
# File 'lib/a2a-rails.rb', line 37

def middleware_enabled
  @middleware_enabled
end

#mount_pathString

Rails mount path for A2A endpoints



37
38
39
# File 'lib/a2a-rails.rb', line 37

def mount_path
  @mount_path
end

#overridesHash

Configuration overrides



134
135
136
# File 'lib/a2a/configuration.rb', line 134

def overrides
  @overrides
end

#parent_configConfiguration?

Parent configuration for inheritance



130
131
132
# File 'lib/a2a/configuration.rb', line 130

def parent_config
  @parent_config
end

#protocol_versionString

A2A protocol version to use



50
51
52
# File 'lib/a2a/configuration.rb', line 50

def protocol_version
  @protocol_version
end

#push_notifications_enabledBoolean

Enable/disable push notifications



62
63
64
# File 'lib/a2a/configuration.rb', line 62

def push_notifications_enabled
  @push_notifications_enabled
end

#rails_integrationBoolean

Enable Rails integration



37
38
39
# File 'lib/a2a-rails.rb', line 37

def rails_integration
  @rails_integration
end

#rate_limiting_enabledBoolean

Enable rate limiting middleware



102
103
104
# File 'lib/a2a/configuration.rb', line 102

def rate_limiting_enabled
  @rate_limiting_enabled
end

#redis_configHash

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_enabledBoolean

Enable/disable streaming support



58
59
60
# File 'lib/a2a/configuration.rb', line 58

def streaming_enabled
  @streaming_enabled
end

#user_agentString

User agent string for HTTP requests



118
119
120
# File 'lib/a2a/configuration.rb', line 118

def user_agent
  @user_agent
end

#webhook_authentication_requiredBoolean

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_hHash

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