Module: Omakase::Capabilities

Defined in:
lib/omakase/capabilities.rb

Overview

The agent's own methods, written out for the model. Adding a tool is adding a method.

Class Method Summary collapse

Class Method Details

.entry(agent_class, name) ⇒ Object



20
21
22
23
24
# File 'lib/omakase/capabilities.rb', line 20

def entry(agent_class, name)
  signature = "#{name}(#{parameters(agent_class.instance_method(name))})"
  description = agent_class.descriptions[name] || agent_class.generations[name]&.prompt
  description ? "#{signature}#{description}" : signature
end

.names(agent_class) ⇒ Object



13
14
15
16
17
18
# File 'lib/omakase/capabilities.rb', line 13

def names(agent_class)
  agent_class.ancestors
    .take_while { |mod| mod != Agent }
    .flat_map { |mod| mod.public_instance_methods(false) }
    .uniq
end

.of(agent_class, except: nil) ⇒ Object



9
10
11
# File 'lib/omakase/capabilities.rb', line 9

def of(agent_class, except: nil)
  (names(agent_class) - [except]).sort.map { |name| entry(agent_class, name) }
end

.parameters(method) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/omakase/capabilities.rb', line 26

def parameters(method)
  method.parameters.map do |kind, name|
    case kind
    when :key, :keyreq then "#{name}:"
    when :keyrest then "**#{name}"
    when :rest then "*#{name}"
    when :opt then "#{name} = ..."
    else name.to_s
    end
  end.join(", ")
end