Class: A2A::Types::TaskStatus

Inherits:
BaseModel show all
Defined in:
lib/a2a/types/task.rb

Overview

Represents the status of a task

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BaseModel

#==, #camelize, from_h, from_json, #hash, #to_h, #to_json, underscore, #valid?, #validate_array_type, #validate_inclusion, #validate_required, #validate_type

Constructor Details

#initialize(state:, message: nil, progress: nil, result: nil, error: nil, updated_at: nil) ⇒ TaskStatus

Initialize a new task status

Parameters:

  • state (String)

    The current state

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

    Optional status message

  • progress (Float, nil) (defaults to: nil)

    Progress percentage (0.0 to 1.0)

  • result (Object, nil) (defaults to: nil)

    Task result (for completed tasks)

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

    Error information (for failed tasks)

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

    ISO 8601 timestamp of last update



104
105
106
107
108
109
110
111
112
113
# File 'lib/a2a/types/task.rb', line 104

def initialize(state:, message: nil, progress: nil, result: nil, error: nil, updated_at: nil)
  @state = state
  @message = message
  @progress = progress
  @result = result
  @error = error
  @updated_at = updated_at || Time.now.utc.iso8601

  validate!
end

Instance Attribute Details

#errorObject (readonly)

Returns the value of attribute error.



93
94
95
# File 'lib/a2a/types/task.rb', line 93

def error
  @error
end

#messageObject (readonly)

Returns the value of attribute message.



93
94
95
# File 'lib/a2a/types/task.rb', line 93

def message
  @message
end

#progressObject (readonly)

Returns the value of attribute progress.



93
94
95
# File 'lib/a2a/types/task.rb', line 93

def progress
  @progress
end

#resultObject (readonly)

Returns the value of attribute result.



93
94
95
# File 'lib/a2a/types/task.rb', line 93

def result
  @result
end

#stateObject (readonly)

Returns the value of attribute state.



93
94
95
# File 'lib/a2a/types/task.rb', line 93

def state
  @state
end

#updated_atObject (readonly)

Returns the value of attribute updated_at.



93
94
95
# File 'lib/a2a/types/task.rb', line 93

def updated_at
  @updated_at
end

Instance Method Details

#active?Boolean

Check if the task is still active

Returns:

  • (Boolean)

    True if the task is still being processed



135
136
137
# File 'lib/a2a/types/task.rb', line 135

def active?
  %w[submitted working input-required].include?(@state)
end

#failure?Boolean

Check if the status indicates failure

Returns:

  • (Boolean)

    True if the task failed



127
128
129
# File 'lib/a2a/types/task.rb', line 127

def failure?
  @state == TASK_STATE_FAILED || !@error.nil?
end

#success?Boolean

Check if the status indicates success

Returns:

  • (Boolean)

    True if the task completed successfully



119
120
121
# File 'lib/a2a/types/task.rb', line 119

def success?
  @state == TASK_STATE_COMPLETED && @error.nil?
end

#validate!Object (private)

Raises:

  • (ArgumentError)


141
142
143
144
145
146
147
148
149
150
151
# File 'lib/a2a/types/task.rb', line 141

def validate!
  validate_required(:state, :updated_at)
  validate_inclusion(:state, VALID_TASK_STATES)

  return unless @progress

  validate_type(:progress, Numeric)
  return if @progress.between?(0.0, 1.0)

  raise ArgumentError, "progress must be between 0.0 and 1.0"
end