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



28
29
30
31
# File 'lib/antigravity/tool.rb', line 28

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

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



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

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



34
35
36
37
38
39
40
41
# File 'lib/antigravity/tool.rb', line 34

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

#parametersObject



43
44
45
# File 'lib/antigravity/tool.rb', line 43

def parameters
  @parameters || {}
end

#to_json_schemaObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/antigravity/tool.rb', line 47

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