array( Discover::class, 'check_permission', 'execute' ), 'mcp-adapter/get-ability-info' => array( GetAbilityInfo::class, 'check_permission', 'execute' ), 'mcp-adapter/execute-ability' => array( Execute::class, 'check_permission', 'execute' ), ); /** * Singleton instance. * * @var self|null */ protected static $_instance = null; /** * Singleton accessor. */ public static function instance(): self { if ( null === self::$_instance ) { self::$_instance = new self(); } return self::$_instance; } /** * Private — use ::instance(). Hook wiring lives in Main.php per A1. */ private function __construct() {} /** * Callback for `wp_register_ability_args`. * * @param array $args The ability registration args. * @param string $name The ability slug being registered. * @return array */ public function replace_callbacks( array $args, string $name ): array { if ( ! isset( self::VENDOR_ABILITIES[ $name ] ) ) { return $args; } [ $class, $permission_method, $execute_method ] = self::VENDOR_ABILITIES[ $name ]; $args['permission_callback'] = array( $class, $permission_method ); $args['execute_callback'] = array( $class, $execute_method ); return $args; } }