@tx5dr/contracts 1.7.4 → 1.7.7

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.
@@ -107,49 +107,26 @@ export declare const PluginKeyedStringArrayKeySchema: z.ZodObject<{
107
107
  description?: string | undefined;
108
108
  }>;
109
109
  export type PluginKeyedStringArrayKey = z.infer<typeof PluginKeyedStringArrayKeySchema>;
110
- export declare const PluginSettingConditionSchema: z.ZodObject<{
111
- setting: z.ZodString;
112
- equals: z.ZodOptional<z.ZodUnknown>;
113
- notEquals: z.ZodOptional<z.ZodUnknown>;
114
- }, "strip", z.ZodTypeAny, {
115
- setting: string;
116
- equals?: unknown;
117
- notEquals?: unknown;
118
- }, {
119
- setting: string;
110
+ export interface PluginSettingCondition {
111
+ /** Single setting key to compare. Preserves the original condition shape. */
112
+ setting?: string;
120
113
  equals?: unknown;
121
114
  notEquals?: unknown;
122
- }>;
123
- export type PluginSettingCondition = z.infer<typeof PluginSettingConditionSchema>;
115
+ /** All nested conditions must match. */
116
+ allOf?: PluginSettingCondition[];
117
+ /** At least one nested condition must match. */
118
+ anyOf?: PluginSettingCondition[];
119
+ }
120
+ export declare const PluginSettingConditionSchema: z.ZodType<PluginSettingCondition>;
124
121
  export declare const PluginSettingConditionalDescriptionSchema: z.ZodObject<{
125
- when: z.ZodObject<{
126
- setting: z.ZodString;
127
- equals: z.ZodOptional<z.ZodUnknown>;
128
- notEquals: z.ZodOptional<z.ZodUnknown>;
129
- }, "strip", z.ZodTypeAny, {
130
- setting: string;
131
- equals?: unknown;
132
- notEquals?: unknown;
133
- }, {
134
- setting: string;
135
- equals?: unknown;
136
- notEquals?: unknown;
137
- }>;
122
+ when: z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>;
138
123
  description: z.ZodString;
139
124
  }, "strip", z.ZodTypeAny, {
140
125
  description: string;
141
- when: {
142
- setting: string;
143
- equals?: unknown;
144
- notEquals?: unknown;
145
- };
126
+ when: PluginSettingCondition;
146
127
  }, {
147
128
  description: string;
148
- when: {
149
- setting: string;
150
- equals?: unknown;
151
- notEquals?: unknown;
152
- };
129
+ when: PluginSettingCondition;
153
130
  }>;
154
131
  export type PluginSettingConditionalDescription = z.infer<typeof PluginSettingConditionalDescriptionSchema>;
155
132
  /**
@@ -226,49 +203,17 @@ export declare const PluginSettingDescriptorSchema: z.ZodObject<{
226
203
  description?: string | undefined;
227
204
  }>, "many">>;
228
205
  /** Conditionally show the field based on another setting in the same form. */
229
- visibleWhen: z.ZodOptional<z.ZodObject<{
230
- setting: z.ZodString;
231
- equals: z.ZodOptional<z.ZodUnknown>;
232
- notEquals: z.ZodOptional<z.ZodUnknown>;
233
- }, "strip", z.ZodTypeAny, {
234
- setting: string;
235
- equals?: unknown;
236
- notEquals?: unknown;
237
- }, {
238
- setting: string;
239
- equals?: unknown;
240
- notEquals?: unknown;
241
- }>>;
206
+ visibleWhen: z.ZodOptional<z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>>;
242
207
  /** Conditionally override the field description based on another setting. */
243
208
  descriptionWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
244
- when: z.ZodObject<{
245
- setting: z.ZodString;
246
- equals: z.ZodOptional<z.ZodUnknown>;
247
- notEquals: z.ZodOptional<z.ZodUnknown>;
248
- }, "strip", z.ZodTypeAny, {
249
- setting: string;
250
- equals?: unknown;
251
- notEquals?: unknown;
252
- }, {
253
- setting: string;
254
- equals?: unknown;
255
- notEquals?: unknown;
256
- }>;
209
+ when: z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>;
257
210
  description: z.ZodString;
258
211
  }, "strip", z.ZodTypeAny, {
259
212
  description: string;
260
- when: {
261
- setting: string;
262
- equals?: unknown;
263
- notEquals?: unknown;
264
- };
213
+ when: PluginSettingCondition;
265
214
  }, {
266
215
  description: string;
267
- when: {
268
- setting: string;
269
- equals?: unknown;
270
- notEquals?: unknown;
271
- };
216
+ when: PluginSettingCondition;
272
217
  }>, "many">>;
273
218
  /** Internal settings are persisted/injected but hidden from generated UIs. */
274
219
  hidden: z.ZodOptional<z.ZodBoolean>;
@@ -299,18 +244,10 @@ export declare const PluginSettingDescriptorSchema: z.ZodObject<{
299
244
  placeholder?: string | undefined;
300
245
  required?: boolean | undefined;
301
246
  }[] | undefined;
302
- visibleWhen?: {
303
- setting: string;
304
- equals?: unknown;
305
- notEquals?: unknown;
306
- } | undefined;
247
+ visibleWhen?: PluginSettingCondition | undefined;
307
248
  descriptionWhen?: {
308
249
  description: string;
309
- when: {
310
- setting: string;
311
- equals?: unknown;
312
- notEquals?: unknown;
313
- };
250
+ when: PluginSettingCondition;
314
251
  }[] | undefined;
315
252
  hidden?: boolean | undefined;
