Class: ActiveMcp::Completion

Inherits:
Object
  • Object
show all
Defined in:
lib/active_mcp/completion.rb

Instance Method Summary collapse

Instance Method Details

#complete(params: {}, context: {}, refs: []) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/active_mcp/completion.rb', line 3

def complete(params: {}, context: {}, refs: [])
  ref_name = params.dig(:ref, :name)
  uri_template = params.dig(:ref, :uri)
  arg_name = params.dig(:argument, :name)
  value = params.dig(:argument, :value)

  if uri_template
    resource_class = refs.find { _1.uri_template_value == uri_template }
    values = resource_class.arguments[arg_name.to_sym].call(value, context)
    {values:, total: values.length}
  elsif ref_name
    prompt = refs.find { _1.prompt_name == ref_name }
    values = prompt.class.arguments.find { _1[:name] == arg_name.to_sym }[:complete].call(value, context)
    {values:, total: values.length}
  end
end