Class: RosettAi::Mcp::Tools::HookPreviewTool
- Inherits:
-
Object
- Object
- RosettAi::Mcp::Tools::HookPreviewTool
- Defined in:
- lib/rosett_ai/mcp/tools/hook_preview_tool.rb
Overview
MCP tool: preview a generated enforcement hook script.
Generates a Ruby hook script from behaviour rules without writing anything to disk. Allows inspection before installing via HookInstallTool. Strictly read-only.
Delegates generation to Enforcement::HookGenerator and validation to Enforcement::Validator.
Constant Summary collapse
- TOOL_NAME =
'rai_hook_preview'- DESCRIPTION =
'Preview generated enforcement hook script (read-only, no side effects)'- ANNOTATIONS =
{ 'readOnlyHint' => true, 'destructiveHint' => false, 'idempotentHint' => true, 'openWorldHint' => false }.freeze
- INPUT_SCHEMA =
{ type: 'object', properties: { behaviour_name: { type: 'string', description: 'Behaviour to preview hook for (default: all enforceable)' }, rule_id: { type: 'string', description: 'Specific rule ID to preview hook for' }, scope: { type: 'string', description: 'Preview scope context' } } }.freeze
Instance Method Summary collapse
-
#call(behaviour_name: nil, rule_id: nil, scope: nil) ⇒ Hash
Generates a preview of the enforcement hook script.
Instance Method Details
#call(behaviour_name: nil, rule_id: nil, scope: nil) ⇒ Hash
Generates a preview of the enforcement hook script.
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rosett_ai/mcp/tools/hook_preview_tool.rb', line 58 def call(behaviour_name: nil, rule_id: nil, scope: nil) behaviours = load_behaviours(behaviour_name, scope) validated = validate_and_collect(behaviours, rule_id) return ResponseHelper.error('No enforceable rules found') if validated[:rules].empty? script = generate_script(validated) build_response(script, validated, scope) rescue StandardError => e ResponseHelper.error("Hook preview failed: #{e.}") end |