@tx5dr/contracts 1.7.4 → 1.7.5

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.
@@ -421,7 +421,7 @@ export type PluginCapability = z.infer<typeof PluginCapabilitySchema>;
421
421
  * - `voice-left-top`: shown above the voice frequency control card.
422
422
  * - `voice-right-top`: shown in the tabbed top area of the voice right panel.
423
423
  */
424
- export declare const PluginPanelSlotSchema: z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top"]>;
424
+ export declare const PluginPanelSlotSchema: z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>;
425
425
  /**
426
426
  * Rendering slot that determines where a panel appears in the UI.
427
427
  */
@@ -438,6 +438,22 @@ export declare const PluginPanelWidthSchema: z.ZodEnum<["half", "full"]>;
438
438
  * Preferred width hint for plugin-owned panels.
439
439
  */
440
440
  export type PluginPanelWidth = z.infer<typeof PluginPanelWidthSchema>;
441
+ /**
442
+ * How an iframe panel is opened when rendered as a toolbar entry.
443
+ */
444
+ export declare const PluginPanelOpenModeSchema: z.ZodEnum<["popover", "modal"]>;
445
+ /**
446
+ * How an iframe panel is opened when rendered as a toolbar entry.
447
+ */
448
+ export type PluginPanelOpenMode = z.infer<typeof PluginPanelOpenModeSchema>;
449
+ /**
450
+ * Controlled size hint for iframe panels rendered as popovers or modals.
451
+ */
452
+ export declare const PluginPanelUISizeSchema: z.ZodEnum<["sm", "md", "lg"]>;
453
+ /**
454
+ * Controlled size hint for iframe panels rendered as popovers or modals.
455
+ */
456
+ export type PluginPanelUISize = z.infer<typeof PluginPanelUISizeSchema>;
441
457
  /**
442
458
  * Declarative definition of a plugin-owned panel in the frontend.
443
459
  *
@@ -446,7 +462,7 @@ export type PluginPanelWidth = z.infer<typeof PluginPanelWidthSchema>;
446
462
  * the panel renders a custom UI page inside a sandboxed iframe instead. Static
447
463
  * manifest panels and runtime UI contributions use this same descriptor.
448
464
  */
