PluginProbe
Imagify Image Optimization: Optimize Images | Compress & Convert to WebP/AVIF / trunk
Imagify Image Optimization: Optimize Images | Compress & Convert to WebP/AVIF vtrunk
2.3.4 2.3.3 2.3.2 2.3.1 2.3.0 2.2.9 2.2.8 trunk 1.10 1.3.3 1.3.4 1.3.5 1.3.5.1 1.3.5.2 1.3.6 1.3.6.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.5 All 103 releases
imagify / vendor / wordpress / php-mcp-schema / src / Client / Sampling / DTO / CreateMessageRequest.php

CreateMessageRequest.php in Imagify Image Optimization: Optimize Images | Compress & Convert to WebP/AVIF trunk, at vendor/wordpress/php-mcp-schema/src/Client/Sampling/DTO/CreateMessageRequest.php

105 lines 3.0 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\JsonRpc\DTO\JSONRPCRequest;
8 use WP\McpSchema\Common\Protocol\Union\ServerRequestInterface;
9 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
10
11 /**
12 * A request from the server to sample an LLM via the client. The client has full discretion over which model to select. The client should also inform the user before beginning sampling, to allow them to inspect the request (human in the loop) and decide whether to approve it.
13 *
14 * @since 2024-11-05
15 * @last-updated 2025-11-25 (modified property: params)
16 *
17 * @mcp-domain Client
18 * @mcp-subdomain Sampling
19 * @mcp-version 2025-11-25
20 */
21 class CreateMessageRequest extends JSONRPCRequest implements ServerRequestInterface
22 {
23 use ValidatesRequiredFields;
24
25 public const METHOD = 'sampling/createMessage';
26
27 public const DISCRIMINATOR_FIELD = 'method';
28 public const DISCRIMINATOR_VALUE = 'sampling/createMessage';
29
30 /**
31 * @var \WP\McpSchema\Client\Sampling\DTO\CreateMessageRequestParams
32 */
33 protected CreateMessageRequestParams $typedParams;
34
35 /**
36 * @param '2.0' $jsonrpc @since 2025-11-25
37 * @param string|number $id @since 2025-11-25
38 * @param \WP\McpSchema\Client\Sampling\DTO\CreateMessageRequestParams $params @since 2024-11-05
39 */
40 public function __construct(
41 string $jsonrpc,
42 $id,
43 CreateMessageRequestParams $params
44 ) {
45 parent::__construct(self::METHOD, $jsonrpc, $id, null);
46 $this->typedParams = $params;
47 }
48
49 /**
50 * Creates an instance from an array.
51 *
52 * @param array{
53 * jsonrpc: '2.0',
54 * id: string|number,
55 * method: 'sampling/createMessage',
56 * params: array<string, mixed>|\WP\McpSchema\Client\Sampling\DTO\CreateMessageRequestParams
57 * } $data
58 * @phpstan-param array<string, mixed> $data
59 * @return self
60 */
61 public static function fromArray(array $data): self
62 {
63 self::assertRequired($data, ['jsonrpc', 'id', 'params']);
64
65 /** @var '2.0' $jsonrpc */
66 $jsonrpc = self::asString($data['jsonrpc']);
67
68 /** @var string|number $id */
69 $id = self::asStringOrNumber($data['id']);
70
71 /** @var \WP\McpSchema\Client\Sampling\DTO\CreateMessageRequestParams $params */
72 $params = is_array($data['params'])
73 ? CreateMessageRequestParams::fromArray(self::asArray($data['params']))
74 : $data['params'];
75
76 return new self(
77 $jsonrpc,
78 $id,
79 $params
80 );
81 }
82
83 /**
84 * Converts the instance to an array.
85 *
86 * @return array<string, mixed>
87 */
88 public function toArray(): array
89 {
90 $result = parent::toArray();
91
92 $result['params'] = $this->typedParams->toArray();
93
94 return $result;
95 }
96
97 /**
98 * @return \WP\McpSchema\Client\Sampling\DTO\CreateMessageRequestParams
99 */
100 public function getTypedParams(): CreateMessageRequestParams
101 {
102 return $this->typedParams;
103 }
104 }
105