module Riffer::Tools::Toolable
@rbs module-self Module
Constants
- DEFAULT_TIMEOUT
-
@rbs self.@extenders: Array? @rbs @description: String? @rbs @identifier: String? @rbs @timeout: (Integer | Float)? @rbs @params_builder: Riffer::Params? @rbs @kind: Symbol?
Public Class Methods
Source
# File lib/riffer/tools/toolable.rb, line 17 def self.extended(base) extenders = (@extenders ||= []) #: Array[Module] extenders << base end
Public Instance Methods
Source
# File lib/riffer/tools/toolable.rb, line 30 def description(value = nil) return @description if value.nil? @description = value.to_s end
Source
# File lib/riffer/tools/toolable.rb, line 38 def identifier(value = nil) return @identifier || Riffer::Helpers::Identifier.for(self) if value.nil? @identifier = value.to_s end
Source
# File lib/riffer/tools/toolable.rb, line 78 def kind(value = nil) return @kind || :tool if value.nil? @kind = value.to_sym end
Source
# File lib/riffer/tools/toolable.rb, line 46 def name(value = nil) return identifier(value) if value identifier end
Source
# File lib/riffer/tools/toolable.rb, line 72 def parameters_schema(strict: false) @params_builder&.to_json_schema(strict: strict) || empty_schema end
Source
# File lib/riffer/tools/toolable.rb, line 62 def params(&block) return @params_builder if block.nil? builder = Riffer::Params.new builder.instance_eval(&block) @params_builder = builder end
Source
# File lib/riffer/tools/toolable.rb, line 54 def timeout(value = nil) return @timeout || DEFAULT_TIMEOUT if value.nil? @timeout = value.to_f end
Source
# File lib/riffer/tools/toolable.rb, line 86 def to_tool_schema(strict: false) { name: name, description: description, parameters_schema: parameters_schema(strict: strict), } end
Source
# File lib/riffer/tools/toolable.rb, line 96 def validate_as_tool! if description.nil? || description.to_s.strip.empty? raise Riffer::ArgumentError, "#{self} must define a description" end raise Riffer::ArgumentError, "#{self} must have an identifier" if identifier.nil? || identifier.to_s.strip.empty? true end