Class: ClaudeSwarm::OpenAI::Executor
- Inherits:
-
BaseExecutor
- Object
- BaseExecutor
- ClaudeSwarm::OpenAI::Executor
- Defined in:
- lib/claude_swarm/openai/executor.rb
Constant Summary collapse
- FARADAY_RETRY_CONFIG =
Static configuration for Faraday retry middleware
{ max: 3, # Maximum number of retries interval: 0.5, # Initial delay between retries (in seconds) interval_randomness: 0.5, # Randomness factor for retry intervals backoff_factor: 2, # Exponential backoff factor exceptions: [ Faraday::TimeoutError, Faraday::ConnectionFailed, Faraday::ServerError, # Retry on 5xx errors ].freeze, retry_statuses: [429, 500, 502, 503, 504].freeze, # HTTP status codes to retry }.freeze
- OPENAI_CLIENT_CONFIG =
Static configuration for OpenAI client
{ log_errors: true, request_timeout: 1800, # 30 minutes }.freeze
Instance Attribute Summary
Attributes inherited from BaseExecutor
#instance_info, #last_response, #logger, #session_id, #session_json_path, #session_path, #working_directory
Instance Method Summary collapse
- #execute(prompt, options = {}) ⇒ Object
-
#initialize(working_directory: Dir.pwd, model: nil, mcp_config: nil, vibe: false, instance_name: nil, instance_id: nil, calling_instance: nil, calling_instance_id: nil, claude_session_id: nil, additional_directories: [], debug: false, temperature: nil, api_version: "chat_completion", openai_token_env: "OPENAI_API_KEY", base_url: nil, reasoning_effort: nil, zdr: false) ⇒ Executor
constructor
A new instance of Executor.
- #log(event) ⇒ Object
- #reset_session ⇒ Object
-
#session_json_logger ⇒ Object
Session JSON logger for the API handlers.
Methods inherited from BaseExecutor
Constructor Details
#initialize(working_directory: Dir.pwd, model: nil, mcp_config: nil, vibe: false, instance_name: nil, instance_id: nil, calling_instance: nil, calling_instance_id: nil, claude_session_id: nil, additional_directories: [], debug: false, temperature: nil, api_version: "chat_completion", openai_token_env: "OPENAI_API_KEY", base_url: nil, reasoning_effort: nil, zdr: false) ⇒ Executor
Returns a new instance of Executor.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/claude_swarm/openai/executor.rb', line 30 def initialize(working_directory: Dir.pwd, model: nil, mcp_config: nil, vibe: false, instance_name: nil, instance_id: nil, calling_instance: nil, calling_instance_id: nil, claude_session_id: nil, additional_directories: [], debug: false, temperature: nil, api_version: "chat_completion", openai_token_env: "OPENAI_API_KEY", base_url: nil, reasoning_effort: nil, zdr: false) # Call parent initializer for common attributes super( working_directory: working_directory, model: model, mcp_config: mcp_config, vibe: vibe, instance_name: instance_name, instance_id: instance_id, calling_instance: calling_instance, calling_instance_id: calling_instance_id, claude_session_id: claude_session_id, additional_directories: additional_directories, debug: debug ) # OpenAI-specific attributes @temperature = temperature @api_version = api_version @base_url = base_url @reasoning_effort = reasoning_effort @zdr = zdr # Conversation state for maintaining context = [] @previous_response_id = nil # Setup OpenAI client setup_openai_client(openai_token_env) # Setup MCP client for tools setup_mcp_client # Create API handler based on api_version @api_handler = create_api_handler end |
Instance Method Details
#execute(prompt, options = {}) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/claude_swarm/openai/executor.rb', line 71 def execute(prompt, = {}) # Log the request log_request(prompt) # Start timing start_time = Time.now # Execute using the appropriate handler result = @api_handler.execute(prompt, ) # Calculate duration duration_ms = ((Time.now - start_time) * 1000).round # Build and return response build_response(result, duration_ms) rescue StandardError => e logger.error { "Unexpected error for #{@instance_name}: #{e.class} - #{e.message}" } logger.error { "Backtrace: #{e.backtrace.join("\n")}" } raise end |
#log(event) ⇒ Object
102 103 104 |
# File 'lib/claude_swarm/openai/executor.rb', line 102 def log(event) append_to_session_json(event) end |
#reset_session ⇒ Object
92 93 94 95 |
# File 'lib/claude_swarm/openai/executor.rb', line 92 def reset_session super @api_handler&.reset_session end |
#session_json_logger ⇒ Object
Session JSON logger for the API handlers
98 99 100 |
# File 'lib/claude_swarm/openai/executor.rb', line 98 def session_json_logger self end |