Module: Antigravity::Tool::ClassMethods

Defined in:
lib/antigravity/tool.rb

Instance Method Summary collapse

Instance Method Details

#desc(val = nil) ⇒ Object Also known as: tool_description



22
23
24
25
# File 'lib/antigravity/tool.rb', line 22

def desc(val = nil)
  @tool_description = val if val
  @tool_description || ""
end

#name(val = nil, desc: nil) ⇒ Object Also known as: tool_name



13
14
15
16
17
18
19
# File 'lib/antigravity/tool.rb', line 13

def name(val = nil, desc: nil)
  if val
    @tool_name = val.to_s
    @tool_description = desc if desc
  end
  @tool_name || self.name&.split("::")&.last&.gsub(/(.)([A-Z])/, '\1_\2')&.downcase || "custom_tool"
end

#param(name, type: :string, description: "", required: true) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/antigravity/tool.rb', line 28

def param(name, type: :string, description: "", required: true)
  @parameters ||= {}
  @parameters[name.to_sym] = {
    type: type.to_s,
    description: description,
    required: required
  }
end

#parametersObject



37
38
39
# File 'lib/antigravity/tool.rb', line 37

def parameters
  @parameters || {}
end

#to_json_schemaObject



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

def to_json_schema
  properties = {}
  required_params = []

  parameters.each do |param_name, spec|
    properties[param_name] = {
      type: spec[:type],
      description: spec[:description]
    }
    required_params << param_name.to_s if spec[:required]
  end

  {
    name: name,
    description: desc,
    parameters: {
      type: "object",
      properties: properties,
      required: required_params
    }
  }
end