|null $_meta @since 2024-11-05 * @param string|null $instructions @since 2024-11-05 */ public function __construct( string $protocolVersion, ServerCapabilities $capabilities, Implementation $serverInfo, ?array $_meta = null, ?string $instructions = null ) { parent::__construct($_meta); $this->protocolVersion = $protocolVersion; $this->capabilities = $capabilities; $this->serverInfo = $serverInfo; $this->instructions = $instructions; } /** * Creates an instance from an array. * * @param array{ * _meta?: array|null, * protocolVersion: string, * capabilities: array|\WP\McpSchema\Server\Lifecycle\DTO\ServerCapabilities, * serverInfo: array|\WP\McpSchema\Common\Lifecycle\DTO\Implementation, * instructions?: string|null * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['protocolVersion', 'capabilities', 'serverInfo']); /** @var \WP\McpSchema\Server\Lifecycle\DTO\ServerCapabilities $capabilities */ $capabilities = is_array($data['capabilities']) ? ServerCapabilities::fromArray(self::asArray($data['capabilities'])) : $data['capabilities']; /** @var \WP\McpSchema\Common\Lifecycle\DTO\Implementation $serverInfo */ $serverInfo = is_array($data['serverInfo']) ? Implementation::fromArray(self::asArray($data['serverInfo'])) : $data['serverInfo']; return new self( self::asString($data['protocolVersion']), $capabilities, $serverInfo, self::asArrayOrNull($data['_meta'] ?? null), self::asStringOrNull($data['instructions'] ?? null) ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); $result['protocolVersion'] = $this->protocolVersion; $result['capabilities'] = $this->capabilities->toArray(); $result['serverInfo'] = $this->serverInfo->toArray(); if ($this->instructions !== null) { $result['instructions'] = $this->instructions; } return $result; } /** * @return string */ public function getProtocolVersion(): string { return $this->protocolVersion; } /** * @return \WP\McpSchema\Server\Lifecycle\DTO\ServerCapabilities */ public function getCapabilities(): ServerCapabilities { return $this->capabilities; } /** * @return \WP\McpSchema\Common\Lifecycle\DTO\Implementation */ public function getServerInfo(): Implementation { return $this->serverInfo; } /** * @return string|null */ public function getInstructions(): ?string { return $this->instructions; } }