PluginProbe
ZIP AI – AI Website Builder & AI Agent (Beta) / 0.0.8
ZIP AI – AI Website Builder & AI Agent (Beta) v0.0.8
0.0.10 0.0.9 trunk 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8
zip-ai / lib / php-mcp-schema / src / Common / Protocol / DTO / BaseMetadata.php

BaseMetadata.php in ZIP AI – AI Website Builder & AI Agent (Beta) 0.0.8, at lib/php-mcp-schema/src/Common/Protocol/DTO/BaseMetadata.php

111 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WP\McpSchema\Common\Protocol\DTO;
6
7 use WP\McpSchema\Common\AbstractDataTransferObject;
8 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
9
10 /**
11 * Base interface for metadata with name (identifier) and title (display name) properties.
12 *
13 * @since 2025-06-18
14 *
15 * @mcp-domain Common
16 * @mcp-subdomain Protocol
17 * @mcp-version 2025-11-25
18 */
19 class BaseMetadata extends AbstractDataTransferObject
20 {
21 use ValidatesRequiredFields;
22
23 /**
24 * Intended for programmatic or logical use, but used as a display name in past specs or fallback (if title isn't present).
25 *
26 * @since 2025-06-18
27 *
28 * @var string
29 */
30 protected string $name;
31
32 /**
33 * Intended for UI and end-user contexts — optimized to be human-readable and easily understood,
34 * even by those unfamiliar with domain-specific terminology.
35 *
36 * If not provided, the name should be used for display (except for Tool,
37 * where `annotations.title` should be given precedence over using `name`,
38 * if present).
39 *
40 * @since 2025-06-18
41 *
42 * @var string|null
43 */
44 protected ?string $title;
45
46 /**
47 * @param string $name @since 2025-06-18
48 * @param string|null $title @since 2025-06-18
49 */
50 public function __construct(
51 string $name,
52 ?string $title = null
53 ) {
54 $this->name = $name;
55 $this->title = $title;
56 }
57
58 /**
59 * Creates an instance from an array.
60 *
61 * @param array{
62 * name: string,
63 * title?: string|null
64 * } $data
65 * @phpstan-param array<string, mixed> $data
66 * @return self
67 */
68 public static function fromArray(array $data): self
69 {
70 self::assertRequired($data, ['name']);
71
72 return new self(
73 self::asString($data['name']),
74 self::asStringOrNull($data['title'] ?? null)
75 );
76 }
77
78 /**
79 * Converts the instance to an array.
80 *
81 * @return array<string, mixed>
82 */
83 public function toArray(): array
84 {
85 $result = [];
86
87 $result['name'] = $this->name;
88 if ($this->title !== null) {
89 $result['title'] = $this->title;
90 }
91
92 return $result;
93 }
94
95 /**
96 * @return string
97 */
98 public function getName(): string
99 {
100 return $this->name;
101 }
102
103 /**
104 * @return string|null
105 */
106 public function getTitle(): ?string
107 {
108 return $this->title;
109 }
110 }
111