@gitlab/duo-ui 15.10.0 → 15.10.1

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.
@@ -1,175 +1,52 @@
1
- import { nextTick } from 'vue';
2
- import { GlButton, GlIcon, GlFormTextarea, GlForm, GlTooltipDirective } from '@gitlab/ui';
1
+ import { GlButton, GlIcon, GlTooltipDirective } from '@gitlab/ui';
3
2
  import { translate } from '@gitlab/ui/dist/utils/i18n';
4
3
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
4
 
6
5
  const i18n = {
7
6
  THANKS: translate('AgenticBinaryFeedback.thanks', 'Thanks for the feedback!'),
8
7
  THUMBS_UP: translate('AgenticBinaryFeedback.thumbsUp', 'Helpful'),
9
- THUMBS_DOWN: translate('AgenticBinaryFeedback.thumbsDown', 'Not helpful'),
10
- TELL_US_MORE: translate('AgenticBinaryFeedback.tellUsMore', 'Tell us more'),
11
- SUBMIT: translate('AgenticBinaryFeedback.submit', 'Submit'),
12
- BACK: translate('AgenticBinaryFeedback.back', 'Back'),
13
- CLOSE: translate('AgenticBinaryFeedback.close', 'Close'),
14
- FEEDBACK_PLACEHOLDER: translate('AgenticBinaryFeedback.placeholder', 'Share your feedback...'),
15
- THUMBS_UP_HEADER: translate('AgenticBinaryFeedback.thumbsUpHeader', 'What made this helpful?'),
16
- THUMBS_DOWN_HEADER: translate('AgenticBinaryFeedback.thumbsDownHeader', 'What would have been more helpful?'),
17
- TOO_GENERIC: translate('AgenticBinaryFeedback.tooGeneric', 'Too generic'),
18
- MISSING_STEPS: translate('AgenticBinaryFeedback.missingSteps', 'Missing steps'),
19
- WRONG_CONTEXT: translate('AgenticBinaryFeedback.wrongContext', 'Wrong context'),
20
- OUTDATED_INCORRECT: translate('AgenticBinaryFeedback.outdatedIncorrect', 'Outdated/incorrect'),
21
- SOLVED_PROBLEM: translate('AgenticBinaryFeedback.solvedProblem', 'Solved my problem'),
22
- SAVED_TIME: translate('AgenticBinaryFeedback.savedTime', 'Saved me time'),
23
- GOOD_EXAMPLES: translate('AgenticBinaryFeedback.goodExamples', 'Good examples'),
24
- ACCURATE_INFO: translate('AgenticBinaryFeedback.accurateInfo', 'Accurate information')
25
- };
26
- const thumbsDownReasons = [{
27
- key: 'too_generic',
28
- label: i18n.TOO_GENERIC
29
- }, {
30
- key: 'missing_steps',
31
- label: i18n.MISSING_STEPS
32
- }, {
33
- key: 'wrong_context',
34
- label: i18n.WRONG_CONTEXT
35
- }, {
36
- key: 'outdated_incorrect',
37
- label: i18n.OUTDATED_INCORRECT
38
- }, {
39
- key: 'tell_us_more',
40
- label: i18n.TELL_US_MORE,
41
- isCustom: true
42
- }];
43
- const thumbsUpReasons = [{
44
- key: 'solved_problem',
45
- label: i18n.SOLVED_PROBLEM
46
- }, {
47
- key: 'saved_time',
48
- label: i18n.SAVED_TIME
49
- }, {
50
- key: 'good_examples',
51
- label: i18n.GOOD_EXAMPLES
52
- }, {
53
- key: 'accurate_info',
54
- label: i18n.ACCURATE_INFO
55
- }, {
56
- key: 'tell_us_more',
57
- label: i18n.TELL_US_MORE,
58
- isCustom: true
59
- }];
60
- const FEEDBACK_VIEW = {
61
- CLOSED: 'closed',
62
- REASON_LIST: 'reason_list',
63
- TELL_US_MORE: 'tell_us_more'
8
+ THUMBS_DOWN: translate('AgenticBinaryFeedback.thumbsDown', 'Not helpful')
64
9
  };
