From 3fca8a5632ff325c2ee91b089bc1da27927228de Mon Sep 17 00:00:00 2001 From: bigdevlarry Date: Sat, 17 Jan 2026 00:31:44 +0000 Subject: [PATCH] Refactor the schema tool array to use normalizeSchemaProperties method --- src/Schema/Tool.php | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Schema/Tool.php b/src/Schema/Tool.php index 4a1768ee..6255701d 100644 --- a/src/Schema/Tool.php +++ b/src/Schema/Tool.php @@ -84,27 +84,24 @@ public static function fromArray(array $data): self if (!isset($data['inputSchema']['type']) || 'object' !== $data['inputSchema']['type']) { throw new InvalidArgumentException('Tool inputSchema must be of type "object".'); } - if (isset($data['inputSchema']['properties']) && \is_array($data['inputSchema']['properties']) && empty($data['inputSchema']['properties'])) { - $data['inputSchema']['properties'] = new \stdClass(); - } + $inputSchema = self::normalizeSchemaProperties($data['inputSchema']); + $outputSchema = null; if (isset($data['outputSchema']) && \is_array($data['outputSchema'])) { if (!isset($data['outputSchema']['type']) || 'object' !== $data['outputSchema']['type']) { throw new InvalidArgumentException('Tool outputSchema must be of type "object".'); } - if (isset($data['outputSchema']['properties']) && \is_array($data['outputSchema']['properties']) && empty($data['outputSchema']['properties'])) { - $data['outputSchema']['properties'] = new \stdClass(); - } + $outputSchema = self::normalizeSchemaProperties($data['outputSchema']); } return new self( $data['name'], - $data['inputSchema'], + $inputSchema, isset($data['description']) && \is_string($data['description']) ? $data['description'] : null, isset($data['annotations']) && \is_array($data['annotations']) ? ToolAnnotations::fromArray($data['annotations']) : null, isset($data['icons']) && \is_array($data['icons']) ? array_map(Icon::fromArray(...), $data['icons']) : null, isset($data['_meta']) && \is_array($data['_meta']) ? $data['_meta'] : null, - isset($data['outputSchema']) && \is_array($data['outputSchema']) ? $data['outputSchema'] : null, + $outputSchema, ); } @@ -143,4 +140,20 @@ public function jsonSerialize(): array return $data; } + + /** + * Normalize schema properties: convert an empty properties array to stdClass. + * + * @param array $schema + * + * @return array + */ + private static function normalizeSchemaProperties(array $schema): array + { + if (isset($schema['properties']) && \is_array($schema['properties']) && empty($schema['properties'])) { + $schema['properties'] = new \stdClass(); + } + + return $schema; + } }