Class: TurnKit::Tool

Inherits:
Object
  • Object
show all
Defined in:
lib/turnkit/tool.rb

Direct Known Subclasses

SubAgentTool

Constant Summary collapse

TYPES =
%i[string integer number boolean array object enum].freeze

Class Method Summary collapse

Class Method Details

.call(arguments = {}, context:) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/turnkit/tool.rb', line 48

def call(arguments = {}, context:)
  keyword_arguments = symbolize(arguments)
  instance = new
  if accepts_turnkit_context?(instance)
    instance.call(**keyword_arguments, turnkit_context: context)
  else
    instance.call(**keyword_arguments, context: context)
  end
end

.completion_message(_result) ⇒ Object



44
45
46
# File 'lib/turnkit/tool.rb', line 44

def completion_message(_result)
  nil
end

.description(value = nil) ⇒ Object



13
14
15
16
# File 'lib/turnkit/tool.rb', line 13

def description(value = nil)
  @description = value.to_s if value
  @description.to_s
end

.ends_turn?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/turnkit/tool.rb', line 40

def ends_turn?
  false
end

.parameter(name, type = :string, required: false, description: "", default: nil, enum: nil) ⇒ Object

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/turnkit/tool.rb', line 23

def parameter(name, type = :string, required: false, description: "", default: nil, enum: nil)
  raise ArgumentError, "unknown parameter type: #{type}" unless TYPES.include?(type)

  parameters << {
    name: name.to_s,
    type: type,
    required: required ? true : false,
    description: description.to_s,
    default: default,
    enum: enum
  }.compact
end

.parametersObject



36
37
38
# File 'lib/turnkit/tool.rb', line 36

def parameters
  @parameters ||= superclass.respond_to?(:parameters) ? superclass.parameters.dup : []
end

.tool_name(value = nil) ⇒ Object



8
9
10
11
# File 'lib/turnkit/tool.rb', line 8

def tool_name(value = nil)
  @tool_name = value.to_s if value
  @tool_name ||= name.to_s.split("::").last.gsub(/([a-z\d])([A-Z])/, "\\1_\\2").downcase
end

.usage_hint(value = nil) ⇒ Object



18
19
20
21
# File 'lib/turnkit/tool.rb', line 18

def usage_hint(value = nil)
  @usage_hint = value.to_s if value
  @usage_hint.to_s
end