Class: RosettAi::Mcp::Tools::CompileTool

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

Overview

MCP tool: compile rai behaviours to engine-native format.

Delegates to the real Compiler::CompilationPipeline. When simulate=true, returns diffs without writing files. When simulate=false, writes compiled output to disk.

Author:

  • hugo

  • claude

Constant Summary collapse

TOOL_NAME =
'rai_compile'
DESCRIPTION =
'Compile rai behaviours to engine-native format'
ANNOTATIONS =
{
  'readOnlyHint' => false,
  'destructiveHint' => false,
  'idempotentHint' => true,
  'openWorldHint' => false
}.freeze
INPUT_SCHEMA =
{
  type: 'object',
  properties: {
    simulate: {
      type: 'boolean',
      description: 'Dry-run mode — show what would change without writing (default: true)'
    },
    engine: {
      type: 'string',
      description: 'Target engine format (default: claude)'
    }
  }
}.freeze

Instance Method Summary collapse

Instance Method Details

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

Executes the compilation via the real pipeline.

Parameters:

  • simulate (Boolean) (defaults to: true)

    dry-run mode (default true)

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

    target engine (default 'claude')

Returns:

  • (Hash)

    result with compiled file details



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/rosett_ai/mcp/tools/compile_tool.rb', line 50

def call(simulate: true, engine: 'claude')
  backend = RosettAi::Compiler::Backend.for(engine)
  pipeline = build_pipeline(backend)
  compiled = pipeline.compile

  if simulate
    build_simulate_result(pipeline, compiled, engine)
  else
    build_write_result(pipeline, compiled, engine)
  end
rescue RosettAi::Error => e
  ResponseHelper.error("Compilation failed: #{e.message}")
end