From 5918e6c2765055cc4e88189f12dd25cf486bede6 Mon Sep 17 00:00:00 2001 From: Bujar Begisholli Date: Fri, 14 Nov 2025 14:56:59 +0100 Subject: [PATCH] Add meta to addPrompt and addResourceTemplate methods and null coalesce nullable properties --- .../Registry/Loader/ArrayLoader.php | 36 +++++++++++-------- src/Server/Builder.php | 13 ++++--- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/Capability/Registry/Loader/ArrayLoader.php b/src/Capability/Registry/Loader/ArrayLoader.php index 03b2f852..8fcfd675 100644 --- a/src/Capability/Registry/Loader/ArrayLoader.php +++ b/src/Capability/Registry/Loader/ArrayLoader.php @@ -149,14 +149,14 @@ public function load(ReferenceRegistryInterface $registry): void } $resource = new Resource( - $data['uri'], - $name, - $description, - $data['mimeType'], - $data['annotations'], - $data['size'], - $data['icons'], - $data['meta'], + uri: $data['uri'], + name: $name, + description: $description, + mimeType: $data['mimeType'] ?? null, + annotations: $data['annotations'] ?? null, + size: $data['size'] ?? null, + icons: $data['icons'] ?? null, + meta: $data['meta'] ?? null, ); $registry->registerResource($resource, $data['handler'], true); @@ -189,12 +189,12 @@ public function load(ReferenceRegistryInterface $registry): void } $template = new ResourceTemplate( - $data['uriTemplate'], - $name, - $description, - $data['mimeType'], - $data['annotations'], - $data['meta'], + uriTemplate: $data['uriTemplate'], + name: $name, + description: $description, + mimeType: $data['mimeType'] ?? null, + annotations: $data['annotations'] ?? null, + meta: $data['meta'] ?? null, ); $completionProviders = $this->getCompletionProviders($reflection); $registry->registerResourceTemplate($template, $data['handler'], $completionProviders, true); @@ -246,7 +246,13 @@ public function load(ReferenceRegistryInterface $registry): void !$param->isOptional() && !$param->isDefaultValueAvailable(), ); } - $prompt = new Prompt($name, $description, $arguments, $data['icons'], $data['meta']); + $prompt = new Prompt( + name: $name, + description: $description, + arguments: $arguments, + icons: $data['icons'] ?? null, + meta: $data['meta'] ?? null + ); $completionProviders = $this->getCompletionProviders($reflection); $registry->registerPrompt($prompt, $data['handler'], $completionProviders, true); diff --git a/src/Server/Builder.php b/src/Server/Builder.php index a0ab63e9..b3aad3be 100644 --- a/src/Server/Builder.php +++ b/src/Server/Builder.php @@ -379,7 +379,8 @@ public function addResource( /** * Manually registers a resource template handler. * - * @param Handler $handler + * @param Handler $handler + * @param array|null $meta */ public function addResourceTemplate( \Closure|array|string $handler, @@ -388,6 +389,7 @@ public function addResourceTemplate( ?string $description = null, ?string $mimeType = null, ?Annotations $annotations = null, + ?array $meta = null, ): self { $this->resourceTemplates[] = compact( 'handler', @@ -396,6 +398,7 @@ public function addResourceTemplate( 'description', 'mimeType', 'annotations', + 'meta', ); return $this; @@ -404,16 +407,18 @@ public function addResourceTemplate( /** * Manually registers a prompt handler. * - * @param Handler $handler - * @param ?Icon[] $icons + * @param Handler $handler + * @param ?Icon[] $icons + * @param array|null $meta */ public function addPrompt( \Closure|array|string $handler, ?string $name = null, ?string $description = null, ?array $icons = null, + ?array $meta = null, ): self { - $this->prompts[] = compact('handler', 'name', 'description', 'icons'); + $this->prompts[] = compact('handler', 'name', 'description', 'icons', 'meta'); return $this; }