Class: AgentHarness::Providers::Base
- Inherits:
-
Object
- Object
- AgentHarness::Providers::Base
- Includes:
- Adapter
- Defined in:
- lib/agent_harness/providers/base.rb
Overview
Base class for all providers
Provides common functionality for provider implementations including command execution, error handling, and response parsing.
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#executor ⇒ Object
readonly
Returns the value of attribute executor.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
-
#configure(options = {}) ⇒ self
Configure the provider instance.
-
#display_name ⇒ String
Human-friendly display name.
-
#initialize(config: nil, executor: nil, logger: nil) ⇒ Base
constructor
Initialize the provider.
-
#name ⇒ String
Provider name for display.
-
#send_message(prompt:, **options) ⇒ Response
Main send_message implementation.
Methods included from Adapter
#capabilities, #dangerous_mode_flags, #error_patterns, #fetch_mcp_servers, #health_status, included, #session_flags, #supports_dangerous_mode?, #supports_mcp?, #supports_sessions?, #validate_config
Constructor Details
#initialize(config: nil, executor: nil, logger: nil) ⇒ Base
Initialize the provider
42 43 44 45 46 |
# File 'lib/agent_harness/providers/base.rb', line 42 def initialize(config: nil, executor: nil, logger: nil) @config = config || ProviderConfig.new(self.class.provider_name) @executor = executor || AgentHarness.configuration.command_executor @logger = logger || AgentHarness.logger end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
35 36 37 |
# File 'lib/agent_harness/providers/base.rb', line 35 def config @config end |
#executor ⇒ Object (readonly)
Returns the value of attribute executor.
35 36 37 |
# File 'lib/agent_harness/providers/base.rb', line 35 def executor @executor end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
35 36 37 |
# File 'lib/agent_harness/providers/base.rb', line 35 def logger @logger end |
Instance Method Details
#configure(options = {}) ⇒ self
Configure the provider instance
52 53 54 55 |
# File 'lib/agent_harness/providers/base.rb', line 52 def configure( = {}) @config.merge!() self end |
#display_name ⇒ String
Human-friendly display name
99 100 101 |
# File 'lib/agent_harness/providers/base.rb', line 99 def display_name name.capitalize end |
#name ⇒ String
Provider name for display
92 93 94 |
# File 'lib/agent_harness/providers/base.rb', line 92 def name self.class.provider_name.to_s end |
#send_message(prompt:, **options) ⇒ Response
Main send_message implementation
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/agent_harness/providers/base.rb', line 62 def (prompt:, **) log_debug("send_message_start", prompt_length: prompt.length, options: .keys) # Build command command = build_command(prompt, ) # Calculate timeout timeout = [:timeout] || @config.timeout || default_timeout # Execute command start_time = Time.now result = execute_with_timeout(command, timeout: timeout, env: build_env()) duration = Time.now - start_time # Parse response response = parse_response(result, duration: duration) # Track tokens track_tokens(response) if response.tokens log_debug("send_message_complete", duration: duration, tokens: response.tokens) response rescue => e handle_error(e, prompt: prompt, options: ) end |