'WP\\MCP\\Core\\McpAdapter', 'wp-media/mcp-oauth' => 'WPMedia\\MCP\\OAuth\\Bootstrap', 'WordPress Abilities API' => 'WP_Ability', ]; /** @var callable(string): bool */ private $classExists; public function __construct(?callable $classExists = null) { $this->classExists = $classExists ?? static fn (string $class): bool => class_exists($class); } /** * @return list Human-readable names of missing components. */ public function missing(): array { $missing = []; foreach (self::REQUIRED as $name => $class) { if (! ($this->classExists)($class)) { $missing[] = $name; } } return $missing; } }