Class: SharedTools::Tools::WorkflowManagerTool

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger: nil, storage_dir: nil) ⇒ WorkflowManagerTool

Returns a new instance of WorkflowManagerTool.



66
67
68
69
70
# File 'lib/shared_tools/tools/workflow_manager_tool.rb', line 66

def initialize(logger: nil, storage_dir: nil)
  @logger = logger || RubyLLM.logger
  @storage_dir = storage_dir || ".workflows"
  FileUtils.mkdir_p(@storage_dir) unless Dir.exist?(@storage_dir)
end

Class Method Details

.nameObject



10
# File 'lib/shared_tools/tools/workflow_manager_tool.rb', line 10

def self.name = 'workflow_manager'

Instance Method Details

#execute(action:, workflow_id: nil, **step_data) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/shared_tools/tools/workflow_manager_tool.rb', line 72

def execute(action:, workflow_id: nil, **step_data)
  @logger.info("WorkflowManagerTool#execute action=#{action} workflow_id=#{workflow_id}")

  case action
  when "start"
    start_workflow(step_data)
  when "step"
    return {success: false, error: "workflow_id required for 'step' action"} unless workflow_id
    process_workflow_step(workflow_id, step_data)
  when "status"
    return {success: false, error: "workflow_id required for 'status' action"} unless workflow_id
    get_workflow_status(workflow_id)
  when "complete"
    return {success: false, error: "workflow_id required for 'complete' action"} unless workflow_id
    complete_workflow(workflow_id)
  else
    {success: false, error: "Unknown action: #{action}"}
  end
rescue => e
  @logger.error("Workflow operation failed: #{e.message}")
  {
    success: false,
    error: "Workflow operation failed: #{e.message}",
    error_type: e.class.name
  }
end