Class: ActionMCP::Server::SamplingRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/action_mcp/server/sampling_request.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ SamplingRequest

Returns a new instance of SamplingRequest.

Yields:

  • (_self)

Yield Parameters:



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/action_mcp/server/sampling_request.rb', line 69

def initialize
  @messages = self.class.default_messages.dup
  @system_prompt = self.class.default_system_prompt
  @context = self.class.default_context
  @model_hints = self.class.default_model_hints.dup
  @intelligence_priority = self.class.default_intelligence_priority
  @max_tokens = self.class.default_max_tokens
  @temperature = self.class.default_temperature

  yield self if block_given?
end

Class Attribute Details

.default_contextObject (readonly)

Returns the value of attribute default_context.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_context
  @default_context
end

.default_intelligence_priorityObject (readonly)

Returns the value of attribute default_intelligence_priority.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_intelligence_priority
  @default_intelligence_priority
end

.default_max_tokensObject (readonly)

Returns the value of attribute default_max_tokens.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_max_tokens
  @default_max_tokens
end

.default_messagesObject (readonly)

Returns the value of attribute default_messages.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_messages
  @default_messages
end

.default_model_hintsObject (readonly)

Returns the value of attribute default_model_hints.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_model_hints
  @default_model_hints
end

.default_system_promptObject (readonly)

Returns the value of attribute default_system_prompt.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_system_prompt
  @default_system_prompt
end

.default_temperatureObject (readonly)

Returns the value of attribute default_temperature.



7
8
9
# File 'lib/action_mcp/server/sampling_request.rb', line 7

def default_temperature
  @default_temperature
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



67
68
69
# File 'lib/action_mcp/server/sampling_request.rb', line 67

def context
  @context
end

#intelligence_priorityObject

Returns the value of attribute intelligence_priority.



66
67
68
# File 'lib/action_mcp/server/sampling_request.rb', line 66

def intelligence_priority
  @intelligence_priority
end

#max_tokensObject

Returns the value of attribute max_tokens.



66
67
68
# File 'lib/action_mcp/server/sampling_request.rb', line 66

def max_tokens
  @max_tokens
end

#messagesObject

Returns the value of attribute messages.



67
68
69
# File 'lib/action_mcp/server/sampling_request.rb', line 67

def messages
  @messages
end

#model_hintsObject

Returns the value of attribute model_hints.



66
67
68
# File 'lib/action_mcp/server/sampling_request.rb', line 66

def model_hints
  @model_hints
end

#system_promptObject

Returns the value of attribute system_prompt.



66
67
68
# File 'lib/action_mcp/server/sampling_request.rb', line 66

def system_prompt
  @system_prompt
end

#temperatureObject

Returns the value of attribute temperature.



66
67
68
# File 'lib/action_mcp/server/sampling_request.rb', line 66

def temperature
  @temperature
end

Class Method Details

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



11
12
13
# File 'lib/action_mcp/server/sampling_request.rb', line 11

def configure
  yield self
end

.include_context(context = nil) ⇒ Object



29
30
31
32
# File 'lib/action_mcp/server/sampling_request.rb', line 29

def include_context(context = nil)
  @default_context = context if context
  @default_context
end

.intelligence_priority(priority = nil) ⇒ Object



39
40
41
42
# File 'lib/action_mcp/server/sampling_request.rb', line 39

def intelligence_priority(priority = nil)
  @default_intelligence_priority = priority if priority
  @intelligence_priority ||= 0.9
end

.max_tokens(tokens = nil) ⇒ Object



44
45
46
47
# File 'lib/action_mcp/server/sampling_request.rb', line 44

def max_tokens(tokens = nil)
  @default_max_tokens = tokens if tokens
  @max_tokens ||= 500
end

.messages(messages = nil) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/action_mcp/server/sampling_request.rb', line 15

def messages(messages = nil)
  if messages
    @default_messages = messages.map do |msg|
      mutate_content(msg)
    end
  end
  @messages ||= []
end

.model_hints(hints = nil) ⇒ Object



34
35
36
37
# File 'lib/action_mcp/server/sampling_request.rb', line 34

def model_hints(hints = nil)
  @default_model_hints = hints if hints
  @model_hints ||= []
end

.system_prompt(prompt = nil) ⇒ Object



24
25
26
27
# File 'lib/action_mcp/server/sampling_request.rb', line 24

def system_prompt(prompt = nil)
  @default_system_prompt = prompt if prompt
  @default_system_prompt
end

.temperature(temp = nil) ⇒ Object



49
50
51
52
# File 'lib/action_mcp/server/sampling_request.rb', line 49

def temperature(temp = nil)
  @default_temperature = temp if temp
  @temperature ||= 0.7
end

Instance Method Details

#add_message(content, role: "user") ⇒ Object



91
92
93
94
95
96
97
98
# File 'lib/action_mcp/server/sampling_request.rb', line 91

def add_message(content, role: "user")
  if content.is_a?(Content::Base) || (content.respond_to?(:to_h) && !content.is_a?(Hash))
    @messages << { role: role, content: content.to_h }
  else
    content = Content::Text.new(content, annotations: nil).to_h if content.is_a?(String)
    @messages << { role: role, content: content }
  end
end

#include_context=(value) ⇒ Object



87
88
89
# File 'lib/action_mcp/server/sampling_request.rb', line 87

def include_context=(value)
  @context = value
end

#to_hObject



100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/action_mcp/server/sampling_request.rb', line 100

def to_h
  {
    messages: messages.map { |msg| { role: msg[:role], content: msg[:content] } },
    systemPrompt: system_prompt,
    includeContext: context,
    modelPreferences: {
      hints: model_hints.map { |name| { name: name } },
      intelligencePriority: intelligence_priority
    },
    maxTokens: max_tokens,
    temperature: temperature
  }.compact
end