65
10
  var script = {
66
11
  name: 'AgenticBinaryFeedback',
67
12
  i18n,
68
- thumbsUpReasons,
69
- thumbsDownReasons,
70
13
  components: {
71
14
  GlButton,
72
- GlIcon,
73
- GlFormTextarea,
74
- GlForm
15
+ GlIcon
75
16
  },
76
17
  directives: {
77
18
  GlTooltip: GlTooltipDirective
78
19
  },
79
- data() {
80
- return {
81
- feedbackType: null,
82
- feedbackView: FEEDBACK_VIEW.CLOSED,
83
- customFeedback: '',
84
- feedbackSubmitted: false
85
- };
20
+ props: {
21
+ feedbackChoice: {
22
+ type: String,
23
+ required: false,
24
+ default: null,
25
+ validator: value => value === null || ['thumbs_up', 'thumbs_down'].includes(value)
26
+ },
27
+ submitted: {
28
+ type: Boolean,
29
+ required: false,
30
+ default: false
31
+ }
86
32
  },
87
33
  computed: {
88
34
  isThumbsUp() {
89
- return this.feedbackType === 'thumbs_up';
35
+ return this.feedbackChoice === 'thumbs_up';
90
36
  },
91
37
  isThumbsDown() {
92
- return this.feedbackType === 'thumbs_down';
93
- },
94
- reasonOptions() {
95
- return this.isThumbsUp ? this.$options.thumbsUpReasons : this.$options.thumbsDownReasons;
96
- },
97
- reasonHeader() {
98
- return this.isThumbsUp ? this.$options.i18n.THUMBS_UP_HEADER : this.$options.i18n.THUMBS_DOWN_HEADER;
99
- },
100
- isOverCharacterLimit() {
101
- return this.customFeedback.length > 140;
102
- },
103
- trimmedFeedback() {
104
- return this.customFeedback.trim();
105
- },
106
- isTextareaValid() {
107
- return this.trimmedFeedback.length === 0 ? null : !this.isOverCharacterLimit;
108
- },
109
- canSubmitCustomFeedback() {
110
- return this.trimmedFeedback.length > 0 && !this.isOverCharacterLimit;
38
+ return this.feedbackChoice === 'thumbs_down';
111
39
  },
112
- characterCountText() {
113
- const remaining = 140 - this.customFeedback.length;
114
- if (remaining >= 0) {
115
- return remaining === 1 ? `${remaining} character remaining` : `${remaining} characters remaining`;
116
- }
117
- const over = Math.abs(remaining);
118
- return over === 1 ? `${over} character over limit` : `${over} characters over limit`;
40
+ showButtons() {
41
+ return !this.feedbackChoice && !this.submitted;
119
42
  },
120
- isDropdownOpen() {
121
- return this.feedbackView !== FEEDBACK_VIEW.CLOSED;
122
- },
123
- isReasonListVisible() {
124
- return this.feedbackView === FEEDBACK_VIEW.REASON_LIST;
125
- },
126
- isTellUsMoreVisible() {
127
- return this.feedbackView === FEEDBACK_VIEW.TELL_US_MORE;
43
+ showSelectedIcon() {
44
+ return this.feedbackChoice && !this.submitted;
128
45
  }
129
46
  },
130
47
  methods: {
131
48
  selectFeedbackType(type) {
132
- this.feedbackType = type;
133
- this.feedbackView = FEEDBACK_VIEW.REASON_LIST;
134
- this.customFeedback = '';
135
- this.scrollToDropdown();
136
- },
137
- scrollToDropdown() {
138
- nextTick(() => {
139
- var _this$$refs$dropdown, _el$scrollIntoView;
140
- const el = ((_this$$refs$dropdown = this.$refs.dropdown) === null || _this$$refs$dropdown === void 0 ? void 0 : _this$$refs$dropdown.$el) || this.$refs.dropdown;
141
- el === null || el === void 0 ? void 0 : (_el$scrollIntoView = el.scrollIntoView) === null || _el$scrollIntoView === void 0 ? void 0 : _el$scrollIntoView.call(el, {
142
- behavior: 'smooth',
143
- block: 'nearest'
144
- });
145
- });
146
- },
147
- selectReason(reason) {
148
- if (reason.isCustom) {
149
- this.feedbackView = FEEDBACK_VIEW.TELL_US_MORE;
150
- return;
151
- }
152
- this.submitFeedback(reason.key);
153
- },
154
- submitCustomFeedback() {
155
- this.submitFeedback(`custom_${this.customFeedback.trim()}`);
156
- },
157
- submitFeedback(feedbackReason) {
158
- this.$emit('feedback', {
159
- feedbackType: this.feedbackType,
160
- feedbackReason
161
- });
162
- this.feedbackView = FEEDBACK_VIEW.CLOSED;
163
- this.feedbackSubmitted = true;
164
- },
165
- goBackToReasons() {
166
- this.feedbackView = FEEDBACK_VIEW.REASON_LIST;
167
- this.customFeedback = '';
168
- },
169
- closeDropdown() {
170
- this.feedbackView = FEEDBACK_VIEW.CLOSED;
171
- this.customFeedback = '';
172
- this.feedbackType = null;
49
+ this.$emit('select-type', type);
173
50
  }
174
51
  }
175
52
  };
@@ -178,7 +55,7 @@ var script = {
178
55
  const __vue_script__ = script;
179
56
 
180
57
  /* template */
181
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"agentic-binary-feedback gl-flex gl-items-center gl-gap-2",class:{ 'gl-relative': !_vm.isDropdownOpen }},[(!_vm.feedbackSubmitted && !_vm.isDropdownOpen)?[_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.THUMBS_UP,"aria-label":_vm.$options.i18n.THUMBS_UP,"icon":"thumb-up","category":"tertiary","size":"small","data-testid":"thumb-up-button"},on:{"click":function($event){return _vm.selectFeedbackType('thumbs_up')}}}),_vm._v(" "),_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.THUMBS_DOWN,"aria-label":_vm.$options.i18n.THUMBS_DOWN,"icon":"thumb-down","category":"tertiary","size":"small","data-testid":"thumb-down-button"},on:{"click":function($event){return _vm.selectFeedbackType('thumbs_down')}}})]:(_vm.isDropdownOpen)?[_c('div',{staticClass:"gl-flex gl-h-6 gl-items-center"},[_c('gl-icon',{class:_vm.isThumbsUp ? 'gl-text-success' : 'gl-text-danger',attrs:{"name":_vm.isThumbsUp ? 'thumb-up' : 'thumb-down',"size":16,"data-testid":"selected-thumb-icon"}})],1),_vm._v(" "),_c('div',{ref:"dropdown",staticClass:"feedback-reason-dropdown gl-l-0 gl-r-0 gl-border gl-absolute gl-top-full gl-mb-4 gl-mt-4 gl-w-full gl-rounded-lg gl-border-default gl-bg-subtle gl-p-3",attrs:{"data-testid":"feedback-reason-dropdown"}},[_c('div',{staticClass:"gl-mb-3 gl-flex gl-items-center gl-justify-between gl-gap-2"},[_c('p',{staticClass:"gl-m-0 gl-text-sm gl-font-bold",attrs:{"data-testid":"reason-header"}},[_vm._v("\n "+_vm._s(_vm.reasonHeader)+"\n ")]),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-shrink-0 gl-items-center gl-gap-1"},[(_vm.isTellUsMoreVisible)?_c('gl-button',{attrs:{"icon":"go-back","category":"tertiary","size":"small","aria-label":_vm.$options.i18n.BACK,"data-testid":"back-button"},on:{"click":_vm.goBackToReasons}}):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-mr-[-5px]",attrs:{"icon":"close","category":"tertiary","size":"small","aria-label":_vm.$options.i18n.CLOSE,"data-testid":"close-dropdown-button"},on:{"click":_vm.closeDropdown}})],1)]),_vm._v(" "),(_vm.isReasonListVisible)?_c('div',{staticClass:"gl-flex gl-flex-wrap gl-gap-2",attrs:{"data-testid":"reason-buttons"}},_vm._l((_vm.reasonOptions),function(reason){return _c('gl-button',{key:reason.key,staticClass:"gl-rounded-full",attrs:{"category":"secondary","size":"small","icon":reason.isCustom ? 'pencil' : undefined,"data-testid":("reason-" + (reason.key))},on:{"click":function($event){return _vm.selectReason(reason)}}},[_vm._v("\n "+_vm._s(reason.label)+"\n ")])}),1):_vm._e(),_vm._v(" "),(_vm.isTellUsMoreVisible)?_c('div',{staticClass:"gl-flex gl-w-full gl-flex-col gl-gap-3",attrs:{"data-testid":"tell-us-more-view"}},[_c('gl-form',{staticClass:"gl-flex gl-w-full gl-flex-col gl-gap-3",on:{"submit":function($event){$event.preventDefault();_vm.canSubmitCustomFeedback ? _vm.submitCustomFeedback() : null;}}},[_c('gl-form-textarea',{attrs:{"state":_vm.isTextareaValid,"placeholder":_vm.$options.i18n.FEEDBACK_PLACEHOLDER,"rows":3,"max-rows":5,"data-testid":"custom-feedback-textarea"},model:{value:(_vm.customFeedback),callback:function ($$v) {_vm.customFeedback=$$v;},expression:"customFeedback"}}),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-items-center gl-justify-between"},[_c('gl-button',{attrs:{"variant":"confirm","size":"small","type":"submit","data-testid":"submit-custom-feedback-button"}},[_vm._v("\n "+_vm._s(_vm.$options.i18n.SUBMIT)+"\n ")]),_vm._v(" "),_c('span',{staticClass:"gl-text-sm",class:_vm.isOverCharacterLimit ? 'gl-text-danger' : 'gl-text-subtle',attrs:{"data-testid":"character-count"}},[_vm._v("\n "+_vm._s(_vm.characterCountText)+"\n ")])],1)],1)],1):_vm._e()])]:_c('div',{staticClass:"gl-relative gl-flex gl-items-center gl-gap-2",attrs:{"data-testid":"feedback-given"}},[_c('div',{staticClass:"feedback-colored-icon",attrs:{"data-testid":"feedback-colored-icon"}},[(_vm.isThumbsUp)?_c('gl-icon',{staticClass:"gl-text-success",attrs:{"name":"thumb-up","size":16,"data-testid":"thumb-up-icon-success"}}):(_vm.isThumbsDown)?_c('gl-icon',{staticClass:"gl-text-danger",attrs:{"name":"thumb-down","size":16,"data-testid":"thumb-down-icon-danger"}}):_vm._e()],1),_vm._v(" "),_c('div',{staticClass:"feedback-thanks gl-m-l-0 gl-w-0 gl-overflow-hidden gl-whitespace-nowrap gl-opacity-0",attrs:{"data-testid":"feedback-thanks"}},[_c('gl-icon',{staticClass:"gl-text-success",attrs:{"name":"check-xs","size":16,"data-testid":"check-icon"}}),_vm._v(" "),_c('span',{staticClass:"gl-text-sm gl-text-subtle"},[_vm._v(_vm._s(_vm.$options.i18n.THANKS))])],1)])],2)};
58
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"agentic-binary-feedback gl-flex gl-items-center gl-gap-2"},[(_vm.showButtons)?[_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.THUMBS_UP,"aria-label":_vm.$options.i18n.THUMBS_UP,"icon":"thumb-up","category":"tertiary","size":"small","data-testid":"thumb-up-button"},on:{"click":function($event){return _vm.selectFeedbackType('thumbs_up')}}}),_vm._v(" "),_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.THUMBS_DOWN,"aria-label":_vm.$options.i18n.THUMBS_DOWN,"icon":"thumb-down","category":"tertiary","size":"small","data-testid":"thumb-down-button"},on:{"click":function($event){return _vm.selectFeedbackType('thumbs_down')}}})]:(_vm.showSelectedIcon)?_c('div',{staticClass:"gl-flex gl-h-6 gl-items-center"},[_c('gl-icon',{class:_vm.isThumbsUp ? 'gl-text-success' : 'gl-text-danger',attrs:{"name":_vm.isThumbsUp ? 'thumb-up' : 'thumb-down',"size":16,"data-testid":"selected-thumb-icon"}})],1):(_vm.submitted)?_c('div',{staticClass:"gl-relative gl-flex gl-items-center gl-gap-2",attrs:{"data-testid":"feedback-given"}},[_c('div',{staticClass:"feedback-colored-icon",attrs:{"data-testid":"feedback-colored-icon"}},[(_vm.isThumbsUp)?_c('gl-icon',{staticClass:"gl-text-success",attrs:{"name":"thumb-up","size":16,"data-testid":"thumb-up-icon-success"}}):(_vm.isThumbsDown)?_c('gl-icon',{staticClass:"gl-text-danger",attrs:{"name":"thumb-down","size":16,"data-testid":"thumb-down-icon-danger"}}):_vm._e()],1),_vm._v(" "),_c('div',{staticClass:"feedback-thanks gl-m-l-0 gl-w-0 gl-overflow-hidden gl-whitespace-nowrap gl-opacity-0",attrs:{"data-testid":"feedback-thanks"}},[_c('gl-icon',{staticClass:"gl-text-success",attrs:{"name":"check-xs","size":16,"data-testid":"check-icon"}}),_vm._v(" "),_c('span',{staticClass:"gl-text-sm gl-text-subtle"},[_vm._v(_vm._s(_vm.$options.i18n.THANKS))])],1)]):_vm._e()],2)};
182
59
  var __vue_staticRenderFns__ = [];
183
60
 
184
61
  /* style */
@@ -211,4 +88,4 @@ var __vue_staticRenderFns__ = [];
211
88
  );
212
89
 
213
90
  export default __vue_component__;