316
253
  }, {
@@ -337,18 +274,10 @@ export declare const PluginSettingDescriptorSchema: z.ZodObject<{
337
274
  placeholder?: string | undefined;
338
275
  required?: boolean | undefined;
339
276
  }[] | undefined;
340
- visibleWhen?: {
341
- setting: string;
342
- equals?: unknown;
343
- notEquals?: unknown;
344
- } | undefined;
277
+ visibleWhen?: PluginSettingCondition | undefined;
345
278
  descriptionWhen?: {
346
279
  description: string;
347
- when: {
348
- setting: string;
349
- equals?: unknown;
350
- notEquals?: unknown;
351
- };
280
+ when: PluginSettingCondition;
352
281
  }[] | undefined;
353
282
  hidden?: boolean | undefined;
354
283
  scope?: "operator" | "global" | undefined;
@@ -421,7 +350,7 @@ export type PluginCapability = z.infer<typeof PluginCapabilitySchema>;
421
350
  * - `voice-left-top`: shown above the voice frequency control card.
422
351
  * - `voice-right-top`: shown in the tabbed top area of the voice right panel.
423
352
  */
424
- export declare const PluginPanelSlotSchema: z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>;
353
+ export declare const PluginPanelSlotSchema: z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>;
425
354
  /**
426
355
  * Rendering slot that determines where a panel appears in the UI.
427
356
  */
@@ -438,6 +367,22 @@ export declare const PluginPanelWidthSchema: z.ZodEnum<["half", "full"]>;
438
367
  * Preferred width hint for plugin-owned panels.
439
368
  */
440
369
  export type PluginPanelWidth = z.infer<typeof PluginPanelWidthSchema>;
370
+ /**
371
+ * How an iframe panel is opened when rendered as a toolbar entry.
372
+ */
373
+ export declare const PluginPanelOpenModeSchema: z.ZodEnum<["popover", "modal"]>;
374
+ /**
375
+ * How an iframe panel is opened when rendered as a toolbar entry.
376
+ */
377
+ export type PluginPanelOpenMode = z.infer<typeof PluginPanelOpenModeSchema>;
378
+ /**
379
+ * Controlled size hint for iframe panels rendered as popovers or modals.
380
+ */
381
+ export declare const PluginPanelUISizeSchema: z.ZodEnum<["sm", "md", "lg"]>;
382
+ /**
383
+ * Controlled size hint for iframe panels rendered as popovers or modals.
384
+ */
385
+ export type PluginPanelUISize = z.infer<typeof PluginPanelUISizeSchema>;
441
386
  /**
442
387
  * Declarative definition of a plugin-owned panel in the frontend.
443
388
  *
@@ -446,7 +391,7 @@ export type PluginPanelWidth = z.infer<typeof PluginPanelWidthSchema>;
446
391
  * the panel renders a custom UI page inside a sandboxed iframe instead. Static
447
392
  * manifest panels and runtime UI contributions use this same descriptor.
448
393
  */
449
- export declare const PluginPanelDescriptorSchema: z.ZodObject<{
394
+ export declare const PluginPanelDescriptorSchema: z.ZodEffects<z.ZodObject<{
450
395
  id: z.ZodString;
451
396
  title: z.ZodString;
452
397
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -455,25 +400,59 @@ export declare const PluginPanelDescriptorSchema: z.ZodObject<{
455
400
  /** Optional string params forwarded to iframe panels as URL/init params. */
456
401
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
457
402
  /** Where the panel renders. Defaults to `'operator'` (operator card live-panel area). */
458
- slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>>;
403
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
459
404
  /** Preferred width hint. Defaults to `'half'`. */
460
405
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
406
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
407
+ icon: z.ZodOptional<z.ZodString>;
408
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
409
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
410
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
411
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
461
412
  }, "strip", z.ZodTypeAny, {
462
413
  id: string;
463
414
  title: string;
464
415
  component: "table" | "key-value" | "chart" | "log" | "iframe";
465
416
  params?: Record<string, string> | undefined;
417
+ icon?: string | undefined;
418
+ pageId?: string | undefined;
419
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
420
+ width?: "full" | "half" | undefined;
421
+ openMode?: "popover" | "modal" | undefined;
422
+ uiSize?: "sm" | "md" | "lg" | undefined;
423
+ }, {
424
+ id: string;
425
+ title: string;
426
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
427
+ params?: Record<string, string> | undefined;
428
+ icon?: string | undefined;
429
+ pageId?: string | undefined;
430
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
431
+ width?: "full" | "half" | undefined;
432
+ openMode?: "popover" | "modal" | undefined;
433
+ uiSize?: "sm" | "md" | "lg" | undefined;
434
+ }>, {
435
+ id: string;
436
+ title: string;
437
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
438
+ params?: Record<string, string> | undefined;
439
+ icon?: string | undefined;
466
440
  pageId?: string | undefined;
467
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
441
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
468
442
  width?: "full" | "half" | undefined;
443
+ openMode?: "popover" | "modal" | undefined;
444
+ uiSize?: "sm" | "md" | "lg" | undefined;
469
445
  }, {
470
446
  id: string;
471
447
  title: string;
472
448
  component: "table" | "key-value" | "chart" | "log" | "iframe";
473
449
  params?: Record<string, string> | undefined;
450
+ icon?: string | undefined;
474
451
  pageId?: string | undefined;
475
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
452
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
476
453
  width?: "full" | "half" | undefined;
454
+ openMode?: "popover" | "modal" | undefined;
455
+ uiSize?: "sm" | "md" | "lg" | undefined;
477
456
  }>;
478
457
  /**
479
458
  * Declarative definition of a plugin-owned panel in the frontend.
@@ -524,7 +503,7 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
524
503
  operatorId: string;
525
504
  kind: "operator";
526
505
  }>]>>;
527
- panels: z.ZodArray<z.ZodObject<{
506
+ panels: z.ZodArray<z.ZodEffects<z.ZodObject<{
528
507
  id: z.ZodString;
529
508
  title: z.ZodString;
530
509
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -533,25 +512,59 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
533
512
  /** Optional string params forwarded to iframe panels as URL/init params. */
534
513
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
535
514
  /** Where the panel renders. Defaults to `'operator'` (operator card live-panel area). */
536
- slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>>;
515
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
537
516
  /** Preferred width hint. Defaults to `'half'`. */
538
517
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
518
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
519
+ icon: z.ZodOptional<z.ZodString>;
520
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
521
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
522
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
523
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
539
524
  }, "strip", z.ZodTypeAny, {
540
525
  id: string;
541
526
  title: string;
542
527
  component: "table" | "key-value" | "chart" | "log" | "iframe";
543
528
  params?: Record<string, string> | undefined;
529
+ icon?: string | undefined;
544
530
  pageId?: string | undefined;
545
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
531
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
546
532
  width?: "full" | "half" | undefined;
533
+ openMode?: "popover" | "modal" | undefined;
534
+ uiSize?: "sm" | "md" | "lg" | undefined;
547
535
  }, {
548
536
  id: string;
549
537
  title: string;
550
538
  component: "table" | "key-value" | "chart" | "log" | "iframe";
551
539
  params?: Record<string, string> | undefined;
540
+ icon?: string | undefined;
541
+ pageId?: string | undefined;
542
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
543
+ width?: "full" | "half" | undefined;
544
+ openMode?: "popover" | "modal" | undefined;
545
+ uiSize?: "sm" | "md" | "lg" | undefined;
546
+ }>, {
547
+ id: string;
548
+ title: string;
549
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
550
+ params?: Record<string, string> | undefined;
551
+ icon?: string | undefined;
552
552
  pageId?: string | undefined;
553
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
553
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
554
554
  width?: "full" | "half" | undefined;
555
+ openMode?: "popover" | "modal" | undefined;
556
+ uiSize?: "sm" | "md" | "lg" | undefined;
557
+ }, {
558
+ id: string;
559
+ title: string;
560
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
561
+ params?: Record<string, string> | undefined;
562
+ icon?: string | undefined;
563
+ pageId?: string | undefined;
564
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
565
+ width?: "full" | "half" | undefined;
566
+ openMode?: "popover" | "modal" | undefined;
567
+ uiSize?: "sm" | "md" | "lg" | undefined;
555
568
  }>, "many">;
556
569
  }, "strip", z.ZodTypeAny, {
557
570
  pluginName: string;
@@ -562,9 +575,12 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
562
575
  title: string;
563
576
  component: "table" | "key-value" | "chart" | "log" | "iframe";
564
577
  params?: Record<string, string> | undefined;
578
+ icon?: string | undefined;
565
579
  pageId?: string | undefined;
566
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
580
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
567
581
  width?: "full" | "half" | undefined;
582
+ openMode?: "popover" | "modal" | undefined;
583
+ uiSize?: "sm" | "md" | "lg" | undefined;
568
584
  }[];
569
585
  instanceTarget?: {
570
586
  kind: "global";
@@ -581,9 +597,12 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
581
597
  title: string;
582
598
  component: "table" | "key-value" | "chart" | "log" | "iframe";
583
599
  params?: Record<string, string> | undefined;
600
+ icon?: string | undefined;
584
601
  pageId?: string | undefined;
585
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
602
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
586
603
  width?: "full" | "half" | undefined;
604
+ openMode?: "popover" | "modal" | undefined;
605
+ uiSize?: "sm" | "md" | "lg" | undefined;
587
606
  }[];
588
607
  instanceTarget?: {
589
608
  kind: "global";
@@ -783,49 +802,17 @@ export declare const PluginManifestSchema: z.ZodObject<{
783
802
  description?: string | undefined;
784
803
  }>, "many">>;
785
804
  /** Conditionally show the field based on another setting in the same form. */
786
- visibleWhen: z.ZodOptional<z.ZodObject<{
787
- setting: z.ZodString;
788
- equals: z.ZodOptional<z.ZodUnknown>;
789
- notEquals: z.ZodOptional<z.ZodUnknown>;
790
- }, "strip", z.ZodTypeAny, {
791
- setting: string;
792
- equals?: unknown;
793
- notEquals?: unknown;
794
- }, {
795
- setting: string;
796
- equals?: unknown;
797
- notEquals?: unknown;
798
- }>>;
805
+ visibleWhen: z.ZodOptional<z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>>;
799
806
  /** Conditionally override the field description based on another setting. */
800
807
  descriptionWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
801
- when: z.ZodObject<{
802
- setting: z.ZodString;
803
- equals: z.ZodOptional<z.ZodUnknown>;
804
- notEquals: z.ZodOptional<z.ZodUnknown>;
805
- }, "strip", z.ZodTypeAny, {
806
- setting: string;
807
- equals?: unknown;
808
- notEquals?: unknown;
809
- }, {
810
- setting: string;
811
- equals?: unknown;
812
- notEquals?: unknown;
813
- }>;
808
+ when: z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>;
814
809
  description: z.ZodString;
815
810
  }, "strip", z.ZodTypeAny, {
816
811
  description: string;
817
- when: {
818
- setting: string;
819
- equals?: unknown;
820
- notEquals?: unknown;
821
- };
812
+ when: PluginSettingCondition;
822
813
  }, {
823
814
  description: string;
824
- when: {
825
- setting: string;
826
- equals?: unknown;
827
- notEquals?: unknown;
828
- };
815
+ when: PluginSettingCondition;
829
816
  }>, "many">>;
830
817
  /** Internal settings are persisted/injected but hidden from generated UIs. */
831
818
  hidden: z.ZodOptional<z.ZodBoolean>;
@@ -856,18 +843,10 @@ export declare const PluginManifestSchema: z.ZodObject<{
856
843
  placeholder?: string | undefined;
857
844
  required?: boolean | undefined;
858
845
  }[] | undefined;
859
- visibleWhen?: {
860
- setting: string;
861
- equals?: unknown;
862
- notEquals?: unknown;
863
- } | undefined;
846
+ visibleWhen?: PluginSettingCondition | undefined;
864
847
  descriptionWhen?: {
865
848
  description: string;
866
- when: {
867
- setting: string;
868
- equals?: unknown;
869
- notEquals?: unknown;
870
- };
849
+ when: PluginSettingCondition;
871
850
  }[] | undefined;
872
851
  hidden?: boolean | undefined;
873
852
  }, {
@@ -894,18 +873,10 @@ export declare const PluginManifestSchema: z.ZodObject<{
894
873
  placeholder?: string | undefined;
895
874
  required?: boolean | undefined;
896
875
  }[] | undefined;
897
- visibleWhen?: {
898
- setting: string;
899
- equals?: unknown;
900
- notEquals?: unknown;
901
- } | undefined;
876
+ visibleWhen?: PluginSettingCondition | undefined;
902
877
  descriptionWhen?: {
903
878
  description: string;
904
- when: {
905
- setting: string;
906
- equals?: unknown;
907
- notEquals?: unknown;
908
- };
879
+ when: PluginSettingCondition;
909
880
  }[] | undefined;
910
881
  hidden?: boolean | undefined;
911
882
  scope?: "operator" | "global" | undefined;
@@ -930,7 +901,7 @@ export declare const PluginManifestSchema: z.ZodObject<{
930
901
  }, {
931
902
  settingKey: string;
932
903
  }>, "many">>;
933
- panels: z.ZodOptional<z.ZodArray<z.ZodObject<{
904
+ panels: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
934
905
  id: z.ZodString;
935
906
  title: z.ZodString;
936
907
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -939,25 +910,59 @@ export declare const PluginManifestSchema: z.ZodObject<{
939
910
  /** Optional string params forwarded to iframe panels as URL/init params. */
940
911
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
941
912
  /** Where the panel renders. Defaults to `'operator'` (operator card live-panel area). */
942
- slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>>;
913
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
943
914
  /** Preferred width hint. Defaults to `'half'`. */
944
915
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
916
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
917
+ icon: z.ZodOptional<z.ZodString>;
918
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
919
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
920
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
921
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
945
922
  }, "strip", z.ZodTypeAny, {
946
923
  id: string;
947
924
  title: string;
948
925
  component: "table" | "key-value" | "chart" | "log" | "iframe";
949
926
  params?: Record<string, string> | undefined;
927
+ icon?: string | undefined;
928
+ pageId?: string | undefined;
929
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
930
+ width?: "full" | "half" | undefined;
931
+ openMode?: "popover" | "modal" | undefined;
932
+ uiSize?: "sm" | "md" | "lg" | undefined;
933
+ }, {
934
+ id: string;
935
+ title: string;
936
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
937
+ params?: Record<string, string> | undefined;
938
+ icon?: string | undefined;
939
+ pageId?: string | undefined;
940
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
941
+ width?: "full" | "half" | undefined;
942
+ openMode?: "popover" | "modal" | undefined;
943
+ uiSize?: "sm" | "md" | "lg" | undefined;
944
+ }>, {
945
+ id: string;
946
+ title: string;
947
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
948
+ params?: Record<string, string> | undefined;
949
+ icon?: string | undefined;
950
950
  pageId?: string | undefined;
951
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
951
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
952
952
  width?: "full" | "half" | undefined;
953
+ openMode?: "popover" | "modal" | undefined;
954
+ uiSize?: "sm" | "md" | "lg" | undefined;
953
955
  }, {
954
956
  id: string;
955
957
  title: string;
956
958
  component: "table" | "key-value" | "chart" | "log" | "iframe";
957
959
  params?: Record<string, string> | undefined;
960
+ icon?: string | undefined;
958
961
  pageId?: string | undefined;
959
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
962
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
960
963
  width?: "full" | "half" | undefined;
964
+ openMode?: "popover" | "modal" | undefined;
965
+ uiSize?: "sm" | "md" | "lg" | undefined;
961
966
  }>, "many">>;
962
967
  storage: z.ZodOptional<z.ZodObject<{
963
968
  scopes: z.ZodArray<z.ZodEnum<["global", "operator"]>, "many">;
@@ -1030,9 +1035,12 @@ export declare const PluginManifestSchema: z.ZodObject<{
1030
1035
  title: string;
1031
1036
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1032
1037
  params?: Record<string, string> | undefined;
1038
+ icon?: string | undefined;
1033
1039
  pageId?: string | undefined;
1034
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1040
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1035
1041
  width?: "full" | "half" | undefined;
1042
+ openMode?: "popover" | "modal" | undefined;
1043
+ uiSize?: "sm" | "md" | "lg" | undefined;
1036
1044
  }[] | undefined;
1037
1045
  ui?: {
1038
1046
  dir: string;
@@ -1071,18 +1079,10 @@ export declare const PluginManifestSchema: z.ZodObject<{
1071
1079
  placeholder?: string | undefined;
1072
1080
  required?: boolean | undefined;
1073
1081
  }[] | undefined;
1074
- visibleWhen?: {
1075
- setting: string;
1076
- equals?: unknown;
1077
- notEquals?: unknown;
1078
- } | undefined;
1082
+ visibleWhen?: PluginSettingCondition | undefined;
1079
1083
  descriptionWhen?: {
1080
1084
  description: string;
1081
- when: {
1082
- setting: string;
1083
- equals?: unknown;
1084
- notEquals?: unknown;
1085
- };
1085
+ when: PluginSettingCondition;
1086
1086
  }[] | undefined;
1087
1087
  hidden?: boolean | undefined;
1088
1088
  }> | undefined;
@@ -1107,9 +1107,12 @@ export declare const PluginManifestSchema: z.ZodObject<{
1107
1107
  title: string;
1108
1108
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1109
1109
  params?: Record<string, string> | undefined;
1110
+ icon?: string | undefined;
1110
1111
  pageId?: string | undefined;
1111
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1112
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1112
1113
  width?: "full" | "half" | undefined;
1114
+ openMode?: "popover" | "modal" | undefined;
1115
+ uiSize?: "sm" | "md" | "lg" | undefined;
1113
1116
  }[] | undefined;
1114
1117
  ui?: {
1115
1118
  dir?: string | undefined;
@@ -1148,18 +1151,10 @@ export declare const PluginManifestSchema: z.ZodObject<{
1148
1151
  placeholder?: string | undefined;
1149
1152
  required?: boolean | undefined;
1150
1153
  }[] | undefined;
1151
- visibleWhen?: {
1152
- setting: string;
1153
- equals?: unknown;
1154
- notEquals?: unknown;
1155
- } | undefined;
1154
+ visibleWhen?: PluginSettingCondition | undefined;
1156
1155
  descriptionWhen?: {
1157
1156
  description: string;
1158
- when: {
1159
- setting: string;
1160
- equals?: unknown;
1161
- notEquals?: unknown;
1162
- };
1157
+ when: PluginSettingCondition;
1163
1158
  }[] | undefined;
1164
1159
  hidden?: boolean | undefined;
1165
1160
  scope?: "operator" | "global" | undefined;
@@ -1283,49 +1278,17 @@ export declare const PluginStatusSchema: z.ZodObject<{
1283
1278
  description?: string | undefined;
1284
1279
  }>, "many">>;
1285
1280
  /** Conditionally show the field based on another setting in the same form. */
1286
- visibleWhen: z.ZodOptional<z.ZodObject<{
1287
- setting: z.ZodString;
1288
- equals: z.ZodOptional<z.ZodUnknown>;
1289
- notEquals: z.ZodOptional<z.ZodUnknown>;
1290
- }, "strip", z.ZodTypeAny, {
1291
- setting: string;
1292
- equals?: unknown;
1293
- notEquals?: unknown;
1294
- }, {
1295
- setting: string;
1296
- equals?: unknown;
1297
- notEquals?: unknown;
1298
- }>>;
1281
+ visibleWhen: z.ZodOptional<z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>>;
1299
1282
  /** Conditionally override the field description based on another setting. */
1300
1283
  descriptionWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
1301
- when: z.ZodObject<{
1302
- setting: z.ZodString;
1303
- equals: z.ZodOptional<z.ZodUnknown>;
1304
- notEquals: z.ZodOptional<z.ZodUnknown>;
1305
- }, "strip", z.ZodTypeAny, {
1306
- setting: string;
1307
- equals?: unknown;
1308
- notEquals?: unknown;
1309
- }, {
1310
- setting: string;
1311
- equals?: unknown;
1312
- notEquals?: unknown;
1313
- }>;
1284
+ when: z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>;
1314
1285
  description: z.ZodString;
1315
1286
  }, "strip", z.ZodTypeAny, {
1316
1287
  description: string;
1317
- when: {
1318
- setting: string;
1319
- equals?: unknown;
1320
- notEquals?: unknown;
1321
- };
1288
+ when: PluginSettingCondition;
1322
1289
  }, {
1323
1290
  description: string;
1324
- when: {
1325
- setting: string;
1326
- equals?: unknown;
1327
- notEquals?: unknown;
1328
- };
1291
+ when: PluginSettingCondition;
1329
1292
  }>, "many">>;
1330
1293
  /** Internal settings are persisted/injected but hidden from generated UIs. */
1331
1294
  hidden: z.ZodOptional<z.ZodBoolean>;
@@ -1356,18 +1319,10 @@ export declare const PluginStatusSchema: z.ZodObject<{
1356
1319
  placeholder?: string | undefined;
1357
1320
  required?: boolean | undefined;
1358
1321
  }[] | undefined;
1359
- visibleWhen?: {
1360
- setting: string;
1361
- equals?: unknown;
1362
- notEquals?: unknown;
1363
- } | undefined;
1322
+ visibleWhen?: PluginSettingCondition | undefined;
1364
1323
  descriptionWhen?: {
1365
1324
  description: string;
1366
- when: {
1367
- setting: string;
1368
- equals?: unknown;
1369
- notEquals?: unknown;
1370
- };
1325
+ when: PluginSettingCondition;
1371
1326
  }[] | undefined;
1372
1327
  hidden?: boolean | undefined;
1373
1328
  }, {
@@ -1394,18 +1349,10 @@ export declare const PluginStatusSchema: z.ZodObject<{
1394
1349
  placeholder?: string | undefined;
1395
1350
  required?: boolean | undefined;
1396
1351
  }[] | undefined;
1397
- visibleWhen?: {
1398
- setting: string;
1399
- equals?: unknown;
1400
- notEquals?: unknown;
1401
- } | undefined;
1352
+ visibleWhen?: PluginSettingCondition | undefined;
1402
1353
  descriptionWhen?: {
1403
1354
  description: string;
1404
- when: {
1405
- setting: string;
1406
- equals?: unknown;
1407
- notEquals?: unknown;
1408
- };
1355
+ when: PluginSettingCondition;
1409
1356
  }[] | undefined;
1410
1357
  hidden?: boolean | undefined;
1411
1358
  scope?: "operator" | "global" | undefined;
@@ -1430,7 +1377,7 @@ export declare const PluginStatusSchema: z.ZodObject<{
1430
1377
  }, {
1431
1378
  settingKey: string;
1432
1379
  }>, "many">>;
1433
- panels: z.ZodOptional<z.ZodArray<z.ZodObject<{
1380
+ panels: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
1434
1381
  id: z.ZodString;
1435
1382
  title: z.ZodString;
1436
1383
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -1439,25 +1386,59 @@ export declare const PluginStatusSchema: z.ZodObject<{
1439
1386
  /** Optional string params forwarded to iframe panels as URL/init params. */
1440
1387
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1441
1388
  /** Where the panel renders. Defaults to `'operator'` (operator card live-panel area). */
1442
- slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>>;
1389
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
1443
1390
  /** Preferred width hint. Defaults to `'half'`. */
1444
1391
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
1392
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
1393
+ icon: z.ZodOptional<z.ZodString>;
1394
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
1395
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
1396
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
1397
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
1445
1398
  }, "strip", z.ZodTypeAny, {
1446
1399
  id: string;
1447
1400
  title: string;
1448
1401
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1449
1402
  params?: Record<string, string> | undefined;
1403
+ icon?: string | undefined;
1450
1404
  pageId?: string | undefined;
1451
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1405
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1452
1406
  width?: "full" | "half" | undefined;
1407
+ openMode?: "popover" | "modal" | undefined;
1408
+ uiSize?: "sm" | "md" | "lg" | undefined;
1453
1409
  }, {
1454
1410
  id: string;
1455
1411
  title: string;
1456
1412
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1457
1413
  params?: Record<string, string> | undefined;
1414
+ icon?: string | undefined;
1458
1415
  pageId?: string | undefined;
1459
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1416
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1460
1417
  width?: "full" | "half" | undefined;
1418
+ openMode?: "popover" | "modal" | undefined;
1419
+ uiSize?: "sm" | "md" | "lg" | undefined;
1420
+ }>, {
1421
+ id: string;
1422
+ title: string;
1423
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1424
+ params?: Record<string, string> | undefined;
1425
+ icon?: string | undefined;
1426
+ pageId?: string | undefined;
1427
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1428
+ width?: "full" | "half" | undefined;
1429
+ openMode?: "popover" | "modal" | undefined;
1430
+ uiSize?: "sm" | "md" | "lg" | undefined;
1431
+ }, {
1432
+ id: string;
1433
+ title: string;
1434
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1435
+ params?: Record<string, string> | undefined;
1436
+ icon?: string | undefined;
1437
+ pageId?: string | undefined;
1438
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1439
+ width?: "full" | "half" | undefined;
1440
+ openMode?: "popover" | "modal" | undefined;
1441
+ uiSize?: "sm" | "md" | "lg" | undefined;
1461
1442
  }>, "many">>;
1462
1443
  permissions: z.ZodOptional<z.ZodArray<z.ZodEnum<["network", "radio:read", "radio:control", "radio:power", "settings:ft8", "settings:decode-windows", "settings:realtime", "settings:frequency-presets", "settings:station", "settings:psk-reporter", "settings:ntp"]>, "many">>;
1463
1444
  capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["auto_call_candidate", "auto_call_execution"]>, "many">>;
@@ -1561,9 +1542,12 @@ export declare const PluginStatusSchema: z.ZodObject<{
1561
1542
  title: string;
1562
1543
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1563
1544
  params?: Record<string, string> | undefined;
1545
+ icon?: string | undefined;
1564
1546
  pageId?: string | undefined;
1565
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1547
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1566
1548
  width?: "full" | "half" | undefined;
1549
+ openMode?: "popover" | "modal" | undefined;
1550
+ uiSize?: "sm" | "md" | "lg" | undefined;
1567
1551
  }[] | undefined;
1568
1552
  ui?: {
1569
1553
  dir: string;
@@ -1602,18 +1586,10 @@ export declare const PluginStatusSchema: z.ZodObject<{
1602
1586
  placeholder?: string | undefined;
1603
1587
  required?: boolean | undefined;
1604
1588
  }[] | undefined;
1605
- visibleWhen?: {
1606
- setting: string;
1607
- equals?: unknown;
1608
- notEquals?: unknown;
1609
- } | undefined;
1589
+ visibleWhen?: PluginSettingCondition | undefined;
1610
1590
  descriptionWhen?: {
1611
1591
  description: string;
1612
- when: {
1613
- setting: string;
1614
- equals?: unknown;
1615
- notEquals?: unknown;
1616
- };
1592
+ when: PluginSettingCondition;
1617
1593
  }[] | undefined;
1618
1594
  hidden?: boolean | undefined;
1619
1595
  }> | undefined;
@@ -1650,9 +1626,12 @@ export declare const PluginStatusSchema: z.ZodObject<{
1650
1626
  title: string;
1651
1627
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1652
1628
  params?: Record<string, string> | undefined;
1629
+ icon?: string | undefined;
1653
1630
  pageId?: string | undefined;
1654
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1631
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1655
1632
  width?: "full" | "half" | undefined;
1633
+ openMode?: "popover" | "modal" | undefined;
1634
+ uiSize?: "sm" | "md" | "lg" | undefined;
1656
1635
  }[] | undefined;
1657
1636
  ui?: {
1658
1637
  dir?: string | undefined;
@@ -1691,18 +1670,10 @@ export declare const PluginStatusSchema: z.ZodObject<{
1691
1670
  placeholder?: string | undefined;
1692
1671
  required?: boolean | undefined;
1693
1672
  }[] | undefined;
1694
- visibleWhen?: {
1695
- setting: string;
1696
- equals?: unknown;
1697
- notEquals?: unknown;
1698
- } | undefined;
1673
+ visibleWhen?: PluginSettingCondition | undefined;
1699
1674
  descriptionWhen?: {
1700
1675
  description: string;
1701
- when: {
1702
- setting: string;
1703
- equals?: unknown;
1704
- notEquals?: unknown;
1705
- };
1676
+ when: PluginSettingCondition;
1706
1677
  }[] | undefined;
1707
1678
  hidden?: boolean | undefined;
1708
1679
  scope?: "operator" | "global" | undefined;
@@ -1858,49 +1829,17 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
1858
1829
  description?: string | undefined;
1859
1830
  }>, "many">>;
1860
1831
  /** Conditionally show the field based on another setting in the same form. */
1861
- visibleWhen: z.ZodOptional<z.ZodObject<{
1862
- setting: z.ZodString;
1863
- equals: z.ZodOptional<z.ZodUnknown>;
1864
- notEquals: z.ZodOptional<z.ZodUnknown>;
1865
- }, "strip", z.ZodTypeAny, {
1866
- setting: string;
1867
- equals?: unknown;
1868
- notEquals?: unknown;
1869
- }, {
1870
- setting: string;
1871
- equals?: unknown;
1872
- notEquals?: unknown;
1873
- }>>;
1832
+ visibleWhen: z.ZodOptional<z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>>;
1874
1833
  /** Conditionally override the field description based on another setting. */
1875
1834
  descriptionWhen: z.ZodOptional<z.ZodArray<z.ZodObject<{
1876
- when: z.ZodObject<{
1877
- setting: z.ZodString;
1878
- equals: z.ZodOptional<z.ZodUnknown>;
1879
- notEquals: z.ZodOptional<z.ZodUnknown>;
1880
- }, "strip", z.ZodTypeAny, {
1881
- setting: string;
1882
- equals?: unknown;
1883
- notEquals?: unknown;
1884
- }, {
1885
- setting: string;
1886
- equals?: unknown;
1887
- notEquals?: unknown;
1888
- }>;
1835
+ when: z.ZodType<PluginSettingCondition, z.ZodTypeDef, PluginSettingCondition>;
1889
1836
  description: z.ZodString;
1890
1837
  }, "strip", z.ZodTypeAny, {
1891
1838
  description: string;
1892
- when: {
1893
- setting: string;
1894
- equals?: unknown;
1895
- notEquals?: unknown;
1896
- };
1839
+ when: PluginSettingCondition;
1897
1840
  }, {
1898
1841
  description: string;
1899
- when: {
1900
- setting: string;
1901
- equals?: unknown;
1902
- notEquals?: unknown;
1903
- };
1842
+ when: PluginSettingCondition;
1904
1843
  }>, "many">>;
1905
1844
  /** Internal settings are persisted/injected but hidden from generated UIs. */
1906
1845
  hidden: z.ZodOptional<z.ZodBoolean>;
@@ -1931,18 +1870,10 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
1931
1870
  placeholder?: string | undefined;
1932
1871
  required?: boolean | undefined;
1933
1872
  }[] | undefined;
1934
- visibleWhen?: {
1935
- setting: string;
1936
- equals?: unknown;
1937
- notEquals?: unknown;
1938
- } | undefined;
1873
+ visibleWhen?: PluginSettingCondition | undefined;
1939
1874
  descriptionWhen?: {
1940
1875
  description: string;
1941
- when: {
1942
- setting: string;
1943
- equals?: unknown;
1944
- notEquals?: unknown;
1945
- };
1876
+ when: PluginSettingCondition;
1946
1877
  }[] | undefined;
1947
1878
  hidden?: boolean | undefined;
1948
1879
  }, {
@@ -1969,18 +1900,10 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
1969
1900
  placeholder?: string | undefined;
1970
1901
  required?: boolean | undefined;
1971
1902
  }[] | undefined;
1972
- visibleWhen?: {
1973
- setting: string;
1974
- equals?: unknown;
1975
- notEquals?: unknown;
1976
- } | undefined;
1903
+ visibleWhen?: PluginSettingCondition | undefined;
1977
1904
  descriptionWhen?: {
1978
1905
  description: string;
1979
- when: {
1980
- setting: string;
1981
- equals?: unknown;
1982
- notEquals?: unknown;
1983
- };
1906
+ when: PluginSettingCondition;
1984
1907
  }[] | undefined;
1985
1908
  hidden?: boolean | undefined;
1986
1909
  scope?: "operator" | "global" | undefined;
@@ -2005,7 +1928,7 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2005
1928
  }, {
2006
1929
  settingKey: string;
2007
1930
  }>, "many">>;
2008
- panels: z.ZodOptional<z.ZodArray<z.ZodObject<{
1931
+ panels: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
2009
1932
  id: z.ZodString;
2010
1933
  title: z.ZodString;
2011
1934
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -2014,25 +1937,59 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2014
1937
  /** Optional string params forwarded to iframe panels as URL/init params. */
2015
1938
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2016
1939
  /** Where the panel renders. Defaults to `'operator'` (operator card live-panel area). */
2017
- slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>>;
1940
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
2018
1941
  /** Preferred width hint. Defaults to `'half'`. */
2019
1942
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
1943
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
1944
+ icon: z.ZodOptional<z.ZodString>;
1945
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
1946
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
1947
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
1948
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
2020
1949
  }, "strip", z.ZodTypeAny, {
2021
1950
  id: string;
2022
1951
  title: string;
2023
1952
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2024
1953
  params?: Record<string, string> | undefined;
1954
+ icon?: string | undefined;
1955
+ pageId?: string | undefined;
1956
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1957
+ width?: "full" | "half" | undefined;
1958
+ openMode?: "popover" | "modal" | undefined;
1959
+ uiSize?: "sm" | "md" | "lg" | undefined;
1960
+ }, {
1961
+ id: string;
1962
+ title: string;
1963
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1964
+ params?: Record<string, string> | undefined;
1965
+ icon?: string | undefined;
1966
+ pageId?: string | undefined;
1967
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1968
+ width?: "full" | "half" | undefined;
1969
+ openMode?: "popover" | "modal" | undefined;
1970
+ uiSize?: "sm" | "md" | "lg" | undefined;
1971
+ }>, {
1972
+ id: string;
1973
+ title: string;
1974
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1975
+ params?: Record<string, string> | undefined;
1976
+ icon?: string | undefined;
2025
1977
  pageId?: string | undefined;
2026
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1978
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2027
1979
  width?: "full" | "half" | undefined;
1980
+ openMode?: "popover" | "modal" | undefined;
1981
+ uiSize?: "sm" | "md" | "lg" | undefined;
2028
1982
  }, {
2029
1983
  id: string;
2030
1984
  title: string;
2031
1985
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2032
1986
  params?: Record<string, string> | undefined;
1987
+ icon?: string | undefined;
2033
1988
  pageId?: string | undefined;
2034
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1989
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2035
1990
  width?: "full" | "half" | undefined;
1991
+ openMode?: "popover" | "modal" | undefined;
1992
+ uiSize?: "sm" | "md" | "lg" | undefined;
2036
1993
  }>, "many">>;
2037
1994
  permissions: z.ZodOptional<z.ZodArray<z.ZodEnum<["network", "radio:read", "radio:control", "radio:power", "settings:ft8", "settings:decode-windows", "settings:realtime", "settings:frequency-presets", "settings:station", "settings:psk-reporter", "settings:ntp"]>, "many">>;
2038
1995
  capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["auto_call_candidate", "auto_call_execution"]>, "many">>;
@@ -2136,9 +2093,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2136
2093
  title: string;
2137
2094
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2138
2095
  params?: Record<string, string> | undefined;
2096
+ icon?: string | undefined;
2139
2097
  pageId?: string | undefined;
2140
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2098
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2141
2099
  width?: "full" | "half" | undefined;
2100
+ openMode?: "popover" | "modal" | undefined;
2101
+ uiSize?: "sm" | "md" | "lg" | undefined;
2142
2102
  }[] | undefined;
