Class: Rasti::AI::MCP::ToolsRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/rasti/ai/mcp/tools_registry.rb

Constant Summary collapse

Entry =
Rasti::Model[:serialization, :executor]

Instance Method Summary collapse

Constructor Details

#initializeToolsRegistry

Returns a new instance of ToolsRegistry.



8
9
10
# File 'lib/rasti/ai/mcp/tools_registry.rb', line 8

def initialize
  @entries = {}
end

Instance Method Details

#call(name, args = {}) ⇒ Object



29
30
31
32
# File 'lib/rasti/ai/mcp/tools_registry.rb', line 29

def call(name, args={})
  raise "Tool #{name} not found" unless entries.key? name
  entries[name].executor.call args
end

#register(tool: nil, name: nil, description: nil, form: nil, input_schema: nil, &block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rasti/ai/mcp/tools_registry.rb', line 12

def register(tool: nil, name: nil, description: nil, form: nil, input_schema: nil, &block)
  resolved_name        = resolve_name tool, name
  resolved_description = resolve_description tool, description
  resolved_schema      = resolve_schema tool, form, input_schema
  resolved_executor    = resolve_executor(tool, resolved_name, &block)

  serialization = {name: resolved_name}
  serialization[:description] = resolved_description if resolved_description
  serialization[:inputSchema] = resolved_schema      if resolved_schema

  entries[resolved_name] = Entry.new serialization: serialization, executor: resolved_executor
end

#serializationsObject



25
26
27
# File 'lib/rasti/ai/mcp/tools_registry.rb', line 25

def serializations
  entries.values.map(&:serialization)
end