get_name() ); } /** * Declared (not incidental): both bridges project * `McpCore\Registry\ToolRegistry`'s descriptors outward, and `Connection` * uses `McpCore\Support\Permissions` for its permission callbacks. */ public function get_dependencies(): array { return [ 'mcp-core' ]; } /** * The former inline symbol probes, expressed as sub-feature gates * (spec 053). Deliberately NOT `get_requirements()` entries: this module * must boot when both capabilities are absent — the Settings tab has to be * able to OFFER the adapter install (see the class doc block). */ public function get_capability_gates(): array { return [ 'abilities-bridge' => 'abilities-api', 'adapter-bridge' => 'mcp-adapter-plugin', ]; } protected function init_hooks(): void { if ( $this->has_gate( 'abilities-bridge' ) ) { AbilitiesBridge::attach(); } if ( $this->has_gate( 'adapter-bridge' ) ) { McpAdapterBridge::attach(); } // Registered UNCONDITIONALLY, unlike the bridges above, so the tab can // offer to install the adapter when it is missing. Connection::get_instance(); } }