Protokoll #15925

ID15925
Zeitstempel2025-12-25 16:57:54.039923
Clientroot
IP145.224.72.140
Modellclaude-sonnet-4-20250514
Statuspending
Tokens710 (Input: 710, Output: 0)
Dauer-
Request-Zeit2025-12-25 16:57:54.039923
Response-Zeit-

Request

{
    "event": "PostToolUse",
    "raw_data": {
        "session_id": "f0f145c4-ac1d-417a-b15b-271983ae648b",
        "transcript_path": "\/root\/.claude\/projects\/-var-www\/f0f145c4-ac1d-417a-b15b-271983ae648b.jsonl",
        "cwd": "\/var\/www\/dev.campus.systemische-tools.de",
        "permission_mode": "acceptEdits",
        "hook_event_name": "PostToolUse",
        "tool_name": "Read",
        "tool_input": {
            "file_path": "\/var\/www\/mcp-servers\/mcp-contracts\/tools\/contract_tools\/contract_parser.py"
        },
        "tool_response": {
            "type": "text",
            "file": {
                "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",
                "numLines": 78,
                "startLine": 1,
                "totalLines": 78
            }
        },
        "tool_use_id": "toolu_014sdx5DjMLfw6LSVns7dKws"
    }
}

Response

-
← Vorheriger Zur Liste Nächster →