PluginProbe
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages / 3.4.2
Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages v3.4.2
3.4.2 3.4.1 3.4.0 3.3.9 3.3.8 3.3.7 3.3.6 3.3.5 3.3.4 3.3.3 3.3.2 3.3.1 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 All 195 releases
convertkit / vendor / wordpress / php-mcp-schema / src / Client / Sampling / DTO / SamplingMessage.php

SamplingMessage.php in Kit (formerly ConvertKit) – Email Newsletter, Email Marketing, Membership, Subscribers and Landing Pages 3.4.2, at vendor/wordpress/php-mcp-schema/src/Client/Sampling/DTO/SamplingMessage.php

138 lines 3.9 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\Client\Sampling\DTO;
6
7 use WP\McpSchema\Common\AbstractDataTransferObject;
8 use WP\McpSchema\Common\Protocol\Factory\SamplingMessageContentBlockFactory;
9 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
10
11 /**
12 * Describes a message issued to or received from an LLM API.
13 *
14 * @since 2024-11-05
15 * @last-updated 2025-11-25 (added properties: _meta; modified properties: content, role)
16 *
17 * @mcp-domain Client
18 * @mcp-subdomain Sampling
19 * @mcp-version 2025-11-25
20 */
21 class SamplingMessage extends AbstractDataTransferObject
22 {
23 use ValidatesRequiredFields;
24
25 /**
26 * @since 2024-11-05
27 *
28 * @var 'user'|'assistant'
29 */
30 protected string $role;
31
32 /**
33 * @since 2024-11-05
34 *
35 * @var array<\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface|\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface>
36 */
37 protected array $content;
38
39 /**
40 * See [General fields: `_meta`](/specification/2025-11-25/basic/index#meta) for notes on `_meta` usage.
41 *
42 * @since 2025-11-25
43 *
44 * @var array<string, mixed>|null
45 */
46 protected ?array $_meta;
47
48 /**
49 * @param 'user'|'assistant' $role @since 2024-11-05
50 * @param array<\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface|\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface> $content @since 2024-11-05
51 * @param array<string, mixed>|null $_meta @since 2025-11-25
52 */
53 public function __construct(
54 string $role,
55 array $content,
56 ?array $_meta = null
57 ) {
58 $this->role = $role;
59 $this->content = $content;
60 $this->_meta = $_meta;
61 }
62
63 /**
64 * Creates an instance from an array.
65 *
66 * @param array{
67 * role: 'user'|'assistant',
68 * content: array<\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface|\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface>,
69 * _meta?: array<string, mixed>|null
70 * } $data
71 * @phpstan-param array<string, mixed> $data
72 * @return self
73 */
74 public static function fromArray(array $data): self
75 {
76 self::assertRequired($data, ['role', 'content']);
77
78 /** @var 'user'|'assistant' $role */
79 $role = self::asString($data['role']);
80
81 /** @var array<\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface|\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface> $content */
82 $content = array_map(
83 static fn($item) => is_array($item)
84 ? SamplingMessageContentBlockFactory::fromArray($item)
85 : $item,
86 self::asArray($data['content'])
87 );
88
89 return new self(
90 $role,
91 $content,
92 self::asArrayOrNull($data['_meta'] ?? null)
93 );
94 }
95
96 /**
97 * Converts the instance to an array.
98 *
99 * @return array<string, mixed>
100 */
101 public function toArray(): array
102 {
103 $result = [];
104
105 $result['role'] = $this->role;
106 $result['content'] = array_map(static fn($item) => (is_object($item) && method_exists($item, 'toArray')) ? $item->toArray() : $item, $this->content);
107 if ($this->_meta !== null) {
108 $result['_meta'] = $this->_meta;
109 }
110
111 return $result;
112 }
113
114 /**
115 * @return 'user'|'assistant'
116 */
117 public function getRole(): string
118 {
119 return $this->role;
120 }
121
122 /**
123 * @return array<\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface|\WP\McpSchema\Common\Protocol\Union\SamplingMessageContentBlockInterface>
124 */
125 public function getContent(): array
126 {
127 return $this->content;
128 }
129
130 /**
131 * @return array<string, mixed>|null
132 */
133 public function get_meta(): ?array
134 {
135 return $this->_meta;
136 }
137 }
138