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

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

162 lines 3.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\NotificationParams;
8 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
9
10 /**
11 * Parameters for a `notifications/progress` notification.
12 *
13 * @since 2025-11-25
14 *
15 * @mcp-domain Common
16 * @mcp-subdomain Protocol
17 * @mcp-version 2025-11-25
18 */
19 class ProgressNotificationParams extends NotificationParams
20 {
21 use ValidatesRequiredFields;
22
23 /**
24 * The progress token which was given in the initial request, used to associate this notification with the request that is proceeding.
25 *
26 * @since 2025-11-25
27 *
28 * @var string|number
29 */
30 protected $progressToken;
31
32 /**
33 * The progress thus far. This should increase every time progress is made, even if the total is unknown.
34 *
35 * @since 2025-11-25
36 *
37 * @var float
38 */
39 protected float $progress;
40
41 /**
42 * Total number of items to process (or total progress required), if known.
43 *
44 * @since 2025-11-25
45 *
46 * @var int|null
47 */
48 protected ?int $total;
49
50 /**
51 * An optional message describing the current progress.
52 *
53 * @since 2025-11-25
54 *
55 * @var string|null
56 */
57 protected ?string $message;
58
59 /**
60 * @param string|number $progressToken @since 2025-11-25
61 * @param float $progress @since 2025-11-25
62 * @param array<string, mixed>|null $_meta @since 2025-11-25
63 * @param int|null $total @since 2025-11-25
64 * @param string|null $message @since 2025-11-25
65 */
66 public function __construct(
67 $progressToken,
68 float $progress,
69 ?array $_meta = null,
70 ?int $total = null,
71 ?string $message = null
72 ) {
73 parent::__construct($_meta);
74 $this->progressToken = $progressToken;
75 $this->progress = $progress;
76 $this->total = $total;
77 $this->message = $message;
78 }
79
80 /**
81 * Creates an instance from an array.
82 *
83 * @param array{
84 * _meta?: array<string, mixed>|null,
85 * progressToken: string|number,
86 * progress: float,
87 * total?: int|null,
88 * message?: string|null
89 * } $data
90 * @phpstan-param array<string, mixed> $data
91 * @return self
92 */
93 public static function fromArray(array $data): self
94 {
95 self::assertRequired($data, ['progressToken', 'progress']);
96
97 /** @var string|number $progressToken */
98 $progressToken = self::asStringOrNumber($data['progressToken']);
99
100 return new self(
101 $progressToken,
102 self::asFloat($data['progress']),
103 self::asArrayOrNull($data['_meta'] ?? null),
104 self::asIntOrNull($data['total'] ?? null),
105 self::asStringOrNull($data['message'] ?? null)
106 );
107 }
108
109 /**
110 * Converts the instance to an array.
111 *
112 * @return array<string, mixed>
113 */
114 public function toArray(): array
115 {
116 $result = parent::toArray();
117
118 $result['progressToken'] = $this->progressToken;
119 $result['progress'] = $this->progress;
120 if ($this->total !== null) {
121 $result['total'] = $this->total;
122 }
123 if ($this->message !== null) {
124 $result['message'] = $this->message;
125 }
126
127 return $result;
128 }
129
130 /**
131 * @return string|number
132 */
133 public function getProgressToken()
134 {
135 return $this->progressToken;
136 }
137
138 /**
139 * @return float
140 */
141 public function getProgress(): float
142 {
143 return $this->progress;
144 }
145
146 /**
147 * @return int|null
148 */
149 public function getTotal(): ?int
150 {
151 return $this->total;
152 }
153
154 /**
155 * @return string|null
156 */
157 public function getMessage(): ?string
158 {
159 return $this->message;
160 }
161 }
162