Class: TurnKit::Tool
- Inherits:
-
Object
- Object
- TurnKit::Tool
- Defined in:
- lib/turnkit/tool.rb
Direct Known Subclasses
Constant Summary collapse
- TYPES =
%i[string integer number boolean array object enum].freeze
Class Method Summary collapse
- .call(arguments = {}, context:) ⇒ Object
- .completion_message(_result) ⇒ Object
- .description(value = nil) ⇒ Object
- .ends_turn? ⇒ Boolean
- .parameter(name, type = :string, required: false, description: "", default: nil, enum: nil) ⇒ Object
- .parameters ⇒ Object
- .tool_name(value = nil) ⇒ Object
- .usage_hint(value = nil) ⇒ Object
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 (_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
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
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 |
.parameters ⇒ Object
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 |