class Riffer::Rig::Registrar
Constants
- CORE_SETTINGS_KEYS
- EVENTS
Attributes
String
@dynamic extension
Public Class Methods
(String extension, ?Hash[Symbol, untyped] settings) → void
Source
# File lib/riffer/rig/registrar.rb, line 32 def initialize(extension, settings = {}) @extension = extension @tools = {} @prompts = {} @commands = {} @skill_sources = [] @declared_settings = {} @given_settings = settings @mcp_servers = {} @hooks = EVENTS.to_h { |event| [event, []] } end
@rbs extension: String @rbs settings: Hash[Symbol, untyped] @rbs return: void
Public Instance Methods
Source
# File lib/riffer/rig/registrar.rb, line 45 def collision return unless CORE_SETTINGS_KEYS.include?(@extension) NameCollisionError.new("extension name #{@extension} collides with a core settings key") end
@rbs return: NameCollisionError?
(String name, description: String) { (Riffer::Rig::Command::Context) → void } → void
Source
# File lib/riffer/rig/registrar.rb, line 68 def command(name, description:, &) @commands[name] = Riffer::Rig::Command.new(name, description: description, extension: @extension.to_sym, &) end
@rbs name: String @rbs description: String @rbs &block: (Riffer::Rig::Command::Context) -> void @rbs return: void
() → Hash[String, Riffer::Rig::Command]
Source
# File lib/riffer/rig/registrar.rb, line 130 def commands @commands.dup end
@rbs return: Hash[String, Riffer::Rig::Command]
() → Hash[Symbol, untyped]
Source
# File lib/riffer/rig/registrar.rb, line 145 def declared_settings @declared_settings.dup end
@rbs return: Hash[Symbol, untyped]
() → Hash[Symbol, Array[^(Riffer::Rig::Events::_Event | ::Riffer::StreamEvents::Base) → untyped]]
Source
# File lib/riffer/rig/registrar.rb, line 165 def hooks @hooks.transform_values(&:dup) end
@rbs return: Hash[Symbol, Array[^(Riffer::Rig::Events::_Event | ::Riffer::StreamEvents::Base) -> untyped]]
(String name, ?url: String?, ?headers: Hash[String, String], ?auth: Hash[Symbol, String | Array[String]], ?command: String?, ?args: Array[String], ?env: Hash[String, String]) → void
Source
# File lib/riffer/rig/registrar.rb, line 93 def mcp(name, url: nil, headers: {}, auth: {}, command: nil, args: [], env: {}) fields = auth.transform_keys(&:to_sym) .transform_values { |env_names| env_names.is_a?(String) ? [env_names] : env_names } @mcp_servers[name] = Riffer::Rig::Mcp::Declaration.new( url: url, headers: headers, auth: fields, command: command, args: args, env: env ) end
() → Hash[String, Riffer::Rig::Mcp::Declaration]
Source
# File lib/riffer/rig/registrar.rb, line 150 def mcp_servers @mcp_servers.dup end
@rbs return: Hash[String, Riffer::Rig::Mcp::Declaration]
(Symbol event) { (Riffer::Rig::Events::_Event | ::Riffer::StreamEvents::Base) → untyped } → void
Source
# File lib/riffer/rig/registrar.rb, line 112 def on(event, &block) hooks = @hooks.fetch(event) do raise Riffer::ArgumentError, "unknown event #{event.inspect}; expected one of #{EVENTS.join(', ')}" end hooks << block end
@rbs event: Symbol @rbs &block: (Riffer::Rig::Events::_Event | ::Riffer::StreamEvents::Base) -> untyped @rbs return: void
(Symbol name) { (Riffer::Rig::Runtime) → String? } → void
Source
# File lib/riffer/rig/registrar.rb, line 60 def prompt(name, &block) @prompts[name] = block end
@rbs name: Symbol @rbs &block: (Riffer::Rig::Runtime) -> String? @rbs return: void
() → Hash[Symbol, ^(Riffer::Rig::Runtime) → String?]
Source
# File lib/riffer/rig/registrar.rb, line 125 def prompts @prompts.dup end
@rbs return: Hash[Symbol, ^(Riffer::Rig::Runtime) -> String?]
(String | Symbol prefix, ?setup: Riffer::Rig::ProviderSetup | Hash[Symbol, untyped]?) { () → singleton(::Riffer::Providers::Base) } → void
Source
# File lib/riffer/rig/registrar.rb, line 105 def provider(prefix, setup: nil, &) Riffer::Rig::Providers.register(prefix, setup:, &) end
@rbs prefix: String | Symbol @rbs setup: Riffer::Rig::ProviderSetup | Hash[Symbol, untyped]? @rbs &block: () -> singleton(::Riffer::Providers::Base) @rbs return: void
() → Array[String]
Source
# File lib/riffer/rig/registrar.rb, line 155 def registrations [ *@tools.keys.map { |identifier| "tool #{identifier}" }, *@prompts.keys.map { |name| "prompt section #{name}" }, *@commands.keys.map { |name| "command #{name}" }, *@mcp_servers.keys.map { |name| "MCP server #{name}" } ] end
@rbs return: Array
(Symbol key, default: untyped) → void
Source
# File lib/riffer/rig/registrar.rb, line 81 def setting(key, default:) @declared_settings[key] = default end
@rbs key: Symbol @rbs default: untyped @rbs return: void
() → Hash[Symbol, untyped]
Source
# File lib/riffer/rig/registrar.rb, line 140 def settings @declared_settings.merge(@given_settings) end
@rbs return: Hash[Symbol, untyped]
() → Array[^(Riffer::Rig::Runtime) → Riffer::Skills::Backend]
Source
# File lib/riffer/rig/registrar.rb, line 135 def skill_sources @skill_sources.dup end
@rbs return: Array[^(Riffer::Rig::Runtime) -> Riffer::Skills::Backend]
() { (Riffer::Rig::Runtime) → Riffer::Skills::Backend } → void
Source
# File lib/riffer/rig/registrar.rb, line 74 def skills(&block) @skill_sources << block end
@rbs &block: (Riffer::Rig::Runtime) -> Riffer::Skills::Backend @rbs return: void
(singleton(Riffer::Tool) klass) → void
Source
# File lib/riffer/rig/registrar.rb, line 53 def tool(klass) @tools[klass.identifier] = klass end
@rbs klass: singleton(Riffer::Tool) @rbs return: void
() → Hash[String, singleton(Riffer::Tool)]
Source
# File lib/riffer/rig/registrar.rb, line 120 def tools @tools.dup end
@rbs return: Hash[String, singleton(Riffer::Tool)]