2143
2103
  ui?: {
2144
2104
  dir: string;
@@ -2177,18 +2137,10 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2177
2137
  placeholder?: string | undefined;
2178
2138
  required?: boolean | undefined;
2179
2139
  }[] | undefined;
2180
- visibleWhen?: {
2181
- setting: string;
2182
- equals?: unknown;
2183
- notEquals?: unknown;
2184
- } | undefined;
2140
+ visibleWhen?: PluginSettingCondition | undefined;
2185
2141
  descriptionWhen?: {
2186
2142
  description: string;
2187
- when: {
2188
- setting: string;
2189
- equals?: unknown;
2190
- notEquals?: unknown;
2191
- };
2143
+ when: PluginSettingCondition;
2192
2144
  }[] | undefined;
2193
2145
  hidden?: boolean | undefined;
2194
2146
  }> | undefined;
@@ -2225,9 +2177,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2225
2177
  title: string;
2226
2178
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2227
2179
  params?: Record<string, string> | undefined;
2180
+ icon?: string | undefined;
2228
2181
  pageId?: string | undefined;
2229
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2182
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2230
2183
  width?: "full" | "half" | undefined;
2184
+ openMode?: "popover" | "modal" | undefined;
2185
+ uiSize?: "sm" | "md" | "lg" | undefined;
2231
2186
  }[] | undefined;
