Class: A2A::Server::AgentExecution::RequestContext

Inherits:
Object
  • Object
show all
Defined in:
lib/a2a/server/agent_execution/request_context.rb

Overview

Request context for agent execution

Contains all the information needed for an agent to process a request, including the message, task ID, context ID, and server call context.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message: nil, task_id: nil, context_id: nil, server_context: nil, metadata: {}) ⇒ RequestContext

Initialize a new request context

Parameters:

  • message (A2A::Types::Message, nil) (defaults to: nil)

    The message that initiated the request

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

    The task ID if continuing an existing task

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

    The context ID for the conversation

  • server_context (A2A::Server::Context, nil) (defaults to: nil)

    The server call context

  • metadata (Hash) (defaults to: {})

    Additional metadata for the request



23
24
25
26
27
28
29
# File 'lib/a2a/server/agent_execution/request_context.rb', line 23

def initialize(message: nil, task_id: nil, context_id: nil, server_context: nil, metadata: {})
  @message = message
  @task_id = task_id
  @context_id = context_id || message&.context_id
  @server_context = server_context
   = .dup
end

Instance Attribute Details

#context_idObject (readonly)

Returns the value of attribute context_id.



13
14
15
# File 'lib/a2a/server/agent_execution/request_context.rb', line 13

def context_id
  @context_id
end

#messageObject (readonly)

Returns the value of attribute message.



13
14
15
# File 'lib/a2a/server/agent_execution/request_context.rb', line 13

def message
  @message
end

#metadataObject (readonly)

Returns the value of attribute metadata.



13
14
15
# File 'lib/a2a/server/agent_execution/request_context.rb', line 13

def 
  
end

#server_contextObject (readonly)

Returns the value of attribute server_context.



13
14
15
# File 'lib/a2a/server/agent_execution/request_context.rb', line 13

def server_context
  @server_context
end

#task_idObject (readonly)

Returns the value of attribute task_id.



13
14
15
# File 'lib/a2a/server/agent_execution/request_context.rb', line 13

def task_id
  @task_id
end

Instance Method Details

#authenticated?Boolean

Check if the request is authenticated

Returns:

  • (Boolean)

    True if authenticated



67
68
69
# File 'lib/a2a/server/agent_execution/request_context.rb', line 67

def authenticated?
  @server_context&.authenticated? || false
end

#authentication(scheme) ⇒ Object?

Get authentication data for a specific scheme

Parameters:

  • scheme (String)

    The authentication scheme

Returns:

  • (Object, nil)

    Authentication data or nil



76
77
78
# File 'lib/a2a/server/agent_execution/request_context.rb', line 76

def authentication(scheme)
  @server_context&.get_authentication(scheme)
end

#continuing_task?Boolean

Check if this is continuing an existing task

Returns:

  • (Boolean)

    True if continuing an existing task



43
44
45
# File 'lib/a2a/server/agent_execution/request_context.rb', line 43

def continuing_task?
  !@task_id.nil?
end

#get_metadata(key) ⇒ Object?

Get metadata value

Parameters:

  • key (String, Symbol)

    The metadata key

Returns:

  • (Object, nil)

    The metadata value or nil



85
86
87
# File 'lib/a2a/server/agent_execution/request_context.rb', line 85

def (key)
  [key] || @server_context&.(key)
end

#has_message?Boolean

Check if this request has a message

Returns:

  • (Boolean)

    True if a message is present



51
52
53
# File 'lib/a2a/server/agent_execution/request_context.rb', line 51

def has_message?
  !@message.nil?
end

#new_task?Boolean

Check if this is a new task (no task_id provided)

Returns:

  • (Boolean)

    True if this is a new task



35
36
37
# File 'lib/a2a/server/agent_execution/request_context.rb', line 35

def new_task?
  @task_id.nil?
end

#set_metadata(key, value) ⇒ Object

Set metadata value

Parameters:

  • key (String, Symbol)

    The metadata key

  • value (Object)

    The metadata value



94
95
96
# File 'lib/a2a/server/agent_execution/request_context.rb', line 94

def (key, value)
  [key] = value
end

#to_hHash

Convert to hash representation

Returns:

  • (Hash)

    Hash representation of the context



102
103
104
105
106
107
108
109
110
111
# File 'lib/a2a/server/agent_execution/request_context.rb', line 102

def to_h
  {
    message: @message&.to_h,
    task_id: @task_id,
    context_id: @context_id,
    metadata: ,
    authenticated: authenticated?,
    user: user&.to_s
  }
end

#userObject?

Get the user from the server context if available

Returns:

  • (Object, nil)

    The user object or nil



59
60
61
# File 'lib/a2a/server/agent_execution/request_context.rb', line 59

def user
  @server_context&.user
end

#with(**changes) ⇒ RequestContext

Create a copy of this context with modifications

Parameters:

  • **changes (Hash)

    Changes to apply

Returns:



118
119
120
121
122
123
124
125
126
# File 'lib/a2a/server/agent_execution/request_context.rb', line 118

def with(**changes)
  RequestContext.new(
    message: changes[:message] || @message,
    task_id: changes[:task_id] || @task_id,
    context_id: changes[:context_id] || @context_id,
    server_context: changes[:server_context] || @server_context,
    metadata: .merge(changes[:metadata] || {})
  )
end