Class: ClaudeHooks::Output::ElicitationResult

Inherits:
Base
  • Object
show all
Defined in:
lib/claude_hooks/output/elicitation_result.rb

Instance Attribute Summary

Attributes inherited from Base

#data

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#continue?, for_hook_type, #hook_specific_output, #initialize, #output_and_exit, #stop_reason, #suppress_output?, #system_message, #terminal_sequence, #to_json

Constructor Details

This class inherits a constructor from ClaudeHooks::Output::Base

Class Method Details

.merge(*outputs) ⇒ Object



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
# File 'lib/claude_hooks/output/elicitation_result.rb', line 36

def self.merge(*outputs)
  compacted_outputs = outputs.compact
  return compacted_outputs.first if compacted_outputs.length == 1
  return super(*outputs) if compacted_outputs.empty?

  merged = super(*outputs)
  merged_data = merged.data
  last_action = nil
  last_content = nil

  compacted_outputs.each do |output|
    output_data = output.respond_to?(:data) ? output.data : output
    a = output_data.dig('hookSpecificOutput', 'action')
    next unless a
    last_action = a
    last_content = output_data.dig('hookSpecificOutput', 'content')
  end

  if last_action
    merged_data['hookSpecificOutput'] = { 'hookEventName' => 'ElicitationResult', 'action' => last_action }
    merged_data['hookSpecificOutput']['content'] = last_content if last_content
  end

  new(merged_data)
end

Instance Method Details

#accepted?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/claude_hooks/output/elicitation_result.rb', line 16

def accepted?
  action == 'accept'
end

#actionObject



8
9
10
# File 'lib/claude_hooks/output/elicitation_result.rb', line 8

def action
  hook_specific_output['action']
end

#cancelled?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/claude_hooks/output/elicitation_result.rb', line 24

def cancelled?
  action == 'cancel'
end

#contentObject



12
13
14
# File 'lib/claude_hooks/output/elicitation_result.rb', line 12

def content
  hook_specific_output['content'] || {}
end

#declined?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/claude_hooks/output/elicitation_result.rb', line 20

def declined?
  action == 'decline'
end

#exit_codeObject



28
29
30
# File 'lib/claude_hooks/output/elicitation_result.rb', line 28

def exit_code
  0
end

#output_streamObject



32
33
34
# File 'lib/claude_hooks/output/elicitation_result.rb', line 32

def output_stream
  :stdout
end