Class: OpenRouter::Tool::ParametersBuilder

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

Overview

Internal class for building parameter schemas

Instance Method Summary collapse

Constructor Details

#initialize(params_hash) ⇒ ParametersBuilder

Returns a new instance of ParametersBuilder.



97
98
99
# File 'lib/open_router/tool.rb', line 97

def initialize(params_hash)
  @params = params_hash
end

Instance Method Details

#array(name, required: false, description: nil, items: nil, &block) ⇒ Object



121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/open_router/tool.rb', line 121

def array(name, required: false, description: nil, items: nil, &block)
  array_def = { type: "array", description: }.compact

  if items
    array_def[:items] = items
  elsif block_given?
    items_builder = ItemsBuilder.new
    items_builder.instance_eval(&block)
    array_def[:items] = items_builder.to_h
  end

  add_property(name, array_def)
  mark_required(name) if required
end

#boolean(name, required: false, description: nil, **options) ⇒ Object



116
117
118
119
# File 'lib/open_router/tool.rb', line 116

def boolean(name, required: false, description: nil, **options)
  add_property(name, { type: "boolean", description: }.merge(options).compact)
  mark_required(name) if required
end

#integer(name, required: false, description: nil, **options) ⇒ Object



106
107
108
109
# File 'lib/open_router/tool.rb', line 106

def integer(name, required: false, description: nil, **options)
  add_property(name, { type: "integer", description: }.merge(options).compact)
  mark_required(name) if required
end

#number(name, required: false, description: nil, **options) ⇒ Object



111
112
113
114
# File 'lib/open_router/tool.rb', line 111

def number(name, required: false, description: nil, **options)
  add_property(name, { type: "number", description: }.merge(options).compact)
  mark_required(name) if required
end

#object(name, required: false, description: nil, &block) ⇒ Object



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/open_router/tool.rb', line 136

def object(name, required: false, description: nil, &block)
  object_def = {
    type: "object",
    description:,
    properties: {},
    required: []
  }.compact

  if block_given?
    object_builder = ParametersBuilder.new(object_def)
    object_builder.instance_eval(&block)
  end

  add_property(name, object_def)
  mark_required(name) if required
end

#string(name, required: false, description: nil, **options) ⇒ Object



101
102
103
104
# File 'lib/open_router/tool.rb', line 101

def string(name, required: false, description: nil, **options)
  add_property(name, { type: "string", description: }.merge(options).compact)
  mark_required(name) if required
end