Class: Clacky::Tools::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/clacky/tools/base.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Class Attribute Details

.tool_categoryObject

Returns the value of attribute tool_category.



9
10
11
# File 'lib/clacky/tools/base.rb', line 9

def tool_category
  @tool_category
end

.tool_descriptionObject

Returns the value of attribute tool_description.



9
10
11
# File 'lib/clacky/tools/base.rb', line 9

def tool_description
  @tool_description
end

.tool_nameObject

Returns the value of attribute tool_name.



9
10
11
# File 'lib/clacky/tools/base.rb', line 9

def tool_name
  @tool_name
end

.tool_parametersObject

Returns the value of attribute tool_parameters.



9
10
11
# File 'lib/clacky/tools/base.rb', line 9

def tool_parameters
  @tool_parameters
end

Instance Attribute Details

#agentObject

Host agent, injected at registration for extension tools so they can reach its public API (fan_out_labeled, fork_subagent, skill_loader).



14
15
16
# File 'lib/clacky/tools/base.rb', line 14

def agent
  @agent
end

Instance Method Details

#categoryObject



28
29
30
# File 'lib/clacky/tools/base.rb', line 28

def category
  self.class.tool_category || "general"
end

#descriptionObject



20
21
22
# File 'lib/clacky/tools/base.rb', line 20

def description
  self.class.tool_description
end

#execute(**_args) ⇒ Object

Execute the tool - must be implemented by subclasses

Raises:

  • (NotImplementedError)


33
34
35
# File 'lib/clacky/tools/base.rb', line 33

def execute(**_args)
  raise NotImplementedError, "#{self.class.name} must implement #execute"
end

#format_call(args) ⇒ String

Format tool call for display - can be overridden by subclasses

Parameters:

  • args (Hash)

    The arguments passed to the tool

Returns:

  • (String)

    Formatted call description (e.g., "Read(file.rb)")



64
65
66
# File 'lib/clacky/tools/base.rb', line 64

def format_call(args)
  "#{name}(...)"
end

#format_result(result) ⇒ String

Format tool result for display - can be overridden by subclasses

Parameters:

  • result (Object)

    The result returned by execute

Returns:

  • (String)

    Formatted result summary (e.g., "Read 150 lines")



71
72
73
74
75
76
77
78
79
# File 'lib/clacky/tools/base.rb', line 71

def format_result(result)
  if result.is_a?(Hash) && result[:message]
    result[:message]
  elsif result.is_a?(String)
    result.length > 100 ? "#{result[0..100]}..." : result
  else
    "Done"
  end
end

#nameObject



16
17
18
# File 'lib/clacky/tools/base.rb', line 16

def name
  self.class.tool_name
end

#parametersObject



24
25
26
# File 'lib/clacky/tools/base.rb', line 24

def parameters
  self.class.tool_parameters
end

#to_function_definitionObject

Convert to OpenAI function calling format



82
83
84
85
86
87
88
89
90
91
# File 'lib/clacky/tools/base.rb', line 82

def to_function_definition
  {
    type: "function",
    function: {
      name: name,
      description: description,
      parameters: parameters
    }
  }
end