Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/chat/browser/media/chat.css
3297 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
.interactive-session {
7
max-width: 950px;
8
margin: auto;
9
position: relative;
10
/* For chat dnd */
11
}
12
13
.interactive-list > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row > .monaco-tl-row > .monaco-tl-twistie {
14
/* Hide twisties from chat tree rows, but not from nested trees within a chat response */
15
display: none !important;
16
}
17
18
.interactive-item-container {
19
padding: 12px 16px;
20
display: flex;
21
flex-direction: column;
22
color: var(--vscode-interactive-session-foreground);
23
24
cursor: default;
25
user-select: text;
26
-webkit-user-select: text;
27
}
28
29
.interactive-item-container:not(:has(.chat-extensions-content-part)) .header {
30
display: flex;
31
align-items: center;
32
justify-content: space-between;
33
position: relative;
34
margin-bottom: 8px;
35
}
36
37
.interactive-item-container .header.hidden,
38
.interactive-item-container .header .avatar-container.hidden,
39
.interactive-item-container .header .username.hidden {
40
display: none;
41
}
42
43
.interactive-item-container .header .user {
44
display: flex;
45
align-items: center;
46
gap: 8px;
47
48
/*
49
Rendering the avatar icon as round makes it a little larger than the .user container.
50
Add padding so that the focus outline doesn't run into it, and counteract it with a negative margin so it doesn't actually take up any extra space */
51
padding: 2px;
52
margin: -2px;
53
}
54
55
.interactive-item-container .header .username {
56
margin: 0;
57
font-size: 13px;
58
font-weight: 600;
59
}
60
61
.interactive-item-container .detail-container {
62
font-family: var(--vscode-chat-font-family, inherit);
63
font-size: var(--vscode-chat-font-size-body-s);
64
color: var(--vscode-descriptionForeground);
65
overflow: hidden;
66
}
67
68
.interactive-item-container .detail-container .detail .agentOrSlashCommandDetected A {
69
cursor: pointer;
70
color: var(--vscode-textLink-foreground);
71
}
72
73
.interactive-item-container .chat-animated-ellipsis {
74
display: inline-block;
75
width: 2em;
76
}
77
78
.interactive-item-container:not(.show-detail-progress) .chat-animated-ellipsis {
79
display: none;
80
}
81
82
@keyframes ellipsis {
83
0% {
84
content: "";
85
}
86
87
25% {
88
content: ".";
89
}
90
91
50% {
92
content: "..";
93
}
94
95
75% {
96
content: "...";
97
}
98
99
100% {
100
content: "";
101
}
102
}
103
104
.interactive-item-container .chat-animated-ellipsis::after {
105
content: '';
106
white-space: nowrap;
107
overflow: hidden;
108
width: 3em;
109
animation: ellipsis steps(4, end) 1s infinite;
110
}
111
112
.interactive-item-container .header .avatar-container {
113
display: flex;
114
pointer-events: none;
115
user-select: none;
116
}
117
118
.interactive-item-container .header .avatar {
119
display: flex;
120
align-items: center;
121
justify-content: center;
122
width: 24px;
123
height: 24px;
124
border-radius: 50%;
125
outline: 1px solid var(--vscode-chat-requestBorder);
126
}
127
128
.interactive-item-container .header .avatar.codicon-avatar {
129
background: var(--vscode-chat-avatarBackground);
130
}
131
132
.interactive-item-container .header .avatar + .avatar {
133
margin-left: -8px;
134
}
135
136
.interactive-item-container .header .avatar .icon {
137
width: 24px;
138
height: 24px;
139
border-radius: 50%;
140
background-color: var(--vscode-chat-list-background);
141
}
142
143
.interactive-item-container .header .avatar .codicon {
144
color: var(--vscode-chat-avatarForeground) !important;
145
font-size: 14px;
146
}
147
148
.monaco-list-row:not(.focused) .interactive-item-container:not(:hover) .header .monaco-toolbar,
149
.monaco-list:not(:focus-within) .monaco-list-row .interactive-item-container:not(:hover) .header .monaco-toolbar,
150
.monaco-list-row:not(.focused) .interactive-item-container:not(:hover) .header .monaco-toolbar .action-label,
151
.monaco-list:not(:focus-within) .monaco-list-row .interactive-item-container:not(:hover) .header .monaco-toolbar .action-label {
152
/* Also apply this rule to the .action-label directly to work around a strange issue- when the
153
toolbar is hidden without that second rule, tabbing from the list container into a list item doesn't work
154
and the tab key doesn't do anything. */
155
display: none;
156
}
157
158
.interactive-item-container .header .monaco-toolbar .monaco-action-bar .actions-container {
159
gap: 4px;
160
}
161
162
.interactive-item-container .header .monaco-toolbar .action-label {
163
border: 1px solid transparent;
164
padding: 2px;
165
}
166
167
.interactive-item-container.interactive-response .header .monaco-toolbar {
168
position: absolute;
169
left: 0px;
170
background-color: var(--vscode-chat-list-background);
171
}
172
173
.interactive-item-container.interactive-request .header .monaco-toolbar {
174
/* Take the partially-transparent background color override for request rows */
175
background-color: inherit;
176
}
177
178
.interactive-item-container .chat-footer-toolbar {
179
display: none;
180
}
181
182
.interactive-item-container .chat-footer-toolbar.hidden {
183
display: none !important;
184
}
185
186
.interactive-item-container .chat-footer-toolbar .monaco-action-bar .actions-container {
187
gap: 4px;
188
}
189
190
.interactive-item-container .chat-footer-toolbar .checked.action-label,
191
.interactive-item-container .chat-footer-toolbar .checked.action-label:hover {
192
color: var(--vscode-inputOption-activeForeground) !important;
193
border-color: var(--vscode-inputOption-activeBorder);
194
background-color: var(--vscode-inputOption-activeBackground);
195
}
196
197
.interactive-item-container.interactive-response.chat-most-recent-response {
198
min-height: var(--chat-current-response-min-height);
199
}
200
201
.interactive-item-container.interactive-response:not(.chat-response-loading) .chat-footer-toolbar,
202
.interactive-item-container.interactive-response:not(.chat-response-loading) .chat-footer-toolbar .chat-footer-details {
203
/* Complete response only */
204
display: block;
205
opacity: 0;
206
visibility: hidden;
207
padding-top: 6px;
208
height: 22px;
209
}
210
211
/* Show toolbar on hover and last response. Also show when the item has keyboard focus (focus-within) or when the surrounding list row is marked focused (monaco list keyboard navigation). */
212
.interactive-item-container.interactive-response:not(.chat-response-loading):hover .chat-footer-toolbar,
213
.interactive-item-container.interactive-response.chat-most-recent-response:not(.chat-response-loading) .chat-footer-toolbar,
214
.interactive-item-container.interactive-response:not(.chat-response-loading):hover .chat-footer-toolbar .chat-footer-details,
215
.interactive-item-container.interactive-response:not(.chat-response-loading):focus-within .chat-footer-toolbar,
216
.interactive-item-container.interactive-response:not(.chat-response-loading):focus-within .chat-footer-toolbar .chat-footer-details,
217
.monaco-list-row.focused .interactive-item-container.interactive-response:not(.chat-response-loading) .chat-footer-toolbar,
218
.monaco-list-row.focused .interactive-item-container.interactive-response:not(.chat-response-loading) .chat-footer-toolbar .chat-footer-details {
219
opacity: 1;
220
visibility: visible;
221
}
222
223
/* Style the internal toolbar element to use flexbox */
224
.interactive-item-container .chat-footer-toolbar .monaco-toolbar {
225
display: flex;
226
justify-content: space-between;
227
align-items: center;
228
}
229
230
.interactive-item-container .chat-footer-details {
231
display: none;
232
padding: 0;
233
font-size: var(--vscode-chat-font-size-body-xs);
234
opacity: 0.7;
235
color: var(--vscode-descriptionForeground);
236
line-height: 16px;
237
margin-left: auto;
238
}
239
240
.interactive-item-container .chat-footer-details.hidden {
241
display: none !important;
242
}
243
244
.interactive-item-container .value {
245
width: 100%;
246
}
247
248
.interactive-item-container > .value .chat-used-context {
249
margin-bottom: 8px;
250
}
251
252
.interactive-item-container .value .rendered-markdown:not(:has(.chat-extensions-content-part)) {
253
.codicon {
254
font-size: inherit;
255
}
256
257
.interactive-result-code-block .codicon {
258
font-size: initial;
259
}
260
}
261
262
.interactive-item-container .value .rendered-markdown blockquote {
263
margin: 0px;
264
padding: 0px 16px 0 10px;
265
border-left-width: 5px;
266
border-left-style: solid;
267
border-radius: 2px;
268
background: var(--vscode-textBlockQuote-background);
269
border-color: var(--vscode-textBlockQuote-border);
270
}
271
272
.interactive-item-container .value .rendered-markdown table {
273
width: 100%;
274
text-align: left;
275
margin-bottom: 16px;
276
}
277
278
.interactive-item-container .value .rendered-markdown table,
279
.interactive-item-container .value .rendered-markdown table td,
280
.interactive-item-container .value .rendered-markdown table th {
281
border: 1px solid var(--vscode-chat-requestBorder);
282
border-collapse: collapse;
283
padding: 4px 6px;
284
}
285
286
.interactive-item-container .value .rendered-markdown a,
287
.interactive-item-container .value .interactive-session-followups,
288
.interactive-item-container .value .rendered-markdown a code {
289
color: var(--vscode-textLink-foreground);
290
}
291
292
.interactive-item-container .value .rendered-markdown .chat-extensions-content-part a {
293
color: inherit;
294
}
295
296
.interactive-item-container .value .rendered-markdown a {
297
user-select: text;
298
}
299
300
.interactive-item-container .value .rendered-markdown a:hover,
301
.interactive-item-container .value .rendered-markdown a:active {
302
color: var(--vscode-textLink-activeForeground);
303
}
304
305
.hc-black .interactive-item-container .value .rendered-markdown a code,
306
.hc-light .interactive-item-container .value .rendered-markdown a code {
307
color: var(--vscode-textPreformat-foreground);
308
}
309
310
.interactive-list {
311
overflow: hidden;
312
position: relative;
313
/* For the scroll down button */
314
}
315
316
.hc-black .interactive-request,
317
.hc-light .interactive-request {
318
border-left: 3px solid var(--vscode-chat-requestBorder);
319
border-right: 3px solid var(--vscode-chat-requestBorder);
320
}
321
322
.interactive-item-container .value {
323
white-space: normal;
324
overflow-wrap: anywhere;
325
}
326
327
.interactive-item-container .value > :last-child,
328
.interactive-item-container .value > :last-child.rendered-markdown > :last-child,
329
.interactive-item-container.interactive-request .value .rendered-markdown > :last-child {
330
margin-bottom: 0px;
331
}
332
333
.interactive-item-container .value .rendered-markdown hr {
334
border-color: rgba(0, 0, 0, 0.18);
335
}
336
337
.vs-dark .interactive-item-container .value .rendered-markdown hr {
338
border-color: rgba(255, 255, 255, 0.18);
339
}
340
341
.interactive-item-container .value .rendered-markdown h1 {
342
font-size: var(--vscode-chat-font-size-body-xxl);
343
font-weight: 600;
344
margin: 16px 0 8px 0;
345
font-family: var(--vscode-chat-font-family, inherit);
346
347
}
348
349
.interactive-item-container .value .rendered-markdown h2 {
350
font-size: var(--vscode-chat-font-size-body-xl);
351
font-weight: 600;
352
margin: 16px 0 8px 0;
353
font-family: var(--vscode-chat-font-family, inherit);
354
}
355
356
.interactive-item-container .value .rendered-markdown h3 {
357
font-size: var(--vscode-chat-font-size-body-l);
358
font-weight: 600;
359
margin: 16px 0 8px 0;
360
font-family: var(--vscode-chat-font-family, inherit);
361
}
362
363
.interactive-item-container.editing-session .value .rendered-markdown p:has(+ [data-code] > .chat-codeblock-pill-widget) {
364
margin-bottom: 8px;
365
}
366
367
.interactive-item-container.editing-session .value .rendered-markdown h3 {
368
font-size: var(--vscode-chat-font-size-body-m);
369
margin: 0 0 8px 0;
370
font-weight: unset;
371
}
372
373
/* Codicons next to text need to be aligned with the text */
374
.interactive-item-container .value .rendered-markdown:not(:has(.chat-extensions-content-part)) .codicon {
375
position: relative;
376
top: 2px;
377
}
378
379
.interactive-item-container .value .rendered-markdown {
380
.chat-codeblock-pill-widget .codicon {
381
top: -1px;
382
}
383
384
/* But codicons in toolbars assume the natural position of the codicon */
385
.monaco-toolbar .codicon {
386
position: initial;
387
top: initial;
388
}
389
390
/* Code blocks at the beginning of an answer should not have a margin as it means it won't align with the agent icon*/
391
> div[data-code]:first-child {
392
margin-top: 0;
393
394
}
395
396
/* Override the top to avoid the toolbar getting clipped by overflow:hidden */
397
> div[data-code]:first-child .interactive-result-code-block .interactive-result-code-block-toolbar > .monaco-action-bar,
398
> div[data-code]:first-child .interactive-result-code-block .interactive-result-code-block-toolbar > .monaco-toolbar {
399
top: 6px;
400
}
401
}
402
403
.interactive-item-container .value.inline-progress {
404
405
.rendered-markdown {
406
display: inline-flex;
407
}
408
409
/* not ideal but I cannot query the last div with this class... */
410
.rendered-markdown:last-of-type > P > SPAN:empty {
411
display: inline-block;
412
width: 11px;
413
}
414
415
.rendered-markdown:last-of-type > P > SPAN:empty::after {
416
content: '';
417
white-space: nowrap;
418
overflow: hidden;
419
width: 3em;
420
animation: ellipsis steps(4, end) 1s infinite;
421
}
422
}
423
424
.interactive-item-container .value .rendered-markdown {
425
line-height: 1.5em;
426
font-size: var(--vscode-chat-font-size-body-m);
427
font-family: var(--vscode-chat-font-family, inherit);
428
}
429
430
.interactive-item-container .value > .rendered-markdown p {
431
/* Targetting normal text paras. `p` can also appear in other elements/widgets */
432
margin: 0 0 16px 0;
433
}
434
435
.interactive-item-container .value > .chat-tool-invocation-part {
436
.rendered-markdown p {
437
margin: 0 0 6px 0;
438
opacity: 0.85;
439
}
440
441
.disclaimer {
442
margin-top: 6px;
443
margin-bottom: -6px;
444
445
.rendered-markdown p:last-child {
446
margin-bottom: 0;
447
}
448
}
449
450
.message .see-more {
451
display: none;
452
position: absolute;
453
right: 0;
454
top: 20px;
455
456
a {
457
color: var(--vscode-textLink-foreground);
458
text-decoration: underline;
459
cursor: pointer;
460
}
461
}
462
463
.message.can-see-more {
464
position: relative;
465
466
.message-wrapper {
467
/* This mask fades out the end of the second line of text so the "see more" message can be displayed over it. */
468
mask-image:
469
linear-gradient(to right, rgba(0, 0, 0, 1) calc(100% - 95px), rgba(0, 0, 0, 0) calc(100% - 72px)), linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 20px, rgba(0, 0, 0, 1) 2px, rgba(0, 0, 0, 1) 100%);
470
mask-repeat: no-repeat, no-repeat;
471
pointer-events: none;
472
max-height: 40px;
473
}
474
475
.see-more {
476
display: block;
477
}
478
}
479
480
.progress-container .rendered-markdown [data-code] {
481
margin: 0;
482
}
483
484
.tool-input-output-part {
485
display: flex;
486
flex-wrap: wrap;
487
align-items: center;
488
}
489
490
.tool-input-output-part .rendered-markdown p {
491
margin: inherit;
492
}
493
494
.tool-input-output-part .expando {
495
display: flex;
496
align-items: center;
497
cursor: pointer;
498
}
499
500
.tool-input-output-part .input-output {
501
display: none;
502
padding: 6px 0;
503
flex-basis: 100%;
504
width: 100%;
505
}
506
507
.tool-input-output-part.expanded .input-output {
508
display: inherit;
509
}
510
511
.tool-output-part {
512
border: 1px solid var(--vscode-widget-border);
513
border-radius: 6px;
514
background: var(--vscode-editor-background);
515
margin: 4px 0;
516
overflow: hidden;
517
518
.output-title {
519
padding: 8px 12px;
520
background: var(--vscode-editorWidget-background);
521
border-bottom: 1px solid var(--vscode-widget-border);
522
font-size: var(--vscode-chat-font-size-body-m);
523
}
524
525
.output-error {
526
margin: 6px 4px;
527
color: var(--vscode-errorForeground);
528
529
.output-error-header {
530
display: flex;
531
align-items: center;
532
gap: 7px;
533
margin-bottom: 4px;
534
535
.codicon-error {
536
color: var(--vscode-errorForeground) !important;
537
}
538
}
539
540
.output-error-details {
541
font-family: var(--monaco-monospace-font);
542
font-size: var(--vscode-chat-font-size-body-xs);
543
}
544
}
545
}
546
547
&:not(:last-child) {
548
margin-bottom: 8px;
549
}
550
}
551
552
.interactive-item-container .value > .rendered-markdown li > p {
553
margin: 0;
554
}
555
556
/* #region list indent rules */
557
.interactive-item-container .value .rendered-markdown ul {
558
/* Keep this in sync with the values for dedented codeblocks below */
559
padding-inline-start: 24px;
560
}
561
562
.interactive-item-container .value .rendered-markdown ol {
563
/* Keep this in sync with the values for dedented codeblocks below */
564
padding-inline-start: 28px;
565
}
566
567
/* NOTE- We want to dedent codeblocks in lists specifically to give them the full width. No more elegant way to do this, these values
568
have to be updated for changes to the rules above, or to support more deeply nested lists. */
569
.interactive-item-container .value .rendered-markdown ul .interactive-result-code-block {
570
margin-left: -24px;
571
}
572
573
.interactive-item-container .value .rendered-markdown ul ul .interactive-result-code-block {
574
margin-left: -48px;
575
}
576
577
.interactive-item-container .value .rendered-markdown ol .interactive-result-code-block {
578
margin-left: -28px;
579
}
580
581
.interactive-item-container .value .rendered-markdown ol ol .interactive-result-code-block {
582
margin-left: -56px;
583
}
584
585
.interactive-item-container .value .rendered-markdown ol ul .interactive-result-code-block,
586
.interactive-item-container .value .rendered-markdown ul ol .interactive-result-code-block {
587
margin-left: -52px;
588
}
589
590
/* #endregion list indent rules */
591
592
.interactive-item-container .value .rendered-markdown img {
593
max-width: 100%;
594
}
595
596
.chat-tool-hover,
597
.interactive-item-container {
598
599
.monaco-tokenized-source,
600
code {
601
font-family: var(--monaco-monospace-font);
602
font-size: var(--vscode-chat-font-size-body-s);
603
color: var(--vscode-textPreformat-foreground);
604
background-color: var(--vscode-textPreformat-background);
605
padding: 1px 3px;
606
border-radius: 4px;
607
white-space: pre-wrap;
608
}
609
}
610
611
.interactive-item-container.interactive-item-compact {
612
padding: 8px 20px;
613
}
614
615
.interactive-item-container.interactive-item-compact .header {
616
height: 16px;
617
}
618
619
.interactive-item-container.interactive-item-compact .header .avatar {
620
width: 18px;
621
height: 18px;
622
}
623
624
.interactive-item-container.interactive-item-compact .header .avatar .icon {
625
width: 16px;
626
height: 16px;
627
}
628
629
.interactive-item-container.interactive-item-compact .header .codicon-avatar .codicon {
630
font-size: 12px;
631
}
632
633
.interactive-item-container.interactive-item-compact .header .avatar + .avatar {
634
margin-left: -4px;
635
}
636
637
.interactive-item-container.interactive-item-compact .value {
638
min-height: 0;
639
}
640
641
.interactive-item-container.interactive-item-compact .value > .rendered-markdown p {
642
margin: 0 0 8px 0;
643
}
644
645
.interactive-item-container.interactive-item-compact .value > .rendered-markdown li > p {
646
margin: 0;
647
}
648
649
.interactive-item-container.interactive-item-compact .value .rendered-markdown h1 {
650
margin: 8px 0;
651
652
}
653
654
.interactive-item-container.interactive-item-compact .value .rendered-markdown h2 {
655
margin: 8px 0;
656
}
657
658
.interactive-item-container.interactive-item-compact .value .rendered-markdown h3 {
659
margin: 8px 0;
660
}
661
662
.interactive-item-container.minimal {
663
flex-direction: row;
664
}
665
666
.interactive-item-container.minimal .column.left {
667
padding-top: 2px;
668
display: inline-block;
669
flex-grow: 0;
670
}
671
672
.interactive-item-container.minimal .column.right {
673
display: inline-block;
674
flex-grow: 1;
675
}
676
677
.interactive-item-container.interactive-request.minimal .rendered-markdown .chat-animated-ellipsis {
678
display: inline-flex;
679
}
680
681
.interactive-item-container.minimal .user > .username {
682
display: none;
683
}
684
685
.interactive-item-container.minimal .detail-container {
686
font-size: unset;
687
}
688
689
.interactive-item-container.minimal > .header {
690
position: absolute;
691
right: 0;
692
}
693
694
.chat-dnd-overlay {
695
position: absolute;
696
top: 0;
697
left: 0;
698
width: 100%;
699
height: 100%;
700
box-sizing: border-box;
701
702
display: none;
703
}
704
705
.chat-dnd-overlay.visible {
706
display: flex;
707
align-items: center;
708
justify-content: center;
709
}
710
711
.chat-dnd-overlay .attach-context-overlay-text {
712
padding: 0.6em;
713
margin: 0.2em;
714
line-height: 12px;
715
height: 12px;
716
display: flex;
717
align-items: center;
718
text-align: center;
719
}
720
721
.chat-dnd-overlay .attach-context-overlay-text .codicon {
722
height: 12px;
723
font-size: 12px;
724
margin-right: 3px;
725
}
726
727
.interactive-session .chat-input-container {
728
box-sizing: border-box;
729
cursor: text;
730
background-color: var(--vscode-input-background);
731
border: 1px solid var(--vscode-input-border, transparent);
732
border-radius: 4px;
733
padding: 0 6px 6px 6px;
734
/* top padding is inside the editor widget */
735
max-width: 100%;
736
}
737
738
.interactive-session .chat-editing-session {
739
margin-bottom: -4px;
740
width: 100%;
741
position: relative;
742
}
743
744
.interactive-session .chat-editing-session .chat-editing-session-container {
745
margin-bottom: -13px;
746
padding: 6px 8px 18px 8px;
747
box-sizing: border-box;
748
background-color: var(--vscode-editor-background);
749
border: 1px solid var(--vscode-input-border, transparent);
750
border-bottom: none;
751
border-radius: 4px;
752
display: flex;
753
flex-direction: column;
754
gap: 2px;
755
overflow: hidden;
756
}
757
758
.interactive-session .chat-editing-session .monaco-list-row .chat-collapsible-list-action-bar {
759
padding-left: 5px;
760
display: none;
761
}
762
763
.interactive-session .chat-editing-session .monaco-list-row:hover .chat-collapsible-list-action-bar,
764
.interactive-session .chat-editing-session .monaco-list-row.focused .chat-collapsible-list-action-bar,
765
.interactive-session .chat-editing-session .monaco-list-row.selected .chat-collapsible-list-action-bar {
766
display: inherit;
767
}
768
769
.interactive-session .chat-editing-session .chat-editing-session-container.show-file-icons .monaco-scrollable-element .monaco-list-rows .monaco-list-row {
770
border-radius: 2px;
771
}
772
773
.interactive-session .chat-editing-session .chat-editing-session-container.show-file-icons .chat-editing-session-list .monaco-scrollable-element:has(.visible.scrollbar.vertical) .monaco-list-row .monaco-icon-label {
774
padding-right: 12px;
775
}
776
777
.interactive-session .chat-editing-session .chat-editing-session-container .chat-editing-session-overview {
778
display: flex;
779
flex-direction: row;
780
justify-content: space-between;
781
gap: 6px;
782
padding-right: 4px;
783
cursor: pointer;
784
}
785
786
.interactive-session .chat-editing-session .chat-editing-session-container .chat-editing-session-overview > .working-set-title {
787
color: var(--vscode-descriptionForeground);
788
font-size: 11px;
789
white-space: nowrap;
790
overflow: hidden;
791
text-overflow: ellipsis;
792
align-content: center;
793
}
794
795
.interactive-session .chat-editing-session .chat-editing-session-container .chat-editing-session-overview > .working-set-title .working-set-count.file-limit-reached {
796
color: var(--vscode-notificationsWarningIcon-foreground);
797
}
798
799
/* Inline added/removed line count styling */
800
.interactive-session .chat-editing-session .chat-editing-session-container .chat-editing-session-overview .working-set-line-counts {
801
display: inline-flex;
802
gap: 4px;
803
margin-left: 6px;
804
font-weight: 500;
805
}
806
807
.interactive-session .chat-editing-session .chat-editing-session-container .chat-editing-session-overview .working-set-line-counts .working-set-lines-added {
808
color: var(--vscode-chat-linesAddedForeground);
809
}
810
811
.interactive-session .chat-editing-session .chat-editing-session-container .chat-editing-session-overview .working-set-line-counts .working-set-lines-removed {
812
color: var(--vscode-chat-linesRemovedForeground);
813
}
814
815
.interactive-session .chat-editing-session .chat-editing-session-list .working-set-line-counts {
816
margin-left: 6px;
817
display: inline-flex;
818
gap: 4px;
819
font-size: 11px;
820
}
821
822
.interactive-session .chat-editing-session .chat-editing-session-list .working-set-line-counts .working-set-lines-added {
823
color: var(--vscode-chat-linesAddedForeground);
824
}
825
826
.interactive-session .chat-editing-session .chat-editing-session-list .working-set-line-counts .working-set-lines-removed {
827
color: var(--vscode-chat-linesRemovedForeground);
828
}
829
830
.interactive-session .chat-editing-session .working-set-title {
831
832
.monaco-button {
833
padding: 4px 6px 4px 0px;
834
border-radius: 2px;
835
border: none;
836
background-color: unset;
837
color: var(--vscode-foreground)
838
}
839
840
.monaco-button:focus-visible {
841
outline-offset: -1px !important;
842
}
843
}
844
845
846
.interactive-session .chat-editing-session .chat-editing-session-container .monaco-progress-container {
847
position: relative;
848
}
849
850
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions,
851
.interactive-session .chat-editing-session .chat-editing-session-actions {
852
display: flex;
853
flex-direction: row;
854
flex-wrap: nowrap;
855
gap: 6px;
856
align-items: center;
857
}
858
859
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions {
860
margin: 3px 0px;
861
overflow: hidden;
862
}
863
864
.interactive-session .chat-editing-session .monaco-button {
865
height: 17px;
866
width: fit-content;
867
padding: 2px 6px;
868
font-size: 11px;
869
background-color: var(--vscode-button-background);
870
border: 1px solid var(--vscode-button-border);
871
color: var(--vscode-button-foreground);
872
}
873
874
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button:hover {
875
background-color: var(--vscode-button-hoverBackground);
876
}
877
878
.interactive-session .chat-editing-session .chat-editing-session-actions-group {
879
display: flex;
880
flex-direction: row;
881
flex-wrap: wrap;
882
gap: 6px;
883
}
884
885
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button.codicon.codicon-close {
886
width: 17px;
887
height: 17px;
888
display: flex;
889
align-items: center;
890
justify-content: center;
891
font-size: 16px;
892
color: var(--vscode-descriptionForeground);
893
background-color: transparent;
894
border: none;
895
padding: 0;
896
border-radius: 5px;
897
cursor: pointer;
898
}
899
900
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button.secondary {
901
color: var(--vscode-foreground);
902
background-color: transparent;
903
border: none;
904
height: 22px;
905
padding-left: 0px;
906
cursor: pointer;
907
display: flex;
908
justify-content: start;
909
}
910
911
.chat-attachments-container {
912
display: flex;
913
flex-direction: row;
914
gap: 4px;
915
margin-top: 6px;
916
flex-wrap: wrap;
917
cursor: default;
918
}
919
920
.chat-related-files {
921
display: flex;
922
flex-wrap: wrap;
923
align-items: center;
924
gap: 4px;
925
max-width: 100%;
926
}
927
928
.chat-related-files .monaco-button-dropdown .monaco-text-button {
929
font-size: 11px;
930
justify-content: left;
931
width: fit-content;
932
padding: 0px;
933
border: none;
934
height: 18px;
935
}
936
937
.chat-related-files .monaco-button-dropdown .monaco-text-button span {
938
font-style: italic;
939
height: 18px;
940
opacity: 0.7;
941
}
942
943
.chat-related-files .monaco-button-dropdown {
944
border-radius: 4px;
945
height: 18px;
946
border: 1px solid var(--vscode-input-border);
947
border-style: dashed;
948
align-items: center;
949
overflow: hidden;
950
gap: 2px;
951
padding: 0 4px;
952
}
953
954
.chat-related-files .monaco-button.codicon.codicon-add {
955
display: flex;
956
flex-direction: column;
957
color: var(--vscode-descriptionForeground);
958
padding-top: 3px;
959
margin-left: -4px;
960
padding-left: 4px;
961
font-size: 14px;
962
/* The + codicon is large, make it look more like the x codicon */
963
height: calc(100% - 3px);
964
width: 17px;
965
outline-offset: -2px !important;
966
}
967
968
.interactive-session .chat-related-files .monaco-icon-label::before {
969
padding: 4px 3px 0 2px;
970
}
971
972
.interactive-session .chat-editing-session .chat-related-files .monaco-button.secondary:first-child {
973
margin: 3px 0px 3px 3px;
974
flex-shrink: 0;
975
}
976
977
.interactive-session .chat-editing-session .chat-related-files .monaco-button.secondary.monaco-icon-label::before {
978
display: inline-flex;
979
align-items: center;
980
}
981
982
.interactive-session .chat-editing-session .chat-related-files .monaco-button.secondary:only-child {
983
width: 100%;
984
}
985
986
.interactive-session .chat-editing-session .chat-related-files .monaco-button.secondary.disabled {
987
cursor: initial;
988
}
989
990
.interactive-session .chat-editing-session .chat-related-files .monaco-button.secondary .codicon {
991
font-size: 12px;
992
margin-left: 4px;
993
}
994
995
.interactive-session .chat-editing-session .chat-editing-session-actions .monaco-button.secondary.monaco-text-button.codicon {
996
background-color: transparent;
997
border-color: transparent;
998
color: var(--vscode-foreground);
999
cursor: pointer;
1000
height: 16px;
1001
padding: 0px;
1002
border-radius: 2px;
1003
display: inline-flex;
1004
}
1005
1006
.interactive-session .chat-editing-session .chat-editing-session-actions .monaco-button.secondary.monaco-text-button {
1007
background-color: var(--vscode-button-secondaryBackground);
1008
border: 1px solid var(--vscode-button-border);
1009
color: var(--vscode-button-secondaryForeground);
1010
}
1011
1012
.interactive-session .chat-editing-session .chat-editing-session-actions .monaco-button.secondary:hover {
1013
background-color: var(--vscode-button-secondaryHoverBackground);
1014
color: var(--vscode-button-secondaryForeground);
1015
}
1016
1017
/* The Add Files button is currently implemented as a secondary button but should not have the secondary button background */
1018
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button.secondary:hover {
1019
background-color: var(--vscode-toolbar-hoverBackground);
1020
}
1021
1022
.interactive-session .chat-editing-session .chat-editing-session-actions .monaco-button.secondary.monaco-text-button.codicon:not(.disabled):hover,
1023
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button:hover {
1024
background-color: var(--vscode-toolbar-hoverBackground);
1025
}
1026
1027
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button,
1028
.interactive-session .chat-editing-session .chat-editing-session-actions .monaco-button {
1029
overflow: hidden;
1030
text-wrap: nowrap;
1031
}
1032
1033
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button-dropdown.sidebyside-button {
1034
align-items: center;
1035
border-radius: 2px;
1036
}
1037
1038
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button-dropdown.sidebyside-button .monaco-button,
1039
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button-dropdown.sidebyside-button .monaco-button:hover {
1040
border-right: 1px solid transparent;
1041
background-color: unset;
1042
padding: 0;
1043
}
1044
1045
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button-dropdown.sidebyside-button > .separator {
1046
border-right: 1px solid transparent;
1047
padding: 0 1px;
1048
height: 22px;
1049
}
1050
1051
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button-dropdown.sidebyside-button:hover > .separator {
1052
border-color: var(--vscode-input-border, transparent);
1053
}
1054
1055
.interactive-session .chat-editing-session .chat-editing-session-toolbar-actions .monaco-button-dropdown.sidebyside-button:hover {
1056
background-color: var(--vscode-toolbar-hoverBackground);
1057
}
1058
1059
.interactive-session .interactive-input-part.compact .chat-input-container {
1060
display: flex;
1061
justify-content: space-between;
1062
padding-bottom: 0;
1063
border-radius: 2px;
1064
}
1065
1066
.interactive-session .interactive-input-and-side-toolbar {
1067
display: flex;
1068
gap: 4px;
1069
align-items: center;
1070
position: relative;
1071
}
1072
1073
.interactive-session .chat-input-container.focused {
1074
border-color: var(--vscode-focusBorder);
1075
}
1076
1077
.chat-editor-container .monaco-editor .mtk1 {
1078
color: var(--vscode-input-foreground);
1079
}
1080
1081
.interactive-session .chat-editor-container .monaco-editor .chat-prompt-spinner {
1082
transform-origin: 6px 6px;
1083
font-size: 12px;
1084
}
1085
1086
.interactive-session .interactive-input-part .chat-editor-container .interactive-input-editor .monaco-editor,
1087
.interactive-session .interactive-input-part .chat-editor-container .interactive-input-editor .monaco-editor .monaco-editor-background {
1088
background-color: var(--vscode-input-background);
1089
}
1090
1091
.interactive-session .interactive-input-part.editing .chat-input-container .chat-editor-container .monaco-editor,
1092
.interactive-session .interactive-input-part.editing .chat-input-container .chat-editor-container .monaco-editor .monaco-editor-background,
1093
.interactive-session .interactive-request.editing .interactive-input-part .chat-input-container .chat-editor-container .monaco-editor,
1094
.interactive-session .interactive-request.editing .interactive-input-part .chat-input-container .chat-editor-container .monaco-editor .monaco-editor-background {
1095
background-color: transparent;
1096
}
1097
1098
.interactive-session .interactive-input-part.editing .chat-input-container,
1099
.interactive-session .interactive-request.editing .interactive-input-part .chat-input-container {
1100
background-color: var(--vscode-chat-requestBubbleBackground);
1101
}
1102
1103
1104
.interactive-session .chat-editor-container .monaco-editor .cursors-layer {
1105
padding-left: 4px;
1106
}
1107
1108
.interactive-session .chat-input-toolbars {
1109
display: flex;
1110
}
1111
1112
.interactive-session .chat-input-toolbars :first-child {
1113
margin-right: auto;
1114
}
1115
1116
.interactive-session .chat-input-toolbars .tool-warning-indicator {
1117
position: absolute;
1118
bottom: 0;
1119
right: 0;
1120
font-size: 9px !important;
1121
color: var(--vscode-problemsWarningIcon-foreground);
1122
background: var(--vscode-input-background);
1123
width: fit-content;
1124
height: fit-content;
1125
border-radius: 100%;
1126
}
1127
1128
.interactive-session .chat-input-toolbars > .chat-input-toolbar {
1129
min-width: 0px;
1130
1131
.chat-modelPicker-item {
1132
min-width: 0px;
1133
1134
.action-label {
1135
min-width: 0px;
1136
1137
.chat-model-label {
1138
overflow: hidden;
1139
text-overflow: ellipsis;
1140
}
1141
1142
.codicon-warning {
1143
color: var(--vscode-problemsWarningIcon-foreground);
1144
}
1145
1146
span + .chat-model-label {
1147
margin-left: 2px;
1148
}
1149
}
1150
1151
.codicon {
1152
flex-shrink: 0;
1153
}
1154
}
1155
}
1156
1157
1158
1159
.interactive-session .chat-input-toolbars .chat-modelPicker-item .action-label {
1160
height: 16px;
1161
padding: 3px 0px 3px 6px;
1162
display: flex;
1163
align-items: center;
1164
}
1165
1166
1167
.interactive-session .chat-input-toolbars .chat-modelPicker-item .action-label .codicon-chevron-down {
1168
font-size: 12px;
1169
margin-left: 2px;
1170
}
1171
1172
.interactive-session .chat-input-toolbars .monaco-action-bar .actions-container {
1173
display: flex;
1174
gap: 4px;
1175
}
1176
1177
.interactive-session .chat-input-toolbars .codicon-debug-stop {
1178
color: var(--vscode-icon-foreground) !important;
1179
}
1180
1181
.interactive-response .interactive-result-code-block .interactive-result-editor .monaco-editor,
1182
.interactive-response .interactive-result-code-block .interactive-result-editor .monaco-editor .margin,
1183
.interactive-response .interactive-result-code-block .interactive-result-editor .monaco-editor .monaco-editor-background {
1184
background-color: var(--vscode-interactive-result-editor-background-color) !important;
1185
}
1186
1187
.interactive-item-compact .interactive-result-code-block {
1188
margin: 0 0 8px 0;
1189
}
1190
1191
.interactive-item-container .interactive-result-code-block .monaco-toolbar .monaco-action-bar .actions-container {
1192
padding-inline-start: unset;
1193
}
1194
1195
1196
@keyframes kf-chat-editing-atomic-edit {
1197
0% {
1198
opacity: 0.8;
1199
}
1200
1201
100% {
1202
opacity: 0;
1203
}
1204
}
1205
1206
.monaco-editor .chat-editing-atomic-edit {
1207
z-index: 1;
1208
opacity: 0.8;
1209
background-color: var(--vscode-editor-background);
1210
animation: 350ms kf-chat-editing-atomic-edit ease-out;
1211
}
1212
1213
.monaco-editor .chat-editing-pending-edit {
1214
z-index: 1;
1215
opacity: 0.6;
1216
background-color: var(--vscode-editor-background);
1217
}
1218
1219
.monaco-editor .chat-editing-last-edit {
1220
background-color: var(--vscode-editor-rangeHighlightBackground);
1221
box-sizing: border-box;
1222
border: 1px solid var(--vscode-editor-rangeHighlightBorder);
1223
}
1224
1225
@property --chat-editing-last-edit-shift {
1226
syntax: '<percentage>';
1227
initial-value: 100%;
1228
inherits: false;
1229
}
1230
1231
@keyframes kf-chat-editing-last-edit-shift {
1232
0% {
1233
--chat-editing-last-edit-shift: 100%;
1234
}
1235
1236
50% {
1237
--chat-editing-last-edit-shift: 7%;
1238
}
1239
1240
100% {
1241
--chat-editing-last-edit-shift: 100%;
1242
}
1243
}
1244
1245
.monaco-editor .chat-editing-last-edit-line {
1246
--chat-editing-last-edit-shift: 100%;
1247
background: linear-gradient(45deg, var(--vscode-editor-rangeHighlightBackground), var(--chat-editing-last-edit-shift), transparent);
1248
animation: 2.3s kf-chat-editing-last-edit-shift ease-in-out infinite;
1249
animation-delay: 330ms;
1250
}
1251
1252
1253
.chat-notification-widget .chat-info-codicon,
1254
.chat-notification-widget .chat-error-codicon,
1255
.chat-notification-widget .chat-warning-codicon {
1256
display: flex;
1257
align-items: start;
1258
gap: 8px;
1259
}
1260
1261
.interactive-item-container .value .chat-notification-widget .rendered-markdown p {
1262
margin: 0;
1263
}
1264
1265
.interactive-response .interactive-response-error-details {
1266
display: flex;
1267
align-items: start;
1268
gap: 6px;
1269
}
1270
1271
.interactive-response .interactive-response-error-details .rendered-markdown :last-child {
1272
margin-bottom: 0px;
1273
}
1274
1275
.interactive-response .interactive-response-error-details .codicon {
1276
margin-top: 1px;
1277
}
1278
1279
.chat-used-context-list .codicon-warning {
1280
color: var(--vscode-notificationsWarningIcon-foreground);
1281
/* Have to override default styles which apply to all lists */
1282
}
1283
1284
.chat-used-context-list .monaco-icon-label-container {
1285
color: var(--vscode-interactive-session-foreground);
1286
}
1287
1288
.chat-attached-context .chat-attached-context-attachment .monaco-icon-name-container.warning,
1289
.chat-attached-context .chat-attached-context-attachment .monaco-icon-suffix-container.warning,
1290
.chat-used-context-list .monaco-icon-name-container.warning,
1291
.chat-used-context-list .monaco-icon-suffix-container.warning {
1292
color: var(--vscode-notificationsWarningIcon-foreground);
1293
}
1294
1295
.chat-attached-context .chat-attached-context-attachment.show-file-icons.warning,
1296
.chat-attached-context .chat-attached-context-attachment.show-file-icons.partial-warning {
1297
border-color: var(--vscode-notificationsWarningIcon-foreground);
1298
}
1299
1300
/**
1301
* Styles for the `reusable prompts` attachment widget.
1302
*/
1303
.chat-attached-context-attachment .prompt-type {
1304
opacity: 0.7;
1305
font-size: .9em;
1306
margin-left: 0.5em;
1307
}
1308
1309
.chat-attached-context-attachment.warning {
1310
color: var(--vscode-notificationsWarningIcon-foreground);
1311
}
1312
1313
.chat-attached-context-attachment.error {
1314
color: var(--vscode-notificationsErrorIcon-foreground);
1315
}
1316
1317
.chat-attached-context-attachment .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-suffix-container > .label-suffix {
1318
color: var(--vscode-peekViewTitleDescription-foreground);
1319
opacity: 1;
1320
}
1321
1322
.chat-notification-widget .chat-warning-codicon .codicon-warning,
1323
.chat-quota-error-widget .codicon-warning {
1324
color: var(--vscode-notificationsWarningIcon-foreground) !important;
1325
/* Have to override default styles which apply to all lists */
1326
}
1327
1328
.chat-notification-widget .chat-error-codicon .codicon-error,
1329
.interactive-response .interactive-response-error-details .codicon-error {
1330
color: var(--vscode-errorForeground) !important;
1331
/* Have to override default styles which apply to all lists */
1332
}
1333
1334
.chat-notification-widget .chat-info-codicon .codicon-info,
1335
.interactive-response .interactive-response-error-details .codicon-info {
1336
color: var(--vscode-notificationsInfoIcon-foreground) !important;
1337
/* Have to override default styles which apply to all lists */
1338
}
1339
1340
.interactive-session .interactive-input-part {
1341
margin: 0px 16px;
1342
padding: 4px 0 12px 0px;
1343
display: flex;
1344
flex-direction: column;
1345
gap: 4px;
1346
}
1347
1348
.interactive-session .interactive-input-part.compact {
1349
margin: 0;
1350
padding: 8px 0 0 0
1351
}
1352
1353
.action-item.chat-attachment-button .action-label,
1354
.interactive-session .chat-attached-context .chat-attached-context-attachment {
1355
display: flex;
1356
gap: 2px;
1357
overflow: hidden;
1358
font-size: 11px;
1359
padding: 0 4px;
1360
border: 1px solid var(--vscode-chat-requestBorder, var(--vscode-input-background, transparent));
1361
border-radius: 4px;
1362
height: 18px;
1363
max-width: 100%;
1364
width: fit-content;
1365
}
1366
1367
.interactive-session .interactive-list .chat-attached-context .chat-attached-context-attachment {
1368
font-family: var(--vscode-chat-font-family, inherit);
1369
font-size: var(--vscode-chat-font-size-body-xs);
1370
}
1371
1372
.action-item.chat-attachment-button > .action-label > .codicon {
1373
font-size: 14px;
1374
height: auto;
1375
}
1376
1377
.action-item.chat-mcp {
1378
display: flex !important;
1379
1380
&.chat-mcp-has-action .action-label {
1381
border-top-right-radius: 0;
1382
border-bottom-right-radius: 0;
1383
border-right: 0;
1384
}
1385
1386
.chat-mcp-action {
1387
align-self: stretch;
1388
padding: 0 2px;
1389
border-radius: 0;
1390
outline: 0;
1391
border: 0;
1392
border-top-right-radius: 4px;
1393
border-bottom-right-radius: 4px;
1394
background: var(--vscode-button-background);
1395
cursor: pointer;
1396
1397
.codicon {
1398
width: fit-content;
1399
color: var(--vscode-button-foreground);
1400
}
1401
1402
.codicon::before {
1403
font-size: 14px;
1404
}
1405
1406
&.chat-mcp-action-error {
1407
background: var(--vscode-activityErrorBadge-background);
1408
1409
.codicon {
1410
color: var(--vscode-activityErrorBadge-foreground);
1411
}
1412
}
1413
}
1414
}
1415
1416
.action-item.chat-attached-context-attachment.chat-add-files .action-label.codicon::before {
1417
font: normal normal normal 16px/1 codicon;
1418
}
1419
1420
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-button {
1421
display: flex;
1422
align-items: center;
1423
margin-top: -2px;
1424
margin-right: -4px;
1425
padding-right: 4px;
1426
padding-left: 2px;
1427
height: calc(100% + 4px);
1428
outline-offset: -4px;
1429
}
1430
1431
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-button.codicon.codicon-plus {
1432
padding: 0 5px 0 3px;
1433
font-size: 12px;
1434
}
1435
1436
.chat-related-files .monaco-button.codicon.codicon-add:hover,
1437
.action-item.chat-attached-context-attachment.chat-add-files:hover,
1438
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-button:hover {
1439
cursor: pointer;
1440
background: var(--vscode-toolbar-hoverBackground);
1441
}
1442
1443
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit.disabled .monaco-button:hover {
1444
cursor: pointer;
1445
background: transparent;
1446
}
1447
1448
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label-container {
1449
display: flex;
1450
1451
.monaco-icon-suffix-container {
1452
overflow: hidden;
1453
text-overflow: ellipsis;
1454
}
1455
}
1456
1457
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label-container .monaco-highlighted-label {
1458
display: inline-flex;
1459
align-items: center;
1460
overflow: hidden;
1461
white-space: nowrap;
1462
text-overflow: ellipsis;
1463
}
1464
1465
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label .monaco-button.codicon.codicon-close,
1466
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-button.codicon.codicon-close {
1467
color: var(--vscode-descriptionForeground);
1468
cursor: pointer;
1469
}
1470
1471
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label .codicon {
1472
font-size: 14px;
1473
}
1474
1475
.interactive-session .chat-input-container .chat-attached-context {
1476
display: contents;
1477
}
1478
1479
.interactive-session .chat-attached-context {
1480
display: flex;
1481
flex-wrap: wrap;
1482
gap: 4px;
1483
}
1484
1485
.interactive-session .chat-attachment-toolbar .actions-container {
1486
gap: 4px;
1487
flex-wrap: wrap;
1488
}
1489
1490
.interactive-session .interactive-input-part.compact .chat-attached-context {
1491
padding-bottom: 0px;
1492
display: flex;
1493
gap: 4px;
1494
flex-wrap: wrap;
1495
}
1496
1497
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit {
1498
display: flex;
1499
gap: 4px;
1500
}
1501
1502
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit .chat-implicit-hint {
1503
opacity: 0.7;
1504
font-size: .9em;
1505
}
1506
1507
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit.disabled .chat-implicit-hint {
1508
font-style: italic;
1509
}
1510
1511
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit.disabled {
1512
border-style: dashed;
1513
}
1514
1515
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit.disabled:focus {
1516
outline: none;
1517
border-color: var(--vscode-focusBorder);
1518
}
1519
1520
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit.disabled .monaco-icon-label .label-name {
1521
text-decoration: line-through;
1522
font-style: italic;
1523
opacity: 0.8;
1524
}
1525
1526
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label {
1527
gap: 4px;
1528
}
1529
1530
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label::before {
1531
height: auto;
1532
padding: 0;
1533
line-height: 100% !important;
1534
align-self: center;
1535
1536
background-size: contain;
1537
background-position: center;
1538
background-repeat: no-repeat;
1539
}
1540
1541
.interactive-session .chat-attached-context .chat-attached-context-attachment .monaco-icon-label.predefined-file-icon::before {
1542
padding: 0 0 0 2px;
1543
align-content: center;
1544
}
1545
1546
.interactive-session .interactive-item-container.interactive-request .chat-attached-context .chat-attached-context-attachment {
1547
padding-right: 6px;
1548
}
1549
1550
.interactive-session-followups {
1551
display: flex;
1552
flex-direction: column;
1553
gap: 6px;
1554
align-items: start;
1555
}
1556
1557
.interactive-session-followups .monaco-button {
1558
text-align: left;
1559
width: initial;
1560
}
1561
1562
.interactive-session-followups .monaco-button .codicon {
1563
margin-left: 0;
1564
margin-top: 1px;
1565
}
1566
1567
.interactive-item-container .interactive-response-followups .monaco-button {
1568
padding: 4px 8px;
1569
}
1570
1571
/* .interactive-session .interactive-input-part .interactive-input-followups .interactive-session-followups {
1572
margin-bottom: 4px;
1573
} */
1574
1575
.interactive-session .interactive-input-part .interactive-input-followups .interactive-session-followups .monaco-button {
1576
display: block;
1577
color: var(--vscode-textLink-foreground);
1578
font-size: 12px;
1579
1580
/* clamp to max 3 lines */
1581
display: -webkit-box;
1582
line-clamp: 3;
1583
-webkit-line-clamp: 3;
1584
-webkit-box-orient: vertical;
1585
overflow: hidden;
1586
}
1587
1588
.interactive-session .interactive-input-part .interactive-input-followups .interactive-session-followups code {
1589
font-family: var(--monaco-monospace-font);
1590
font-size: 11px;
1591
}
1592
1593
.interactive-session .interactive-input-part .interactive-input-followups .interactive-session-followups .monaco-button .codicon-sparkle {
1594
float: left;
1595
}
1596
1597
.interactive-session-followups .monaco-button.interactive-followup-reply {
1598
padding: 0px;
1599
border: none;
1600
}
1601
1602
.interactive-item-container .monaco-toolbar .codicon {
1603
/* Very aggressive list styles try to apply focus colors to every codicon in a list row. */
1604
color: var(--vscode-icon-foreground) !important;
1605
}
1606
1607
/* #region Quick Chat */
1608
1609
.quick-input-widget .interactive-session .interactive-input-part {
1610
padding: 8px 6px 8px 6px;
1611
margin: 0 3px;
1612
}
1613
1614
.quick-input-widget .interactive-session .interactive-input-part .chat-input-toolbars .monaco-toolbar,
1615
.quick-input-widget .interactive-session .interactive-input-part .chat-input-toolbars .actions-container {
1616
height: initial;
1617
}
1618
1619
.quick-input-widget .interactive-session .interactive-input-part .chat-input-toolbars {
1620
margin-bottom: 1px;
1621
align-items: flex-end;
1622
}
1623
1624
.quick-input-widget .interactive-session .chat-input-container {
1625
margin: 0;
1626
border-radius: 2px;
1627
padding: 0 4px 0 6px;
1628
}
1629
1630
.quick-input-widget .interactive-list {
1631
border-bottom-right-radius: 6px;
1632
border-bottom-left-radius: 6px;
1633
}
1634
1635
.quick-input-widget .interactive-response {
1636
min-height: 86px;
1637
}
1638
1639
/* #endregion */
1640
1641
.interactive-response-progress-tree .monaco-list-row:not(.selected) .monaco-tl-row:hover {
1642
background-color: var(--vscode-list-hoverBackground);
1643
}
1644
1645
.interactive-response-progress-tree {
1646
margin: 16px 0px;
1647
}
1648
1649
.interactive-response-progress-tree.focused {
1650
border-color: var(--vscode-focusBorder, transparent);
1651
}
1652
1653
.interactive-item-container .value .interactive-response-placeholder-codicon .codicon {
1654
color: var(--vscode-editorGhostText-foreground);
1655
}
1656
1657
.interactive-item-container .value .interactive-response-placeholder-content {
1658
color: var(--vscode-editorGhostText-foreground);
1659
font-size: 12px;
1660
margin-bottom: 16px;
1661
}
1662
1663
.interactive-item-container .value .interactive-response-placeholder-content p {
1664
margin: 0;
1665
}
1666
1667
.interactive-response .interactive-response-codicon-details {
1668
display: flex;
1669
align-items: start;
1670
gap: 6px;
1671
}
1672
1673
.chat-used-context-list .monaco-list {
1674
border: none;
1675
border-radius: 4px;
1676
width: auto;
1677
}
1678
1679
.interactive-item-container .chat-resource-widget {
1680
background-color: var(--vscode-chat-slashCommandBackground);
1681
color: var(--vscode-chat-slashCommandForeground);
1682
}
1683
1684
1685
.interactive-item-container .chat-resource-widget,
1686
.interactive-item-container .chat-agent-widget .monaco-button {
1687
border-radius: 4px;
1688
padding: 1px 3px;
1689
}
1690
1691
.interactive-item-container .chat-agent-command {
1692
background-color: var(--vscode-chat-slashCommandBackground);
1693
color: var(--vscode-chat-slashCommandForeground);
1694
display: inline-flex;
1695
align-items: center;
1696
margin-right: 0.5ch;
1697
border-radius: 4px;
1698
padding: 0 0 0 3px;
1699
}
1700
1701
.interactive-item-container .chat-agent-command > .monaco-button {
1702
display: flex;
1703
align-self: stretch;
1704
align-items: center;
1705
cursor: pointer;
1706
padding: 0 2px;
1707
margin-left: 2px;
1708
border-top-right-radius: 4px;
1709
border-bottom-right-radius: 4px;
1710
}
1711
1712
.interactive-item-container .chat-agent-command > .monaco-button:hover {
1713
background: var(--vscode-toolbar-hoverBackground);
1714
}
1715
1716
.interactive-item-container .chat-agent-widget .monaco-text-button {
1717
display: inline;
1718
border: none;
1719
}
1720
1721
.interactive-session .checkpoint-file-changes-summary {
1722
display: flex;
1723
flex-direction: column;
1724
flex-wrap: wrap;
1725
align-items: center;
1726
border-radius: 4px;
1727
border: 1px solid var(--vscode-chat-requestBorder);
1728
1729
.chat-view-changes-icon {
1730
padding: 3px;
1731
float: right;
1732
cursor: pointer;
1733
}
1734
1735
.chat-view-changes-icon:hover {
1736
border-radius: 5px;
1737
background-color: var(--vscode-toolbar-hoverBackground);
1738
}
1739
1740
.insertions-and-deletions {
1741
display: flex;
1742
margin-right: 5px;
1743
font-size: 12px;
1744
}
1745
1746
.checkpoint-file-changes-summary-header {
1747
padding: 3px 3px 3px 3px;
1748
width: 100%;
1749
display: flex;
1750
box-sizing: border-box;
1751
justify-content: space-between;
1752
}
1753
1754
.checkpoint-file-changes-summary-header .monaco-button-mdlabel {
1755
display: flex;
1756
width: 100%;
1757
text-align: left;
1758
align-items: center;
1759
}
1760
1761
.checkpoint-file-changes-summary-header .chat-file-changes-label {
1762
width: 100%;
1763
float: left;
1764
}
1765
1766
.checkpoint-file-changes-summary-header .chat-file-changes-label .monaco-button {
1767
width: 100%;
1768
}
1769
1770
.checkpoint-file-changes-summary-header .chat-file-changes-label .monaco-button .codicon {
1771
font-size: 16px;
1772
}
1773
1774
.chat-summary-list {
1775
width: 100%;
1776
max-width: 100%;
1777
padding: 0px;
1778
margin-bottom: 0px;
1779
border-bottom: 0px;
1780
border-left: 0px;
1781
border-right: 0px;
1782
box-sizing: border-box;
1783
border-radius: 0px;
1784
}
1785
1786
.chat-summary-list .monaco-icon-label {
1787
display: flex;
1788
}
1789
1790
.chat-summary-list .monaco-scrollable-element {
1791
border-radius: 4px;
1792
}
1793
1794
.insertions {
1795
color: var(--vscode-chat-linesAddedForeground);
1796
font-weight: bold;
1797
padding-left: 5px;
1798
padding-right: 5px;
1799
}
1800
1801
.deletions {
1802
color: var(--vscode-chat-linesRemovedForeground);
1803
font-weight: bold;
1804
}
1805
}
1806
1807
.interactive-session .checkpoint-file-changes-summary.chat-file-changes-collapsed .chat-summary-list,
1808
.interactive-session .chat-used-context.chat-used-context-collapsed .chat-used-context-list {
1809
display: none;
1810
}
1811
1812
.interactive-session .chat-used-context {
1813
display: flex;
1814
flex-direction: column;
1815
gap: 2px;
1816
}
1817
1818
.interactive-response-progress-tree,
1819
.chat-notification-widget,
1820
.chat-summary-list,
1821
.chat-used-context-list,
1822
.chat-quota-error-widget {
1823
border: 1px solid var(--vscode-chat-requestBorder);
1824
border-radius: 4px;
1825
margin-bottom: 8px;
1826
}
1827
1828
.interactive-response-progress-tree,
1829
.interactive-session .chat-summary-list,
1830
.interactive-session .chat-used-context-list {
1831
padding: 4px 3px;
1832
1833
.monaco-icon-label {
1834
padding: 0px 3px;
1835
}
1836
}
1837
1838
.interactive-session .chat-editing-session-list {
1839
1840
.monaco-icon-label {
1841
padding: 0px 3px;
1842
}
1843
1844
.monaco-icon-label.excluded {
1845
color: var(--vscode-notificationsWarningIcon-foreground)
1846
}
1847
}
1848
1849
.interactive-session .chat-editing-session-list.collapsed {
1850
display: none;
1851
}
1852
1853
.interactive-session .chat-summary-list .monaco-list .monaco-list-row {
1854
border-radius: 4px;
1855
}
1856
1857
.interactive-session .chat-summary-list .monaco-list .monaco-list-row:hover {
1858
background-color: var(--vscode-list-hoverBackground) !important;
1859
}
1860
1861
.interactive-session .chat-used-context-list .monaco-list .monaco-list-row {
1862
border-radius: 2px;
1863
}
1864
1865
.interactive-session .chat-file-changes-label {
1866
color: var(--vscode-interactive-session-foreground);
1867
user-select: none;
1868
}
1869
1870
.interactive-session .chat-used-context-label {
1871
font-size: var(--vscode-chat-font-size-body-s);
1872
font-family: var(--vscode-chat-font-family, inherit);
1873
color: var(--vscode-descriptionForeground);
1874
user-select: none;
1875
1876
code {
1877
font-size: var(--vscode-chat-font-size-body-xs);
1878
}
1879
}
1880
1881
.interactive-session .chat-file-changes-label:hover,
1882
.interactive-session .chat-used-context-label:hover {
1883
opacity: unset;
1884
}
1885
1886
.interactive-session .chat-file-changes-label .monaco-button,
1887
.interactive-session .chat-used-context-label .monaco-button {
1888
width: fit-content;
1889
border: none;
1890
border-radius: 4px;
1891
gap: 4px;
1892
text-align: initial;
1893
justify-content: initial;
1894
}
1895
1896
.interactive-session .chat-used-context-label .monaco-button {
1897
/* unset Button styles */
1898
display: inline-flex;
1899
}
1900
1901
.interactive-session .chat-file-changes-label .monaco-button {
1902
padding: 2px 2px 2px 2px;
1903
}
1904
1905
.interactive-session .chat-used-context-label .monaco-button {
1906
padding: 2px 6px 2px 2px;
1907
}
1908
1909
.interactive-session .chat-file-changes-label .monaco-button:hover {
1910
background-color: var(--vscode-toolbar-hoverBackground);
1911
}
1912
1913
.interactive-session .chat-used-context-label .monaco-button:hover {
1914
background-color: var(--vscode-list-hoverBackground);
1915
color: var(--vscode-foreground);
1916
1917
}
1918
1919
.interactive-session .chat-file-changes-label .monaco-text-button:focus,
1920
.interactive-session .chat-used-context-label .monaco-text-button:focus {
1921
outline: none;
1922
}
1923
1924
.interactive-session .chat-file-changes-label .monaco-text-button:focus-visible,
1925
.interactive-session .chat-used-context-label .monaco-text-button:focus-visible {
1926
outline: 1px solid var(--vscode-focusBorder);
1927
}
1928
1929
.interactive-session .chat-file-changes-label .monaco-button .codicon,
1930
.interactive-session .chat-used-context-label .monaco-button .codicon {
1931
font-size: var(--vscode-chat-font-size-body-s);
1932
}
1933
1934
.interactive-item-container .progress-container {
1935
display: flex;
1936
align-items: center;
1937
gap: 7px;
1938
margin: 0 0 6px 4px;
1939
1940
/* Tool calls transition from a progress to a collapsible list part, which needs to have this top padding.
1941
The working progress also can be replaced by a tool progress part. So align this padding so the text doesn't appear to shift. */
1942
padding-top: 2px;
1943
1944
> .codicon[class*='codicon-'] {
1945
font-size: var(--vscode-chat-font-size-body-s);
1946
1947
&::before {
1948
font-size: var(--vscode-chat-font-size-body-s);
1949
}
1950
}
1951
1952
.codicon {
1953
/* Very aggressive list styles try to apply focus colors to every codicon in a list row. */
1954
color: var(--vscode-icon-foreground) !important;
1955
1956
&.codicon-check {
1957
color: var(--vscode-debugIcon-startForeground) !important;
1958
}
1959
}
1960
1961
.rendered-markdown.progress-step {
1962
white-space: normal;
1963
1964
& > p {
1965
color: var(--vscode-descriptionForeground);
1966
font-size: var(--vscode-chat-font-size-body-s);
1967
margin: 0;
1968
1969
code {
1970
font-size: var(--vscode-chat-font-size-body-xs);
1971
}
1972
}
1973
1974
.chat-inline-anchor-widget {
1975
display: inline;
1976
}
1977
}
1978
}
1979
1980
.interactive-item-container .chat-command-button {
1981
display: flex;
1982
margin-bottom: 16px;
1983
}
1984
1985
.interactive-item-container .chat-notification-widget {
1986
display: flex;
1987
align-items: center;
1988
flex-direction: row;
1989
padding: 8px 12px;
1990
gap: 6px;
1991
}
1992
1993
.interactive-item-container .chat-confirmation-widget .interactive-result-code-block,
1994
.interactive-item-container .chat-confirmation-widget .chat-attached-context {
1995
margin-bottom: 8px;
1996
}
1997
1998
.interactive-item-container .chat-command-button .monaco-button .codicon {
1999
margin-left: 0;
2000
margin-top: 1px;
2001
}
2002
2003
.chat-code-citation-label {
2004
opacity: 0.7;
2005
white-space: pre-wrap;
2006
}
2007
2008
.chat-code-citation-button-container {
2009
display: inline;
2010
}
2011
2012
.chat-code-citation-button-container .monaco-button {
2013
display: inline;
2014
border: none;
2015
padding: 0;
2016
color: var(--vscode-textLink-foreground);
2017
}
2018
2019
.chat-attached-context-hover {
2020
padding: 0 6px;
2021
}
2022
2023
.chat-attached-context-hover .chat-attached-context-image-container {
2024
padding: 6px 0 4px;
2025
height: auto;
2026
width: 100%;
2027
display: block;
2028
}
2029
2030
.chat-attached-context-hover .chat-attached-context-image-container .chat-attached-context-image {
2031
width: 100%;
2032
height: 100%;
2033
object-fit: contain;
2034
display: block;
2035
max-height: 350px;
2036
max-width: 100%;
2037
min-width: 200px;
2038
min-height: 200px;
2039
2040
}
2041
2042
.chat-attached-context-hover .chat-attached-context-url {
2043
color: var(--vscode-textLink-foreground);
2044
cursor: pointer;
2045
margin-top: 4px;
2046
padding: 2px 0;
2047
width: 100%;
2048
overflow: hidden;
2049
text-overflow: ellipsis;
2050
white-space: nowrap;
2051
max-width: 100%;
2052
display: block;
2053
}
2054
2055
.chat-attached-context-hover .chat-attached-context-url-separator {
2056
border-top: 1px solid var(--vscode-chat-requestBorder);
2057
left: 0;
2058
right: 0;
2059
position: absolute;
2060
margin-top: 2px;
2061
}
2062
2063
.chat-attached-context-attachment .chat-attached-context-pill {
2064
font-size: 12px;
2065
display: inline-flex;
2066
align-items: center;
2067
padding: 2px 0 2px 0px;
2068
border-radius: 2px;
2069
margin-right: 1px;
2070
user-select: none;
2071
outline: none;
2072
border: none;
2073
}
2074
2075
.chat-attached-context-attachment .attachment-additional-info {
2076
opacity: 0.7;
2077
font-size: .9em;
2078
}
2079
2080
.chat-attached-context-attachment .chat-attached-context-pill-image {
2081
width: 14px;
2082
height: 14px;
2083
border-radius: 2px;
2084
object-fit: cover;
2085
}
2086
2087
.chat-attached-context-attachment .chat-attached-context-custom-text {
2088
vertical-align: middle;
2089
user-select: none;
2090
outline: none;
2091
border: none;
2092
white-space: nowrap;
2093
overflow: hidden;
2094
text-overflow: ellipsis;
2095
max-width: 100%;
2096
display: inline-block;
2097
}
2098
2099
.chat-attached-context-attachment.show-file-icons.warning .chat-attached-context-custom-text {
2100
color: var(--vscode-notificationsWarningIcon-foreground);
2101
text-decoration: line-through;
2102
}
2103
2104
.chat-attached-context-attachment.show-file-icons.partial-warning .chat-attached-context-custom-text {
2105
color: var(--vscode-notificationsWarningIcon-foreground);
2106
}
2107
2108
.interactive-session .chat-scroll-down {
2109
display: none;
2110
position: absolute;
2111
bottom: 7px;
2112
right: 12px;
2113
border-radius: 100%;
2114
width: 27px;
2115
height: 27px;
2116
2117
.codicon {
2118
margin: 0px;
2119
}
2120
}
2121
2122
.interactive-session.show-scroll-down .chat-scroll-down {
2123
display: initial;
2124
}
2125
2126
.chat-quota-error-widget {
2127
padding: 8px 12px;
2128
display: flex;
2129
gap: 6px;
2130
2131
.monaco-button {
2132
width: fit-content;
2133
padding: 2px 11px;
2134
}
2135
2136
.chat-quota-error-button {
2137
margin-top: 6px;
2138
margin-bottom: 2px;
2139
}
2140
2141
.chat-quota-error-secondary-button {
2142
margin-top: 6px;
2143
padding: 0px;
2144
border: none;
2145
}
2146
2147
.chat-quota-error-secondary-button,
2148
.chat-quota-wait-warning {
2149
font-size: 12px;
2150
}
2151
2152
.chat-quota-wait-warning {
2153
margin-top: 2px;
2154
}
2155
2156
.chat-quota-error-message {
2157
.rendered-markdown p {
2158
margin: 0px;
2159
}
2160
}
2161
}
2162
2163
.hideSuggestTextIcons .suggest-widget .monaco-list .monaco-list-row .suggest-icon.codicon-symbol-text::before {
2164
display: none;
2165
}
2166
2167
.interactive-session:not(.chat-widget > .interactive-session) {
2168
2169
.interactive-item-container {
2170
padding: 5px 16px;
2171
}
2172
2173
.interactive-item-container.interactive-request {
2174
align-items: flex-end;
2175
2176
}
2177
2178
.interactive-item-container.interactive-request:not(.editing):hover .request-hover {
2179
opacity: 1 !important;
2180
}
2181
2182
.interactive-item-container.interactive-request.confirmation-message {
2183
align-items: flex-start;
2184
2185
.checkpoint-container {
2186
display: none;
2187
}
2188
}
2189
2190
.interactive-item-container.interactive-request .value .rendered-markdown {
2191
background-color: var(--vscode-chat-requestBubbleBackground);
2192
border-radius: 8px;
2193
padding: 8px 12px;
2194
max-width: 90%;
2195
margin-left: auto;
2196
width: fit-content;
2197
margin-bottom: 5px;
2198
position: relative;
2199
}
2200
2201
.interactive-item-container.interactive-request .value .rendered-markdown {
2202
margin-left: auto;
2203
}
2204
2205
.interactive-item-container.interactive-request .value .rendered-markdown.clickable:hover {
2206
cursor: pointer;
2207
background-color: var(--vscode-chat-requestBubbleHoverBackground);
2208
}
2209
2210
.hc-black .interactive-item-container.interactive-request .value .rendered-markdown,
2211
.hc-light .interactive-item-container.interactive-request .value .rendered-markdown {
2212
border: 1px dotted var(--vscode-focusBorder);
2213
}
2214
2215
.interactive-item-container.interactive-request .value .rendered-markdown > :last-child {
2216
margin-bottom: 0px;
2217
}
2218
2219
.interactive-item-container.interactive-request .value > .rendered-markdown p {
2220
width: fit-content;
2221
}
2222
2223
.interactive-item-container.interactive-request .chat-attached-context {
2224
max-width: 100%;
2225
width: fit-content;
2226
justify-content: flex-end;
2227
margin-left: auto;
2228
padding-bottom: 5px;
2229
}
2230
2231
.interactive-request .header.header-disabled,
2232
.request-hover.has-no-actions,
2233
.request-hover.hidden,
2234
.request-hover.checkpoints-enabled.has-no-actions,
2235
.checkpoint-container.hidden,
2236
.checkpoint-restore-container.hidden {
2237
display: none;
2238
}
2239
2240
.request-hover {
2241
position: absolute;
2242
overflow: hidden;
2243
z-index: 100;
2244
background-color: var(--vscode-interactive-result-editor-background-color, var(--vscode-editor-background));
2245
border: 1px solid var(--vscode-chat-requestBorder);
2246
top: -13px;
2247
right: 20px;
2248
border-radius: 3px;
2249
width: 28px;
2250
height: 26px;
2251
}
2252
2253
.request-hover.expanded:not(.checkpoints-enabled) {
2254
width: 50px;
2255
}
2256
2257
.request-hover.checkpoints-enabled {
2258
top: 15px;
2259
}
2260
2261
.request-hover.editing {
2262
opacity: 1 !important;
2263
}
2264
2265
.request-hover:not(.expanded) .actions-container {
2266
width: 22px;
2267
height: 22px;
2268
}
2269
2270
.request-hover.expanded .actions-container {
2271
padding: 0 3px;
2272
}
2273
2274
.request-hover:not(.expanded) .actions-container {
2275
2276
.action-label.codicon-discard,
2277
.action-label.codicon-x,
2278
.action-label.codicon-edit {
2279
margin-top: 4px;
2280
padding: 3px 3px;
2281
}
2282
}
2283
2284
.request-hover:focus-within {
2285
opacity: 1 !important;
2286
}
2287
2288
2289
.checkpoint-container,
2290
.checkpoint-restore-container {
2291
display: flex;
2292
width: 100%;
2293
position: relative;
2294
2295
.checkpoint-divider {
2296
border-top: 1px dashed var(--vscode-chat-checkpointSeparator);
2297
margin: 15px 0;
2298
width: 100%;
2299
height: 0;
2300
}
2301
2302
.codicon-container {
2303
color: var(--vscode-descriptionForeground);
2304
padding-right: 4px;
2305
display: flex;
2306
align-items: center;
2307
gap: 4px;
2308
}
2309
2310
.codicon-container .codicon {
2311
font-size: 14px;
2312
color: var(--vscode-chat-checkpointSeparator);
2313
}
2314
2315
.monaco-toolbar {
2316
opacity: 0;
2317
height: fit-content;
2318
width: fit-content;
2319
user-select: none;
2320
position: absolute;
2321
top: 4px;
2322
margin-left: 25px;
2323
background: var(--vscode-sideBar-background);
2324
}
2325
2326
.monaco-toolbar .action-label {
2327
border: 1px solid var(--vscode-chat-requestBorder, var(--vscode-input-background));
2328
padding: 1px 5px;
2329
background-color: var(--vscode-sideBar-background);
2330
}
2331
}
2332
2333
.checkpoint-restore-container {
2334
margin-top: 10px;
2335
2336
.checkpoint-label-text {
2337
font-size: 12px;
2338
color: var(--vscode-descriptionForeground);
2339
background-color: var(--vscode-sideBar-background);
2340
padding: 4px;
2341
display: flex;
2342
align-items: center;
2343
gap: 4px;
2344
position: absolute;
2345
margin-left: 71px;
2346
margin-top: 2px;
2347
}
2348
}
2349
2350
.checkpoint-container .monaco-toolbar:focus-within,
2351
.checkpoint-restore-container .monaco-toolbar,
2352
.interactive-item-container.interactive-request:not(.editing):hover .checkpoint-container .monaco-toolbar {
2353
opacity: 1;
2354
}
2355
2356
.interactive-item-container.interactive-request.editing .checkpoint-container {
2357
display: none;
2358
}
2359
2360
.interactive-list > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row {
2361
overflow: visible !important;
2362
}
2363
2364
.interactive-list > .monaco-list > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.monaco-list-row.focused.request {
2365
outline: none !important;
2366
}
2367
2368
div[data-index="0"] .monaco-tl-contents {
2369
.interactive-item-container.interactive-request:not(.editing) {
2370
padding-top: 19px;
2371
}
2372
2373
.request-hover {
2374
top: 0px;
2375
}
2376
2377
.checkpoint-container {
2378
display: none;
2379
}
2380
}
2381
2382
.interactive-list > .monaco-list:focus > .monaco-scrollable-element > .monaco-list-rows > .monaco-list-row.focused.request {
2383
outline: none !important;
2384
2385
.interactive-item-container .value .rendered-markdown {
2386
outline: 1px solid var(--vscode-focusBorder);
2387
}
2388
2389
.request-hover:not(.has-no-actions) {
2390
display: block;
2391
}
2392
}
2393
2394
.interactive-request.editing .rendered-markdown,
2395
.interactive-request.editing .value {
2396
display: none;
2397
}
2398
2399
.interactive-request.editing-input .rendered-markdown {
2400
outline: 1px solid var(--vscode-focusBorder);
2401
}
2402
2403
.interactive-request.editing {
2404
padding: 0px;
2405
2406
.interactive-input-part .chat-input-container .interactive-input-editor .monaco-editor .native-edit-context {
2407
opacity: 0;
2408
}
2409
}
2410
}
2411
2412
.editor-instance .interactive-session .interactive-item-container.interactive-response .checkpoint-restore-container {
2413
2414
.checkpoint-label-text,
2415
.monaco-toolbar {
2416
background-color: var(--vscode-editor-background);
2417
}
2418
}
2419
2420
.chat-buttons-container {
2421
display: flex;
2422
gap: 8px;
2423
margin-top: 0px;
2424
flex-wrap: wrap;
2425
flex-basis: 100%;
2426
padding: 0 8px;
2427
margin: 8px 0;
2428
2429
& .monaco-button.monaco-dropdown-button {
2430
padding: 0 3px;
2431
}
2432
}
2433
2434
.interactive-item-container .chat-command-button .monaco-button,
2435
.chat-buttons-container .monaco-button:not(.monaco-dropdown-button) {
2436
text-align: left;
2437
width: initial;
2438
padding: 4px 8px;
2439
}
2440
2441
.interactive-item-container .chat-edit-input-container {
2442
width: 100%;
2443
}
2444
2445
.chat-row-disabled-overlay,
2446
.interactive-item-container .chat-edit-input-container .chat-editing-session {
2447
display: none;
2448
}
2449
2450
.chat-row-disabled-overlay.disabled,
2451
.chat-input-overlay.disabled {
2452
position: absolute;
2453
width: 100%;
2454
height: 100%;
2455
background-color: var(--vscode-sideBar-background);
2456
opacity: 0.6;
2457
display: flex;
2458
z-index: 101;
2459
user-select: none;
2460
cursor: default;
2461
}
2462
2463
.interactive-session .focused-input-dom {
2464
position: absolute;
2465
top: -50000px;
2466
width: 1px;
2467
height: 1px;
2468
}
2469
2470
2471
.interactive-session .chat-attached-context .chat-attached-context-attachment.implicit.disabled:hover {
2472
cursor: pointer;
2473
border-style: solid;
2474
background-color: var(--vscode-toolbar-hoverBackground);
2475
}
2476
2477
/* Chat Todo List Widget */
2478
.chat-todo-list-widget {
2479
position: sticky;
2480
top: 0;
2481
z-index: 2;
2482
background-color: var(--vscode-sideBar-background);
2483
}
2484
2485
/* Special styling when todo widget is used inline in chat responses (subparts) */
2486
.chat-todo-list-widget.chat-todo-subpart {
2487
padding: 4px 3px 6px 3px;
2488
border: 1px solid var(--vscode-chat-requestBorder);
2489
border-radius: 4px;
2490
margin-bottom: 8px;
2491
position: static;
2492
z-index: auto;
2493
}
2494
2495
.chat-todo-list-widget.scrolled {
2496
box-shadow: 0 2px 4px var(--vscode-scrollbar-shadow);
2497
}
2498
2499
.chat-todo-list-widget .todo-list-expand {
2500
display: flex;
2501
align-items: center;
2502
gap: 4px;
2503
cursor: pointer;
2504
padding: 2px 0;
2505
justify-content: space-between;
2506
width: 100%;
2507
}
2508
2509
.chat-todo-list-widget .todo-list-expand:focus:not(:focus-visible) {
2510
outline: none;
2511
}
2512
2513
.chat-todo-list-widget .todo-list-expand .todo-list-title-section {
2514
display: flex;
2515
align-items: center;
2516
gap: 6px;
2517
flex: 1;
2518
}
2519
2520
.chat-todo-list-widget .todo-clear-button-container {
2521
display: flex;
2522
align-items: center;
2523
opacity: 0;
2524
transition: opacity 0.2s ease;
2525
}
2526
2527
.chat-todo-list-widget .todo-list-expand:hover .todo-clear-button-container,
2528
.chat-todo-list-widget .todo-list-expand:focus-within .todo-clear-button-container,
2529
.chat-todo-list-widget .todo-clear-button-container:focus-within {
2530
opacity: 1;
2531
}
2532
2533
.chat-todo-list-widget .todo-clear-button-container .monaco-button {
2534
padding: 2px;
2535
margin-right: 2px;
2536
min-width: unset;
2537
background-color: transparent;
2538
color: var(--vscode-foreground);
2539
border: none;
2540
border-radius: 3px;
2541
height: 14px;
2542
width: 14px;
2543
display: flex;
2544
align-items: center;
2545
justify-content: center;
2546
cursor: pointer;
2547
}
2548
2549
.chat-todo-list-widget .todo-clear-button-container .monaco-button:hover {
2550
background-color: var(--vscode-toolbar-hoverBackground) !important;
2551
}
2552
2553
.chat-todo-list-widget .todo-clear-button-container .monaco-button:focus {
2554
outline: 1px solid var(--vscode-focusBorder);
2555
outline-offset: 1px;
2556
}
2557
2558
.chat-todo-list-widget .todo-clear-button-container .monaco-button .codicon {
2559
font-size: 10px;
2560
color: var(--vscode-foreground);
2561
}
2562
2563
.chat-todo-list-widget .todo-list-expand:hover {
2564
background-color: var(--vscode-toolbar-hoverBackground);
2565
}
2566
2567
2568
.chat-todo-list-widget .expand-icon {
2569
flex-shrink: 0;
2570
font-size: 12px;
2571
}
2572
2573
.chat-todo-list-widget .todo-list-title {
2574
font-weight: normal;
2575
font-size: var(--vscode-chat-font-size-body-s);
2576
color: var(--vscode-descriptionForeground);
2577
}
2578
2579
.chat-todo-list-widget .todo-list-container {
2580
padding-left: 10px;
2581
margin-top: 2px;
2582
max-height: calc(6.5 * 21px);
2583
/* 6.5 items to show half-line affordance */
2584
overflow-y: auto;
2585
overscroll-behavior: contain;
2586
scrollbar-width: thin;
2587
scrollbar-color: var(--vscode-scrollbarSlider-background) transparent;
2588
scroll-behavior: smooth;
2589
scroll-padding-top: 24px;
2590
/* Half item height to show partial next item */
2591
scroll-padding-bottom: 24px;
2592
/* Half item height to show partial previous item */
2593
}
2594
2595
/* Modern scrollbar styling for WebKit browsers */
2596
.chat-todo-list-widget .todo-list-container::-webkit-scrollbar {
2597
width: 8px;
2598
}
2599
2600
.chat-todo-list-widget .todo-list-container::-webkit-scrollbar-track {
2601
background: transparent;
2602
}
2603
2604
.chat-todo-list-widget .todo-list-container::-webkit-scrollbar-thumb {
2605
background-color: var(--vscode-scrollbarSlider-background);
2606
border-radius: 4px;
2607
border: 2px solid transparent;
2608
background-clip: content-box;
2609
}
2610
2611
.chat-todo-list-widget .todo-list-container::-webkit-scrollbar-thumb:hover {
2612
background-color: var(--vscode-scrollbarSlider-hoverBackground);
2613
}
2614
2615
.chat-todo-list-widget .todo-list {
2616
display: flex;
2617
flex-direction: column;
2618
gap: 4px;
2619
scroll-snap-type: y proximity;
2620
}
2621
2622
.chat-todo-list-widget .todo-item {
2623
display: flex;
2624
align-items: center;
2625
gap: 8px;
2626
scroll-snap-align: start;
2627
min-height: 22px;
2628
font-size: var(--vscode-chat-font-size-body-m);
2629
}
2630
2631
.chat-todo-list-widget .todo-item:focus {
2632
outline: 1px solid var(--vscode-focusBorder);
2633
outline-offset: 1px;
2634
background-color: var(--vscode-list-focusBackground);
2635
}
2636
2637
.chat-todo-list-widget .todo-item:hover {
2638
background-color: var(--vscode-list-hoverBackground);
2639
}
2640
2641
.chat-todo-list-widget .todo-item > .todo-status-icon.codicon {
2642
flex-shrink: 0;
2643
font-size: var(--vscode-chat-font-size-body-l);
2644
}
2645
2646
.chat-todo-list-widget .todo-content {
2647
color: var(--vscode-foreground);
2648
flex-grow: 1;
2649
overflow: hidden;
2650
white-space: nowrap;
2651
text-overflow: ellipsis;
2652
min-width: 0;
2653
}
2654
2655
.interactive-session .interactive-response .chat-used-context-list.chat-thinking-items {
2656
color: var(--vscode-descriptionForeground);
2657
padding-top: 0;
2658
}
2659
2660
.interactive-session .interactive-response .value .chat-thinking-box {
2661
outline: none;
2662
position: relative;
2663
color: var(--vscode-descriptionForeground);
2664
2665
.chat-used-context {
2666
margin: 0px;
2667
}
2668
2669
.monaco-button.hidden,
2670
.chat-pinned-preview.hidden {
2671
display: none;
2672
}
2673
2674
.chat-thinking-item {
2675
padding: 6px 12px;
2676
position: relative;
2677
2678
.progress-container {
2679
margin-bottom: 0px;
2680
padding-top: 0px;
2681
}
2682
2683
&::before,
2684
&::after {
2685
position: absolute;
2686
content: '';
2687
display: block;
2688
border-radius: 50%;
2689
pointer-events: none;
2690
}
2691
2692
&::before {
2693
background: var(--vscode-sideBar-background);
2694
top: 8px;
2695
left: -10px;
2696
width: 13px;
2697
height: 16px;
2698
z-index: 2;
2699
}
2700
2701
&::after {
2702
top: 12px;
2703
left: -7px;
2704
width: 7px;
2705
height: 7px;
2706
background: var(--vscode-chat-requestBorder);
2707
z-index: 3;
2708
}
2709
}
2710
2711
.chat-thinking-text {
2712
font-size: var(--vscode-chat-font-size-body-s);
2713
padding: 0 10px;
2714
display: block;
2715
}
2716
2717
.rendered-markdown > p {
2718
margin: 0;
2719
}
2720
}
2721
2722
.editor-instance .interactive-session .interactive-response .value .chat-thinking-box .chat-thinking-item ::before {
2723
background: var(--vscode-editor-background);
2724
}
2725
2726
.editor-instance .chat-todo-list-widget {
2727
background-color: var(--vscode-editor-background);
2728
}
2729
2730