Class: Roast::Cogs::Agent::Providers::Claude::Messages::ResultMessage
- Inherits:
-
Roast::Cogs::Agent::Providers::Claude::Message
- Object
- Roast::Cogs::Agent::Providers::Claude::Message
- Roast::Cogs::Agent::Providers::Claude::Messages::ResultMessage
- Defined in:
- lib/roast/cogs/agent/providers/claude/messages/result_message.rb
Constant Summary collapse
- IGNORED_FIELDS =
[ :duration_api_ms, :permission_denials, :stop_reason, :usage, :uuid, ].freeze
Instance Attribute Summary collapse
-
#content ⇒ Object
readonly
: String.
-
#stats ⇒ Object
readonly
: Stats.
-
#success ⇒ Object
readonly
: bool.
Attributes inherited from Roast::Cogs::Agent::Providers::Claude::Message
#error, #session_id, #type, #unparsed
Instance Method Summary collapse
-
#initialize(type:, hash:) ⇒ ResultMessage
constructor
: (type: Symbol, hash: Hash[Symbol, untyped]) -> void.
Methods inherited from Roast::Cogs::Agent::Providers::Claude::Message
Constructor Details
#initialize(type:, hash:) ⇒ ResultMessage
: (type: Symbol, hash: Hash[Symbol, untyped]) -> void
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/roast/cogs/agent/providers/claude/messages/result_message.rb', line 29 def initialize(type:, hash:) subtype = hash.delete(:subtype) @content = hash.delete(:result) || "" @success = hash.delete(:success) || subtype == "success" if hash.delete(:is_error) || subtype == "error" @content = @content.presence || hash.dig(:error, :message) || "Unknown error" hash.delete(:error) end @stats = Stats.new @stats.duration_ms = hash.delete(:duration_ms) @stats.num_turns = hash.delete(:num_turns) hash.delete(:modelUsage)&.each do |model, h| usage = Usage.new usage.input_tokens = h[:inputTokens] usage.output_tokens = h[:outputTokens] usage.cost_usd = h[:costUSD] @stats.model_usage[model] = usage @stats.usage.input_tokens = (@stats.usage.input_tokens || 0) + (usage.input_tokens || 0) @stats.usage.output_tokens = (@stats.usage.output_tokens || 0) + (usage.output_tokens || 0) end @stats.usage.cost_usd = hash.delete(:total_cost_usd) hash.except!(*IGNORED_FIELDS) super(type:, hash:) end |
Instance Attribute Details
#content ⇒ Object (readonly)
: String
20 21 22 |
# File 'lib/roast/cogs/agent/providers/claude/messages/result_message.rb', line 20 def content @content end |
#stats ⇒ Object (readonly)
: Stats
26 27 28 |
# File 'lib/roast/cogs/agent/providers/claude/messages/result_message.rb', line 26 def stats @stats end |
#success ⇒ Object (readonly)
: bool
23 24 25 |
# File 'lib/roast/cogs/agent/providers/claude/messages/result_message.rb', line 23 def success @success end |