2232
2187
  ui?: {
2233
2188
  dir?: string | undefined;
@@ -2266,18 +2221,10 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2266
2221
  placeholder?: string | undefined;
2267
2222
  required?: boolean | undefined;
2268
2223
  }[] | undefined;
2269
- visibleWhen?: {
2270
- setting: string;
2271
- equals?: unknown;
2272
- notEquals?: unknown;
2273
- } | undefined;
2224
+ visibleWhen?: PluginSettingCondition | undefined;
2274
2225
  descriptionWhen?: {
2275
2226
  description: string;
2276
- when: {
2277
- setting: string;
2278
- equals?: unknown;
2279
- notEquals?: unknown;
2280
- };
2227
+ when: PluginSettingCondition;
2281
2228
  }[] | undefined;
2282
2229
  hidden?: boolean | undefined;
2283
2230
  scope?: "operator" | "global" | undefined;
@@ -2353,7 +2300,7 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2353
2300
  operatorId: string;
2354
2301
  kind: "operator";
2355
2302
  }>]>>;
2356
- panels: z.ZodArray<z.ZodObject<{
2303
+ panels: z.ZodArray<z.ZodEffects<z.ZodObject<{
2357
2304
  id: z.ZodString;
2358
2305
  title: z.ZodString;
2359
2306
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -2362,25 +2309,59 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2362
2309
  /** Optional string params forwarded to iframe panels as URL/init params. */
2363
2310
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2364
2311
  /** Where the panel renders. Defaults to `'operator'` (operator card live-panel area). */
2365
- slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>>;
2312
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
2366
2313
  /** Preferred width hint. Defaults to `'half'`. */
2367
2314
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
2315
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
2316
+ icon: z.ZodOptional<z.ZodString>;
2317
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
2318
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
2319
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
2320
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
2368
2321
  }, "strip", z.ZodTypeAny, {
2369
2322
  id: string;
2370
2323
  title: string;
2371
2324
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2372
2325
  params?: Record<string, string> | undefined;
2326
+ icon?: string | undefined;
2373
2327
  pageId?: string | undefined;
2374
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2328
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2375
2329
  width?: "full" | "half" | undefined;
2330
+ openMode?: "popover" | "modal" | undefined;
2331
+ uiSize?: "sm" | "md" | "lg" | undefined;
2376
2332
  }, {
2377
2333
  id: string;
2378
2334
  title: string;
2379
2335
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2380
2336
  params?: Record<string, string> | undefined;
2337
+ icon?: string | undefined;
2381
2338
  pageId?: string | undefined;
2382
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2339
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2383
2340
  width?: "full" | "half" | undefined;
2341
+ openMode?: "popover" | "modal" | undefined;
2342
+ uiSize?: "sm" | "md" | "lg" | undefined;
2343
+ }>, {
2344
+ id: string;
2345
+ title: string;
2346
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
2347
+ params?: Record<string, string> | undefined;
2348
+ icon?: string | undefined;
2349
+ pageId?: string | undefined;
2350
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2351
+ width?: "full" | "half" | undefined;
2352
+ openMode?: "popover" | "modal" | undefined;
2353
+ uiSize?: "sm" | "md" | "lg" | undefined;
2354
+ }, {
2355
+ id: string;
2356
+ title: string;
2357
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
2358
+ params?: Record<string, string> | undefined;
2359
+ icon?: string | undefined;
2360
+ pageId?: string | undefined;
2361
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2362
+ width?: "full" | "half" | undefined;
2363
+ openMode?: "popover" | "modal" | undefined;
2364
+ uiSize?: "sm" | "md" | "lg" | undefined;
2384
2365
  }>, "many">;
2385
2366
  }, "strip", z.ZodTypeAny, {
2386
2367
  pluginName: string;
@@ -2391,9 +2372,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2391
2372
  title: string;
2392
2373
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2393
2374
  params?: Record<string, string> | undefined;
2375
+ icon?: string | undefined;
2394
2376
  pageId?: string | undefined;
2395
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2377
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2396
2378
  width?: "full" | "half" | undefined;
2379
+ openMode?: "popover" | "modal" | undefined;
2380
+ uiSize?: "sm" | "md" | "lg" | undefined;
2397
2381
  }[];
