Class: Tracebook::Result

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

Overview

Result object returned by record!.

Contains either the persisted interaction (when sync) or success/error information.

Examples:

Successful async recording

result = TraceBook.record!(provider: "openai", model: "gpt-4o", ...)
result.success? # => true
result.interaction # => nil (async - not available yet)

Successful sync recording

TraceBook.configure { |c| c.persist_async = false }
result = TraceBook.record!(provider: "openai", model: "gpt-4o", ...)
result.success? # => true
result.interaction # => #<TraceBook::Interaction id: 123>

Failed recording

result = TraceBook.record!(provider: nil, model: nil) # Invalid
result.success? # => false
result.error # => #<KeyError: key not found: :provider>

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(interaction: nil, error: nil, idempotency_key: nil) ⇒ Result

Creates a new Result.

Parameters:

  • interaction (TraceBook::Interaction, nil) (defaults to: nil)

    Persisted interaction

  • error (Exception, nil) (defaults to: nil)

    Error that occurred

  • idempotency_key (String, nil) (defaults to: nil)

    Deduplication key



38
39
40
41
42
# File 'lib/tracebook/result.rb', line 38

def initialize(interaction: nil, error: nil, idempotency_key: nil)
  @interaction = interaction
  @error = error
  @idempotency_key = idempotency_key
end

Instance Attribute Details

#errorException? (readonly)

Returns The error that occurred during recording.

Returns:

  • (Exception, nil)

    The error that occurred during recording



28
29
30
# File 'lib/tracebook/result.rb', line 28

def error
  @error
end

#idempotency_keyString? (readonly)

Returns Idempotency key for deduplication.

Returns:

  • (String, nil)

    Idempotency key for deduplication



31
32
33
# File 'lib/tracebook/result.rb', line 31

def idempotency_key
  @idempotency_key
end

#interactionTraceBook::Interaction? (readonly)

Returns The persisted interaction (sync mode only).

Returns:



25
26
27
# File 'lib/tracebook/result.rb', line 25

def interaction
  @interaction
end

Instance Method Details

#success?Boolean

Returns true if recording succeeded (no error).

Returns:

  • (Boolean)

    true when no error occurred



47
48
49
# File 'lib/tracebook/result.rb', line 47

def success?
  error.nil?
end