{
"event": "PreToolUse",
"tool_name": "Bash",
"tool_input": {
"command": "cd \/var\/www\/mcp-servers\/mcp_contracts && PYTHONPATH=\/var\/www\/mcp-servers .\/venv\/bin\/python -c \"\nfrom dotenv import load_dotenv\nfrom pathlib import Path\nload_dotenv(Path('.env'))\n\n# Test imports\nfrom validators import ContractValidator, ScopeResolver, RuleEvaluator, run_contract_validation\nfrom domain.contracts import ContractValidationResult\nprint('✓ Imports OK')\n\n# Test validation with a real contract\nimport yaml\ncontract_yaml = '''\ncontract:\n name: test-htmx-contract\n version: \\\"1.0\\\"\n scope:\n paths:\n - src\/View\/**\/*.php\n rules:\n - id: htmx-csrf\n check_type: required_pattern\n patterns:\n - 'hx-headers'\n in_files: \\\"**\/*.php\\\"\n severity: major\n description: HTMX requests must include CSRF headers\n'''\n\ncontract_data = yaml.safe_load(contract_yaml)\nresult = run_contract_validation(contract_data)\n\nprint(f'Contract: {result.contract}')\nprint(f'Outcome: {result.outcome}')\nprint(f'Critical: {result.critical}, Major: {result.major}, Minor: {result.minor}')\nprint(f'Findings: {len(result.findings)}')\nif result.findings:\n for f in result.findings[:3]:\n print(f' - {f.get(\\\"type\\\", \\\"info\\\")}: {f.get(\\\"message\\\", \\\"\\\")}')\n\"",
"description": "Test refactored ContractValidator"
}
}
{
"tool_response": {
"stdout": "✓ Imports OK\nContract: test-htmx-contract\nOutcome: revision_required\nCritical: 0, Major: 59, Minor: 0\nFindings: 59\n - major: Required pattern not found: 'hx-headers'\n - major: Required pattern not found: 'hx-headers'\n - major: Required pattern not found: 'hx-headers'",
"stderr": "",
"interrupted": false,
"isImage": false
}
}