2398
2382
  instanceTarget?: {
2399
2383
  kind: "global";
@@ -2410,9 +2394,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2410
2394
  title: string;
2411
2395
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2412
2396
  params?: Record<string, string> | undefined;
2397
+ icon?: string | undefined;
2413
2398
  pageId?: string | undefined;
2414
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2399
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2415
2400
  width?: "full" | "half" | undefined;
2401
+ openMode?: "popover" | "modal" | undefined;
2402
+ uiSize?: "sm" | "md" | "lg" | undefined;
2416
2403
  }[];
2417
2404
  instanceTarget?: {
2418
2405
  kind: "global";
@@ -2449,9 +2436,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2449
2436
  title: string;
2450
2437
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2451
2438
  params?: Record<string, string> | undefined;
2439
+ icon?: string | undefined;
2452
2440
  pageId?: string | undefined;
2453
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2441
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2454
2442
  width?: "full" | "half" | undefined;
2443
+ openMode?: "popover" | "modal" | undefined;
2444
+ uiSize?: "sm" | "md" | "lg" | undefined;
2455
2445
  }[] | undefined;
2456
2446
  ui?: {
2457
2447
  dir: string;
@@ -2490,18 +2480,10 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2490
2480
  placeholder?: string | undefined;
2491
2481
  required?: boolean | undefined;
2492
2482
  }[] | undefined;
