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:

  • The message send parameters

  • (defaults to: nil)

    The server context

Returns:

  • The built request context



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:

  • The streaming message parameters

  • (defaults to: nil)

    The server context

Returns:

  • The built request context



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:

  • The task operation parameters

  • (defaults to: nil)

    The server context

  • (defaults to: "get")

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

Returns:

  • The built request context



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:

  • The resubscription parameters

  • (defaults to: nil)

    The server context

Returns:

  • The built request context



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