Protokoll #15528

ID15528
Zeitstempel2025-12-25 16:55:10.105885
Clientroot
IP145.224.72.140
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens1,167 (Input: 581, Output: 586)
Dauer104 ms
Request-Zeit2025-12-25 16:55:10.105885
Response-Zeit2025-12-25 16:55:10.209501

Request

{
    "event": "PreToolUse",
    "tool_name": "Write",
    "tool_input": {
        "file_path": "\/var\/www\/mcp-servers\/mcp-contracts\/tools\/contract_tools\/contract_parser.py",
        "content": "\"\"\"Contract YAML Parser Module\"\"\"\nfrom typing import Any, Optional\nimport yaml\n\n\nclass ContractParseError(Exception):\n    \"\"\"Raised when contract YAML cannot be parsed\"\"\"\n    pass\n\n\nclass ContractParser:\n    \"\"\"Handles parsing and validation of contract YAML content\"\"\"\n\n    @staticmethod\n    def parse_yaml(yaml_content: str) -> dict[str, Any]:\n        \"\"\"\n        Parse YAML content into a dictionary.\n\n        Args:\n            yaml_content: Raw YAML string\n\n        Returns:\n            Parsed YAML as dictionary\n\n        Raises:\n            ContractParseError: If YAML is invalid\n        \"\"\"\n        try:\n            data = yaml.safe_load(yaml_content)\n            if data is None:\n                raise ContractParseError(\"Empty YAML content\")\n            return data\n        except yaml.YAMLError as e:\n            raise ContractParseError(f\"Invalid YAML: {e}\") from e\n\n    @staticmethod\n    def validate_yaml_syntax(yaml_content: str) -> tuple[bool, Optional[str]]:\n        \"\"\"\n        Validate YAML syntax without parsing into domain object.\n\n        Args:\n            yaml_content: Raw YAML string\n\n        Returns:\n            Tuple of (is_valid, error_message)\n        \"\"\"\n        try:\n            ContractParser.parse_yaml(yaml_content)\n            return True, None\n        except ContractParseError as e:\n            return False, str(e)\n\n    @staticmethod\n    def extract_scope(contract_data: dict[str, Any]) -> Optional[str]:\n        \"\"\"\n        Extract scope from parsed contract data.\n\n        Args:\n            contract_data: Parsed contract dictionary\n\n        Returns:\n            Scope path or None if not found\n        \"\"\"\n        return contract_data.get(\"scope\")\n\n    @staticmethod\n    def extract_rules(contract_data: dict[str, Any]) -> list[dict[str, Any]]:\n        \"\"\"\n        Extract rules from parsed contract data.\n\n        Args:\n            contract_data: Parsed contract dictionary\n\n        Returns:\n            List of rule dictionaries\n        \"\"\"\n        return contract_data.get(\"rules\", [])\n"
    }
}

Response

{
    "tool_response": {
        "type": "create",
        "filePath": "\/var\/www\/mcp-servers\/mcp-contracts\/tools\/contract_tools\/contract_parser.py",
        "content": "\"\"\"Contract YAML Parser Module\"\"\"\nfrom typing import Any, Optional\nimport yaml\n\n\nclass ContractParseError(Exception):\n    \"\"\"Raised when contract YAML cannot be parsed\"\"\"\n    pass\n\n\nclass ContractParser:\n    \"\"\"Handles parsing and validation of contract YAML content\"\"\"\n\n    @staticmethod\n    def parse_yaml(yaml_content: str) -> dict[str, Any]:\n        \"\"\"\n        Parse YAML content into a dictionary.\n\n        Args:\n            yaml_content: Raw YAML string\n\n        Returns:\n            Parsed YAML as dictionary\n\n        Raises:\n            ContractParseError: If YAML is invalid\n        \"\"\"\n        try:\n            data = yaml.safe_load(yaml_content)\n            if data is None:\n                raise ContractParseError(\"Empty YAML content\")\n            return data\n        except yaml.YAMLError as e:\n            raise ContractParseError(f\"Invalid YAML: {e}\") from e\n\n    @staticmethod\n    def validate_yaml_syntax(yaml_content: str) -> tuple[bool, Optional[str]]:\n        \"\"\"\n        Validate YAML syntax without parsing into domain object.\n\n        Args:\n            yaml_content: Raw YAML string\n\n        Returns:\n            Tuple of (is_valid, error_message)\n        \"\"\"\n        try:\n            ContractParser.parse_yaml(yaml_content)\n            return True, None\n        except ContractParseError as e:\n            return False, str(e)\n\n    @staticmethod\n    def extract_scope(contract_data: dict[str, Any]) -> Optional[str]:\n        \"\"\"\n        Extract scope from parsed contract data.\n\n        Args:\n            contract_data: Parsed contract dictionary\n\n        Returns:\n            Scope path or None if not found\n        \"\"\"\n        return contract_data.get(\"scope\")\n\n    @staticmethod\n    def extract_rules(contract_data: dict[str, Any]) -> list[dict[str, Any]]:\n        \"\"\"\n        Extract rules from parsed contract data.\n\n        Args:\n            contract_data: Parsed contract dictionary\n\n        Returns:\n            List of rule dictionaries\n        \"\"\"\n        return contract_data.get(\"rules\", [])\n",
        "structuredPatch": [],
        "originalFile": null
    }
}
← Vorheriger Zur Liste Nächster →