214
- export { FEEDBACK_VIEW, i18n, thumbsDownReasons, thumbsUpReasons };
91
+ export { i18n };
@@ -0,0 +1,185 @@
1
+ import { GlButton, GlFormTextarea, GlForm } from '@gitlab/ui';
2
+ import { translate } from '@gitlab/ui/dist/utils/i18n';
3
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
4
+
5
+ const i18n = {
6
+ TELL_US_MORE: translate('AgenticBinaryFeedback.tellUsMore', 'Tell us more'),
7
+ SUBMIT: translate('AgenticBinaryFeedback.submit', 'Submit'),
8
+ BACK: translate('AgenticBinaryFeedback.back', 'Back'),
9
+ CLOSE: translate('AgenticBinaryFeedback.close', 'Close'),
10
+ FEEDBACK_PLACEHOLDER: translate('AgenticBinaryFeedback.placeholder', 'Share your feedback...'),
11
+ THUMBS_UP_HEADER: translate('AgenticBinaryFeedback.thumbsUpHeader', 'What made this helpful?'),
12
+ THUMBS_DOWN_HEADER: translate('AgenticBinaryFeedback.thumbsDownHeader', 'What would have been more helpful?'),
13
+ TOO_GENERIC: translate('AgenticBinaryFeedback.tooGeneric', 'Too generic'),
14
+ MISSING_STEPS: translate('AgenticBinaryFeedback.missingSteps', 'Missing steps'),
15
+ WRONG_CONTEXT: translate('AgenticBinaryFeedback.wrongContext', 'Wrong context'),
16
+ OUTDATED_INCORRECT: translate('AgenticBinaryFeedback.outdatedIncorrect', 'Outdated/incorrect'),
17
+ SOLVED_PROBLEM: translate('AgenticBinaryFeedback.solvedProblem', 'Solved my problem'),
18
+ SAVED_TIME: translate('AgenticBinaryFeedback.savedTime', 'Saved me time'),
19
+ GOOD_EXAMPLES: translate('AgenticBinaryFeedback.goodExamples', 'Good examples'),
20
+ ACCURATE_INFO: translate('AgenticBinaryFeedback.accurateInfo', 'Accurate information')
21
+ };
22
+ const PANEL_VIEW = {
23
+ REASON_LIST: 'reason_list',
24
+ TELL_US_MORE: 'tell_us_more'
25
+ };
26
+ const thumbsDownReasons = [{
27
+ key: 'too_generic',
28
+ label: i18n.TOO_GENERIC
29
+ }, {
30
+ key: 'missing_steps',
31
+ label: i18n.MISSING_STEPS
32
+ }, {
33
+ key: 'wrong_context',
34
+ label: i18n.WRONG_CONTEXT
35
+ }, {
36
+ key: 'outdated_incorrect',
37
+ label: i18n.OUTDATED_INCORRECT
38
+ }, {
39
+ key: 'tell_us_more',
40
+ label: i18n.TELL_US_MORE,
41
+ isCustom: true
42
+ }];
43
+ const thumbsUpReasons = [{
44
+ key: 'solved_problem',
45
+ label: i18n.SOLVED_PROBLEM
46
+ }, {
47
+ key: 'saved_time',
48
+ label: i18n.SAVED_TIME
49
+ }, {
50
+ key: 'good_examples',
51
+ label: i18n.GOOD_EXAMPLES
52
+ }, {
53
+ key: 'accurate_info',
54
+ label: i18n.ACCURATE_INFO
55
+ }, {
56
+ key: 'tell_us_more',
57
+ label: i18n.TELL_US_MORE,
58
+ isCustom: true
59
+ }];
60
+ const CHARACTER_LIMIT = 140;
61
+ var script = {
62
+ name: 'AgenticFeedbackPanel',
63
+ i18n,
64
+ thumbsUpReasons,
65
+ thumbsDownReasons,
66
+ components: {
67
+ GlButton,
68
+ GlFormTextarea,
69
+ GlForm
70
+ },
71
+ props: {
72
+ feedbackType: {
73
+ type: String,
74
+ required: true,
75
+ validator: value => ['thumbs_up', 'thumbs_down'].includes(value)
76
+ }
77
+ },
78
+ data() {
79
+ return {
80
+ panelView: PANEL_VIEW.REASON_LIST,
81
+ customFeedback: ''
82
+ };
83
+ },
84
+ computed: {
85
+ isThumbsUp() {
86
+ return this.feedbackType === 'thumbs_up';
87
+ },
88
+ reasonOptions() {
89
+ return this.isThumbsUp ? this.$options.thumbsUpReasons : this.$options.thumbsDownReasons;
90
+ },
91
+ reasonHeader() {
92
+ return this.isThumbsUp ? this.$options.i18n.THUMBS_UP_HEADER : this.$options.i18n.THUMBS_DOWN_HEADER;
93
+ },
94
+ isOverCharacterLimit() {
95
+ return this.customFeedback.length > CHARACTER_LIMIT;
96
+ },
97
+ trimmedFeedback() {
98
+ return this.customFeedback.trim();
99
+ },
100
+ isTextareaValid() {
101
+ return this.trimmedFeedback.length === 0 ? null : !this.isOverCharacterLimit;
102
+ },
103
+ canSubmitCustomFeedback() {
104
+ return this.trimmedFeedback.length > 0 && !this.isOverCharacterLimit;
105
+ },
106
+ characterCountText() {
107
+ const remaining = CHARACTER_LIMIT - this.customFeedback.length;
108
+ if (remaining >= 0) {
109
+ return remaining === 1 ? `${remaining} character remaining` : `${remaining} characters remaining`;
110
+ }
111
+ const over = Math.abs(remaining);
112
+ return over === 1 ? `${over} character over limit` : `${over} characters over limit`;
113
+ },
114
+ isReasonListVisible() {
115
+ return this.panelView === PANEL_VIEW.REASON_LIST;
116
+ },
117
+ isTellUsMoreVisible() {
118
+ return this.panelView === PANEL_VIEW.TELL_US_MORE;
119
+ }
120
+ },
121
+ methods: {
122
+ selectReason(reason) {
123
+ if (reason.isCustom) {
124
+ this.panelView = PANEL_VIEW.TELL_US_MORE;
125
+ return;
126
+ }
127
+ this.$emit('submit', {
128
+ feedbackType: this.feedbackType,
129
+ feedbackReason: reason.key
130
+ });
131
+ },
132
+ submitCustomFeedback() {
133
+ this.$emit('submit', {
134
+ feedbackType: this.feedbackType,
135
+ feedbackReason: `custom_${this.customFeedback.trim()}`
136
+ });
137
+ },
138
+ goBackToReasons() {
139
+ this.panelView = PANEL_VIEW.REASON_LIST;
140
+ this.customFeedback = '';
141
+ },
142
+ close() {
143
+ this.$emit('close');
144
+ }
145
+ }
146
+ };
147
+
148
+ /* script */
149
+ const __vue_script__ = script;
150
+
151
+ /* template */
152
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"agentic-feedback-panel gl-border gl-mt-2 gl-rounded-lg gl-border-default gl-bg-subtle gl-p-3",attrs:{"data-testid":"feedback-reason-dropdown"}},[_c('div',{staticClass:"gl-mb-3 gl-flex gl-items-center gl-justify-between gl-gap-2"},[_c('p',{staticClass:"gl-m-0 gl-text-sm gl-font-bold",attrs:{"data-testid":"reason-header"}},[_vm._v("\n "+_vm._s(_vm.reasonHeader)+"\n ")]),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-shrink-0 gl-items-center gl-gap-1"},[(_vm.isTellUsMoreVisible)?_c('gl-button',{attrs:{"icon":"go-back","category":"tertiary","size":"small","aria-label":_vm.$options.i18n.BACK,"data-testid":"back-button"},on:{"click":_vm.goBackToReasons}}):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-mr-[-5px]",attrs:{"icon":"close","category":"tertiary","size":"small","aria-label":_vm.$options.i18n.CLOSE,"data-testid":"close-dropdown-button"},on:{"click":_vm.close}})],1)]),_vm._v(" "),(_vm.isReasonListVisible)?_c('div',{staticClass:"gl-flex gl-flex-wrap gl-gap-2",attrs:{"data-testid":"reason-buttons"}},_vm._l((_vm.reasonOptions),function(reason){return _c('gl-button',{key:reason.key,staticClass:"gl-rounded-full",attrs:{"category":"secondary","size":"small","icon":reason.isCustom ? 'pencil' : undefined,"data-testid":("reason-" + (reason.key))},on:{"click":function($event){return _vm.selectReason(reason)}}},[_vm._v("\n "+_vm._s(reason.label)+"\n ")])}),1):_vm._e(),_vm._v(" "),(_vm.isTellUsMoreVisible)?_c('div',{staticClass:"gl-flex gl-w-full gl-flex-col gl-gap-3",attrs:{"data-testid":"tell-us-more-view"}},[_c('gl-form',{staticClass:"gl-flex gl-w-full gl-flex-col gl-gap-3",on:{"submit":function($event){$event.preventDefault();_vm.canSubmitCustomFeedback ? _vm.submitCustomFeedback() : null;}}},[_c('gl-form-textarea',{attrs:{"state":_vm.isTextareaValid,"placeholder":_vm.$options.i18n.FEEDBACK_PLACEHOLDER,"rows":3,"max-rows":5,"data-testid":"custom-feedback-textarea"},model:{value:(_vm.customFeedback),callback:function ($$v) {_vm.customFeedback=$$v;},expression:"customFeedback"}}),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-items-center gl-justify-between"},[_c('gl-button',{attrs:{"variant":"confirm","size":"small","type":"submit","data-testid":"submit-custom-feedback-button"}},[_vm._v("\n "+_vm._s(_vm.$options.i18n.SUBMIT)+"\n ")]),_vm._v(" "),_c('span',{staticClass:"gl-text-sm",class:_vm.isOverCharacterLimit ? 'gl-text-danger' : 'gl-text-subtle',attrs:{"data-testid":"character-count"}},[_vm._v("\n "+_vm._s(_vm.characterCountText)+"\n ")])],1)],1)],1):_vm._e()])};
153
+ var __vue_staticRenderFns__ = [];
154
+
155
+ /* style */
156
+ const __vue_inject_styles__ = undefined;
157
+ /* scoped */
158
+ const __vue_scope_id__ = undefined;
159
+ /* module identifier */
160
+ const __vue_module_identifier__ = undefined;
161
+ /* functional template */
162
+ const __vue_is_functional_template__ = false;
163
+ /* style inject */
164
+
165
+ /* style inject SSR */
166
+
167
+ /* style inject shadow dom */
168
+
169
+
170
+
171
+ const __vue_component__ = __vue_normalize__(
172
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
173
+ __vue_inject_styles__,
174
+ __vue_script__,
175
+ __vue_scope_id__,
176
+ __vue_is_functional_template__,
177
+ __vue_module_identifier__,
178
+ false,
179
+ undefined,
180
+ undefined,
181
+ undefined
182
+ );
183
+
184
+ export default __vue_component__;
185
+ export { PANEL_VIEW, i18n, thumbsDownReasons, thumbsUpReasons };
@@ -6,6 +6,8 @@ import { SELECTED_CONTEXT_ITEMS_DEFAULT_COLLAPSED, MESSAGE_MODEL_ROLES } from '.
6
6
  import DocumentationSources from '../duo_chat_message_sources/duo_chat_message_sources';
7
7
  import { concatUntilEmpty, copyToClipboard } from '../utils';
8
8
  import AgenticBinaryFeedback from '../../../agentic_chat/components/agentic_binary_feedback/agentic_binary_feedback';
9
+ import AgenticFeedbackPanel from '../../../agentic_chat/components/agentic_feedback_panel/agentic_feedback_panel';
10
+ import MessageActionBar from '../message_action_bar/message_action_bar';
9
11
  import MessageFeedback from './message_feedback';
10
12
  import MarkdownRenderer from './markdown_renderer';
11
13
  import { CopyCodeElement } from './copy_code_element';
@@ -28,8 +30,10 @@ var script = {
28
30
  },
29
31
  components: {
30
32
  AgenticBinaryFeedback,
33
+ AgenticFeedbackPanel,
31
34
  DocumentationSources,
32
35
  DuoChatContextItemSelections,
36
+ MessageActionBar,
33
37
  MessageFeedback,
34
38
  MessageMap,
35
39
  GlIcon,
@@ -115,7 +119,9 @@ var script = {
115
119
  // imperatively set up watcher on message
116
120
  messageChunks: [],
117
121
  selectedContextItemsDefaultCollapsed: SELECTED_CONTEXT_ITEMS_DEFAULT_COLLAPSED,
118
- copied: false
122
+ copied: false,
123
+ feedbackChoice: null,
124
+ feedbackSubmitted: false
119
125
  };
120
126
  },
121
127
  computed: {
@@ -295,6 +301,16 @@ var script = {
295
301
  e.classList.remove(DUO_CODE_SCRIM_TOP_CLASS);
296
302
  }
297
303
  },
304
+ onFeedbackTypeSelected(type) {
305
+ this.feedbackChoice = type;
306
+ },
307
+ onFeedbackPanelSubmit(payload) {
308
+ this.feedbackSubmitted = true;
309
+ this.logEvent(payload);
310
+ },
311
+ onFeedbackPanelClose() {
312
+ this.feedbackChoice = null;
313
+ },
298
314
  async copyMessage() {
299
315
  try {
300
316
  await copyToClipboard(this.message.content, this.$el);
@@ -325,7 +341,10 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
325
341
  'duo-chat-message-complete': _vm.isDoneStreaming,
326
342
  },on:{"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet}},[(_vm.error)?_c('div',{ref:"error-message",staticClass:"duo-chat-message-with-error gl-flex gl-bg-feedback-danger gl-p-4"},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon !gl-mt-1 gl-mr-3 gl-shrink-0 gl-text-danger",attrs:{"aria-label":_vm.$options.i18n.MESSAGE_ERROR,"name":"error","size":16,"data-testid":"error"}}):_vm._e(),_vm._v(" "),(_vm.error)?_c('markdown-renderer',{ref:"error-message",staticClass:"duo-chat-message-error",attrs:{"markdown":_vm.renderedError,"trusted-urls":_vm.trustedUrls}}):_vm._e()],1):(_vm.isAssistantMessage || _vm.isUserMessage)?[_c('div',{staticClass:"gl-sr-only"},[_vm._v("\n "+_vm._s(_vm.isUserMessage ? _vm.$options.i18n.FROM_ME : _vm.$options.i18n.FROM_DUO)+"\n ")]),_vm._v(" "),(_vm.displaySelectedContextItems && _vm.isAssistantMessage)?_c('duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"assistant"},on:{"get-content":_vm.onGetContextItemContent}}):_vm._e(),_vm._v(" "),_c('markdown-renderer',{ref:"content",staticClass:"duo-chat-message",class:{
327
343
  'gl-bg-feedback-info gl-p-4 gl-text-feedback-info': _vm.isUserMessage,
328
- },attrs:{"is-html":_vm.hasContentHtml,"markdown":_vm.messageContent,"trusted-urls":_vm.trustedUrls}}),_vm._v(" "),(_vm.sources)?_c('documentation-sources',{attrs:{"sources":_vm.sources}}):_vm._e(),_vm._v(" "),(_vm.isAssistantMessage)?_c('div',{staticClass:"duo-chat-message-actions -gl-ml-2 gl-flex gl-items-start gl-gap-3"},[(_vm.isChunkAndNotCancelled)?_c('gl-animated-loader-icon',{attrs:{"is-on":true}}):_vm._e(),_vm._v(" "),(_vm.shouldShowFeedbackLink && _vm.isBinaryFeedbackEnabled)?[(_vm.showBinaryFeedback)?_c('agentic-binary-feedback',{attrs:{"data-testid":"agentic-feedback-latest"},on:{"feedback":_vm.logEvent}}):_c('div',{staticClass:"agentic-feedback-hover-wrapper -gl-mr-3 gl-w-0 gl-overflow-hidden gl-opacity-0",attrs:{"data-testid":"agentic-feedback-hover-container"}},[_c('agentic-binary-feedback',{on:{"feedback":_vm.logEvent}})],1)]:(_vm.shouldShowFeedbackLink)?_c('message-feedback',{attrs:{"has-feedback":_vm.hasFeedback},on:{"feedback":_vm.logEvent}}):_vm._e(),_vm._v(" "),(_vm.shouldShowCopyAction)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],class:{ '!gl-text-success': _vm.copied, '!gl-text-subtle': !_vm.copied },attrs:{"title":_vm.copied ? _vm.$options.i18n.CHAT_MESSAGE_COPIED : _vm.$options.i18n.CHAT_MESSAGE_COPY,"icon":_vm.copied ? 'check-circle-filled' : 'copy-to-clipboard',"category":"tertiary","size":"small"},on:{"click":_vm.copyMessage,"focusout":function($event){_vm.copied = false;}}}):_vm._e()],2):_vm._e(),_vm._v(" "),(_vm.displaySelectedContextItems && _vm.isUserMessage)?_c('duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"user"},on:{"get-content":_vm.onGetContextItemContent}}):_vm._e()]:_c('message-map',{attrs:{"message":_vm.message,"with-feedback":_vm.withFeedback,"working-directory":_vm.workingDirectory,"data-testid":"workflow-message"},on:{"open-file-path":_vm.onOpenFilePath,"feedback":_vm.logEvent}})],2)};
344
+ },attrs:{"is-html":_vm.hasContentHtml,"markdown":_vm.messageContent,"trusted-urls":_vm.trustedUrls}}),_vm._v(" "),(_vm.sources)?_c('documentation-sources',{attrs:{"sources":_vm.sources}}):_vm._e(),_vm._v(" "),(_vm.isAssistantMessage)?[_c('message-action-bar',[(_vm.isChunkAndNotCancelled)?_c('gl-animated-loader-icon',{attrs:{"is-on":true}}):_vm._e(),_vm._v(" "),(_vm.shouldShowFeedbackLink && _vm.isBinaryFeedbackEnabled)?[(_vm.showBinaryFeedback)?_c('agentic-binary-feedback',{attrs:{"feedback-choice":_vm.feedbackChoice,"submitted":_vm.feedbackSubmitted,"data-testid":"agentic-feedback-latest"},on:{"select-type":_vm.onFeedbackTypeSelected}}):_c('div',{staticClass:"agentic-feedback-hover-wrapper",class:{
345
+ '-gl-mr-3 gl-w-0 gl-overflow-hidden gl-opacity-0':
346
+ !_vm.feedbackChoice && !_vm.feedbackSubmitted,
347
+ },attrs:{"data-testid":"agentic-feedback-hover-container"}},[_c('agentic-binary-feedback',{attrs:{"feedback-choice":_vm.feedbackChoice,"submitted":_vm.feedbackSubmitted},on:{"select-type":_vm.onFeedbackTypeSelected}})],1)]:(_vm.shouldShowFeedbackLink)?_c('message-feedback',{attrs:{"has-feedback":_vm.hasFeedback},on:{"feedback":_vm.logEvent}}):_vm._e(),_vm._v(" "),(_vm.shouldShowCopyAction)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],class:{ '!gl-text-success': _vm.copied, '!gl-text-subtle': !_vm.copied },attrs:{"title":_vm.copied ? _vm.$options.i18n.CHAT_MESSAGE_COPIED : _vm.$options.i18n.CHAT_MESSAGE_COPY,"icon":_vm.copied ? 'check-circle-filled' : 'copy-to-clipboard',"category":"tertiary","size":"small"},on:{"click":_vm.copyMessage,"focusout":function($event){_vm.copied = false;}}}):_vm._e()],2),_vm._v(" "),(_vm.feedbackChoice && !_vm.feedbackSubmitted)?_c('agentic-feedback-panel',{attrs:{"feedback-type":_vm.feedbackChoice},on:{"submit":_vm.onFeedbackPanelSubmit,"close":_vm.onFeedbackPanelClose}}):_vm._e()]:_vm._e(),_vm._v(" "),(_vm.displaySelectedContextItems && _vm.isUserMessage)?_c('duo-chat-context-item-selections',{attrs:{"selections":_vm.selectedContextItems,"title":_vm.selectedContextItemsTitle,"default-collapsed":_vm.selectedContextItemsDefaultCollapsed,"variant":"user"},on:{"get-content":_vm.onGetContextItemContent}}):_vm._e()]:_c('message-map',{attrs:{"message":_vm.message,"with-feedback":_vm.withFeedback,"working-directory":_vm.workingDirectory,"data-testid":"workflow-message"},on:{"open-file-path":_vm.onOpenFilePath,"feedback":_vm.logEvent}})],2)};
329
348
  var __vue_staticRenderFns__ = [];
