{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/AI\/ClaudeService.php",
"offset": 1,
"limit": 60
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/AI\/ClaudeService.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Infrastructure\\AI;\n\n\/\/ @responsibility: Anthropic Claude API für RAG-Antworten\n\nuse Infrastructure\\Config\\CredentialService;\nuse RuntimeException;\n\nfinal readonly class ClaudeService\n{\n \/**\n * Default timeout for HTTP requests in seconds (LLM responses can take time).\n *\/\n private const int DEFAULT_TIMEOUT = 120;\n\n \/**\n * Health check timeout in seconds.\n *\/\n private const int HEALTH_CHECK_TIMEOUT = 5;\n\n \/**\n * Anthropic API base URL.\n *\/\n private const string API_BASE_URL = 'https:\/\/api.anthropic.com\/v1';\n\n \/**\n * Anthropic API version header.\n *\/\n private const string API_VERSION = '2023-06-01';\n\n \/**\n * The Anthropic API key loaded from environment.\n *\/\n private readonly string $apiKey;\n\n \/**\n * Constructs a new ClaudeService instance.\n *\n * Loads the Anthropic API key from environment variables via CredentialService.\n * This ensures secrets are never hardcoded and follow security best practices.\n *\n * @param CredentialService $credentials Service for loading credentials from environment\n *\/\n public function __construct(\n CredentialService $credentials\n ) {\n $this->apiKey = $credentials->getAnthropicApiKey();\n }\n\n \/**\n * Sends a prompt to Claude and receives a text response.\n *\n * Makes a request to the Anthropic Messages API with the specified prompt,\n * optional system prompt, model, token limit, and temperature. Returns the\n * generated text along with token usage statistics.\n *\n * @param string $prompt The user prompt to send",
"numLines": 60,
"startLine": 1,
"totalLines": 325
}
}
}