Class: SharedTools::Tools::CronTool

Inherits:
RubyLLM::Tool
  • Object
show all
Defined in:
lib/shared_tools/tools/cron_tool.rb

Overview

Parse, validate, explain, and generate cron expressions.

Examples:

tool = SharedTools::Tools::CronTool.new
tool.execute(action: 'parse',      expression: '0 9 * * 1-5')
tool.execute(action: 'validate',   expression: '*/15 * * * *')
tool.execute(action: 'next_times', expression: '0 * * * *', count: 5)
tool.execute(action: 'generate',   description: 'every day at 9am')

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger: nil) ⇒ CronTool

Returns a new instance of CronTool.

Parameters:

  • logger (Logger) (defaults to: nil)

    optional logger



44
45
46
# File 'lib/shared_tools/tools/cron_tool.rb', line 44

def initialize(logger: nil)
  @logger = logger || RubyLLM.logger
end

Class Method Details

.nameObject



17
# File 'lib/shared_tools/tools/cron_tool.rb', line 17

def self.name = 'cron_tool'

Instance Method Details

#execute(action:, expression: nil, count: nil, description: nil) ⇒ Hash

Returns result.

Parameters:

  • action (String)

    action to perform

  • expression (String, nil) (defaults to: nil)

    cron expression

  • count (Integer, nil) (defaults to: nil)

    number of times for next_times

  • description (String, nil) (defaults to: nil)

    natural language description for generate

Returns:

  • (Hash)

    result



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/shared_tools/tools/cron_tool.rb', line 53

def execute(action:, expression: nil, count: nil, description: nil)
  @logger.info("CronTool#execute action=#{action}")

  case action.to_s.downcase
  when 'parse'      then parse_expression(expression)
  when 'validate'   then validate_expression(expression)
  when 'next_times' then next_times(expression, (count || 5).to_i)
  when 'generate'   then generate_expression(description)
  else
    { success: false, error: "Unknown action '#{action}'. Use: parse, validate, next_times, generate" }
  end
rescue => e
  @logger.error("CronTool error: #{e.message}")
  { success: false, error: e.message }
end