2493
- visibleWhen?: {
2494
- setting: string;
2495
- equals?: unknown;
2496
- notEquals?: unknown;
2497
- } | undefined;
2483
+ visibleWhen?: PluginSettingCondition | undefined;
2498
2484
  descriptionWhen?: {
2499
2485
  description: string;
2500
- when: {
2501
- setting: string;
2502
- equals?: unknown;
2503
- notEquals?: unknown;
2504
- };
2486
+ when: PluginSettingCondition;
2505
2487
  }[] | undefined;
2506
2488
  hidden?: boolean | undefined;
2507
2489
  }> | undefined;
@@ -2537,9 +2519,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2537
2519
  title: string;
2538
2520
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2539
2521
  params?: Record<string, string> | undefined;
2522
+ icon?: string | undefined;
2540
2523
  pageId?: string | undefined;
2541
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2524
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2542
2525
  width?: "full" | "half" | undefined;
2526
+ openMode?: "popover" | "modal" | undefined;
2527
+ uiSize?: "sm" | "md" | "lg" | undefined;
2543
2528
  }[];
2544
2529
  instanceTarget?: {
2545
2530
  kind: "global";
@@ -2573,9 +2558,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2573
2558
  title: string;
2574
2559
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2575
2560
  params?: Record<string, string> | undefined;
2561
+ icon?: string | undefined;
2576
2562
  pageId?: string | undefined;
2577
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2563
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2578
2564
  width?: "full" | "half" | undefined;
2565
+ openMode?: "popover" | "modal" | undefined;
2566
+ uiSize?: "sm" | "md" | "lg" | undefined;
2579
2567
  }[] | undefined;
