@codesys/mcp-toolkit 2.1.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/README.md +190 -10
  3. package/README.zh-CN.md +254 -0
  4. package/dist/actions.d.ts +9 -4
  5. package/dist/actions.js +1 -1
  6. package/dist/actions.js.map +1 -1
  7. package/dist/bridge/bridge.d.ts +12 -1
  8. package/dist/bridge/bridge.js +77 -11
  9. package/dist/bridge/bridge.js.map +1 -1
  10. package/dist/cli.js +7 -1
  11. package/dist/cli.js.map +1 -1
  12. package/dist/codesys/debug.d.ts +5 -0
  13. package/dist/codesys/debug.js +89 -0
  14. package/dist/codesys/debug.js.map +1 -0
  15. package/dist/codesys/device-tools.d.ts +3 -0
  16. package/dist/codesys/device-tools.js +38 -0
  17. package/dist/codesys/device-tools.js.map +1 -0
  18. package/dist/codesys/graphical.d.ts +76 -0
  19. package/dist/codesys/graphical.js +226 -0
  20. package/dist/codesys/graphical.js.map +1 -0
  21. package/dist/codesys/lang.d.ts +39 -0
  22. package/dist/codesys/lang.js +177 -0
  23. package/dist/codesys/lang.js.map +1 -0
  24. package/dist/codesys/simtest.d.ts +48 -0
  25. package/dist/codesys/simtest.js +103 -0
  26. package/dist/codesys/simtest.js.map +1 -0
  27. package/dist/codesys/st.d.ts +1 -1
  28. package/dist/codesys/st.js.map +1 -1
  29. package/dist/codesys/trace.d.ts +19 -0
  30. package/dist/codesys/trace.js +139 -0
  31. package/dist/codesys/trace.js.map +1 -0
  32. package/dist/hmi/native.d.ts +89 -0
  33. package/dist/hmi/native.js +447 -0
  34. package/dist/hmi/native.js.map +1 -0
  35. package/dist/hmi/render.d.ts +90 -0
  36. package/dist/hmi/render.js +307 -0
  37. package/dist/hmi/render.js.map +1 -0
  38. package/dist/hmi/route.d.ts +32 -0
  39. package/dist/hmi/route.js +184 -0
  40. package/dist/hmi/route.js.map +1 -0
  41. package/dist/hmi/service.d.ts +45 -0
  42. package/dist/hmi/service.js +182 -0
  43. package/dist/hmi/service.js.map +1 -0
  44. package/dist/hmi/spec.d.ts +821 -0
  45. package/dist/hmi/spec.js +191 -0
  46. package/dist/hmi/spec.js.map +1 -0
  47. package/dist/hmi/templates.d.ts +11 -0
  48. package/dist/hmi/templates.js +92 -0
  49. package/dist/hmi/templates.js.map +1 -0
  50. package/dist/hmi/tools.d.ts +4 -0
  51. package/dist/hmi/tools.js +222 -0
  52. package/dist/hmi/tools.js.map +1 -0
  53. package/dist/hmi/value.d.ts +3 -0
  54. package/dist/hmi/value.js +26 -0
  55. package/dist/hmi/value.js.map +1 -0
  56. package/dist/panel/hmi.js +138 -0
  57. package/dist/panel.d.ts +3 -0
  58. package/dist/panel.js +17 -0
  59. package/dist/panel.js.map +1 -1
  60. package/dist/server.d.ts +1 -1
  61. package/dist/server.js +7 -2
  62. package/dist/server.js.map +1 -1
  63. package/dist/tools.d.ts +5 -1
  64. package/dist/tools.js +19 -3
  65. package/dist/tools.js.map +1 -1
  66. package/dist/viewer.d.ts +1 -1
  67. package/dist/viewer.js +13 -2
  68. package/dist/viewer.js.map +1 -1
  69. package/package.json +1 -1
  70. package/watcher/mcp_alarms.py +134 -0
  71. package/watcher/mcp_debug.py +161 -0
  72. package/watcher/mcp_devices.py +83 -0
  73. package/watcher/mcp_lang.py +179 -0
  74. package/watcher/mcp_ops.py +3 -1
  75. package/watcher/mcp_trace.py +90 -0
  76. package/watcher/mcp_ui.py +54 -0
  77. package/watcher/mcp_visu.py +422 -0
  78. package/watcher/watcher.py +52 -10
