* @author Maximum Software Inc * @license GPL-3.0-only * @link https://agenistrator.com/ * * SPDX-FileCopyrightText: 2025-2026 Alex Ruban * SPDX-FileCopyrightText: 2025-2026 Maximum Software Inc * SPDX-License-Identifier: GPL-3.0-only */ namespace Agenistrator; // Direct access prevention if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Get_Debug_Log_Info_Tool class. */ class Get_Debug_Log_Info_Tool extends Tool { /** * Get the tool ID. * * @return string The tool ID. * @since 1.0.0 */ public function get_id() { return 'get_debug_log_info'; } /** * Get the tool name. * * @return string The tool name. * @since 1.0.0 */ public function get_name() { return __( 'Get Debug Log Info', 'agenistrator' ); } /** * Get the tool description. * * @return string The tool description. * @since 1.0.0 */ public function get_description() { return 'Check WordPress debugging status and discover available error log files.'; } /** * Get additional description instructions for the LLM. * * @return string Additional instructions appended to description. * @since 1.0.0 */ public function get_description_instructions() { return 'Use `read_debug_log_file` to read log contents.'; } /** * Check if this tool is read-only. * * @return bool True if the tool only reads data. * @since 1.0.0 */ public function is_read_only() { return true; } /** * Get the parameters schema for this tool. * * @return array Parameters schema in JSON Schema format. * @since 1.0.0 */ public function get_parameters() { return array( 'type' => 'object', 'properties' => array(), 'required' => array(), ); } /** * Get the default enabled status for this tool. * * @return bool True if enabled by default, false otherwise. * @since 1.0.0 */ public function get_default_enabled_status() { return true; } /** * Check if the current user can execute this tool. * * @return bool True if the current user has permission. * @since 1.0.0 */ public function current_user_can_execute() { return is_super_admin(); } // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Required by abstract Tool class signature. /** * Execute the tool with the given arguments. * * @param array $args The tool arguments. * * @return array The tool execution result. * @since 1.0.0 */ // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Required by abstract method signature. protected function execute( $args ) { $info = array( 'debug_enabled' => defined( 'WP_DEBUG' ) && WP_DEBUG, 'debug_log_enabled' => defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG, 'debug_display' => defined( 'WP_DEBUG_DISPLAY' ) && WP_DEBUG_DISPLAY, 'script_debug' => defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG, 'log_files' => array(), ); $log_files = WordPress_Utils::discover_log_files(); foreach ( $log_files as $log_path ) { if ( ! is_readable( $log_path ) ) { continue; } $info['log_files'][] = array( 'path' => $log_path, 'size' => filesize( $log_path ), 'size_human' => size_format( filesize( $log_path ) ), 'modified' => gmdate( 'Y-m-d H:i:s e', filemtime( $log_path ) ), ); } return $this->success_response( 'Debug log info retrieved', $info ); } }