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 / ProgressNotification.php

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

99 lines 2.8 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\JsonRpc\DTO\JSONRPCNotification;
8 use WP\McpSchema\Common\Protocol\Union\ClientNotificationInterface;
9 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
10 use WP\McpSchema\Server\Lifecycle\Union\ServerNotificationInterface;
11
12 /**
13 * An out-of-band notification used to inform the receiver of a progress update for a long-running request.
14 *
15 * @since 2024-11-05
16 * @last-updated 2025-11-25 (modified property: params)
17 *
18 * @mcp-domain Common
19 * @mcp-subdomain Protocol
20 * @mcp-version 2025-11-25
21 */
22 class ProgressNotification extends JSONRPCNotification implements ClientNotificationInterface, ServerNotificationInterface
23 {
24 use ValidatesRequiredFields;
25
26 public const METHOD = 'notifications/progress';
27
28 public const DISCRIMINATOR_FIELD = 'method';
29 public const DISCRIMINATOR_VALUE = 'notifications/progress';
30
31 /**
32 * @var \WP\McpSchema\Common\Protocol\DTO\ProgressNotificationParams
33 */
34 protected ProgressNotificationParams $typedParams;
35
36 /**
37 * @param '2.0' $jsonrpc @since 2025-11-25
38 * @param \WP\McpSchema\Common\Protocol\DTO\ProgressNotificationParams $params @since 2024-11-05
39 */
40 public function __construct(
41 string $jsonrpc,
42 ProgressNotificationParams $params
43 ) {
44 parent::__construct(self::METHOD, $jsonrpc, null);
45 $this->typedParams = $params;
46 }
47
48 /**
49 * Creates an instance from an array.
50 *
51 * @param array{
52 * jsonrpc: '2.0',
53 * method: 'notifications/progress',
54 * params: array<string, mixed>|\WP\McpSchema\Common\Protocol\DTO\ProgressNotificationParams
55 * } $data
56 * @phpstan-param array<string, mixed> $data
57 * @return self
58 */
59 public static function fromArray(array $data): self
60 {
61 self::assertRequired($data, ['jsonrpc', 'params']);
62
63 /** @var '2.0' $jsonrpc */
64 $jsonrpc = self::asString($data['jsonrpc']);
65
66 /** @var \WP\McpSchema\Common\Protocol\DTO\ProgressNotificationParams $params */
67 $params = is_array($data['params'])
68 ? ProgressNotificationParams::fromArray(self::asArray($data['params']))
69 : $data['params'];
70
71 return new self(
72 $jsonrpc,
73 $params
74 );
75 }
76
77 /**
78 * Converts the instance to an array.
79 *
80 * @return array<string, mixed>
81 */
82 public function toArray(): array
83 {
84 $result = parent::toArray();
85
86 $result['params'] = $this->typedParams->toArray();
87
88 return $result;
89 }
90
91 /**
92 * @return \WP\McpSchema\Common\Protocol\DTO\ProgressNotificationParams
93 */
94 public function getTypedParams(): ProgressNotificationParams
95 {
96 return $this->typedParams;
97 }
98 }
99