Class: SkillBench::Services::ErrorResponseBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/skill_bench/services/error_response_builder.rb

Overview

Builds standardized error responses with metadata.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(evaluation, provider, skill_names) ⇒ ErrorResponseBuilder

Returns a new instance of ErrorResponseBuilder.

Parameters:

  • evaluation (SkillBench::Models::Eval)

    The eval being run

  • provider (Object)

    The resolved provider

  • skill_names (Array<String>)

    Names of the skills



54
55
56
57
58
# File 'lib/skill_bench/services/error_response_builder.rb', line 54

def initialize(evaluation, provider, skill_names)
  @evaluation = evaluation
  @provider = provider
  @skill_names = skill_names
end

Class Method Details

.agent_error(result, phase, evaluation, provider, skill_names) ⇒ Hash

Builds an agent error response.

Parameters:

  • result (Hash)

    The agent result containing the error

  • phase (String)

    The phase that failed (e.g., ‘baseline’, ‘context’)

  • evaluation (SkillBench::Models::Eval)

    The eval being run

  • provider (Object)

    The resolved provider

  • skill_names (Array<String>)

    Names of the skills

Returns:

  • (Hash)

    Error result with metadata



26
27
28
# File 'lib/skill_bench/services/error_response_builder.rb', line 26

def self.agent_error(result, phase, evaluation, provider, skill_names)
  new(evaluation, provider, skill_names).agent_error(result, phase)
end

.config_error(error, evaluation, provider, skill_names) ⇒ Hash

Builds a configuration error response.

Parameters:

  • error (Exception)

    The configuration error

  • evaluation (SkillBench::Models::Eval)

    The eval being run

  • provider (Object)

    The resolved provider

  • skill_names (Array<String>)

    Names of the skills

Returns:

  • (Hash)

    Error result with metadata



14
15
16
# File 'lib/skill_bench/services/error_response_builder.rb', line 14

def self.config_error(error, evaluation, provider, skill_names)
  new(evaluation, provider, skill_names).config_error(error)
end

.empty_context_error(evaluation, provider, skill_names) ⇒ Hash

Builds an empty context error response.

Parameters:

  • evaluation (SkillBench::Models::Eval)

    The eval being run

  • provider (Object)

    The resolved provider

  • skill_names (Array<String>)

    Names of the skills

Returns:

  • (Hash)

    Error result with metadata



36
37
38
# File 'lib/skill_bench/services/error_response_builder.rb', line 36

def self.empty_context_error(evaluation, provider, skill_names)
  new(evaluation, provider, skill_names).empty_context_error
end

.enrich_error(result, evaluation, provider, skill_names) ⇒ Hash

Enriches an existing error result with metadata.

Parameters:

  • result (Hash)

    The existing error result

  • evaluation (SkillBench::Models::Eval)

    The eval being run

  • provider (Object)

    The resolved provider

  • skill_names (Array<String>)

    Names of the skills

Returns:

  • (Hash)

    Enriched error result with metadata



47
48
49
# File 'lib/skill_bench/services/error_response_builder.rb', line 47

def self.enrich_error(result, evaluation, provider, skill_names)
  new(evaluation, provider, skill_names).enrich_error(result)
end

Instance Method Details

#agent_error(result, phase) ⇒ Hash

Builds an agent error response.

Parameters:

  • result (Hash)

    The agent result containing the error

  • phase (String)

    The phase that failed (e.g., ‘baseline’, ‘context’)

Returns:

  • (Hash)

    Error result with metadata



73
74
75
76
77
# File 'lib/skill_bench/services/error_response_builder.rb', line 73

def agent_error(result, phase)
  raw = result[:raw_response]
  error_msg = raw&.dig(:response, :error, :message) || raw&.dig(:error, :message) || 'unknown error'
  base_error_result("#{phase.capitalize} agent failed: #{error_msg}")
end

#config_error(error) ⇒ Hash

Builds a configuration error response.

Parameters:

  • error (Exception)

    The configuration error

Returns:

  • (Hash)

    Error result with metadata



64
65
66
# File 'lib/skill_bench/services/error_response_builder.rb', line 64

def config_error(error)
  base_error_result("Configuration error: #{error.message}")
end

#empty_context_errorHash

Builds an empty context error response.

Returns:

  • (Hash)

    Error result with metadata



82
83
84
# File 'lib/skill_bench/services/error_response_builder.rb', line 82

def empty_context_error
  base_error_result('Skill context is empty. Ensure SKILL.md exists and has content.')
end

#enrich_error(result) ⇒ Hash

Enriches an existing error result with metadata.

Parameters:

  • result (Hash)

    The existing error result

Returns:

  • (Hash)

    Enriched error result with metadata



90
91
92
93
94
95
96
# File 'lib/skill_bench/services/error_response_builder.rb', line 90

def enrich_error(result)
  result.merge(
    eval_name: @evaluation.name,
    skill_name: @skill_names.join(', '),
    provider_name: @provider.name
  )
end