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 / Client / Elicitation / DTO / ElicitRequest.php

ElicitRequest.php in ZIP AI – AI Website Builder & AI Agent (Beta) 0.0.8, at lib/php-mcp-schema/src/Client/Elicitation/DTO/ElicitRequest.php

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