@theia/ai-chat-ui 1.63.0-next.0 → 1.63.0-next.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/lib/browser/ai-chat-ui-contribution.d.ts +29 -1
  2. package/lib/browser/ai-chat-ui-contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-chat-ui-contribution.js +158 -2
  4. package/lib/browser/ai-chat-ui-contribution.js.map +1 -1
  5. package/lib/browser/ai-chat-ui-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/ai-chat-ui-frontend-module.js +8 -0
  7. package/lib/browser/ai-chat-ui-frontend-module.js.map +1 -1
  8. package/lib/browser/chat-input-widget.d.ts +9 -6
  9. package/lib/browser/chat-input-widget.d.ts.map +1 -1
  10. package/lib/browser/chat-input-widget.js +181 -111
  11. package/lib/browser/chat-input-widget.js.map +1 -1
  12. package/lib/browser/chat-node-toolbar-action-contribution.d.ts +1 -0
  13. package/lib/browser/chat-node-toolbar-action-contribution.d.ts.map +1 -1
  14. package/lib/browser/chat-node-toolbar-action-contribution.js +13 -0
  15. package/lib/browser/chat-node-toolbar-action-contribution.js.map +1 -1
  16. package/lib/browser/chat-response-renderer/delegation-response-renderer.d.ts +14 -0
  17. package/lib/browser/chat-response-renderer/delegation-response-renderer.d.ts.map +1 -0
  18. package/lib/browser/chat-response-renderer/delegation-response-renderer.js +144 -0
  19. package/lib/browser/chat-response-renderer/delegation-response-renderer.js.map +1 -0
  20. package/lib/browser/chat-response-renderer/index.d.ts +2 -0
  21. package/lib/browser/chat-response-renderer/index.d.ts.map +1 -1
  22. package/lib/browser/chat-response-renderer/index.js +2 -0
  23. package/lib/browser/chat-response-renderer/index.js.map +1 -1
  24. package/lib/browser/chat-response-renderer/tool-confirmation.d.ts +17 -0
  25. package/lib/browser/chat-response-renderer/tool-confirmation.d.ts.map +1 -0
  26. package/lib/browser/chat-response-renderer/tool-confirmation.js +120 -0
  27. package/lib/browser/chat-response-renderer/tool-confirmation.js.map +1 -0
  28. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts +5 -1
  29. package/lib/browser/chat-response-renderer/toolcall-part-renderer.d.ts.map +1 -1
  30. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js +83 -19
  31. package/lib/browser/chat-response-renderer/toolcall-part-renderer.js.map +1 -1
  32. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts +6 -1
  33. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.d.ts.map +1 -1
  34. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js +9 -0
  35. package/lib/browser/chat-tree-view/chat-view-tree-input-widget.js.map +1 -1
  36. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts +8 -0
  37. package/lib/browser/chat-tree-view/chat-view-tree-widget.d.ts.map +1 -1
  38. package/lib/browser/chat-tree-view/chat-view-tree-widget.js +72 -3
  39. package/lib/browser/chat-tree-view/chat-view-tree-widget.js.map +1 -1
  40. package/lib/browser/chat-tree-view/sub-chat-widget.d.ts +22 -0
  41. package/lib/browser/chat-tree-view/sub-chat-widget.d.ts.map +1 -0
  42. package/lib/browser/chat-tree-view/sub-chat-widget.js +92 -0
  43. package/lib/browser/chat-tree-view/sub-chat-widget.js.map +1 -0
  44. package/lib/browser/chat-view-commands.d.ts +1 -0
  45. package/lib/browser/chat-view-commands.d.ts.map +1 -1
  46. package/lib/browser/chat-view-commands.js +5 -0
  47. package/lib/browser/chat-view-commands.js.map +1 -1
  48. package/lib/browser/chat-view-contribution.js +2 -1
  49. package/lib/browser/chat-view-contribution.js.map +1 -1
  50. package/lib/browser/chat-view-widget.d.ts +6 -3
  51. package/lib/browser/chat-view-widget.d.ts.map +1 -1
  52. package/lib/browser/chat-view-widget.js +20 -10
  53. package/lib/browser/chat-view-widget.js.map +1 -1
  54. package/package.json +10 -10
  55. package/src/browser/ai-chat-ui-contribution.ts +166 -5
  56. package/src/browser/ai-chat-ui-frontend-module.ts +11 -0
  57. package/src/browser/chat-input-widget.tsx +280 -170
  58. package/src/browser/chat-node-toolbar-action-contribution.ts +14 -0
  59. package/src/browser/chat-response-renderer/delegation-response-renderer.tsx +177 -0
  60. package/src/browser/chat-response-renderer/index.ts +2 -0
  61. package/src/browser/chat-response-renderer/tool-confirmation.tsx +173 -0
  62. package/src/browser/chat-response-renderer/toolcall-part-renderer.tsx +115 -19
  63. package/src/browser/chat-tree-view/chat-view-tree-input-widget.tsx +16 -1
  64. package/src/browser/chat-tree-view/chat-view-tree-widget.tsx +89 -5
  65. package/src/browser/chat-tree-view/sub-chat-widget.tsx +101 -0
  66. package/src/browser/chat-view-commands.ts +6 -0
  67. package/src/browser/chat-view-contribution.ts +1 -1
  68. package/src/browser/chat-view-widget.tsx +25 -12
  69. package/src/browser/style/index.css +350 -2