2580
2568
  ui?: {
2581
2569
  dir?: string | undefined;
@@ -2614,18 +2602,10 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2614
2602
  placeholder?: string | undefined;
2615
2603
  required?: boolean | undefined;
2616
2604
  }[] | undefined;
2617
- visibleWhen?: {
2618
- setting: string;
2619
- equals?: unknown;
2620
- notEquals?: unknown;
2621
- } | undefined;
2605
+ visibleWhen?: PluginSettingCondition | undefined;
2622
2606
  descriptionWhen?: {
2623
2607
  description: string;
2624
- when: {
2625
- setting: string;
2626
- equals?: unknown;
2627
- notEquals?: unknown;
2628
- };
2608
+ when: PluginSettingCondition;
2629
2609
  }[] | undefined;
2630
2610
  hidden?: boolean | undefined;
2631
2611
  scope?: "operator" | "global" | undefined;
@@ -2665,9 +2645,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2665
2645
  title: string;
2666
2646
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2667
2647
  params?: Record<string, string> | undefined;
2648
+ icon?: string | undefined;
2668
2649
  pageId?: string | undefined;
2669
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2650
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2670
2651
  width?: "full" | "half" | undefined;
2652
+ openMode?: "popover" | "modal" | undefined;
2653
+ uiSize?: "sm" | "md" | "lg" | undefined;
2671
2654
  }[];
2672
2655
  instanceTarget?: {
2673
2656
  kind: "global";