@@ -0,0 +1,821 @@
1
+ /**
2
+ * HMI screens: what the model writes. A screen is a grid of tiles; each tile is
3
+ * one widget bound to PLC variables (full instance paths, e.g. "PLC_PRG.fbPump.xRunning").
4
+ * The same description renders as a live HTML/SVG screen in the browser, as a
5
+ * screenshot for the model, and as a native CODESYS visualization.
6
+ */
7
+ import * as z from "zod/v4";
8
+ declare const tone: z.ZodEnum<{
9
+ accent: "accent";
10
+ alarm: "alarm";
11
+ neutral: "neutral";
12
+ ok: "ok";
13
+ warn: "warn";
14
+ }>;
15
+ declare const faceplate: z.ZodObject<{
16
+ title: z.ZodOptional<z.ZodString>;
17
+ auto: z.ZodOptional<z.ZodString>;
18
+ start: z.ZodOptional<z.ZodString>;
19
+ stop: z.ZodOptional<z.ZodString>;
20
+ open: z.ZodOptional<z.ZodString>;
21
+ close: z.ZodOptional<z.ZodString>;
22
+ reset: z.ZodOptional<z.ZodString>;
23
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
24
+ label: z.ZodString;
25
+ value: z.ZodString;
26
+ unit: z.ZodOptional<z.ZodString>;
27
+ decimals: z.ZodOptional<z.ZodNumber>;
28
+ }, z.core.$strip>>>;
29
+ setpoint: z.ZodOptional<z.ZodObject<{
30
+ label: z.ZodOptional<z.ZodString>;
31
+ variable: z.ZodString;
32
+ min: z.ZodNumber;
33
+ max: z.ZodNumber;
34
+ step: z.ZodOptional<z.ZodNumber>;
35
+ unit: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>>;
37
+ }, z.core.$strip>;
38
+ /** Things placed on a process (mimic) diagram, in a 0..100 x 0..100 box scaled to the tile. */
39
+ declare const processItem: z.ZodDiscriminatedUnion<[z.ZodObject<{
40
+ type: z.ZodLiteral<"tank">;
41
+ id: z.ZodOptional<z.ZodString>;
42
+ x: z.ZodNumber;
43
+ y: z.ZodNumber;
44
+ w: z.ZodNumber;
45
+ h: z.ZodNumber;
46
+ level: z.ZodString;
47
+ max: z.ZodDefault<z.ZodNumber>;
48
+ unit: z.ZodOptional<z.ZodString>;
49
+ label: z.ZodOptional<z.ZodString>;
50
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
51
+ from: z.ZodNumber;
52
+ tone: z.ZodEnum<{
53
+ accent: "accent";
54
+ alarm: "alarm";
55
+ neutral: "neutral";
56
+ ok: "ok";
57
+ warn: "warn";
58
+ }>;
59
+ }, z.core.$strip>>>;
60
+ }, z.core.$strip>, z.ZodObject<{
61
+ type: z.ZodLiteral<"pump">;
62
+ id: z.ZodOptional<z.ZodString>;
63
+ x: z.ZodNumber;
64
+ y: z.ZodNumber;
65
+ size: z.ZodDefault<z.ZodNumber>;
66
+ running: z.ZodString;
67
+ fault: z.ZodOptional<z.ZodString>;
68
+ label: z.ZodOptional<z.ZodString>;
69
+ faceplate: z.ZodOptional<z.ZodObject<{
70
+ title: z.ZodOptional<z.ZodString>;
71
+ auto: z.ZodOptional<z.ZodString>;
72
+ start: z.ZodOptional<z.ZodString>;
73
+ stop: z.ZodOptional<z.ZodString>;
74
+ open: z.ZodOptional<z.ZodString>;
75
+ close: z.ZodOptional<z.ZodString>;
76
+ reset: z.ZodOptional<z.ZodString>;
77
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
78
+ label: z.ZodString;
79
+ value: z.ZodString;
80
+ unit: z.ZodOptional<z.ZodString>;
81
+ decimals: z.ZodOptional<z.ZodNumber>;
82
+ }, z.core.$strip>>>;
83
+ setpoint: z.ZodOptional<z.ZodObject<{
84
+ label: z.ZodOptional<z.ZodString>;
85
+ variable: z.ZodString;
86
+ min: z.ZodNumber;
87
+ max: z.ZodNumber;
88
+ step: z.ZodOptional<z.ZodNumber>;
89
+ unit: z.ZodOptional<z.ZodString>;
90
+ }, z.core.$strip>>;
91
+ }, z.core.$strip>>;
92
+ }, z.core.$strip>, z.ZodObject<{
93
+ type: z.ZodLiteral<"fan">;
94
+ id: z.ZodOptional<z.ZodString>;
95
+ x: z.ZodNumber;
96
+ y: z.ZodNumber;
97
+ size: z.ZodDefault<z.ZodNumber>;
98
+ running: z.ZodString;
99
+ label: z.ZodOptional<z.ZodString>;
100
+ faceplate: z.ZodOptional<z.ZodObject<{
101
+ title: z.ZodOptional<z.ZodString>;
102
+ auto: z.ZodOptional<z.ZodString>;
103
+ start: z.ZodOptional<z.ZodString>;
104
+ stop: z.ZodOptional<z.ZodString>;
105
+ open: z.ZodOptional<z.ZodString>;
106
+ close: z.ZodOptional<z.ZodString>;
107
+ reset: z.ZodOptional<z.ZodString>;
108
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
109
+ label: z.ZodString;
110
+ value: z.ZodString;
111
+ unit: z.ZodOptional<z.ZodString>;
112
+ decimals: z.ZodOptional<z.ZodNumber>;
113
+ }, z.core.$strip>>>;
114
+ setpoint: z.ZodOptional<z.ZodObject<{
115
+ label: z.ZodOptional<z.ZodString>;
116
+ variable: z.ZodString;
117
+ min: z.ZodNumber;
118
+ max: z.ZodNumber;
119
+ step: z.ZodOptional<z.ZodNumber>;
120
+ unit: z.ZodOptional<z.ZodString>;
121
+ }, z.core.$strip>>;
122
+ }, z.core.$strip>>;
123
+ }, z.core.$strip>, z.ZodObject<{
124
+ type: z.ZodLiteral<"valve">;
125
+ id: z.ZodOptional<z.ZodString>;
126
+ x: z.ZodNumber;
127
+ y: z.ZodNumber;
128
+ size: z.ZodDefault<z.ZodNumber>;
129
+ open: z.ZodString;
130
+ vertical: z.ZodOptional<z.ZodBoolean>;
131
+ label: z.ZodOptional<z.ZodString>;
132
+ faceplate: z.ZodOptional<z.ZodObject<{
133
+ title: z.ZodOptional<z.ZodString>;
134
+ auto: z.ZodOptional<z.ZodString>;
135
+ start: z.ZodOptional<z.ZodString>;
136
+ stop: z.ZodOptional<z.ZodString>;
137
+ open: z.ZodOptional<z.ZodString>;
138
+ close: z.ZodOptional<z.ZodString>;
139
+ reset: z.ZodOptional<z.ZodString>;
140
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
141
+ label: z.ZodString;
142
+ value: z.ZodString;
143
+ unit: z.ZodOptional<z.ZodString>;
144
+ decimals: z.ZodOptional<z.ZodNumber>;
145
+ }, z.core.$strip>>>;
146
+ setpoint: z.ZodOptional<z.ZodObject<{
147
+ label: z.ZodOptional<z.ZodString>;
148
+ variable: z.ZodString;
149
+ min: z.ZodNumber;
150
+ max: z.ZodNumber;
151
+ step: z.ZodOptional<z.ZodNumber>;
152
+ unit: z.ZodOptional<z.ZodString>;
153
+ }, z.core.$strip>>;
154
+ }, z.core.$strip>>;
155
+ }, z.core.$strip>, z.ZodObject<{
156
+ type: z.ZodLiteral<"junction">;
157
+ id: z.ZodString;
158
+ x: z.ZodNumber;
159
+ y: z.ZodNumber;
160
+ }, z.core.$strip>, z.ZodObject<{
161
+ type: z.ZodLiteral<"pipe">;
162
+ from: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>]>>;
163
+ to: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>]>>;
164
+ via: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
165
+ points: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
166
+ flow: z.ZodOptional<z.ZodString>;
167
+ }, z.core.$strip>, z.ZodObject<{
168
+ type: z.ZodLiteral<"sensor">;
169
+ x: z.ZodNumber;
170
+ y: z.ZodNumber;
171
+ value: z.ZodString;
172
+ unit: z.ZodOptional<z.ZodString>;
173
+ label: z.ZodOptional<z.ZodString>;
174
+ decimals: z.ZodOptional<z.ZodNumber>;
175
+ }, z.core.$strip>, z.ZodObject<{
176
+ type: z.ZodLiteral<"lamp">;
177
+ x: z.ZodNumber;
178
+ y: z.ZodNumber;
179
+ on: z.ZodString;
180
+ tone: z.ZodOptional<z.ZodEnum<{
181
+ accent: "accent";
182
+ alarm: "alarm";
183
+ neutral: "neutral";
184
+ ok: "ok";
185
+ warn: "warn";
186
+ }>>;
187
+ label: z.ZodOptional<z.ZodString>;
188
+ }, z.core.$strip>, z.ZodObject<{
189
+ type: z.ZodLiteral<"label">;
190
+ x: z.ZodNumber;
191
+ y: z.ZodNumber;
192
+ text: z.ZodString;
193
+ }, z.core.$strip>], "type">;
194
+ export declare const widgetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
195
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
196
+ title: z.ZodOptional<z.ZodString>;
197
+ type: z.ZodLiteral<"value">;
198
+ value: z.ZodString;
199
+ unit: z.ZodOptional<z.ZodString>;
200
+ decimals: z.ZodOptional<z.ZodNumber>;
201
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
202
+ from: z.ZodNumber;
203
+ tone: z.ZodEnum<{
204
+ accent: "accent";
205
+ alarm: "alarm";
206
+ neutral: "neutral";
207
+ ok: "ok";
208
+ warn: "warn";
209
+ }>;
210
+ }, z.core.$strip>>>;
211
+ trend: z.ZodOptional<z.ZodBoolean>;
212
+ }, z.core.$strip>, z.ZodObject<{
213
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
214
+ title: z.ZodOptional<z.ZodString>;
215
+ type: z.ZodLiteral<"gauge">;
216
+ value: z.ZodString;
217
+ min: z.ZodDefault<z.ZodNumber>;
218
+ max: z.ZodDefault<z.ZodNumber>;
219
+ unit: z.ZodOptional<z.ZodString>;
220
+ decimals: z.ZodOptional<z.ZodNumber>;
221
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
222
+ from: z.ZodNumber;
223
+ tone: z.ZodEnum<{
224
+ accent: "accent";
225
+ alarm: "alarm";
226
+ neutral: "neutral";
227
+ ok: "ok";
228
+ warn: "warn";
229
+ }>;
230
+ }, z.core.$strip>>>;
231
+ }, z.core.$strip>, z.ZodObject<{
232
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
233
+ title: z.ZodOptional<z.ZodString>;
234
+ type: z.ZodLiteral<"bar">;
235
+ value: z.ZodString;
236
+ min: z.ZodDefault<z.ZodNumber>;
237
+ max: z.ZodDefault<z.ZodNumber>;
238
+ unit: z.ZodOptional<z.ZodString>;
239
+ vertical: z.ZodOptional<z.ZodBoolean>;
240
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
241
+ from: z.ZodNumber;
242
+ tone: z.ZodEnum<{
243
+ accent: "accent";
244
+ alarm: "alarm";
245
+ neutral: "neutral";
246
+ ok: "ok";
247
+ warn: "warn";
248
+ }>;
249
+ }, z.core.$strip>>>;
250
+ }, z.core.$strip>, z.ZodObject<{
251
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
252
+ title: z.ZodOptional<z.ZodString>;
253
+ type: z.ZodLiteral<"status">;
254
+ items: z.ZodArray<z.ZodObject<{
255
+ label: z.ZodString;
256
+ on: z.ZodString;
257
+ tone: z.ZodOptional<z.ZodEnum<{
258
+ accent: "accent";
259
+ alarm: "alarm";
260
+ neutral: "neutral";
261
+ ok: "ok";
262
+ warn: "warn";
263
+ }>>;
264
+ invert: z.ZodOptional<z.ZodBoolean>;
265
+ }, z.core.$strip>>;
266
+ }, z.core.$strip>, z.ZodObject<{
267
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
268
+ title: z.ZodOptional<z.ZodString>;
269
+ type: z.ZodLiteral<"buttons">;
270
+ items: z.ZodArray<z.ZodObject<{
271
+ label: z.ZodString;
272
+ variable: z.ZodString;
273
+ action: z.ZodDefault<z.ZodEnum<{
274
+ reset: "reset";
275
+ set: "set";
276
+ tap: "tap";
277
+ toggle: "toggle";
278
+ }>>;
279
+ tone: z.ZodOptional<z.ZodEnum<{
280
+ accent: "accent";
281
+ alarm: "alarm";
282
+ neutral: "neutral";
283
+ ok: "ok";
284
+ warn: "warn";
285
+ }>>;
286
+ }, z.core.$strip>>;
287
+ }, z.core.$strip>, z.ZodObject<{
288
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
289
+ title: z.ZodOptional<z.ZodString>;
290
+ type: z.ZodLiteral<"switch">;
291
+ variable: z.ZodString;
292
+ label: z.ZodOptional<z.ZodString>;
293
+ }, z.core.$strip>, z.ZodObject<{
294
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
295
+ title: z.ZodOptional<z.ZodString>;
296
+ type: z.ZodLiteral<"setpoint">;
297
+ variable: z.ZodString;
298
+ min: z.ZodNumber;
299
+ max: z.ZodNumber;
300
+ step: z.ZodOptional<z.ZodNumber>;
301
+ unit: z.ZodOptional<z.ZodString>;
302
+ }, z.core.$strip>, z.ZodObject<{
303
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
304
+ title: z.ZodOptional<z.ZodString>;
305
+ type: z.ZodLiteral<"trend">;
306
+ series: z.ZodArray<z.ZodObject<{
307
+ value: z.ZodString;
308
+ label: z.ZodOptional<z.ZodString>;
309
+ }, z.core.$strip>>;
310
+ min: z.ZodOptional<z.ZodNumber>;
311
+ max: z.ZodOptional<z.ZodNumber>;
312
+ seconds: z.ZodDefault<z.ZodNumber>;
313
+ }, z.core.$strip>, z.ZodObject<{
314
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
315
+ title: z.ZodOptional<z.ZodString>;
316
+ type: z.ZodLiteral<"alarms">;
317
+ items: z.ZodArray<z.ZodObject<{
318
+ active: z.ZodString;
319
+ text: z.ZodString;
320
+ severity: z.ZodDefault<z.ZodEnum<{
321
+ alarm: "alarm";
322
+ info: "info";
323
+ warning: "warning";
324
+ }>>;
325
+ }, z.core.$strip>>;
326
+ }, z.core.$strip>, z.ZodObject<{
327
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
328
+ title: z.ZodOptional<z.ZodString>;
329
+ type: z.ZodLiteral<"text">;
330
+ text: z.ZodString;
331
+ }, z.core.$strip>, z.ZodObject<{
332
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
333
+ title: z.ZodOptional<z.ZodString>;
334
+ type: z.ZodLiteral<"process">;
335
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
336
+ type: z.ZodLiteral<"tank">;
337
+ id: z.ZodOptional<z.ZodString>;
338
+ x: z.ZodNumber;
339
+ y: z.ZodNumber;
340
+ w: z.ZodNumber;
341
+ h: z.ZodNumber;
342
+ level: z.ZodString;
343
+ max: z.ZodDefault<z.ZodNumber>;
344
+ unit: z.ZodOptional<z.ZodString>;
345
+ label: z.ZodOptional<z.ZodString>;
346
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
347
+ from: z.ZodNumber;
348
+ tone: z.ZodEnum<{
349
+ accent: "accent";
350
+ alarm: "alarm";
351
+ neutral: "neutral";
352
+ ok: "ok";
353
+ warn: "warn";
354
+ }>;
355
+ }, z.core.$strip>>>;
356
+ }, z.core.$strip>, z.ZodObject<{
357
+ type: z.ZodLiteral<"pump">;
358
+ id: z.ZodOptional<z.ZodString>;
359
+ x: z.ZodNumber;
360
+ y: z.ZodNumber;
361
+ size: z.ZodDefault<z.ZodNumber>;
362
+ running: z.ZodString;
363
+ fault: z.ZodOptional<z.ZodString>;
364
+ label: z.ZodOptional<z.ZodString>;
365
+ faceplate: z.ZodOptional<z.ZodObject<{
366
+ title: z.ZodOptional<z.ZodString>;
367
+ auto: z.ZodOptional<z.ZodString>;
368
+ start: z.ZodOptional<z.ZodString>;
369
+ stop: z.ZodOptional<z.ZodString>;
370
+ open: z.ZodOptional<z.ZodString>;
371
+ close: z.ZodOptional<z.ZodString>;
372
+ reset: z.ZodOptional<z.ZodString>;
373
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
374
+ label: z.ZodString;
375
+ value: z.ZodString;
376
+ unit: z.ZodOptional<z.ZodString>;
377
+ decimals: z.ZodOptional<z.ZodNumber>;
378
+ }, z.core.$strip>>>;
379
+ setpoint: z.ZodOptional<z.ZodObject<{
380
+ label: z.ZodOptional<z.ZodString>;
381
+ variable: z.ZodString;
382
+ min: z.ZodNumber;
383
+ max: z.ZodNumber;
384
+ step: z.ZodOptional<z.ZodNumber>;
385
+ unit: z.ZodOptional<z.ZodString>;
386
+ }, z.core.$strip>>;
387
+ }, z.core.$strip>>;
388
+ }, z.core.$strip>, z.ZodObject<{
389
+ type: z.ZodLiteral<"fan">;
390
+ id: z.ZodOptional<z.ZodString>;
391
+ x: z.ZodNumber;
392
+ y: z.ZodNumber;
393
+ size: z.ZodDefault<z.ZodNumber>;
394
+ running: z.ZodString;
395
+ label: z.ZodOptional<z.ZodString>;
396
+ faceplate: z.ZodOptional<z.ZodObject<{
397
+ title: z.ZodOptional<z.ZodString>;
398
+ auto: z.ZodOptional<z.ZodString>;
399
+ start: z.ZodOptional<z.ZodString>;
400
+ stop: z.ZodOptional<z.ZodString>;
401
+ open: z.ZodOptional<z.ZodString>;
402
+ close: z.ZodOptional<z.ZodString>;
403
+ reset: z.ZodOptional<z.ZodString>;
404
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
405
+ label: z.ZodString;
406
+ value: z.ZodString;
407
+ unit: z.ZodOptional<z.ZodString>;
408
+ decimals: z.ZodOptional<z.ZodNumber>;
409
+ }, z.core.$strip>>>;
410
+ setpoint: z.ZodOptional<z.ZodObject<{
411
+ label: z.ZodOptional<z.ZodString>;
412
+ variable: z.ZodString;
413
+ min: z.ZodNumber;
414
+ max: z.ZodNumber;
415
+ step: z.ZodOptional<z.ZodNumber>;
416
+ unit: z.ZodOptional<z.ZodString>;
417
+ }, z.core.$strip>>;
418
+ }, z.core.$strip>>;
419
+ }, z.core.$strip>, z.ZodObject<{
420
+ type: z.ZodLiteral<"valve">;
421
+ id: z.ZodOptional<z.ZodString>;
422
+ x: z.ZodNumber;
423
+ y: z.ZodNumber;
424
+ size: z.ZodDefault<z.ZodNumber>;
425
+ open: z.ZodString;
426
+ vertical: z.ZodOptional<z.ZodBoolean>;
427
+ label: z.ZodOptional<z.ZodString>;
428
+ faceplate: z.ZodOptional<z.ZodObject<{
429
+ title: z.ZodOptional<z.ZodString>;
430
+ auto: z.ZodOptional<z.ZodString>;
431
+ start: z.ZodOptional<z.ZodString>;
432
+ stop: z.ZodOptional<z.ZodString>;
433
+ open: z.ZodOptional<z.ZodString>;
434
+ close: z.ZodOptional<z.ZodString>;
435
+ reset: z.ZodOptional<z.ZodString>;
436
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
437
+ label: z.ZodString;
438
+ value: z.ZodString;
439
+ unit: z.ZodOptional<z.ZodString>;
440
+ decimals: z.ZodOptional<z.ZodNumber>;
441
+ }, z.core.$strip>>>;
442
+ setpoint: z.ZodOptional<z.ZodObject<{
443
+ label: z.ZodOptional<z.ZodString>;
444
+ variable: z.ZodString;
445
+ min: z.ZodNumber;
446
+ max: z.ZodNumber;
447
+ step: z.ZodOptional<z.ZodNumber>;
448
+ unit: z.ZodOptional<z.ZodString>;
449
+ }, z.core.$strip>>;
450
+ }, z.core.$strip>>;
451
+ }, z.core.$strip>, z.ZodObject<{
452
+ type: z.ZodLiteral<"junction">;
453
+ id: z.ZodString;
454
+ x: z.ZodNumber;
455
+ y: z.ZodNumber;
456
+ }, z.core.$strip>, z.ZodObject<{
457
+ type: z.ZodLiteral<"pipe">;
458
+ from: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>]>>;
459
+ to: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>]>>;
460
+ via: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
461
+ points: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
462
+ flow: z.ZodOptional<z.ZodString>;
463
+ }, z.core.$strip>, z.ZodObject<{
464
+ type: z.ZodLiteral<"sensor">;
465
+ x: z.ZodNumber;
466
+ y: z.ZodNumber;
467
+ value: z.ZodString;
468
+ unit: z.ZodOptional<z.ZodString>;
469
+ label: z.ZodOptional<z.ZodString>;
470
+ decimals: z.ZodOptional<z.ZodNumber>;
471
+ }, z.core.$strip>, z.ZodObject<{
472
+ type: z.ZodLiteral<"lamp">;
473
+ x: z.ZodNumber;
474
+ y: z.ZodNumber;
475
+ on: z.ZodString;
476
+ tone: z.ZodOptional<z.ZodEnum<{
477
+ accent: "accent";
478
+ alarm: "alarm";
479
+ neutral: "neutral";
480
+ ok: "ok";
481
+ warn: "warn";
482
+ }>>;
483
+ label: z.ZodOptional<z.ZodString>;
484
+ }, z.core.$strip>, z.ZodObject<{
485
+ type: z.ZodLiteral<"label">;
486
+ x: z.ZodNumber;
487
+ y: z.ZodNumber;
488
+ text: z.ZodString;
489
+ }, z.core.$strip>], "type">>;
490
+ }, z.core.$strip>], "type">;
491
+ export declare const screenSchema: z.ZodObject<{
492
+ name: z.ZodString;
493
+ title: z.ZodString;
494
+ subtitle: z.ZodOptional<z.ZodString>;
495
+ theme: z.ZodDefault<z.ZodEnum<{
496
+ dark: "dark";
497
+ light: "light";
498
+ }>>;
499
+ size: z.ZodDefault<z.ZodEnum<{
500
+ "1024x768": "1024x768";
501
+ "1280x720": "1280x720";
502
+ "1920x1080": "1920x1080";
503
+ "800x480": "800x480";
504
+ }>>;
505
+ grid: z.ZodDefault<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>;
506
+ widgets: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
507
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
508
+ title: z.ZodOptional<z.ZodString>;
509
+ type: z.ZodLiteral<"value">;
510
+ value: z.ZodString;
511
+ unit: z.ZodOptional<z.ZodString>;
512
+ decimals: z.ZodOptional<z.ZodNumber>;
513
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
514
+ from: z.ZodNumber;
515
+ tone: z.ZodEnum<{
516
+ accent: "accent";
517
+ alarm: "alarm";
518
+ neutral: "neutral";
519
+ ok: "ok";
520
+ warn: "warn";
521
+ }>;
522
+ }, z.core.$strip>>>;
523
+ trend: z.ZodOptional<z.ZodBoolean>;
524
+ }, z.core.$strip>, z.ZodObject<{
525
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
526
+ title: z.ZodOptional<z.ZodString>;
527
+ type: z.ZodLiteral<"gauge">;
528
+ value: z.ZodString;
529
+ min: z.ZodDefault<z.ZodNumber>;
530
+ max: z.ZodDefault<z.ZodNumber>;
531
+ unit: z.ZodOptional<z.ZodString>;
532
+ decimals: z.ZodOptional<z.ZodNumber>;
533
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
534
+ from: z.ZodNumber;
535
+ tone: z.ZodEnum<{
536
+ accent: "accent";
537
+ alarm: "alarm";
538
+ neutral: "neutral";
539
+ ok: "ok";
540
+ warn: "warn";
541
+ }>;
542
+ }, z.core.$strip>>>;
543
+ }, z.core.$strip>, z.ZodObject<{
544
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
545
+ title: z.ZodOptional<z.ZodString>;
546
+ type: z.ZodLiteral<"bar">;
547
+ value: z.ZodString;
548
+ min: z.ZodDefault<z.ZodNumber>;
549
+ max: z.ZodDefault<z.ZodNumber>;
550
+ unit: z.ZodOptional<z.ZodString>;
551
+ vertical: z.ZodOptional<z.ZodBoolean>;
552
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
553
+ from: z.ZodNumber;
554
+ tone: z.ZodEnum<{
555
+ accent: "accent";
556
+ alarm: "alarm";
557
+ neutral: "neutral";
558
+ ok: "ok";
559
+ warn: "warn";
560
+ }>;
561
+ }, z.core.$strip>>>;
562
+ }, z.core.$strip>, z.ZodObject<{
563
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
564
+ title: z.ZodOptional<z.ZodString>;
565
+ type: z.ZodLiteral<"status">;
566
+ items: z.ZodArray<z.ZodObject<{
567
+ label: z.ZodString;
568
+ on: z.ZodString;
569
+ tone: z.ZodOptional<z.ZodEnum<{
570
+ accent: "accent";
571
+ alarm: "alarm";
572
+ neutral: "neutral";
573
+ ok: "ok";
574
+ warn: "warn";
575
+ }>>;
576
+ invert: z.ZodOptional<z.ZodBoolean>;
577
+ }, z.core.$strip>>;
578
+ }, z.core.$strip>, z.ZodObject<{
579
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
580
+ title: z.ZodOptional<z.ZodString>;
581
+ type: z.ZodLiteral<"buttons">;
582
+ items: z.ZodArray<z.ZodObject<{
583
+ label: z.ZodString;
584
+ variable: z.ZodString;
585
+ action: z.ZodDefault<z.ZodEnum<{
586
+ reset: "reset";
587
+ set: "set";
588
+ tap: "tap";
589
+ toggle: "toggle";
590
+ }>>;
591
+ tone: z.ZodOptional<z.ZodEnum<{
592
+ accent: "accent";
593
+ alarm: "alarm";
594
+ neutral: "neutral";
595
+ ok: "ok";
596
+ warn: "warn";
597
+ }>>;
598
+ }, z.core.$strip>>;
599
+ }, z.core.$strip>, z.ZodObject<{
600
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
601
+ title: z.ZodOptional<z.ZodString>;
602
+ type: z.ZodLiteral<"switch">;
603
+ variable: z.ZodString;
604
+ label: z.ZodOptional<z.ZodString>;
605
+ }, z.core.$strip>, z.ZodObject<{
606
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
607
+ title: z.ZodOptional<z.ZodString>;
608
+ type: z.ZodLiteral<"setpoint">;
609
+ variable: z.ZodString;
610
+ min: z.ZodNumber;
611
+ max: z.ZodNumber;
612
+ step: z.ZodOptional<z.ZodNumber>;
613
+ unit: z.ZodOptional<z.ZodString>;
614
+ }, z.core.$strip>, z.ZodObject<{
615
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
616
+ title: z.ZodOptional<z.ZodString>;
617
+ type: z.ZodLiteral<"trend">;
618
+ series: z.ZodArray<z.ZodObject<{
619
+ value: z.ZodString;
620
+ label: z.ZodOptional<z.ZodString>;
621
+ }, z.core.$strip>>;
622
+ min: z.ZodOptional<z.ZodNumber>;
623
+ max: z.ZodOptional<z.ZodNumber>;
624
+ seconds: z.ZodDefault<z.ZodNumber>;
625
+ }, z.core.$strip>, z.ZodObject<{
626
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
627
+ title: z.ZodOptional<z.ZodString>;
628
+ type: z.ZodLiteral<"alarms">;
629
+ items: z.ZodArray<z.ZodObject<{
630
+ active: z.ZodString;
631
+ text: z.ZodString;
632
+ severity: z.ZodDefault<z.ZodEnum<{
633
+ alarm: "alarm";
634
+ info: "info";
635
+ warning: "warning";
636
+ }>>;
637
+ }, z.core.$strip>>;
638
+ }, z.core.$strip>, z.ZodObject<{
639
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
640
+ title: z.ZodOptional<z.ZodString>;
641
+ type: z.ZodLiteral<"text">;
642
+ text: z.ZodString;
643
+ }, z.core.$strip>, z.ZodObject<{
644
+ at: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
645
+ title: z.ZodOptional<z.ZodString>;
646
+ type: z.ZodLiteral<"process">;
647
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
648
+ type: z.ZodLiteral<"tank">;
649
+ id: z.ZodOptional<z.ZodString>;
650
+ x: z.ZodNumber;
651
+ y: z.ZodNumber;
652
+ w: z.ZodNumber;
653
+ h: z.ZodNumber;
654
+ level: z.ZodString;
655
+ max: z.ZodDefault<z.ZodNumber>;
656
+ unit: z.ZodOptional<z.ZodString>;
657
+ label: z.ZodOptional<z.ZodString>;
658
+ bands: z.ZodOptional<z.ZodArray<z.ZodObject<{
659
+ from: z.ZodNumber;
660
+ tone: z.ZodEnum<{
661
+ accent: "accent";
662
+ alarm: "alarm";
663
+ neutral: "neutral";
664
+ ok: "ok";
665
+ warn: "warn";
666
+ }>;
667
+ }, z.core.$strip>>>;
668
+ }, z.core.$strip>, z.ZodObject<{
669
+ type: z.ZodLiteral<"pump">;
670
+ id: z.ZodOptional<z.ZodString>;
671
+ x: z.ZodNumber;
672
+ y: z.ZodNumber;
673
+ size: z.ZodDefault<z.ZodNumber>;
674
+ running: z.ZodString;
675
+ fault: z.ZodOptional<z.ZodString>;
676
+ label: z.ZodOptional<z.ZodString>;
677
+ faceplate: z.ZodOptional<z.ZodObject<{
678
+ title: z.ZodOptional<z.ZodString>;
679
+ auto: z.ZodOptional<z.ZodString>;
680
+ start: z.ZodOptional<z.ZodString>;
681
+ stop: z.ZodOptional<z.ZodString>;
682
+ open: z.ZodOptional<z.ZodString>;
683
+ close: z.ZodOptional<z.ZodString>;
684
+ reset: z.ZodOptional<z.ZodString>;
685
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
686
+ label: z.ZodString;
687
+ value: z.ZodString;
688
+ unit: z.ZodOptional<z.ZodString>;
689
+ decimals: z.ZodOptional<z.ZodNumber>;
690
+ }, z.core.$strip>>>;
691
+ setpoint: z.ZodOptional<z.ZodObject<{
692
+ label: z.ZodOptional<z.ZodString>;
693
+ variable: z.ZodString;
694
+ min: z.ZodNumber;
695
+ max: z.ZodNumber;
696
+ step: z.ZodOptional<z.ZodNumber>;
697
+ unit: z.ZodOptional<z.ZodString>;
698
+ }, z.core.$strip>>;
699
+ }, z.core.$strip>>;
700
+ }, z.core.$strip>, z.ZodObject<{
701
+ type: z.ZodLiteral<"fan">;
702
+ id: z.ZodOptional<z.ZodString>;
703
+ x: z.ZodNumber;
704
+ y: z.ZodNumber;
705
+ size: z.ZodDefault<z.ZodNumber>;
706
+ running: z.ZodString;
707
+ label: z.ZodOptional<z.ZodString>;
708
+ faceplate: z.ZodOptional<z.ZodObject<{
709
+ title: z.ZodOptional<z.ZodString>;
710
+ auto: z.ZodOptional<z.ZodString>;
711
+ start: z.ZodOptional<z.ZodString>;
712
+ stop: z.ZodOptional<z.ZodString>;
713
+ open: z.ZodOptional<z.ZodString>;
714
+ close: z.ZodOptional<z.ZodString>;
715
+ reset: z.ZodOptional<z.ZodString>;
716
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
717
+ label: z.ZodString;
718
+ value: z.ZodString;
719
+ unit: z.ZodOptional<z.ZodString>;
720
+ decimals: z.ZodOptional<z.ZodNumber>;
721
+ }, z.core.$strip>>>;
722
+ setpoint: z.ZodOptional<z.ZodObject<{
723
+ label: z.ZodOptional<z.ZodString>;
724
+ variable: z.ZodString;
725
+ min: z.ZodNumber;
726
+ max: z.ZodNumber;
727
+ step: z.ZodOptional<z.ZodNumber>;
728
+ unit: z.ZodOptional<z.ZodString>;
729
+ }, z.core.$strip>>;
730
+ }, z.core.$strip>>;
731
+ }, z.core.$strip>, z.ZodObject<{
732
+ type: z.ZodLiteral<"valve">;
733
+ id: z.ZodOptional<z.ZodString>;
734
+ x: z.ZodNumber;
735
+ y: z.ZodNumber;
736
+ size: z.ZodDefault<z.ZodNumber>;
737
+ open: z.ZodString;
738
+ vertical: z.ZodOptional<z.ZodBoolean>;
739
+ label: z.ZodOptional<z.ZodString>;
740
+ faceplate: z.ZodOptional<z.ZodObject<{
741
+ title: z.ZodOptional<z.ZodString>;
742
+ auto: z.ZodOptional<z.ZodString>;
743
+ start: z.ZodOptional<z.ZodString>;
744
+ stop: z.ZodOptional<z.ZodString>;
745
+ open: z.ZodOptional<z.ZodString>;
746
+ close: z.ZodOptional<z.ZodString>;
747
+ reset: z.ZodOptional<z.ZodString>;
748
+ values: z.ZodOptional<z.ZodArray<z.ZodObject<{
749
+ label: z.ZodString;
750
+ value: z.ZodString;
751
+ unit: z.ZodOptional<z.ZodString>;
752
+ decimals: z.ZodOptional<z.ZodNumber>;
753
+ }, z.core.$strip>>>;
754
+ setpoint: z.ZodOptional<z.ZodObject<{
755
+ label: z.ZodOptional<z.ZodString>;
756
+ variable: z.ZodString;
757
+ min: z.ZodNumber;
758
+ max: z.ZodNumber;
759
+ step: z.ZodOptional<z.ZodNumber>;
760
+ unit: z.ZodOptional<z.ZodString>;
761
+ }, z.core.$strip>>;
762
+ }, z.core.$strip>>;
763
+ }, z.core.$strip>, z.ZodObject<{
764
+ type: z.ZodLiteral<"junction">;
765
+ id: z.ZodString;
766
+ x: z.ZodNumber;
767
+ y: z.ZodNumber;
768
+ }, z.core.$strip>, z.ZodObject<{
769
+ type: z.ZodLiteral<"pipe">;
770
+ from: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>]>>;
771
+ to: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>]>>;
772
+ via: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
773
+ points: z.ZodOptional<z.ZodArray<z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>>>;
774
+ flow: z.ZodOptional<z.ZodString>;
775
+ }, z.core.$strip>, z.ZodObject<{
776
+ type: z.ZodLiteral<"sensor">;
777
+ x: z.ZodNumber;
778
+ y: z.ZodNumber;
779
+ value: z.ZodString;
780
+ unit: z.ZodOptional<z.ZodString>;
781
+ label: z.ZodOptional<z.ZodString>;
782
+ decimals: z.ZodOptional<z.ZodNumber>;
783
+ }, z.core.$strip>, z.ZodObject<{
784
+ type: z.ZodLiteral<"lamp">;
785
+ x: z.ZodNumber;
786
+ y: z.ZodNumber;
787
+ on: z.ZodString;
788
+ tone: z.ZodOptional<z.ZodEnum<{
789
+ accent: "accent";
790
+ alarm: "alarm";
791
+ neutral: "neutral";
792
+ ok: "ok";
793
+ warn: "warn";
794
+ }>>;
795
+ label: z.ZodOptional<z.ZodString>;
796
+ }, z.core.$strip>, z.ZodObject<{
797
+ type: z.ZodLiteral<"label">;
798
+ x: z.ZodNumber;
799
+ y: z.ZodNumber;
800
+ text: z.ZodString;
801
+ }, z.core.$strip>], "type">>;
802
+ }, z.core.$strip>], "type">>;
803
+ }, z.core.$strip>;
804
+ export type Widget = z.infer<typeof widgetSchema>;
805
+ export type ProcessItem = z.infer<typeof processItem>;
806
+ export type Screen = z.infer<typeof screenSchema>;
807
+ /** A screen as written, with defaults left out. */
808
+ export type ScreenInput = z.input<typeof screenSchema>;
809
+ export type Tone = z.infer<typeof tone>;
810
+ export type Faceplate = z.infer<typeof faceplate>;
811
+ /** Every alarm on any screen, for the header's alarm count. */
812
+ export declare function allAlarms(screens: Screen[]): {
813
+ active: string;
814
+ text: string;
815
+ severity: string;
816
+ }[];
817
+ /** Every PLC variable a screen reads or writes. */
818
+ export declare function screenVariables(s: Screen): string[];
819
+ /** Overlapping or out-of-grid tiles, as readable problems (empty when the layout is fine). */
820
+ export declare function layoutProblems(s: Screen): string[];
821
+ export { plcValue } from "./value.js";