Class: A2A::Server::AgentExecution::RequestContextBuilder

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

Overview

Builder for creating request contexts from various inputs

Provides a convenient way to build RequestContext objects from different types of input (JSON-RPC requests, HTTP requests, etc.)

Class Method Summary collapse

Class Method Details

.from_message_send(params, server_context = nil) ⇒ RequestContext

Build a request context from a message send request

Parameters:

  • params (Hash)

    The message send parameters

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

    The server context

Returns:



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/a2a/server/agent_execution/request_context.rb', line 142

def self.from_message_send(params, server_context = nil)
  message_data = params["message"] || params[:message]
  task_id = params["taskId"] || params[:task_id]
  context_id = params["contextId"] || params[:context_id]

  message = if message_data.is_a?(A2A::Types::Message)
              message_data
            elsif message_data.is_a?(Hash)
              A2A::Types::Message.from_h(message_data)
            else
              nil
            end

  # Extract context_id from message if not provided in params
  context_id ||= message&.context_id

  RequestContext.new(
    message: message,
    task_id: task_id,
    context_id: context_id,
    server_context: server_context,
    metadata: {
      request_type: "message_send",
      params: params
    }
  )
end

.from_streaming_message(params, server_context = nil) ⇒ RequestContext

Build a request context from a streaming message request

Parameters:

  • params (Hash)

    The streaming message parameters

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

    The server context

Returns:



198
199
200
201
202
203
# File 'lib/a2a/server/agent_execution/request_context.rb', line 198

def self.from_streaming_message(params, server_context = nil)
  context = from_message_send(params, server_context)
  context.(:streaming, true)
  context.(:request_type, "message_stream")
  context
end

.from_task_operation(params, server_context = nil, operation: "get") ⇒ RequestContext

Build a request context from a task operation request

Parameters:

  • params (Hash)

    The task operation parameters

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

    The server context

  • operation (String) (defaults to: "get")

    The operation type (e.g., 'get', 'cancel')

Returns:



177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'lib/a2a/server/agent_execution/request_context.rb', line 177

def self.from_task_operation(params, server_context = nil, operation: "get")
  task_id = params["id"] || params[:id] || params["taskId"] || params[:task_id]
  context_id = params["contextId"] || params[:context_id]

  RequestContext.new(
    task_id: task_id,
    context_id: context_id,
    server_context: server_context,
    metadata: {
      request_type: "task_#{operation}",
      params: params
    }
  )
end

.from_task_resubscription(params, server_context = nil) ⇒ RequestContext

Build a request context from a task resubscription request

Parameters:

  • params (Hash)

    The resubscription parameters

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

    The server context

Returns:



211
212
213
214
215
# File 'lib/a2a/server/agent_execution/request_context.rb', line 211

def self.from_task_resubscription(params, server_context = nil)
  context = from_task_operation(params, server_context, operation: "resubscribe")
  context.(:streaming, true)
  context
end