330
349
 
331
350
  /* style */
@@ -0,0 +1,43 @@
1
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
2
+
3
+ var script = {
4
+ name: 'MessageActionBar'
5
+ };
6
+
7
+ /* script */
8
+ const __vue_script__ = script;
9
+
10
+ /* template */
11
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"message-action-bar -gl-ml-2 gl-flex gl-items-start gl-gap-3"},[_vm._t("default")],2)};
12
+ var __vue_staticRenderFns__ = [];
13
+
14
+ /* style */
15
+ const __vue_inject_styles__ = undefined;
16
+ /* scoped */
17
+ const __vue_scope_id__ = undefined;
18
+ /* module identifier */
19
+ const __vue_module_identifier__ = undefined;
20
+ /* functional template */
21
+ const __vue_is_functional_template__ = false;
22
+ /* style inject */
23
+
24
+ /* style inject SSR */
25
+
26
+ /* style inject shadow dom */
27
+
28
+
29
+
30
+ const __vue_component__ = __vue_normalize__(
31
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
32
+ __vue_inject_styles__,
33
+ __vue_script__,
34
+ __vue_scope_id__,
35
+ __vue_is_functional_template__,
36
+ __vue_module_identifier__,
37
+ false,
38
+ undefined,
39
+ undefined,
40
+ undefined
41
+ );
42
+
43
+ export default __vue_component__;
@@ -1,2 +1,2 @@
1
- @charset "UTF-8";.resizable-content{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);background:var(--gl-background-color-default);border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;width:100%}.recents-wrapper .resizable-content{margin-top:var(--gl-spacing-scale-0)}.resizable-content{display:flex;flex-direction:column;line-height:1rem}.resizable-component .resizable-l,.resizable-component .resizable-t{background-color:initial;border-radius:3px;transition:background-color .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.resizable-component .resizable-l,.resizable-component .resizable-t{transition-delay:0ms!important;transition-duration:.01ms!important}}.resizable-component .resizable-l:hover,.resizable-component .resizable-t:hover{background-color:var(--gl-color-blue-200)}.resizable-component .resizable-t{height:4px!important;left:50%!important;top:2px!important;transform:translateX(-50%);width:95%!important}.resizable-component .resizable-l{height:95%!important;left:2px!important;top:50%!important;transform:translateY(-50%);width:4px!important}.resizable-component .duo-chat{z-index:var(--gl-zindex-0)}.resizable-component .resizable-l,.resizable-component .resizable-lt,.resizable-component .resizable-t{z-index:var(--gl-zindex-1)}.duo-chat{font-family:var(--gl-font-family-regular);z-index:999}.duo-chat .message-enter-active,.duo-chat .message-leave-active{transition:all .5s ease}.duo-chat .message-enter,.duo-chat .message-leave-to{opacity:var(--gl-opacity-0);transform:translateY(10px)}.duo-chat .duo-chat-loader.message-leave,.duo-chat .duo-chat-loader.message-leave-to{transition:none}.duo-chat .duo-agent-mode-switcher>*,.duo-chat .duo-model-switcher>*{width:100%}.duo-chat-drawer{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;position:fixed;right:0;transition-duration:.2s;transition-property:all;transition-timing-function:ease;width:100%}.recents-wrapper .duo-chat-drawer{margin-top:var(--gl-spacing-scale-0)}.duo-chat-drawer{display:flex;flex-direction:column;line-height:1rem}.duo-chat-drawer-footer{padding-bottom:var(--gl-spacing-scale-4);padding-left:var(--gl-spacing-scale-4);padding-right:var(--gl-spacing-scale-4)}.duo-chat-drawer-footer:before{--tw-translate-y:-100%;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));content:"";height:var(--gl-spacing-scale-4);left:0;pointer-events:none;position:absolute;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.duo-chat-history{scroll-behavior:smooth}.duo-chat-history *{overflow-anchor:none}.duo-chat-history .scroll-anchor{height:1px;margin-top:-1px;overflow-anchor:auto}.history-item{align-items:center;background:var(--gl-button-default-tertiary-background-color-default);border-radius:var(--gl-border-radius-lg);display:flex;gap:var(--gl-spacing-scale-3);margin-left:calc(var(--gl-spacing-scale-3)*-1);margin-right:calc(var(--gl-spacing-scale-3)*-1);padding-right:var(--gl-spacing-scale-2);transition:background-color .2s cubic-bezier(.22,.61,.36,1)}.history-item:focus,.history-item:focus-within,.history-item:hover{background:var(--gl-button-default-tertiary-background-color-hover)}.history-item:focus .history-remove-button,.history-item:focus-within .history-remove-button,.history-item:hover .history-remove-button{opacity:1}.history-item .history-remove-button{opacity:0;transition:opacity .2s cubic-bezier(.22,.61,.36,1)}.history-item .history-item-name{border-radius:var(--gl-border-radius-lg);border-width:0;padding:var(--gl-spacing-scale-3)}.history-item .history-item-name,.history-item .history-item-name:active,.history-item .history-item-name:focus,.history-item .history-item-name:hover{background-color:initial!important}.history-item .gl-button-text{align-items:center;display:flex;flex-direction:row;gap:var(--gl-spacing-scale-3);text-align:left;width:100%}.duo-chat-input{background:var(--gl-control-background-color-default);border-radius:1.25rem;box-shadow:inset 0 0 0 1px var(--gl-control-border-color-default);display:flex;flex-direction:column;max-height:240px;overflow:hidden}.duo-chat-input:focus-within{box-shadow:inset 0 0 0 1px var(--gl-control-border-color-focus),0 0 0 1px var(--gl-focus-ring-inner-color),0 0 0 3px var(--gl-focus-ring-outer-color);outline:none}@media (forced-colors:active){.duo-chat-input:focus-within{outline:2px solid LinkText}}.duo-chat-input .gl-form-textarea.form-control{border-radius:1.25rem;flex:1;max-height:240px;padding-right:40px;resize:none}.duo-chat-input:after{content:attr(data-value) " ";font-family:var(--gl-font-family-regular);padding:var(--gl-spacing-scale-4);padding-right:40px;visibility:hidden;word-break:break-word}.duo-chat .duo-chat-suggestion-button{border-radius:1rem}.slash-commands{margin-top:calc(var(--gl-spacing-scale-2)*-1)}.slash-commands .active-command{background-color:var(--gl-background-color-strong);border-radius:.25rem}.slash-commands .gl-dropdown-item button.dropdown-item{background-color:initial;font-size:var(--gl-font-size-sm);padding-left:var(--gl-spacing-scale-3);padding-right:var(--gl-spacing-scale-3)}.slash-commands .gl-dropdown-item button.dropdown-item:hover{background-color:initial}.duo-chat-markdown{color:#3a383f;font-family:var(--gl-font-family-regular);font-size:var(--gl-font-size-lg);font-weight:var(--gl-font-weight-normal);line-height:var(--gl-line-height-24)}.duo-chat-markdown :first-child{margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-h1,.duo-chat-markdown h1{color:var(--gl-heading-1-color);font-size:var(--gl-heading-1-font-size);font-weight:var(--gl-heading-1-font-weight);letter-spacing:var(--gl-heading-1-letter-spacing);line-height:var(--gl-heading-1-line-height);margin-bottom:var(--gl-heading-1-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown .gl-h2,.duo-chat-markdown h2{color:var(--gl-heading-2-color);font-size:var(--gl-heading-2-font-size);font-weight:var(--gl-heading-2-font-weight);letter-spacing:var(--gl-heading-2-letter-spacing);line-height:var(--gl-heading-2-line-height);margin-bottom:var(--gl-heading-2-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h3,.duo-chat-markdown h3{color:var(--gl-heading-3-color);font-size:var(--gl-heading-3-font-size);font-weight:var(--gl-heading-3-font-weight);letter-spacing:var(--gl-heading-3-letter-spacing);line-height:var(--gl-heading-3-line-height);margin-bottom:var(--gl-heading-3-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h4,.duo-chat-markdown h4{color:var(--gl-heading-4-color);font-size:var(--gl-heading-4-font-size);font-weight:var(--gl-heading-4-font-weight);letter-spacing:var(--gl-heading-4-letter-spacing);line-height:var(--gl-heading-4-line-height);margin-bottom:var(--gl-heading-4-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h5,.duo-chat-markdown h5{color:var(--gl-heading-5-color);font-size:var(--gl-heading-5-font-size);font-weight:var(--gl-heading-5-font-weight);letter-spacing:var(--gl-heading-5-letter-spacing);line-height:var(--gl-heading-5-line-height);margin-bottom:var(--gl-heading-5-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h6,.duo-chat-markdown h6{color:var(--gl-heading-6-color);font-size:var(--gl-heading-6-font-size);font-weight:var(--gl-heading-6-font-weight);letter-spacing:var(--gl-heading-6-letter-spacing);line-height:var(--gl-heading-6-line-height);margin-bottom:var(--gl-heading-6-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph,.duo-chat-markdown p{margin-bottom:var(--gl-spacing-scale-0);margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-paragraph+.gl-paragraph,.duo-chat-markdown .gl-paragraph+p,.duo-chat-markdown p+.gl-paragraph,.duo-chat-markdown p+p{margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph.sm,.duo-chat-markdown .sm,.duo-chat-markdown p.sm{font-size:.875rem;line-height:var(--gl-line-height-20)}.duo-chat-markdown .monospace,.duo-chat-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-markdown blockquote{box-shadow:inset 4px 0 0 0 #dcdcde;color:var(--gray-700);margin:var(--gl-spacing-scale-3) var(--gl-spacing-scale-0);padding-bottom:var(--gl-spacing-scale-3);padding-left:var(--gl-spacing-scale-6);padding-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .idiff{border-radius:.25rem;display:inline-flex;padding-left:var(--gl-spacing-scale-2);padding-right:var(--gl-spacing-scale-2)}.duo-chat-markdown .deletion{background-color:var(--red-100)}.duo-chat-markdown .addition{background-color:var(--green-100)}.duo-chat-markdown code{background-color:var(--gray-50);border-radius:.25rem;color:var(--gray-950);padding:var(--gl-spacing-scale-1) var(--gl-spacing-scale-2)}.duo-chat-markdown pre{border-radius:.25rem;box-shadow:inset 0 0 0 1px #dcdcde;margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7);overflow:auto;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4)}.duo-chat-markdown pre code{background-color:var(--white);border-radius:var(--gl-border-radius-none);color:var(--gray-900);padding:var(--gl-spacing-scale-0)}.duo-chat-markdown .audio-container{display:inline-flex;flex-direction:column;width:100%}.duo-chat-markdown .audio-container audio{width:100%}.duo-chat-markdown .audio-container a{margin-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .audio-container a:before{-webkit-font-smoothing:antialiased;content:"📎";margin-right:var(--gl-spacing-scale-2);text-rendering:auto}.duo-chat-markdown table{margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown table td,.duo-chat-markdown table th{box-shadow:inset 0 -1px 0 0 #dcdcde;padding:var(--gl-spacing-scale-4) var(--gl-spacing-scale-3);vertical-align:top}.duo-chat-markdown table th{box-shadow:inset 0 1px 0 0 #dcdcde,inset 0 -1px 0 0 #dcdcde;font-weight:var(--gl-font-weight-bold)}.duo-chat-markdown table thead{background-color:var(--gray-50)}.duo-chat-markdown table tr:nth-child(2n){background-color:var(--gray-10)}.duo-chat-compact-markdown{font-size:var(--gl-font-size-base)}.recents-wrapper .duo-chat-compact-markdown{margin-top:var(--gl-spacing-scale-0)}.duo-chat-compact-markdown{line-height:var(--gl-line-height-20)}.duo-chat-compact-markdown .gl-h1,.duo-chat-compact-markdown h1{color:var(--gl-heading-1-fixed-color);font-size:var(--gl-heading-1-fixed-font-size);font-weight:var(--gl-heading-1-fixed-font-weight);letter-spacing:var(--gl-heading-1-fixed-letter-spacing);line-height:var(--gl-heading-1-fixed-line-height);margin-bottom:var(--gl-heading-1-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown h2{color:var(--gl-heading-2-fixed-color);font-size:var(--gl-heading-2-fixed-font-size);font-weight:var(--gl-heading-2-fixed-font-weight);letter-spacing:var(--gl-heading-2-fixed-letter-spacing);line-height:var(--gl-heading-2-fixed-line-height);margin-bottom:var(--gl-heading-2-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h3{color:var(--gl-heading-3-fixed-color);font-size:var(--gl-heading-3-fixed-font-size);font-weight:var(--gl-heading-3-fixed-font-weight);letter-spacing:var(--gl-heading-3-fixed-letter-spacing);line-height:var(--gl-heading-3-fixed-line-height);margin-bottom:var(--gl-heading-3-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown h4{color:var(--gl-heading-4-fixed-color);font-size:var(--gl-heading-4-fixed-font-size);font-weight:var(--gl-heading-4-fixed-font-weight);letter-spacing:var(--gl-heading-4-fixed-letter-spacing);line-height:var(--gl-heading-4-fixed-line-height);margin-bottom:var(--gl-heading-4-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h5{color:var(--gl-heading-5-fixed-color);font-size:var(--gl-heading-5-fixed-font-size);font-weight:var(--gl-heading-5-fixed-font-weight);letter-spacing:var(--gl-heading-5-fixed-letter-spacing);line-height:var(--gl-heading-5-fixed-line-height);margin-bottom:var(--gl-heading-5-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h6,.duo-chat-compact-markdown h6{color:var(--gl-heading-6-fixed-color);font-size:var(--gl-heading-6-fixed-font-size);font-weight:var(--gl-heading-6-fixed-font-weight);letter-spacing:var(--gl-heading-6-fixed-letter-spacing);line-height:var(--gl-heading-6-fixed-line-height);margin-bottom:var(--gl-heading-6-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .sm{font-size:var(--gl-font-size-sm)}.duo-chat-compact-markdown .monospace,.duo-chat-compact-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-compact-markdown table td,.duo-chat-compact-markdown table th{padding-bottom:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-3)}.message-tool-approval-collapsed{border-bottom:0}.message-tool-approval-collapsed-header{border-bottom-left-radius:calc(var(--gl-card-border-radius) - 1px);border-bottom-right-radius:calc(var(--gl-card-border-radius) - 1px)}.web-only .duo-chat-input{overflow:visible;position:relative}.web-only .duo-chat-input:after{padding:var(--gl-spacing-scale-2)}.web-only .duo-chat-message pre code{background-color:initial!important;color:inherit!important}.duo-chat-loader{display:flex}.duo-chat-loader .transition{transition:width .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .transition{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter{opacity:var(--gl-opacity-0)}.duo-chat-loader .text-enter-active{transition:opacity .4s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-enter-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter-to,.duo-chat-loader .text-leave{opacity:var(--gl-opacity-10)}.duo-chat-loader .text-leave-active{transition:opacity .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-leave-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-leave-to{opacity:var(--gl-opacity-0)}.duo-chat-message{--gl-text-color-heading:var(--duo-chat-message-heading-color,inherit)!important;border-radius:1rem 1rem 0;color:var(--duo-chat-message-color,inherit)!important;position:relative}.duo-chat-message code{background-color:var(--gl-status-neutral-background-color)}.duo-chat-message pre{background-color:var(--gl-background-color-preformat,var(--gl-background-color-default));border-color:var(--gl-border-color-default);border-style:solid;border-width:1px;box-shadow:none!important;color:inherit;max-height:60vh;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4);scroll-behavior:smooth}.duo-chat-message pre:after,.duo-chat-message pre:before{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;content:"";height:var(--gl-spacing-scale-7);left:1px;pointer-events:none;position:absolute;width:calc(100% - 2px)}.duo-chat-message pre.scrim-top:before{--tw-rotate:-180deg;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));top:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.duo-chat-message pre.scrim-bottom:after{background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));bottom:1px}.duo-chat-message pre code{background-color:initial;display:block;font-size:var(--gl-font-size-sm);white-space:pre-wrap;word-break:break-all}.duo-chat-message p:not(:last-of-type){margin-bottom:var(--gl-spacing-scale-4)}.duo-chat-message p:last-of-type{margin-bottom:var(--gl-spacing-scale-0)}.duo-chat-message copy-code,.duo-chat-message insert-code-snippet{opacity:var(--gl-opacity-0);position:absolute;right:.5rem;top:.5rem;transition-duration:.2s;transition-property:all;transition-timing-function:ease}.duo-chat-message copy-code [role=tooltip],.duo-chat-message insert-code-snippet [role=tooltip]{background-color:var(--gray-100);border-radius:.25rem;display:none;left:0;position:absolute;top:0;width:max-content}.duo-chat-message copy-code [role=tooltip] .arrow,.duo-chat-message insert-code-snippet [role=tooltip] .arrow{background:inherit;height:var(--gl-spacing-scale-3);position:absolute;transform:rotate(45deg);width:var(--gl-spacing-scale-3)}.duo-chat-message copy-code{margin-right:2.5rem}.insert-code-hidden insert-code-snippet{display:none}.insert-code-hidden copy-code{margin-right:0}.duo-chat-message-complete .duo-message-pre-block:focus .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:focus copy-code,.duo-chat-message-complete .duo-message-pre-block:focus insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) copy-code,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:hover .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:hover copy-code,.duo-chat-message-complete .duo-message-pre-block:hover insert-code-snippet{opacity:1}.duo-chat-message-error>p{margin:0}.agentic-feedback-hover-wrapper{transition:width .3s ease-in-out,opacity .3s ease-in-out,margin .3s ease-in-out}.gl-group:hover .agentic-feedback-hover-wrapper{margin-right:0;opacity:1;width:auto}.recents-wrapper .gl-accordion-item-header .gl-button.gl-button.btn-link{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-radius:var(--gl-border-radius-none);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;font-size:var(--gl-font-size-sm);font-weight:var(--gl-font-weight-bold);padding-bottom:var(--gl-spacing-scale-2);padding-left:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-2);text-decoration-line:none;text-transform:uppercase;width:100%}.recents-wrapper .gl-accordion-item-header>.collapse{margin-left:var(--gl-spacing-scale-0)}.recents-wrapper .gl-text-base{margin-top:var(--gl-spacing-scale-0)}.agentic-binary-feedback .feedback-colored-icon{animation:feedback-fade-out .3s ease-in-out forwards;animation-delay:2s;margin-left:4px;will-change:opacity}.agentic-binary-feedback .feedback-thanks{animation:feedback-fade-in .3s ease-in-out forwards;animation-delay:2s;pointer-events:none;will-change:opacity,width,margin}@keyframes feedback-fade-out{to{opacity:0;overflow:hidden;pointer-events:none;width:0}}@media (prefers-reduced-motion:reduce){.feedback-colored-icon,.feedback-thanks{animation:none}}@keyframes feedback-fade-in{to{margin-left:-6px;opacity:1;pointer-events:auto;width:auto}}
1
+ @charset "UTF-8";.resizable-content{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);background:var(--gl-background-color-default);border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;width:100%}.recents-wrapper .resizable-content{margin-top:var(--gl-spacing-scale-0)}.resizable-content{display:flex;flex-direction:column;line-height:1rem}.resizable-component .resizable-l,.resizable-component .resizable-t{background-color:initial;border-radius:3px;transition:background-color .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.resizable-component .resizable-l,.resizable-component .resizable-t{transition-delay:0ms!important;transition-duration:.01ms!important}}.resizable-component .resizable-l:hover,.resizable-component .resizable-t:hover{background-color:var(--gl-color-blue-200)}.resizable-component .resizable-t{height:4px!important;left:50%!important;top:2px!important;transform:translateX(-50%);width:95%!important}.resizable-component .resizable-l{height:95%!important;left:2px!important;top:50%!important;transform:translateY(-50%);width:4px!important}.resizable-component .duo-chat{z-index:var(--gl-zindex-0)}.resizable-component .resizable-l,.resizable-component .resizable-lt,.resizable-component .resizable-t{z-index:var(--gl-zindex-1)}.duo-chat{font-family:var(--gl-font-family-regular);z-index:999}.duo-chat .message-enter-active,.duo-chat .message-leave-active{transition:all .5s ease}.duo-chat .message-enter,.duo-chat .message-leave-to{opacity:var(--gl-opacity-0);transform:translateY(10px)}.duo-chat .duo-chat-loader.message-leave,.duo-chat .duo-chat-loader.message-leave-to{transition:none}.duo-chat .duo-agent-mode-switcher>*,.duo-chat .duo-model-switcher>*{width:100%}.duo-chat-drawer{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;position:fixed;right:0;transition-duration:.2s;transition-property:all;transition-timing-function:ease;width:100%}.recents-wrapper .duo-chat-drawer{margin-top:var(--gl-spacing-scale-0)}.duo-chat-drawer{display:flex;flex-direction:column;line-height:1rem}.duo-chat-drawer-footer{padding-bottom:var(--gl-spacing-scale-4);padding-left:var(--gl-spacing-scale-4);padding-right:var(--gl-spacing-scale-4)}.duo-chat-drawer-footer:before{--tw-translate-y:-100%;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));content:"";height:var(--gl-spacing-scale-4);left:0;pointer-events:none;position:absolute;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.duo-chat-history{scroll-behavior:smooth}.duo-chat-history *{overflow-anchor:none}.duo-chat-history .scroll-anchor{height:1px;margin-top:-1px;overflow-anchor:auto}.history-item{align-items:center;background:var(--gl-button-default-tertiary-background-color-default);border-radius:var(--gl-border-radius-lg);display:flex;gap:var(--gl-spacing-scale-3);margin-left:calc(var(--gl-spacing-scale-3)*-1);margin-right:calc(var(--gl-spacing-scale-3)*-1);padding-right:var(--gl-spacing-scale-2);transition:background-color .2s cubic-bezier(.22,.61,.36,1)}.history-item:focus,.history-item:focus-within,.history-item:hover{background:var(--gl-button-default-tertiary-background-color-hover)}.history-item:focus .history-remove-button,.history-item:focus-within .history-remove-button,.history-item:hover .history-remove-button{opacity:1}.history-item .history-remove-button{opacity:0;transition:opacity .2s cubic-bezier(.22,.61,.36,1)}.history-item .history-item-name{border-radius:var(--gl-border-radius-lg);border-width:0;padding:var(--gl-spacing-scale-3)}.history-item .history-item-name,.history-item .history-item-name:active,.history-item .history-item-name:focus,.history-item .history-item-name:hover{background-color:initial!important}.history-item .gl-button-text{align-items:center;display:flex;flex-direction:row;gap:var(--gl-spacing-scale-3);text-align:left;width:100%}.duo-chat-input{background:var(--gl-control-background-color-default);border-radius:1.25rem;box-shadow:inset 0 0 0 1px var(--gl-control-border-color-default);display:flex;flex-direction:column;max-height:240px;overflow:hidden}.duo-chat-input:focus-within{box-shadow:inset 0 0 0 1px var(--gl-control-border-color-focus),0 0 0 1px var(--gl-focus-ring-inner-color),0 0 0 3px var(--gl-focus-ring-outer-color);outline:none}@media (forced-colors:active){.duo-chat-input:focus-within{outline:2px solid LinkText}}.duo-chat-input .gl-form-textarea.form-control{border-radius:1.25rem;flex:1;max-height:240px;padding-right:40px;resize:none}.duo-chat-input:after{content:attr(data-value) " ";font-family:var(--gl-font-family-regular);padding:var(--gl-spacing-scale-4);padding-right:40px;visibility:hidden;word-break:break-word}.duo-chat .duo-chat-suggestion-button{border-radius:1rem}.slash-commands{margin-top:calc(var(--gl-spacing-scale-2)*-1)}.slash-commands .active-command{background-color:var(--gl-background-color-strong);border-radius:.25rem}.slash-commands .gl-dropdown-item button.dropdown-item{background-color:initial;font-size:var(--gl-font-size-sm);padding-left:var(--gl-spacing-scale-3);padding-right:var(--gl-spacing-scale-3)}.slash-commands .gl-dropdown-item button.dropdown-item:hover{background-color:initial}.duo-chat-markdown{color:#3a383f;font-family:var(--gl-font-family-regular);font-size:var(--gl-font-size-lg);font-weight:var(--gl-font-weight-normal);line-height:var(--gl-line-height-24)}.duo-chat-markdown :first-child{margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-h1,.duo-chat-markdown h1{color:var(--gl-heading-1-color);font-size:var(--gl-heading-1-font-size);font-weight:var(--gl-heading-1-font-weight);letter-spacing:var(--gl-heading-1-letter-spacing);line-height:var(--gl-heading-1-line-height);margin-bottom:var(--gl-heading-1-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown .gl-h2,.duo-chat-markdown h2{color:var(--gl-heading-2-color);font-size:var(--gl-heading-2-font-size);font-weight:var(--gl-heading-2-font-weight);letter-spacing:var(--gl-heading-2-letter-spacing);line-height:var(--gl-heading-2-line-height);margin-bottom:var(--gl-heading-2-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h3,.duo-chat-markdown h3{color:var(--gl-heading-3-color);font-size:var(--gl-heading-3-font-size);font-weight:var(--gl-heading-3-font-weight);letter-spacing:var(--gl-heading-3-letter-spacing);line-height:var(--gl-heading-3-line-height);margin-bottom:var(--gl-heading-3-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h4,.duo-chat-markdown h4{color:var(--gl-heading-4-color);font-size:var(--gl-heading-4-font-size);font-weight:var(--gl-heading-4-font-weight);letter-spacing:var(--gl-heading-4-letter-spacing);line-height:var(--gl-heading-4-line-height);margin-bottom:var(--gl-heading-4-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h5,.duo-chat-markdown h5{color:var(--gl-heading-5-color);font-size:var(--gl-heading-5-font-size);font-weight:var(--gl-heading-5-font-weight);letter-spacing:var(--gl-heading-5-letter-spacing);line-height:var(--gl-heading-5-line-height);margin-bottom:var(--gl-heading-5-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h6,.duo-chat-markdown h6{color:var(--gl-heading-6-color);font-size:var(--gl-heading-6-font-size);font-weight:var(--gl-heading-6-font-weight);letter-spacing:var(--gl-heading-6-letter-spacing);line-height:var(--gl-heading-6-line-height);margin-bottom:var(--gl-heading-6-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph,.duo-chat-markdown p{margin-bottom:var(--gl-spacing-scale-0);margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-paragraph+.gl-paragraph,.duo-chat-markdown .gl-paragraph+p,.duo-chat-markdown p+.gl-paragraph,.duo-chat-markdown p+p{margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph.sm,.duo-chat-markdown .sm,.duo-chat-markdown p.sm{font-size:.875rem;line-height:var(--gl-line-height-20)}.duo-chat-markdown .monospace,.duo-chat-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-markdown blockquote{box-shadow:inset 4px 0 0 0 #dcdcde;color:var(--gray-700);margin:var(--gl-spacing-scale-3) var(--gl-spacing-scale-0);padding-bottom:var(--gl-spacing-scale-3);padding-left:var(--gl-spacing-scale-6);padding-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .idiff{border-radius:.25rem;display:inline-flex;padding-left:var(--gl-spacing-scale-2);padding-right:var(--gl-spacing-scale-2)}.duo-chat-markdown .deletion{background-color:var(--red-100)}.duo-chat-markdown .addition{background-color:var(--green-100)}.duo-chat-markdown code{background-color:var(--gray-50);border-radius:.25rem;color:var(--gray-950);padding:var(--gl-spacing-scale-1) var(--gl-spacing-scale-2)}.duo-chat-markdown pre{border-radius:.25rem;box-shadow:inset 0 0 0 1px #dcdcde;margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7);overflow:auto;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4)}.duo-chat-markdown pre code{background-color:var(--white);border-radius:var(--gl-border-radius-none);color:var(--gray-900);padding:var(--gl-spacing-scale-0)}.duo-chat-markdown .audio-container{display:inline-flex;flex-direction:column;width:100%}.duo-chat-markdown .audio-container audio{width:100%}.duo-chat-markdown .audio-container a{margin-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .audio-container a:before{-webkit-font-smoothing:antialiased;content:"📎";margin-right:var(--gl-spacing-scale-2);text-rendering:auto}.duo-chat-markdown table{margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown table td,.duo-chat-markdown table th{box-shadow:inset 0 -1px 0 0 #dcdcde;padding:var(--gl-spacing-scale-4) var(--gl-spacing-scale-3);vertical-align:top}.duo-chat-markdown table th{box-shadow:inset 0 1px 0 0 #dcdcde,inset 0 -1px 0 0 #dcdcde;font-weight:var(--gl-font-weight-bold)}.duo-chat-markdown table thead{background-color:var(--gray-50)}.duo-chat-markdown table tr:nth-child(2n){background-color:var(--gray-10)}.duo-chat-compact-markdown{font-size:var(--gl-font-size-base)}.recents-wrapper .duo-chat-compact-markdown{margin-top:var(--gl-spacing-scale-0)}.duo-chat-compact-markdown{line-height:var(--gl-line-height-20)}.duo-chat-compact-markdown .gl-h1,.duo-chat-compact-markdown h1{color:var(--gl-heading-1-fixed-color);font-size:var(--gl-heading-1-fixed-font-size);font-weight:var(--gl-heading-1-fixed-font-weight);letter-spacing:var(--gl-heading-1-fixed-letter-spacing);line-height:var(--gl-heading-1-fixed-line-height);margin-bottom:var(--gl-heading-1-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown h2{color:var(--gl-heading-2-fixed-color);font-size:var(--gl-heading-2-fixed-font-size);font-weight:var(--gl-heading-2-fixed-font-weight);letter-spacing:var(--gl-heading-2-fixed-letter-spacing);line-height:var(--gl-heading-2-fixed-line-height);margin-bottom:var(--gl-heading-2-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h3{color:var(--gl-heading-3-fixed-color);font-size:var(--gl-heading-3-fixed-font-size);font-weight:var(--gl-heading-3-fixed-font-weight);letter-spacing:var(--gl-heading-3-fixed-letter-spacing);line-height:var(--gl-heading-3-fixed-line-height);margin-bottom:var(--gl-heading-3-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown h4{color:var(--gl-heading-4-fixed-color);font-size:var(--gl-heading-4-fixed-font-size);font-weight:var(--gl-heading-4-fixed-font-weight);letter-spacing:var(--gl-heading-4-fixed-letter-spacing);line-height:var(--gl-heading-4-fixed-line-height);margin-bottom:var(--gl-heading-4-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h5{color:var(--gl-heading-5-fixed-color);font-size:var(--gl-heading-5-fixed-font-size);font-weight:var(--gl-heading-5-fixed-font-weight);letter-spacing:var(--gl-heading-5-fixed-letter-spacing);line-height:var(--gl-heading-5-fixed-line-height);margin-bottom:var(--gl-heading-5-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h6,.duo-chat-compact-markdown h6{color:var(--gl-heading-6-fixed-color);font-size:var(--gl-heading-6-fixed-font-size);font-weight:var(--gl-heading-6-fixed-font-weight);letter-spacing:var(--gl-heading-6-fixed-letter-spacing);line-height:var(--gl-heading-6-fixed-line-height);margin-bottom:var(--gl-heading-6-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .sm{font-size:var(--gl-font-size-sm)}.duo-chat-compact-markdown .monospace,.duo-chat-compact-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-compact-markdown table td,.duo-chat-compact-markdown table th{padding-bottom:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-3)}.message-tool-approval-collapsed{border-bottom:0}.message-tool-approval-collapsed-header{border-bottom-left-radius:calc(var(--gl-card-border-radius) - 1px);border-bottom-right-radius:calc(var(--gl-card-border-radius) - 1px)}.web-only .duo-chat-input{overflow:visible;position:relative}.web-only .duo-chat-input:after{padding:var(--gl-spacing-scale-2)}.web-only .duo-chat-message pre code{background-color:initial!important;color:inherit!important}.duo-chat-loader{display:flex}.duo-chat-loader .transition{transition:width .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .transition{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter{opacity:var(--gl-opacity-0)}.duo-chat-loader .text-enter-active{transition:opacity .4s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-enter-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter-to,.duo-chat-loader .text-leave{opacity:var(--gl-opacity-10)}.duo-chat-loader .text-leave-active{transition:opacity .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-leave-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-leave-to{opacity:var(--gl-opacity-0)}.duo-chat-message{--gl-text-color-heading:var(--duo-chat-message-heading-color,inherit)!important;border-radius:1rem 1rem 0;color:var(--duo-chat-message-color,inherit)!important;position:relative}.duo-chat-message code{background-color:var(--gl-status-neutral-background-color)}.duo-chat-message pre{background-color:var(--gl-background-color-preformat,var(--gl-background-color-default));border-color:var(--gl-border-color-default);border-style:solid;border-width:1px;box-shadow:none!important;color:inherit;max-height:60vh;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4);scroll-behavior:smooth}.duo-chat-message pre:after,.duo-chat-message pre:before{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;content:"";height:var(--gl-spacing-scale-7);left:1px;pointer-events:none;position:absolute;width:calc(100% - 2px)}.duo-chat-message pre.scrim-top:before{--tw-rotate:-180deg;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));top:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.duo-chat-message pre.scrim-bottom:after{background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));bottom:1px}.duo-chat-message pre code{background-color:initial;display:block;font-size:var(--gl-font-size-sm);white-space:pre-wrap;word-break:break-all}.duo-chat-message p:not(:last-of-type){margin-bottom:var(--gl-spacing-scale-4)}.duo-chat-message p:last-of-type{margin-bottom:var(--gl-spacing-scale-0)}.duo-chat-message copy-code,.duo-chat-message insert-code-snippet{opacity:var(--gl-opacity-0);position:absolute;right:.5rem;top:.5rem;transition-duration:.2s;transition-property:all;transition-timing-function:ease}.duo-chat-message copy-code [role=tooltip],.duo-chat-message insert-code-snippet [role=tooltip]{background-color:var(--gray-100);border-radius:.25rem;display:none;left:0;position:absolute;top:0;width:max-content}.duo-chat-message copy-code [role=tooltip] .arrow,.duo-chat-message insert-code-snippet [role=tooltip] .arrow{background:inherit;height:var(--gl-spacing-scale-3);position:absolute;transform:rotate(45deg);width:var(--gl-spacing-scale-3)}.duo-chat-message copy-code{margin-right:2.5rem}.insert-code-hidden insert-code-snippet{display:none}.insert-code-hidden copy-code{margin-right:0}.duo-chat-message-complete .duo-message-pre-block:focus .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:focus copy-code,.duo-chat-message-complete .duo-message-pre-block:focus insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) copy-code,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:hover .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:hover copy-code,.duo-chat-message-complete .duo-message-pre-block:hover insert-code-snippet{opacity:1}.duo-chat-message-error>p{margin:0}.agentic-feedback-hover-wrapper{transition:width .3s ease-in-out,opacity .3s ease-in-out,margin .3s ease-in-out}.gl-group:hover .agentic-feedback-hover-wrapper{margin-right:0;opacity:1;width:auto}.recents-wrapper .gl-accordion-item-header .gl-button.gl-button.btn-link{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-radius:var(--gl-border-radius-none);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;font-size:var(--gl-font-size-sm);font-weight:var(--gl-font-weight-bold);padding-bottom:var(--gl-spacing-scale-2);padding-left:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-2);text-decoration-line:none;text-transform:uppercase;width:100%}.recents-wrapper .gl-accordion-item-header>.collapse{margin-left:var(--gl-spacing-scale-0)}.recents-wrapper .gl-text-base{margin-top:var(--gl-spacing-scale-0)}.agentic-binary-feedback .feedback-colored-icon{animation:feedback-fade-out .3s ease-in-out forwards;animation-delay:.3s;margin-left:4px;will-change:opacity}.agentic-binary-feedback .feedback-thanks{animation:feedback-fade-in .3s ease-in-out forwards;animation-delay:.3s;pointer-events:none;will-change:opacity,width,margin}@keyframes feedback-fade-out{to{opacity:0;overflow:hidden;pointer-events:none;width:0}}@media (prefers-reduced-motion:reduce){.feedback-colored-icon,.feedback-thanks{animation:none}}@keyframes feedback-fade-in{to{margin-left:-6px;opacity:1;pointer-events:auto;width:auto}}
2
2
  /*# sourceMappingURL=components.css.map */