{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/AI\/AnthropicClient.php",
"offset": 55,
"limit": 50
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Infrastructure\/AI\/AnthropicClient.php",
"content": " 'model' => $model,\n 'max_tokens' => $options['max_tokens'] ?? 4096,\n 'messages' => $messages,\n ];\n\n if (isset($options['system'])) {\n $payload['system'] = $options['system'];\n }\n\n if (isset($options['temperature'])) {\n $payload['temperature'] = $options['temperature'];\n }\n\n curl_setopt_array($ch, [\n CURLOPT_POST => true,\n CURLOPT_POSTFIELDS => json_encode($payload),\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_HTTPHEADER => [\n 'Content-Type: application\/json',\n 'x-api-key: ' . $this->apiKey,\n 'anthropic-version: 2023-06-01',\n ],\n CURLOPT_TIMEOUT => $this->timeout,\n ]);\n\n $response = curl_exec($ch);\n $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n $error = curl_error($ch);\n curl_close($ch);\n\n $durationMs = (int) ((microtime(true) - $startTime) * 1000);\n\n if ($error !== '') {\n return AIResponse::error(\"cURL Error: {$error}\", $model);\n }\n\n $data = json_decode($response, true);\n\n if ($httpCode !== 200) {\n $errorMsg = $data['error']['message'] ?? \"HTTP Error: {$httpCode}\";\n\n return AIResponse::error($errorMsg, $model);\n }\n\n if (!isset($data['content'][0]['text'])) {\n return AIResponse::error('Invalid response format', $model);\n }\n\n $tokensInput = $data['usage']['input_tokens'] ?? null;\n $tokensOutput = $data['usage']['output_tokens'] ?? null;",
"numLines": 50,
"startLine": 55,
"totalLines": 165
}
}
}