Class: OmniAgent::Tool::SchemaBuilder

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSchemaBuilder

Returns a new instance of SchemaBuilder.



6
7
8
9
# File 'lib/omni_agent/tool/schema_builder.rb', line 6

def initialize
  @properties = {}
  @required_fields = []
end

Instance Attribute Details

#propertiesObject (readonly)

Returns the value of attribute properties.



4
5
6
# File 'lib/omni_agent/tool/schema_builder.rb', line 4

def properties
  @properties
end

#required_fieldsObject (readonly)

Returns the value of attribute required_fields.



4
5
6
# File 'lib/omni_agent/tool/schema_builder.rb', line 4

def required_fields
  @required_fields
end

Instance Method Details

#array(name, items_type: nil, description: nil, required: true, &block) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/omni_agent/tool/schema_builder.rb', line 23

def array(name, items_type: nil, description: nil, required: true, &block)
  property = { type: "array" }
  property[:description] = description if description

  if block_given?
    nested_builder = SchemaBuilder.new
    nested_builder.instance_eval(&block)

    property[:items] = {
      type: "object",
      properties: nested_builder.properties,
      required: nested_builder.required_fields,
      additionalProperties: false
    }
  else
    property[:items] = { type: items_type || "string" }
  end

  @properties[name] = property
  @required_fields << name.to_s if required
end

#boolean(name, description: nil, required: true) ⇒ Object



19
20
21
# File 'lib/omni_agent/tool/schema_builder.rb', line 19

def boolean(name, description: nil, required: true)
  add_property(name, type: "boolean", description: description, required: required)
end

#hash(name, description: nil, required: true, &block) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/omni_agent/tool/schema_builder.rb', line 45

def hash(name, description: nil, required: true, &block)
  property = { type: "object" }
  property[:description] = description if description

  if block_given?
    nested_builder = SchemaBuilder.new
    nested_builder.instance_eval(&block)

    property[:properties] = nested_builder.properties
    property[:required] = nested_builder.required_fields
    property[:additionalProperties] = false
  else
    property[:additionalProperties] = true
  end

  @properties[name] = property
  @required_fields << name.to_s if required
end

#integer(name, description: nil, required: true) ⇒ Object



15
16
17
# File 'lib/omni_agent/tool/schema_builder.rb', line 15

def integer(name, description: nil, required: true)
  add_property(name, type: "integer", description: description, required: required)
end

#string(name, description: nil, required: true) ⇒ Object



11
12
13
# File 'lib/omni_agent/tool/schema_builder.rb', line 11

def string(name, description: nil, required: true)
  add_property(name, type: "string", description: description, required: required)
end