449
- export declare const PluginPanelDescriptorSchema: z.ZodObject<{
465
+ export declare const PluginPanelDescriptorSchema: z.ZodEffects<z.ZodObject<{
450
466
  id: z.ZodString;
451
467
  title: z.ZodString;
452
468
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -455,25 +471,59 @@ export declare const PluginPanelDescriptorSchema: z.ZodObject<{
455
471
  /** Optional string params forwarded to iframe panels as URL/init params. */
456
472
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
457
473
  /** 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"]>>;
474
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
459
475
  /** Preferred width hint. Defaults to `'half'`. */
460
476
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
477
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
478
+ icon: z.ZodOptional<z.ZodString>;
479
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
480
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
481
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
482
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
461
483
  }, "strip", z.ZodTypeAny, {
462
484
  id: string;
463
485
  title: string;
464
486
  component: "table" | "key-value" | "chart" | "log" | "iframe";
465
487
  params?: Record<string, string> | undefined;
488
+ icon?: string | undefined;
466
489
  pageId?: string | undefined;
467
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
490
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
468
491
  width?: "full" | "half" | undefined;
492
+ openMode?: "popover" | "modal" | undefined;
493
+ uiSize?: "sm" | "md" | "lg" | undefined;
469
494
  }, {
470
495
  id: string;
471
496
  title: string;
472
497
  component: "table" | "key-value" | "chart" | "log" | "iframe";
473
498
  params?: Record<string, string> | undefined;
499
+ icon?: string | undefined;
474
500
  pageId?: string | undefined;
475
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
501
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
476
502
  width?: "full" | "half" | undefined;
503
+ openMode?: "popover" | "modal" | undefined;
504
+ uiSize?: "sm" | "md" | "lg" | undefined;
505
+ }>, {
506
+ id: string;
507
+ title: string;
508
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
509
+ params?: Record<string, string> | undefined;
510
+ icon?: string | undefined;
511
+ pageId?: string | undefined;
512
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
513
+ width?: "full" | "half" | undefined;
514
+ openMode?: "popover" | "modal" | undefined;
515
+ uiSize?: "sm" | "md" | "lg" | undefined;
516
+ }, {
517
+ id: string;
518
+ title: string;
519
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
520
+ params?: Record<string, string> | undefined;
521
+ icon?: string | undefined;
522
+ pageId?: string | undefined;
523
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
524
+ width?: "full" | "half" | undefined;
525
+ openMode?: "popover" | "modal" | undefined;
526
+ uiSize?: "sm" | "md" | "lg" | undefined;
477
527
  }>;
478
528
  /**
479
529
  * Declarative definition of a plugin-owned panel in the frontend.
@@ -524,7 +574,7 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
524
574
  operatorId: string;
525
575
  kind: "operator";
526
576
  }>]>>;
527
- panels: z.ZodArray<z.ZodObject<{
577
+ panels: z.ZodArray<z.ZodEffects<z.ZodObject<{
528
578
  id: z.ZodString;
529
579
  title: z.ZodString;
530
580
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -533,25 +583,59 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
533
583
  /** Optional string params forwarded to iframe panels as URL/init params. */
534
584
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
535
585
  /** 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"]>>;
586
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
537
587
  /** Preferred width hint. Defaults to `'half'`. */
538
588
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
589
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
590
+ icon: z.ZodOptional<z.ZodString>;
591
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
592
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
593
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
594
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
539
595
  }, "strip", z.ZodTypeAny, {
540
596
  id: string;
541
597
  title: string;
542
598
  component: "table" | "key-value" | "chart" | "log" | "iframe";
543
599
  params?: Record<string, string> | undefined;
600
+ icon?: string | undefined;
544
601
  pageId?: string | undefined;
545
- 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;
546
603
  width?: "full" | "half" | undefined;
604
+ openMode?: "popover" | "modal" | undefined;
605
+ uiSize?: "sm" | "md" | "lg" | undefined;
547
606
  }, {
548
607
  id: string;
549
608
  title: string;
550
609
  component: "table" | "key-value" | "chart" | "log" | "iframe";
551
610
  params?: Record<string, string> | undefined;
611
+ icon?: string | undefined;
552
612
  pageId?: string | undefined;
553
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
613
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
554
614
  width?: "full" | "half" | undefined;
615
+ openMode?: "popover" | "modal" | undefined;
616
+ uiSize?: "sm" | "md" | "lg" | undefined;
617
+ }>, {
618
+ id: string;
619
+ title: string;
620
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
621
+ params?: Record<string, string> | undefined;
622
+ icon?: string | undefined;
623
+ pageId?: string | undefined;
624
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
625
+ width?: "full" | "half" | undefined;
626
+ openMode?: "popover" | "modal" | undefined;
627
+ uiSize?: "sm" | "md" | "lg" | undefined;
628
+ }, {
629
+ id: string;
630
+ title: string;
631
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
632
+ params?: Record<string, string> | undefined;
633
+ icon?: string | undefined;
634
+ pageId?: string | undefined;
635
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
636
+ width?: "full" | "half" | undefined;
637
+ openMode?: "popover" | "modal" | undefined;
638
+ uiSize?: "sm" | "md" | "lg" | undefined;
555
639
  }>, "many">;
556
640
  }, "strip", z.ZodTypeAny, {
557
641
  pluginName: string;
@@ -562,9 +646,12 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
562
646
  title: string;
563
647
  component: "table" | "key-value" | "chart" | "log" | "iframe";
564
648
  params?: Record<string, string> | undefined;
649
+ icon?: string | undefined;
565
650
  pageId?: string | undefined;
566
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
651
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
567
652
  width?: "full" | "half" | undefined;
653
+ openMode?: "popover" | "modal" | undefined;
654
+ uiSize?: "sm" | "md" | "lg" | undefined;
568
655
  }[];
