Module: RubyLLM::MCP::Native::Messages::Responses

Extended by:
Helpers
Defined in:
lib/ruby_llm/mcp/native/messages/responses.rb

Overview

Response message builders Responses are sent in reply to requests from the server

Class Method Summary collapse

Methods included from Helpers

add_cursor, add_progress_token, format_completion_context, generate_id

Class Method Details

.elicitation(id:, action:, content: nil) ⇒ Object



66
67
68
69
70
71
72
73
74
75
# File 'lib/ruby_llm/mcp/native/messages/responses.rb', line 66

def elicitation(id:, action:, content: nil)
  {
    jsonrpc: JSONRPC_VERSION,
    id: id,
    result: {
      action: action,
      content: content
    }.compact
  }
end

.error(id:, message:, code: JsonRpc::ErrorCodes::SERVER_ERROR, data: nil) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/ruby_llm/mcp/native/messages/responses.rb', line 77

def error(id:, message:, code: JsonRpc::ErrorCodes::SERVER_ERROR, data: nil)
  error_object = {
    code: code,
    message: message
  }
  error_object[:data] = data if data

  {
    jsonrpc: JSONRPC_VERSION,
    id: id,
    error: error_object
  }
end

.ping(id:) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/ruby_llm/mcp/native/messages/responses.rb', line 14

def ping(id:)
  {
    jsonrpc: JSONRPC_VERSION,
    id: id,
    result: {}
  }
end

.result(id:, value:) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/ruby_llm/mcp/native/messages/responses.rb', line 39

def result(id:, value:)
  {
    jsonrpc: JSONRPC_VERSION,
    id: id,
    result: value
  }
end

.roots_list(id:, roots_paths:) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruby_llm/mcp/native/messages/responses.rb', line 22

def roots_list(id:, roots_paths:)
  roots_response = roots_paths.map do |path|
    {
      uri: "file://#{path}",
      name: File.basename(path, ".*")
    }
  end

  {
    jsonrpc: JSONRPC_VERSION,
    id: id,
    result: {
      roots: roots_response
    }
  }
end

.sampling_create_message(id:, message:, model:) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ruby_llm/mcp/native/messages/responses.rb', line 47

def sampling_create_message(id:, message:, model:)
  stop_reason = if message.respond_to?(:stop_reason) && message.stop_reason
                  snake_to_camel(message.stop_reason)
                else
                  "endTurn"
                end

  {
    jsonrpc: JSONRPC_VERSION,
    id: id,
    result: {
      role: message.role,
      content: format_content(message.content),
      model: model,
      stopReason: stop_reason
    }
  }
end