Class: RosettAi::Mcp::Tools::ConfigCompileTool

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/mcp/tools/config_compile_tool.rb

Overview

MCP tool: compile Claude Code configuration.

Compiles YAML scopes to JSON settings files. Requires an engine plugin with config compiler support.

Author:

  • hugo

  • claude

Constant Summary collapse

TOOL_NAME =
'rai_config_compile'
DESCRIPTION =
'Compile rai configuration scopes to JSON settings'
ANNOTATIONS =
{
  'readOnlyHint' => false,
  'destructiveHint' => false,
  'idempotentHint' => true,
  'openWorldHint' => false
}.freeze
INPUT_SCHEMA =
{
  type: 'object',
  properties: {
    simulate: {
      type: 'boolean',
      description: 'Dry-run mode (default: true)'
    },
    scope: {
      type: 'string',
      description: 'Compile a specific scope only (e.g. managed, user, project)'
    },
    engine: {
      type: 'string',
      description: 'Target engine (default: claude)'
    }
  }
}.freeze

Instance Method Summary collapse

Instance Method Details

#call(simulate: true, scope: nil, engine: 'claude') ⇒ Hash

Executes the configuration compilation.

Parameters:

  • simulate (Boolean) (defaults to: true)

    dry-run mode

  • scope (String, nil) (defaults to: nil)

    specific scope to compile

  • engine (String) (defaults to: 'claude')

    target engine

Returns:

  • (Hash)

    compilation results



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/rosett_ai/mcp/tools/config_compile_tool.rb', line 51

def call(simulate: true, scope: nil, engine: 'claude')
  plugin = RosettAi::Plugins::Registry.plugin_module(:engine, engine)
  compiler_class = plugin&.config_compiler_class
  unless compiler_class
    return ResponseHelper.error(
      "Engine '#{engine}' has no config compiler. " \
      'Install an engine plugin to enable config compilation.'
    )
  end

  results = compiler_class.new(simulate: simulate).compile_all(scope: scope)
  { simulate: simulate, scope: scope, engine: engine,
    status: simulate ? 'dry-run' : 'compiled',
    files: results[:files], message: results[:message] }
rescue StandardError => e
  ResponseHelper.error("Config compile failed: #{e.message}")
end