569
656
  instanceTarget?: {
570
657
  kind: "global";
@@ -581,9 +668,12 @@ export declare const PluginUIPanelContributionGroupSchema: z.ZodObject<{
581
668
  title: string;
582
669
  component: "table" | "key-value" | "chart" | "log" | "iframe";
583
670
  params?: Record<string, string> | undefined;
671
+ icon?: string | undefined;
584
672
  pageId?: string | undefined;
585
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
673
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
586
674
  width?: "full" | "half" | undefined;
675
+ openMode?: "popover" | "modal" | undefined;
676
+ uiSize?: "sm" | "md" | "lg" | undefined;
587
677
  }[];
588
678
  instanceTarget?: {
589
679
  kind: "global";
@@ -930,7 +1020,7 @@ export declare const PluginManifestSchema: z.ZodObject<{
930
1020
  }, {
931
1021
  settingKey: string;
932
1022
  }>, "many">>;
933
- panels: z.ZodOptional<z.ZodArray<z.ZodObject<{
1023
+ panels: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
934
1024
  id: z.ZodString;
935
1025
  title: z.ZodString;
936
1026
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -939,25 +1029,59 @@ export declare const PluginManifestSchema: z.ZodObject<{
939
1029
  /** Optional string params forwarded to iframe panels as URL/init params. */
940
1030
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
941
1031
  /** 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"]>>;
1032
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
943
1033
  /** Preferred width hint. Defaults to `'half'`. */
944
1034
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
1035
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
1036
+ icon: z.ZodOptional<z.ZodString>;
1037
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
1038
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
1039
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
1040
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
945
1041
  }, "strip", z.ZodTypeAny, {
946
1042
  id: string;
947
1043
  title: string;
948
1044
  component: "table" | "key-value" | "chart" | "log" | "iframe";
949
1045
  params?: Record<string, string> | undefined;
1046
+ icon?: string | undefined;
1047
+ pageId?: string | undefined;
1048
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1049
+ width?: "full" | "half" | undefined;
1050
+ openMode?: "popover" | "modal" | undefined;
1051
+ uiSize?: "sm" | "md" | "lg" | undefined;
1052
+ }, {
1053
+ id: string;
1054
+ title: string;
1055
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1056
+ params?: Record<string, string> | undefined;
1057
+ icon?: string | undefined;
1058
+ pageId?: string | undefined;
1059
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1060
+ width?: "full" | "half" | undefined;
1061
+ openMode?: "popover" | "modal" | undefined;
1062
+ uiSize?: "sm" | "md" | "lg" | undefined;
1063
+ }>, {
1064
+ id: string;
1065
+ title: string;
1066
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1067
+ params?: Record<string, string> | undefined;
1068
+ icon?: string | undefined;
950
1069
  pageId?: string | undefined;
951
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1070
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
952
1071
  width?: "full" | "half" | undefined;
1072
+ openMode?: "popover" | "modal" | undefined;
1073
+ uiSize?: "sm" | "md" | "lg" | undefined;
953
1074
  }, {
954
1075
  id: string;
955
1076
  title: string;
956
1077
  component: "table" | "key-value" | "chart" | "log" | "iframe";
957
1078
  params?: Record<string, string> | undefined;
1079
+ icon?: string | undefined;
958
1080
  pageId?: string | undefined;
959
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1081
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
960
1082
  width?: "full" | "half" | undefined;
1083
+ openMode?: "popover" | "modal" | undefined;
1084
+ uiSize?: "sm" | "md" | "lg" | undefined;
961
1085
  }>, "many">>;
962
1086
  storage: z.ZodOptional<z.ZodObject<{
963
1087
  scopes: z.ZodArray<z.ZodEnum<["global", "operator"]>, "many">;
@@ -1030,9 +1154,12 @@ export declare const PluginManifestSchema: z.ZodObject<{
1030
1154
  title: string;
1031
1155
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1032
1156
  params?: Record<string, string> | undefined;
1157
+ icon?: string | undefined;
1033
1158
  pageId?: string | undefined;
1034
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1159
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1035
1160
  width?: "full" | "half" | undefined;
1161
+ openMode?: "popover" | "modal" | undefined;
1162
+ uiSize?: "sm" | "md" | "lg" | undefined;
1036
1163
  }[] | undefined;
1037
1164
  ui?: {
1038
1165
  dir: string;
@@ -1107,9 +1234,12 @@ export declare const PluginManifestSchema: z.ZodObject<{
1107
1234
  title: string;
1108
1235
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1109
1236
  params?: Record<string, string> | undefined;
1237
+ icon?: string | undefined;
1110
1238
  pageId?: string | undefined;
1111
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1239
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1112
1240
  width?: "full" | "half" | undefined;
1241
+ openMode?: "popover" | "modal" | undefined;
1242
+ uiSize?: "sm" | "md" | "lg" | undefined;
1113
1243
  }[] | undefined;
1114
1244
  ui?: {
1115
1245
  dir?: string | undefined;
@@ -1430,7 +1560,7 @@ export declare const PluginStatusSchema: z.ZodObject<{
1430
1560
  }, {
1431
1561
  settingKey: string;
1432
1562
  }>, "many">>;
1433
- panels: z.ZodOptional<z.ZodArray<z.ZodObject<{
1563
+ panels: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
1434
1564
  id: z.ZodString;
1435
1565
  title: z.ZodString;
1436
1566
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -1439,25 +1569,59 @@ export declare const PluginStatusSchema: z.ZodObject<{
1439
1569
  /** Optional string params forwarded to iframe panels as URL/init params. */
1440
1570
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1441
1571
  /** 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"]>>;
1572
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
1443
1573
  /** Preferred width hint. Defaults to `'half'`. */
1444
1574
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
1575
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
1576
+ icon: z.ZodOptional<z.ZodString>;
1577
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
1578
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
1579
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
1580
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
1445
1581
  }, "strip", z.ZodTypeAny, {
1446
1582
  id: string;
1447
1583
  title: string;
1448
1584
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1449
1585
  params?: Record<string, string> | undefined;
1586
+ icon?: string | undefined;
1450
1587
  pageId?: string | undefined;
1451
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1588
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1452
1589
  width?: "full" | "half" | undefined;
1590
+ openMode?: "popover" | "modal" | undefined;
1591
+ uiSize?: "sm" | "md" | "lg" | undefined;
1453
1592
  }, {
1454
1593
  id: string;
1455
1594
  title: string;
1456
1595
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1457
1596
  params?: Record<string, string> | undefined;
1597
+ icon?: string | undefined;
1458
1598
  pageId?: string | undefined;
1459
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1599
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1460
1600
  width?: "full" | "half" | undefined;
1601
+ openMode?: "popover" | "modal" | undefined;
1602
+ uiSize?: "sm" | "md" | "lg" | undefined;
1603
+ }>, {
1604
+ id: string;
1605
+ title: string;
1606
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1607
+ params?: Record<string, string> | undefined;
1608
+ icon?: string | undefined;
1609
+ pageId?: string | undefined;
1610
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1611
+ width?: "full" | "half" | undefined;
1612
+ openMode?: "popover" | "modal" | undefined;
1613
+ uiSize?: "sm" | "md" | "lg" | undefined;
1614
+ }, {
1615
+ id: string;
1616
+ title: string;
1617
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
1618
+ params?: Record<string, string> | undefined;
1619
+ icon?: string | undefined;
1620
+ pageId?: string | undefined;
1621
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1622
+ width?: "full" | "half" | undefined;
1623
+ openMode?: "popover" | "modal" | undefined;
1624
+ uiSize?: "sm" | "md" | "lg" | undefined;
1461
1625
  }>, "many">>;
1462
1626
  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
1627
  capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["auto_call_candidate", "auto_call_execution"]>, "many">>;
@@ -1561,9 +1725,12 @@ export declare const PluginStatusSchema: z.ZodObject<{
1561
1725
  title: string;
1562
1726
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1563
1727
  params?: Record<string, string> | undefined;
1728
+ icon?: string | undefined;
1564
1729
  pageId?: string | undefined;
1565
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1730
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1566
1731
  width?: "full" | "half" | undefined;
1732
+ openMode?: "popover" | "modal" | undefined;
1733
+ uiSize?: "sm" | "md" | "lg" | undefined;
1567
1734
  }[] | undefined;
1568
1735
  ui?: {
1569
1736
  dir: string;
@@ -1650,9 +1817,12 @@ export declare const PluginStatusSchema: z.ZodObject<{
1650
1817
  title: string;
1651
1818
  component: "table" | "key-value" | "chart" | "log" | "iframe";
1652
1819
  params?: Record<string, string> | undefined;
1820
+ icon?: string | undefined;
1653
1821
  pageId?: string | undefined;
1654
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
1822
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
1655
1823
  width?: "full" | "half" | undefined;
1824
+ openMode?: "popover" | "modal" | undefined;
1825
+ uiSize?: "sm" | "md" | "lg" | undefined;
1656
1826
  }[] | undefined;
1657
1827
  ui?: {
1658
1828
  dir?: string | undefined;
@@ -2005,7 +2175,7 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2005
2175
  }, {
2006
2176
  settingKey: string;
2007
2177
  }>, "many">>;
2008
- panels: z.ZodOptional<z.ZodArray<z.ZodObject<{
2178
+ panels: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodObject<{
2009
2179
  id: z.ZodString;
2010
2180
  title: z.ZodString;
2011
2181
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -2014,25 +2184,59 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2014
2184
  /** Optional string params forwarded to iframe panels as URL/init params. */
2015
2185
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2016
2186
  /** 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"]>>;
2187
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
2018
2188
  /** Preferred width hint. Defaults to `'half'`. */
2019
2189
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
2190
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
2191
+ icon: z.ZodOptional<z.ZodString>;
2192
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
2193
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
2194
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
2195
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
2020
2196
  }, "strip", z.ZodTypeAny, {
2021
2197
  id: string;
2022
2198
  title: string;
2023
2199
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2024
2200
  params?: Record<string, string> | undefined;
2201
+ icon?: string | undefined;
2025
2202
  pageId?: string | undefined;
2026
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2203
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2027
2204
  width?: "full" | "half" | undefined;
2205
+ openMode?: "popover" | "modal" | undefined;
2206
+ uiSize?: "sm" | "md" | "lg" | undefined;
2028
2207
  }, {
2029
2208
  id: string;
2030
2209
  title: string;
2031
2210
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2032
2211
  params?: Record<string, string> | undefined;
2212
+ icon?: string | undefined;
2213
+ pageId?: string | undefined;
2214
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2215
+ width?: "full" | "half" | undefined;
2216
+ openMode?: "popover" | "modal" | undefined;
2217
+ uiSize?: "sm" | "md" | "lg" | undefined;
2218
+ }>, {
2219
+ id: string;
2220
+ title: string;
2221
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
2222
+ params?: Record<string, string> | undefined;
2223
+ icon?: string | undefined;
2033
2224
  pageId?: string | undefined;
2034
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2225
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2035
2226
  width?: "full" | "half" | undefined;
2227
+ openMode?: "popover" | "modal" | undefined;
2228
+ uiSize?: "sm" | "md" | "lg" | undefined;
2229
+ }, {
2230
+ id: string;
2231
+ title: string;
2232
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
2233
+ params?: Record<string, string> | undefined;
2234
+ icon?: string | undefined;
2235
+ pageId?: string | undefined;
2236
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2237
+ width?: "full" | "half" | undefined;
2238
+ openMode?: "popover" | "modal" | undefined;
2239
+ uiSize?: "sm" | "md" | "lg" | undefined;
2036
2240
  }>, "many">>;
2037
2241
  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
2242
  capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["auto_call_candidate", "auto_call_execution"]>, "many">>;
@@ -2136,9 +2340,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2136
2340
  title: string;
2137
2341
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2138
2342
  params?: Record<string, string> | undefined;
2343
+ icon?: string | undefined;
2139
2344
  pageId?: string | undefined;
2140
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2345
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2141
2346
  width?: "full" | "half" | undefined;
2347
+ openMode?: "popover" | "modal" | undefined;
2348
+ uiSize?: "sm" | "md" | "lg" | undefined;
2142
2349
  }[] | undefined;
2143
2350
  ui?: {
2144
2351
  dir: string;
@@ -2225,9 +2432,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2225
2432
  title: string;
2226
2433
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2227
2434
  params?: Record<string, string> | undefined;
2435
+ icon?: string | undefined;
2228
2436
  pageId?: string | undefined;
2229
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2437
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2230
2438
  width?: "full" | "half" | undefined;
2439
+ openMode?: "popover" | "modal" | undefined;
2440
+ uiSize?: "sm" | "md" | "lg" | undefined;
2231
2441
  }[] | undefined;
2232
2442
  ui?: {
2233
2443
  dir?: string | undefined;
@@ -2353,7 +2563,7 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2353
2563
  operatorId: string;
2354
2564
  kind: "operator";
2355
2565
  }>]>>;
2356
- panels: z.ZodArray<z.ZodObject<{
2566
+ panels: z.ZodArray<z.ZodEffects<z.ZodObject<{
2357
2567
  id: z.ZodString;
2358
2568
  title: z.ZodString;
2359
2569
  component: z.ZodEnum<["table", "key-value", "chart", "log", "iframe"]>;
@@ -2362,25 +2572,59 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2362
2572
  /** Optional string params forwarded to iframe panels as URL/init params. */
2363
2573
  params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2364
2574
  /** 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"]>>;
2575
+ slot: z.ZodOptional<z.ZodEnum<["operator", "automation", "main-right", "voice-left-top", "voice-right-top", "cw-right-top", "radio-control-toolbar"]>>;
2366
2576
  /** Preferred width hint. Defaults to `'half'`. */
2367
2577
  width: z.ZodOptional<z.ZodEnum<["half", "full"]>>;
2578
+ /** Optional FontAwesome Free icon name used by toolbar-style hosts. */
2579
+ icon: z.ZodOptional<z.ZodString>;
2580
+ /** Optional toolbar opening mode. Defaults to host-specific behavior, typically `'popover'`. */
2581
+ openMode: z.ZodOptional<z.ZodEnum<["popover", "modal"]>>;
2582
+ /** Optional controlled UI size hint for toolbar popovers/modals. */
2583
+ uiSize: z.ZodOptional<z.ZodEnum<["sm", "md", "lg"]>>;
2368
2584
  }, "strip", z.ZodTypeAny, {
2369
2585
  id: string;
2370
2586
  title: string;
2371
2587
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2372
2588
  params?: Record<string, string> | undefined;
2589
+ icon?: string | undefined;
2590
+ pageId?: string | undefined;
2591
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2592
+ width?: "full" | "half" | undefined;
2593
+ openMode?: "popover" | "modal" | undefined;
2594
+ uiSize?: "sm" | "md" | "lg" | undefined;
2595
+ }, {
2596
+ id: string;
2597
+ title: string;
2598
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
2599
+ params?: Record<string, string> | undefined;
2600
+ icon?: string | undefined;
2601
+ pageId?: string | undefined;
2602
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2603
+ width?: "full" | "half" | undefined;
2604
+ openMode?: "popover" | "modal" | undefined;
2605
+ uiSize?: "sm" | "md" | "lg" | undefined;
2606
+ }>, {
2607
+ id: string;
2608
+ title: string;
2609
+ component: "table" | "key-value" | "chart" | "log" | "iframe";
2610
+ params?: Record<string, string> | undefined;
2611
+ icon?: string | undefined;
2373
2612
  pageId?: string | undefined;
2374
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2613
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2375
2614
  width?: "full" | "half" | undefined;
2615
+ openMode?: "popover" | "modal" | undefined;
2616
+ uiSize?: "sm" | "md" | "lg" | undefined;
2376
2617
  }, {
2377
2618
  id: string;
2378
2619
  title: string;
2379
2620
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2380
2621
  params?: Record<string, string> | undefined;
2622
+ icon?: string | undefined;
2381
2623
  pageId?: string | undefined;
2382
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2624
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2383
2625
  width?: "full" | "half" | undefined;
2626
+ openMode?: "popover" | "modal" | undefined;
2627
+ uiSize?: "sm" | "md" | "lg" | undefined;
2384
2628
  }>, "many">;
2385
2629
  }, "strip", z.ZodTypeAny, {
2386
2630
  pluginName: string;
@@ -2391,9 +2635,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2391
2635
  title: string;
2392
2636
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2393
2637
  params?: Record<string, string> | undefined;
2638
+ icon?: string | undefined;
2394
2639
  pageId?: string | undefined;
2395
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2640
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2396
2641
  width?: "full" | "half" | undefined;
2642
+ openMode?: "popover" | "modal" | undefined;
2643
+ uiSize?: "sm" | "md" | "lg" | undefined;
2397
2644
  }[];
2398
2645
  instanceTarget?: {
2399
2646
  kind: "global";
@@ -2410,9 +2657,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2410
2657
  title: string;
2411
2658
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2412
2659
  params?: Record<string, string> | undefined;
2660
+ icon?: string | undefined;
2413
2661
  pageId?: string | undefined;
2414
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2662
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2415
2663
  width?: "full" | "half" | undefined;
2664
+ openMode?: "popover" | "modal" | undefined;
2665
+ uiSize?: "sm" | "md" | "lg" | undefined;
2416
2666
  }[];
2417
2667
  instanceTarget?: {
2418
2668
  kind: "global";
@@ -2449,9 +2699,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2449
2699
  title: string;
2450
2700
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2451
2701
  params?: Record<string, string> | undefined;
2702
+ icon?: string | undefined;
2452
2703
  pageId?: string | undefined;
2453
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2704
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2454
2705
  width?: "full" | "half" | undefined;
2706
+ openMode?: "popover" | "modal" | undefined;
2707
+ uiSize?: "sm" | "md" | "lg" | undefined;
2455
2708
  }[] | undefined;
2456
2709
  ui?: {
2457
2710
  dir: string;
@@ -2537,9 +2790,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2537
2790
  title: string;
2538
2791
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2539
2792
  params?: Record<string, string> | undefined;
2793
+ icon?: string | undefined;
2540
2794
  pageId?: string | undefined;
2541
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2795
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2542
2796
  width?: "full" | "half" | undefined;
2797
+ openMode?: "popover" | "modal" | undefined;
2798
+ uiSize?: "sm" | "md" | "lg" | undefined;
2543
2799
  }[];
2544
2800
  instanceTarget?: {
2545
2801
  kind: "global";
@@ -2573,9 +2829,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2573
2829
  title: string;
2574
2830
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2575
2831
  params?: Record<string, string> | undefined;
2832
+ icon?: string | undefined;
2576
2833
  pageId?: string | undefined;
2577
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2834
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2578
2835
  width?: "full" | "half" | undefined;
2836
+ openMode?: "popover" | "modal" | undefined;
2837
+ uiSize?: "sm" | "md" | "lg" | undefined;
2579
2838
  }[] | undefined;
2580
2839
  ui?: {
2581
2840
  dir?: string | undefined;
@@ -2665,9 +2924,12 @@ export declare const PluginSystemSnapshotSchema: z.ZodObject<{
2665
2924
  title: string;
2666
2925
  component: "table" | "key-value" | "chart" | "log" | "iframe";
2667
2926
  params?: Record<string, string> | undefined;
2927
+ icon?: string | undefined;
2668
2928
  pageId?: string | undefined;
2669
- slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | undefined;
2929
+ slot?: "operator" | "automation" | "main-right" | "voice-left-top" | "voice-right-top" | "cw-right-top" | "radio-control-toolbar" | undefined;
2670
2930
  width?: "full" | "half" | undefined;
2931
+ openMode?: "popover" | "modal" | undefined;
2932
+ uiSize?: "sm" | "md" | "lg" | undefined;
2671
2933
  }[];
2672
2934
  instanceTarget?: {
2673
2935
  kind: "global";