Class: Mistri::Result

Inherits:
Data
  • Object
show all
Defined in:
lib/mistri/result.rb

Overview

The outcome of a run. A run either finishes, or suspends because a tool needs a human's approval, or stops on abort or budget. Suspension is a first-class outcome, not an error: the run returns immediately with awaiting_approval? true and the pending calls, so nothing blocks waiting for a decision that may come days later.

Reads delegate to the final message, so result.text works whether the run completed or suspended. output is a task's validated value, nil on plain runs. usage is the run's own accounting: every persisted turn plus compaction calls, summed (a resumed run counts from the resume; task sums across its fix passes).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message:, status:, pending: [], output: nil, usage: Usage.zero) ⇒ Result

Returns a new instance of Result.



16
17
18
# File 'lib/mistri/result.rb', line 16

def initialize(message:, status:, pending: [], output: nil, usage: Usage.zero)
  super
end

Instance Attribute Details

#messageObject (readonly)

Returns the value of attribute message

Returns:

  • (Object)

    the current value of message



15
16
17
# File 'lib/mistri/result.rb', line 15

def message
  @message
end

#outputObject (readonly)

Returns the value of attribute output

Returns:

  • (Object)

    the current value of output



15
16
17
# File 'lib/mistri/result.rb', line 15

def output
  @output
end

#pendingObject (readonly)

Returns the value of attribute pending

Returns:

  • (Object)

    the current value of pending



15
16
17
# File 'lib/mistri/result.rb', line 15

def pending
  @pending
end

#statusObject (readonly)

Returns the value of attribute status

Returns:

  • (Object)

    the current value of status



15
16
17
# File 'lib/mistri/result.rb', line 15

def status
  @status
end

#usageObject (readonly)

Returns the value of attribute usage

Returns:

  • (Object)

    the current value of usage



15
16
17
# File 'lib/mistri/result.rb', line 15

def usage
  @usage
end

Instance Method Details

#aborted?Boolean

Returns:

  • (Boolean)


22
# File 'lib/mistri/result.rb', line 22

def aborted? = status == :aborted

#awaiting_approval?Boolean

Returns:

  • (Boolean)


21
# File 'lib/mistri/result.rb', line 21

def awaiting_approval? = status == :awaiting_approval

#completed?Boolean

Returns:

  • (Boolean)


20
# File 'lib/mistri/result.rb', line 20

def completed? = status == :completed

#error_messageObject



28
# File 'lib/mistri/result.rb', line 28

def error_message = message&.error_message

#errored?Boolean

Returns:

  • (Boolean)


24
# File 'lib/mistri/result.rb', line 24

def errored? = status == :error

#stop_reasonObject



27
# File 'lib/mistri/result.rb', line 27

def stop_reason = message&.stop_reason

#stopped_by_budget?Boolean

Returns:

  • (Boolean)


23
# File 'lib/mistri/result.rb', line 23

def stopped_by_budget? = status == :budget

#textObject



26
# File 'lib/mistri/result.rb', line 26

def text = message&.text

#to_sObject



30
# File 'lib/mistri/result.rb', line 30

def to_s = text.to_s

#tool_callsObject



29
# File 'lib/mistri/result.rb', line 29

def tool_calls = message ? message.tool_calls : []