Map of ability slug → register function name. */ function agentic_admin_core_abilities(): array { return array( // Diagnostics. 'site-health' => 'agentic_admin_register_site_health', // Security suite. 'security-scan' => 'agentic_admin_register_security_scan', 'verify-core-checksums' => 'agentic_admin_register_verify_core_checksums', 'verify-plugin-checksums' => 'agentic_admin_register_verify_plugin_checksums', 'file-scan' => 'agentic_admin_register_file_scan', 'uploads-scan' => 'agentic_admin_register_uploads_scan', 'database-check' => 'agentic_admin_register_database_check', 'role-capabilities-check' => 'agentic_admin_register_role_capabilities_check', // Troubleshooting. 'error-log-read' => 'agentic_admin_register_error_log_read', 'error-log-search' => 'agentic_admin_register_error_log_search', 'cron-list' => 'agentic_admin_register_cron_list', 'rewrite-list' => 'agentic_admin_register_rewrite_list', // Inventory. 'plugin-list' => 'agentic_admin_register_plugin_list', 'theme-list' => 'agentic_admin_register_theme_list', 'user-list' => 'agentic_admin_register_user_list', 'post-list' => 'agentic_admin_register_post_list', 'comment-stats' => 'agentic_admin_register_comment_stats', 'update-check' => 'agentic_admin_register_update_check', // Maintenance. 'cache-flush' => 'agentic_admin_register_cache_flush', 'transient-flush' => 'agentic_admin_register_transient_flush', 'rewrite-flush' => 'agentic_admin_register_rewrite_flush', 'db-optimize' => 'agentic_admin_register_db_optimize', 'revision-cleanup' => 'agentic_admin_register_revision_cleanup', // Plugin management. 'plugin-activate' => 'agentic_admin_register_plugin_activate', 'plugin-deactivate' => 'agentic_admin_register_plugin_deactivate', 'plugin-install' => 'agentic_admin_register_plugin_install', // Knowledge. 'web-search' => 'agentic_admin_register_web_search', // Plugin abilities platform — lets the assistant discover and run // abilities that other plugins register via the WordPress Abilities API. 'discover-plugin-abilities' => 'agentic_admin_register_discover_plugin_abilities', 'run-plugin-ability' => 'agentic_admin_register_run_plugin_ability', ); } /** * Local-only abilities — registered server-side, but the JS layer hides * them from the LLM whenever an external AI provider is active. * * @return array */ function agentic_admin_local_only_abilities(): array { return array( 'read-file' => 'agentic_admin_register_read_file', 'wp-config-list' => 'agentic_admin_register_wp_config_list', ); } /** * Resolve the final list of enabled abilities. * * All abilities are fully functional and registered. Site owners may opt * out of individual abilities via the agentic_admin_enabled_abilities filter. * * @return array */ function agentic_admin_resolve_enabled_abilities(): array { $enabled = array_merge( agentic_admin_core_abilities(), agentic_admin_local_only_abilities() ); /** * Filter the final list of abilities to register. * * Site owners can use this to disable an ability they do not want the * assistant to use, for example: * * add_filter( 'agentic_admin_enabled_abilities', function ( $abilities ) { * unset( $abilities['web-search'] ); * return $abilities; * }); * * @since 0.11.0 * * @param array $enabled Map of slug → register function name. */ return (array) apply_filters( 'agentic_admin_enabled_abilities', $enabled ); }