{
"event": "PostToolUse",
"raw_data": {
"session_id": "18ef5bf3-e872-4052-897e-53d6dc45b0b9",
"transcript_path": "\/root\/.claude\/projects\/-var-www\/18ef5bf3-e872-4052-897e-53d6dc45b0b9.jsonl",
"cwd": "\/var\/www\/dev.campus.systemische-tools.de",
"permission_mode": "acceptEdits",
"hook_event_name": "PostToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/opt\/mcp-servers\/mcp-db\/domain\/query_contract.py"
},
"tool_response": {
"type": "text",
"file": {
"filePath": "\/opt\/mcp-servers\/mcp-db\/domain\/query_contract.py",
"content": "\"\"\"Query Contracts - Request und Response Datenstrukturen\"\"\"\nfrom dataclasses import dataclass\nfrom enum import Enum\nfrom typing import Any, List, Optional\n\n\nclass QueryStatus(Enum):\n \"\"\"Status einer Query-Ausführung\"\"\"\n\n SUCCESS = \"success\"\n ERROR = \"error\"\n DENIED = \"denied\"\n\n\n@dataclass(frozen=True)\nclass QueryRequest:\n \"\"\"Immutable Query Request - SRP: Nur Query-Daten\"\"\"\n\n query: str\n params: Optional[tuple] = None\n database: str = \"ki_protokoll\"\n max_rows: int = 100\n\n\n@dataclass\nclass QueryResponse:\n \"\"\"Structured Response - SRP: Nur Response-Daten\"\"\"\n\n status: QueryStatus\n data: Optional[List[dict]] = None\n row_count: int = 0\n error: Optional[str] = None\n execution_ms: float = 0.0\n\n def to_dict(self) -> dict:\n \"\"\"Konvertiert Response zu Dictionary für MCP\"\"\"\n return {\n \"status\": self.status.value,\n \"data\": self.data,\n \"row_count\": self.row_count,\n \"error\": self.error,\n \"execution_ms\": self.execution_ms,\n }\n",
"numLines": 44,
"startLine": 1,
"totalLines": 44
}
},
"tool_use_id": "toolu_01Rxj2TwsMKdE51ZmgYMXamy"
}
}