Class: Rasti::AI::MCP::ToolsRegistry
- Inherits:
-
Object
- Object
- Rasti::AI::MCP::ToolsRegistry
- Defined in:
- lib/rasti/ai/mcp/tools_registry.rb
Constant Summary collapse
- Entry =
Rasti::Model[:serialization, :executor]
Instance Method Summary collapse
- #call(name, args = {}) ⇒ Object
-
#initialize ⇒ ToolsRegistry
constructor
A new instance of ToolsRegistry.
- #register(tool: nil, name: nil, description: nil, form: nil, input_schema: nil, &block) ⇒ Object
- #serializations ⇒ Object
Constructor Details
#initialize ⇒ ToolsRegistry
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 |
#serializations ⇒ Object
25 26 27 |
# File 'lib/rasti/ai/mcp/tools_registry.rb', line 25 def serializations entries.values.map(&:serialization) end |