@@ -200,22 +200,28 @@ div:last-child > .theia-ChatNode {
200
200
  margin: 0;
201
201
  display: flex;
202
202
  flex-wrap: wrap;
203
+ align-items: center;
203
204
  gap: 6px;
204
205
  }
205
206
 
206
207
  .theia-ChatInput-ChatContext-Element {
207
208
  display: flex;
208
- align-items: center;
209
+ flex-direction: column;
209
210
  border-radius: calc(var(--theia-ui-padding) * 2 / 3);
210
211
  border: var(--theia-border-width) solid var(--theia-dropdown-border);
211
212
  padding: 2px 4px 2px 6px;
212
- height: 18px;
213
213
  line-height: 16px;
214
214
  min-width: 0;
215
215
  user-select: none;
216
216
  cursor: pointer;
217
217
  }
218
218
 
219
+ .theia-ChatInput-ChatContext-Row {
220
+ display: flex;
221
+ align-items: center;
222
+ width: 100%;
223
+ }
224
+
219
225
  .theia-ChatInput-ChatContext-labelParts {
220
226
  flex: 1;
221
227
  min-width: 0;
@@ -497,6 +503,32 @@ div:last-child > .theia-ChatNode {
497
503
  padding-left: 8px !important;
498
504
  }
499
505
 
506
+ .theia-ChatInput-ImagePreview-Item {
507
+ position: relative;
508
+ border: var(--theia-border-width) solid var(--theia-dropdown-border);
509
+ border-radius: 4px;
510
+ overflow: hidden;
511
+ height: 100px;
512
+ width: 120px;
513
+ }
514
+
515
+ .theia-ChatInput-ChatContext-ImageRow {
516
+ margin-top: 4px;
517
+ width: 100%;
518
+ display: flex;
519
+ justify-content: center;
520
+ }
521
+
522
+ .theia-ChatInput-ImageContext-Element {
523
+ min-width: 150px;
524
+ }
525
+
526
+ .theia-ChatInput-ImagePreview-Item img {
527
+ width: 100%;
528
+ height: 100%;
529
+ object-fit: contain;
530
+ }
531
+
500
532
  .theia-ChatInputOptions {
501
533
  width: 100%;
502
534
  height: 25px;
@@ -624,6 +656,179 @@ div:last-child > .theia-ChatNode {
624
656
  cursor: pointer;
625
657
  }
626
658
 
659
+ /* Tool confirmation styles */
660
+ .theia-tool-confirmation {
661
+ margin: 10px 0;
662
+ padding: 12px;
663
+ border: 1px solid var(--theia-dropdown-border);
664
+ border-radius: 4px;
665
+ background-color: var(--theia-editorWidget-background);
666
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.14);
667
+ }
668
+
669
+ .theia-tool-confirmation-header {
670
+ font-weight: bold;
671
+ margin-bottom: 8px;
672
+ color: var(--theia-foreground);
673
+ display: flex;
674
+ align-items: center;
675
+ gap: 6px;
676
+ }
677
+
678
+ .theia-tool-confirmation-info {
679
+ margin-bottom: 12px;
680
+ }
681
+
682
+ .theia-tool-confirmation-name,
683
+ .theia-tool-confirmation-args {
684
+ margin-bottom: 4px;
685
+ }
686
+
687
+ .theia-tool-confirmation-name .label,
688
+ .theia-tool-confirmation-args .label {
689
+ font-weight: bold;
690
+ margin-right: 6px;
691
+ }
692
+
693
+ .theia-tool-confirmation-args pre.value {
694
+ margin: 6px 0;
695
+ padding: 8px;
696
+ background-color: var(--theia-editor-background);
697
+ border-radius: 3px;
698
+ max-height: 150px;
699
+ overflow: auto;
700
+ }
701
+
702
+ .theia-tool-confirmation-actions {
703
+ display: flex;
704
+ justify-content: flex-end;
705
+ gap: 0;
706
+ }
707
+
708
+ .theia-tool-confirmation-split-button {
709
+ display: inline-flex;
710
+ position: relative;
711
+ }
712
+
713
+ .theia-tool-confirmation-main-btn {
714
+ border-top-right-radius: 0 !important;
715
+ border-bottom-right-radius: 0 !important;
716
+ margin-right: 0 !important;
717
+ }
718
+
719
+ .theia-tool-confirmation-chevron-btn {
720
+ border-top-left-radius: 0 !important;
721
+ border-bottom-left-radius: 0 !important;
722
+ width: 24px !important;
723
+ min-width: 24px !important;
724
+ max-width: 24px !important;
725
+ padding: 0 !important;
726
+ margin-left: 0 !important;
727
+ display: flex !important;
728
+ align-items: center !important;
729
+ justify-content: center !important;
730
+ }
731
+
732
+ .theia-tool-confirmation-dropdown-menu {
733
+ position: absolute;
734
+ top: 100%;
735
+ left: 0;
736
+ z-index: 10;
737
+ min-width: 180px;
738
+ background: var(--theia-menu-background);
739
+ border: 1px solid var(--theia-menu-border);
740
+ border-radius: 4px;
741
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
742
+ margin: 0;
743
+ padding: 0;
744
+ list-style: none;
745
+ }
746
+
747
+ .theia-tool-confirmation-dropdown-item {
748
+ padding: 6px 16px;
749
+ cursor: pointer;
750
+ white-space: nowrap;
751
+ }
752
+
753
+ .theia-tool-confirmation-dropdown-item:hover {
754
+ background: var(--theia-list-hoverBackground, #e5e5e5);
755
+ }
756
+
757
+ .theia-tool-confirmation-status {
758
+ margin: 10px 0;
759
+ padding: 12px;
760
+ border: 1px solid var(--theia-dropdown-border);
761
+ border-radius: 4px;
762
+ background-color: var(--theia-editorWidget-background);
763
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.14);
764
+ }
765
+
766
+ .theia-tool-confirmation-header {
767
+ font-weight: bold;
768
+ margin-bottom: 8px;
769
+ color: var(--theia-foreground);
770
+ display: flex;
771
+ align-items: center;
772
+ gap: 6px;
773
+ }
774
+
775
+ .theia-tool-confirmation-info {
776
+ margin-bottom: 12px;
777
+ }
778
+
779
+ .theia-tool-confirmation-name,
780
+ .theia-tool-confirmation-args {
781
+ margin-bottom: 4px;
782
+ }
783
+
784
+ .theia-tool-confirmation-name .label,
785
+ .theia-tool-confirmation-args .label {
786
+ font-weight: bold;
787
+ margin-right: 6px;
788
+ }
789
+
790
+ .theia-tool-confirmation-args pre.value {
791
+ margin: 6px 0;
792
+ padding: 8px;
793
+ background-color: var(--theia-editor-background);
794
+ border-radius: 3px;
795
+ max-height: 150px;
796
+ overflow: auto;
797
+ }
798
+
799
+ .theia-tool-confirmation-actions {
800
+ display: flex;
801
+ justify-content: flex-end;
802
+ gap: 8px;
803
+ }
804
+
805
+ .theia-tool-confirmation-status {
806
+ padding: 8px;
807
+ margin: 10px 0;
808
+ border-radius: 4px;
809
+ display: flex;
810
+ align-items: center;
811
+ gap: 6px;
812
+ }
813
+
814
+ .theia-tool-confirmation-status.approved {
815
+ background-color: var(--theia-successBackground);
816
+ color: var(--theia-successForeground);
817
+ }
818
+
819
+ .theia-tool-confirmation-status.denied {
820
+ background-color: var(--theia-errorBackground);
821
+ color: var(--theia-errorForeground);
822
+ }
823
+
824
+ .theia-tool-pending {
825
+ color: var(--theia-descriptionForeground);
826
+ }
827
+
828
+ .theia-tool-denied {
829
+ color: var(--theia-errorForeground);
830
+ }
831
+
627
832
  .theia-toolCall .fa,
628
833
  .theia-toolCall details summary::marker,
629
834
  .theia-thinking .fa,
@@ -727,6 +932,7 @@ details[open].collapsible-arguments .collapsible-arguments-summary {
727
932
  margin-bottom: 10px;
728
933
  height: calc(100% - 50px);
729
934
  }
935
+
730
936
  .monaco-session-settings-dialog {
731
937
  flex: 1;
732
938
  min-height: 350px;
@@ -736,6 +942,7 @@ details[open].collapsible-arguments .collapsible-arguments-summary {
736
942
  border: 1px solid var(--theia-editorWidget-border);
737
943
  margin-bottom: 10px;
738
944
  }
945
+
739
946
  .session-settings-error {
740
947
  color: var(--theia-errorForeground);
741
948
  min-height: 1em;
@@ -751,3 +958,144 @@ details[open].collapsible-arguments .collapsible-arguments-summary {
751
958
  padding-block-end: 8px;
752
959
  user-select: none;
753
960
  }
961
+
962
+ /* Delegation response styles */
963
+ .theia-delegation-container {
964
+ border: 2px solid var(--theia-sideBarSectionHeader-border);
965
+ border-radius: 8px;
966
+ margin: 8px 0;
967
+ background-color: var(--theia-sideBar-background);
968
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
969
+ }
970
+
971
+ .delegation-response-details {
972
+ width: 100%;
973
+ }
974
+
975
+ .delegation-summary {
976
+ cursor: pointer;
977
+ padding: 12px 16px;
978
+ background-color: var(--theia-editorGroupHeader-tabsBackground);
979
+ border-radius: 6px 6px 0 0;
980
+ border-bottom: 1px solid var(--theia-sideBarSectionHeader-border);
981
+ list-style: none;
982
+ position: relative;
983
+ }
984
+
985
+ .delegation-summary:hover {
986
+ background-color: var(--theia-toolbar-hoverBackground);
987
+ }
988
+
989
+ .delegation-summary::before {
990
+ content: '\25BC';
991
+ /* Down arrow */
992
+ position: absolute;
993
+ right: 8px;
994
+ top: 50%;
995
+ transform: translateY(-50%);
996
+ transition: transform 0.2s ease;
997
+ color: var(--theia-descriptionForeground);
998
+ font-size: 12px;
999
+ }
1000
+
1001
+ .delegation-response-details:not([open]) .delegation-summary::before {
1002
+ transform: translateY(-50%) rotate(-90deg);
1003
+ /* Right arrow when closed */
1004
+ }
1005
+
1006
+ .delegation-response-details:not([open]) .delegation-summary {
1007
+ border-bottom: none;
1008
+ border-radius: 6px;
1009
+ }
1010
+
1011
+ .delegation-summary::-webkit-details-marker {
1012
+ display: none;
1013
+ }
1014
+
1015
+ .delegation-summary::marker {
1016
+ content: '';
1017
+ }
1018
+
1019
+ .delegation-header {
1020
+ display: flex;
1021
+ align-items: center;
1022
+ width: 100%;
1023
+ gap: 16px;
1024
+ }
1025
+
1026
+ .delegation-agent {
1027
+ flex: 1;
1028
+ /* Takes up available space */
1029
+ font-size: 14px;
1030
+ color: var(--theia-foreground);
1031
+ }
1032
+
1033
+ .delegation-status {
1034
+ display: flex;
1035
+ align-items: center;
1036
+ gap: 6px;
1037
+ font-size: 13px;
1038
+ /* Leave space for the arrow */
1039
+ margin-right: 24px;
1040
+ }
1041
+
1042
+ .delegation-status-icon {
1043
+ font-size: 16px;
1044
+ }
1045
+
1046
+ .delegation-status-icon.codicon-loading {
1047
+ animation: spin 2s linear infinite;
1048
+ color: var(--theia-progressBar-background);
1049
+ }
1050
+
1051
+ .delegation-status-icon.codicon-check {
1052
+ color: var(--theia-charts-green);
1053
+ }
1054
+
1055
+ .delegation-status-icon.codicon-error {
1056
+ color: var(--theia-errorForeground);
1057
+ }
1058
+
1059
+ .delegation-status-icon.codicon-cancel {
1060
+ color: var(--theia-charts-orange);
1061
+ }
1062
+
1063
+ .delegation-status-text {
1064
+ color: var(--theia-descriptionForeground);
1065
+ font-weight: normal;
1066
+ }
1067
+
1068
+ .delegation-content {
1069
+ padding: 16px;
1070
+ }
1071
+
1072
+ .delegation-prompt-section {
1073
+ margin-bottom: 16px;
1074
+ padding-bottom: 12px;
1075
+ border-bottom: 1px solid var(--theia-sideBarSectionHeader-border);
1076
+ }
1077
+
1078
+ .delegation-prompt {
1079
+ margin-top: 6px;
1080
+ padding: 8px 12px;
1081
+ background-color: var(--theia-editor-background);
1082
+ border-radius: 4px;
1083
+ border: 1px solid var(--theia-dropdown-border);
1084
+ font-style: italic;
1085
+ color: var(--theia-descriptionForeground);
1086
+ }
1087
+
1088
+ .delegation-response-section {
1089
+ margin-top: 16px;
1090
+ }
1091
+
1092
+ .delegation-response-section>strong {
1093
+ display: block;
1094
+ margin-bottom: 8px;
1095
+ color: var(--theia-foreground);
1096
+ }
1097
+
1098
+ .delegation-response-placeholder {
1099
+ margin-top: 8px;
1100
+ min-height: 40px;
1101
+ }