Class: A2A::Plugin::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/a2a/plugin.rb

Overview

Base class for all A2A plugins

Direct Known Subclasses

AuthPlugin, MiddlewarePlugin, TransportPlugin

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**config) ⇒ Base

Initialize plugin

Parameters:

  • **config (Hash)

    Plugin configuration



228
229
230
231
232
# File 'lib/a2a/plugin.rb', line 228

def initialize(**config)
  @config = config
  @logger = A2A.config.logger
  setup if respond_to?(:setup, true)
end

Instance Attribute Details

#configHash (readonly)

Get plugin configuration

Returns:

  • (Hash)


236
237
238
# File 'lib/a2a/plugin.rb', line 236

def config
  @config
end

#loggerLogger (readonly)

Get logger instance

Returns:

  • (Logger)


240
241
242
# File 'lib/a2a/plugin.rb', line 240

def logger
  @logger
end

Class Method Details

.dependenciesArray<Symbol>

Get plugin dependencies

Returns:

  • (Array<Symbol>)


212
213
214
# File 'lib/a2a/plugin.rb', line 212

def dependencies
  @dependencies || []
end

.depends_on(*deps) ⇒ Object

Define plugin dependencies

Parameters:

  • *deps (Array<Symbol>)

    Plugin dependencies



206
207
208
# File 'lib/a2a/plugin.rb', line 206

def depends_on(*deps)
  @dependencies = deps
end

.inherited(subclass) ⇒ Object

Inherited hook to ensure plugin types are properly inherited



217
218
219
220
221
222
223
# File 'lib/a2a/plugin.rb', line 217

def inherited(subclass)
  super
  # Ensure subclass inherits plugin type if not explicitly set
  return unless @plugin_type && !subclass.instance_variable_defined?(:@plugin_type)

  subclass.instance_variable_set(:@plugin_type, @plugin_type)
end

.plugin_type(type = nil) ⇒ Object

Define plugin type

Parameters:

  • type (Symbol) (defaults to: nil)

    Plugin type



196
197
198
199
200
201
202
# File 'lib/a2a/plugin.rb', line 196

def plugin_type(type = nil)
  if type
    @plugin_type = type
  else
    @plugin_type || (superclass.respond_to?(:plugin_type) ? superclass.plugin_type : nil)
  end
end

Instance Method Details

#cleanupObject

Cleanup resources (override in subclasses)



249
250
251
# File 'lib/a2a/plugin.rb', line 249

def cleanup
  # Override in subclasses for cleanup
end

#register_hooks(plugin_manager) ⇒ Object

Register hooks (override in subclasses)

Parameters:



244
245
246
# File 'lib/a2a/plugin.rb', line 244

def register_hooks(plugin_manager)
  # Override in subclasses to register hooks
end