@gitlab/duo-ui 10.23.0 → 10.23.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## [10.23.1](https://gitlab.com/gitlab-org/duo-ui/compare/v10.23.0...v10.23.1) (2025-09-16)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * trigger release pipeline after reverting MR 271 and MR 263 ([514243a](https://gitlab.com/gitlab-org/duo-ui/commit/514243a6e5ccdaff638032e4d7970f80d2c6acd9))
7
+
1
8
  # [10.23.0](https://gitlab.com/gitlab-org/duo-ui/compare/v10.22.1...v10.23.0) (2025-09-13)
2
9
 
3
10
 
@@ -1,5 +1,6 @@
1
1
  import throttle from 'lodash/throttle';
2
- import { GlButton, GlFormTextarea, GlForm, GlCard, GlDropdownItem, GlSafeHtmlDirective } from '@gitlab/ui';
2
+ import VueResizable from 'vue-resizable';
3
+ import { GlButton, GlAlert, GlFormInputGroup, GlFormTextarea, GlForm, GlExperimentBadge, GlCard, GlDropdownItem, GlSafeHtmlDirective } from '@gitlab/ui';
3
4
  import { translate, sprintf, translatePlural } from '@gitlab/ui/dist/utils/i18n';
4
5
  import { badgeTypes, badgeTypeValidator, MAX_PROMPT_LENGTH, PROMPT_LENGTH_WARNING, CHAT_RESET_MESSAGE, CHAT_INCLUDE_MESSAGE, MESSAGE_MODEL_ROLES, CHAT_BASE_COMMANDS } from '../chat/constants';
5
6
  import { VIEW_TYPES } from '../chat/components/duo_chat_header/constants';
@@ -13,10 +14,9 @@ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
13
14
  const i18n = {
14
15
  CHAT_DEFAULT_TITLE: translate('AgenticDuoChat.chatDefaultTitle', 'GitLab Duo Agentic Chat'),
15
16
  CHAT_HISTORY_TITLE: translate('AgenticDuoChat.chatHistoryTitle', 'Chat history'),
16
- CHAT_DISCLAMER: translate('AgenticDuoChat.chatDisclamer', 'Responses may be inaccurate. Verify before use.'),
17
+ CHAT_DISCLAMER: translate('AgenticDuoChat.chatDisclamer', 'Chat can autonomously change code. Responses and changes can be inaccurate. Review carefully.'),
17
18
  CHAT_EMPTY_STATE_TITLE: translate('AgenticDuoChat.chatEmptyStateTitle', '👋 I am GitLab Duo Agentic Chat, your personal AI-powered assistant. How can I help you today?'),
18
- CHAT_PROMPT_PLACEHOLDER_DEFAULT: translate('AgenticDuoChat.chatPromptPlaceholderDefault', "Let's work through this together..."),
19
- CHAT_MODEL_PLACEHOLDER: translate('AgenticDuoChat.chatModelPlaceholder', 'GitLab Duo Agentic Chat'),
19
+ CHAT_PROMPT_PLACEHOLDER_DEFAULT: translate('AgenticDuoChat.chatPromptPlaceholderDefault', 'GitLab Duo Agentic Chat'),
20
20
  CHAT_PROMPT_PLACEHOLDER_WITH_COMMANDS: translate('AgenticDuoChat.chatPromptPlaceholderWithCommands', 'Type /help to learn more'),
21
21
  CHAT_SUBMIT_LABEL: translate('AgenticDuoChat.chatSubmitLabel', 'Send chat message.'),
22
22
  CHAT_CANCEL_LABEL: translate('AgenticDuoChat.chatCancelLabel', 'Cancel'),
@@ -45,15 +45,19 @@ var script = {
45
45
  name: 'DuoChat',
46
46
  components: {
47
47
  GlButton,
48
+ GlAlert,
49
+ GlFormInputGroup,
48
50
  GlFormTextarea,
49
51
  GlForm,
52
+ GlExperimentBadge,
50
53
  DuoChatLoader,
51
54
  DuoChatPredefinedPrompts,
52
55
  DuoChatConversation,
53
56
  DuoChatHeader,
54
57
  DuoChatThreads,
55
58
  GlCard,
56
- GlDropdownItem
59
+ GlDropdownItem,
60
+ VueResizable
57
61
  },
58
62
  directives: {
59
63
  SafeHtml: GlSafeHtmlDirective
@@ -279,6 +283,7 @@ var script = {
279
283
  },
280
284
  data() {
281
285
  return {
286
+ isHidden: false,
282
287
  prompt: '',
283
288
  scrolledToBottom: true,
284
289
  activeCommandIndex: 0,
@@ -382,6 +387,7 @@ var script = {
382
387
  if (!loading && !this.isStreaming) {
383
388
  this.canSubmit = true; // Re-enable submit button when loading stops
384
389
  }
390
+ this.isHidden = false;
385
391
  },
386
392
  isStreaming(streaming) {
387
393
  if (!streaming && !this.isLoading) {
@@ -420,10 +426,14 @@ var script = {
420
426
  this.focusChatInput();
421
427
  });
422
428
  },
429
+ updateSize(e) {
430
+ this.$emit('chat-resize', e);
431
+ },
423
432
  compositionEnd() {
424
433
  this.compositionJustEnded = true;
425
434
  },
426
435
  hideChat() {
436
+ this.isHidden = true;
427
437
  /**
428
438
  * Emitted when clicking the cross in the title and the chat gets closed.
429
439
  */
@@ -677,19 +687,28 @@ var script = {
677
687
  const __vue_script__ = script;
678
688
 
679
689
  /* template */
680
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"markdown-code-block duo-chat gl-bottom-0 gl-flex gl-max-h-full gl-flex-col",attrs:{"id":"chat-component","role":"complementary","data-testid":"chat-component"}},[(_vm.showHeader)?_c('duo-chat-header',{ref:"header",attrs:{"active-thread-id":_vm.activeThreadId,"title":_vm.isMultithreaded && _vm.currentView === 'list' ? _vm.$options.i18n.CHAT_HISTORY_TITLE : _vm.title,"subtitle":_vm.activeThreadTitleForView,"error":_vm.error,"is-multithreaded":_vm.isMultithreaded,"current-view":_vm.currentView,"should-render-resizable":_vm.shouldRenderResizable,"badge-type":_vm.isMultithreaded ? null : _vm.badgeType,"session-id":_vm.sessionId,"agents":_vm.agents},on:{"go-back":_vm.onGoBack,"new-chat":_vm.onNewChat,"close":_vm.hideChat},scopedSlots:_vm._u([{key:"subheader",fn:function(){return [_vm._t("subheader")]},proxy:true}],null,true)}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-flex-1 gl-flex-grow gl-flex-col gl-overflow-y-auto gl-overscroll-contain gl-bg-inherit",attrs:{"data-testid":"chat-history"},on:{"scroll":_vm.handleScrollingThrottled}},[(_vm.shouldShowThreadList)?_c('duo-chat-threads',{attrs:{"threads":_vm.threadList,"preferred-locale":_vm.preferredLocale},on:{"new-chat":_vm.onNewChat,"select-thread":_vm.onSelectThread,"delete-thread":_vm.onDeleteThread,"close":_vm.hideChat}}):_c('transition-group',{staticClass:"duo-chat-history gl-mt-auto gl-p-5",attrs:{"mode":"out-in","tag":"section","name":"message"}},[_vm._l((_vm.conversations),function(conversation,index){return _c('duo-chat-conversation',{key:("conversation-" + index),attrs:{"enable-code-insertion":_vm.enableCodeInsertion,"messages":conversation,"show-delimiter":index > 0,"with-feedback":_vm.withFeedback,"is-tool-approval-processing":_vm.isToolApprovalProcessing,"working-directory":_vm.workingDirectory},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet,"copy-message":_vm.onCopyMessage,"get-context-item-content":_vm.onGetContextItemContent,"approve-tool":_vm.onApproveToolCall,"deny-tool":_vm.onDenyToolCall,"open-file-path":_vm.onOpenFilePath}})}),_vm._v(" "),(!_vm.hasMessages && !_vm.isLoading)?[_c('div',{key:"empty-state-message",staticClass:"duo-chat-message gl-rounded-bl-none gl-leading-20 gl-text-gray-900 gl-break-anywhere",attrs:{"data-testid":"gl-duo-chat-empty-state"}},[(_vm.emptyStateTitle)?_c('p',{staticClass:"gl-m-0",attrs:{"data-testid":"gl-duo-chat-empty-state-title"}},[_vm._v("\n "+_vm._s(_vm.emptyStateTitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('duo-chat-predefined-prompts',{key:"predefined-prompts",attrs:{"prompts":_vm.predefinedPrompts},on:{"click":_vm.sendPredefinedPrompt}})],1)]:_vm._e(),_vm._v(" "),(_vm.isLoading)?_c('duo-chat-loader',{key:"loader",attrs:{"tool-name":_vm.toolName}}):_vm._e(),_vm._v(" "),_c('div',{key:"anchor",ref:"anchor",staticClass:"scroll-anchor"})],2)],1),_vm._v(" "),(_vm.isChatAvailable && !_vm.shouldShowThreadList)?_c('footer',{staticClass:"duo-chat-drawer-footer gl-relative gl-z-2 gl-shrink-0 gl-border-0 gl-bg-default gl-pb-3",class:{ 'duo-chat-drawer-body-scrim-on-footer': !_vm.scrolledToBottom },attrs:{"data-testid":"chat-footer"}},[_c('gl-form',{attrs:{"data-testid":"chat-prompt-form"},on:{"submit":function($event){$event.stopPropagation();$event.preventDefault();return _vm.sendChatPrompt.apply(null, arguments)}}},[_c('div',{staticClass:"gl-relative gl-max-w-full"},[_vm._t("context-items-menu",null,{"isOpen":_vm.contextItemsMenuIsOpen,"onClose":_vm.closeContextItemsMenuOpen,"setRef":_vm.setContextItemsMenuRef,"focusPrompt":_vm.focusChatInput})],2),_vm._v(" "),_c('div',{staticClass:"duo-chat-input gl-min-h-8 gl-max-w-full gl-grow gl-flex-col gl-rounded-bl-[12px] gl-rounded-br-[18px] gl-rounded-tl-[12px] gl-rounded-tr-[12px] gl-align-top"},[_c('div',{staticClass:"gl-flex gl-justify-between gl-border-0 gl-border-b-1 gl-border-solid gl-border-[#DCDCDE] gl-px-4 gl-py-4"},[_c('div',[_vm._v(_vm._s(_vm.$options.i18n.CHAT_MODEL_PLACEHOLDER))]),_vm._v(" "),_c('div',[_vm._t("agentic-switch")],2)]),_vm._v(" "),_c('div',{staticClass:"gl-h-[40px] gl-grow",attrs:{"data-value":_vm.prompt}},[(_vm.shouldShowSlashCommands)?_c('gl-card',{ref:"commands",staticClass:"slash-commands !gl-absolute gl-w-full -gl-translate-y-full gl-list-none gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2"}},_vm._l((_vm.filteredSlashCommands),function(command,index){return _c('gl-dropdown-item',{key:command.name,class:{ 'active-command': index === _vm.activeCommandIndex },on:{"click":function($event){return _vm.selectSlashCommand(index)}},nativeOn:{"mouseenter":function($event){_vm.activeCommandIndex = index;}}},[_c('span',{staticClass:"gl-flex gl-justify-between"},[_c('span',{staticClass:"gl-block"},[_vm._v(_vm._s(command.name))]),_vm._v(" "),_c('small',{staticClass:"gl-pl-3 gl-text-right gl-italic gl-text-subtle"},[_vm._v(_vm._s(command.description))])])])}),1):_vm._e(),_vm._v(" "),_c('gl-form-textarea',{ref:"prompt",attrs:{"disabled":!_vm.canSubmit,"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"character-count-limit":_vm.maxPromptLength,"textarea-classes":[
681
- '!gl-h-full',
682
- '!gl-bg-transparent',
683
- '!gl-py-4',
684
- '!gl-shadow-none',
685
- 'form-control',
686
- 'gl-form-input',
687
- 'gl-form-textarea',
688
- { 'gl-truncate': !_vm.prompt } ],"aria-label":"Chat prompt input","autofocus":""},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if(!$event.shiftKey){ return null; }if($event.altKey||$event.metaKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if(!$event.shiftKey){ return null; }if($event.ctrlKey||$event.altKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey){ return null; }return _vm.handleRedo.apply(null, arguments)}],"compositionend":_vm.compositionEnd},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();},"keyup":function($event){return _vm.onInputKeyup.apply(null, arguments)}},scopedSlots:_vm._u([{key:"remaining-character-count-text",fn:function(ref){
689
- var count = ref.count;
690
- return [(count <= _vm.promptLengthWarningCount)?_c('span',{staticClass:"gl-absolute gl-bottom-[-25px] gl-right-px gl-pr-3"},[_vm._v("\n "+_vm._s(_vm.remainingCharacterCountMessage(count))+"\n ")]):_vm._e()]}},{key:"character-count-over-limit-text",fn:function(ref){
691
- var count = ref.count;
692
- return [_c('span',{staticClass:"gl-absolute gl-bottom-[-25px] gl-right-px gl-pr-3"},[_vm._v(_vm._s(_vm.overLimitCharacterCountMessage(count)))])]}}],null,false,839584904),model:{value:(_vm.prompt),callback:function ($$v) {_vm.prompt=$$v;},expression:"prompt"}})],1),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-justify-end gl-px-3 gl-pb-3"},[(_vm.canSubmit)?_c('gl-button',{staticClass:"gl-bottom-2 gl-right-2 gl-ml-auto !gl-rounded-full",attrs:{"icon":"paper-airplane","category":"primary","variant":"confirm","type":"submit","disabled":_vm.isPromptEmpty || !_vm.hasValidPrompt,"data-testid":"chat-prompt-submit-button","aria-label":_vm.$options.i18n.CHAT_SUBMIT_LABEL}}):_c('gl-button',{staticClass:"gl-bottom-2 gl-right-2 !gl-rounded-full",attrs:{"icon":"stop","category":"primary","variant":"default","data-testid":"chat-prompt-cancel-button","aria-label":_vm.$options.i18n.CHAT_CANCEL_LABEL},on:{"click":_vm.cancelPrompt}})],1)])]),_vm._v(" "),_vm._t("footer-controls"),_vm._v(" "),_c('p',{staticClass:"gl-mb-0 gl-mt-3 gl-px-4 gl-text-sm gl-text-secondary",class:{ 'gl-mt-6 sm:gl-mt-3 sm:gl-max-w-1/2': _vm.prompt.length >= _vm.maxPromptLengthWarning }},[_vm._v("\n "+_vm._s(_vm.$options.i18n.CHAT_DISCLAMER)+"\n ")])],2):_vm._e()],1)};
690
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.shouldRenderResizable ? 'vue-resizable' : 'div',{tag:"component",class:{
691
+ 'duo-chat-resizable': _vm.shouldRenderResizable,
692
+ 'non-resizable-wrapper': !_vm.shouldRenderResizable,
693
+ },attrs:{"width":_vm.shouldRenderResizable ? _vm.dimensions.width : null,"height":_vm.shouldRenderResizable ? _vm.dimensions.height : null,"max-width":_vm.shouldRenderResizable ? _vm.dimensions.maxWidth : null,"max-height":_vm.shouldRenderResizable ? _vm.dimensions.maxHeight : null,"min-width":_vm.shouldRenderResizable ? _vm.dimensions.minWidth : null,"left":_vm.shouldRenderResizable ? _vm.dimensions.left : null,"top":_vm.shouldRenderResizable ? _vm.dimensions.top : null,"fit-parent":true,"min-height":_vm.shouldRenderResizable ? _vm.dimensions.minHeight : null,"active":_vm.shouldRenderResizable ? ['l', 't', 'lt'] : null},on:{"resize:end":_vm.updateSize}},[(!_vm.isHidden)?_c('aside',{staticClass:"markdown-code-block duo-chat gl-bottom-0 gl-flex gl-max-h-full gl-flex-col",class:{
694
+ 'resizable-content': _vm.shouldRenderResizable,
695
+ 'duo-chat-drawer': !_vm.shouldRenderResizable,
696
+ },attrs:{"id":"chat-component","role":"complementary","data-testid":"chat-component"}},[(_vm.showHeader)?_c('duo-chat-header',{ref:"header",attrs:{"active-thread-id":_vm.activeThreadId,"title":_vm.isMultithreaded && _vm.currentView === 'list' ? _vm.$options.i18n.CHAT_HISTORY_TITLE : _vm.title,"subtitle":_vm.activeThreadTitleForView,"error":_vm.error,"is-multithreaded":_vm.isMultithreaded,"current-view":_vm.currentView,"should-render-resizable":_vm.shouldRenderResizable,"badge-type":_vm.isMultithreaded ? null : _vm.badgeType,"session-id":_vm.sessionId,"agents":_vm.agents},on:{"go-back":_vm.onGoBack,"new-chat":_vm.onNewChat,"close":_vm.hideChat},scopedSlots:_vm._u([{key:"subheader",fn:function(){return [_vm._t("subheader")]},proxy:true}],null,true)}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-flex-1 gl-flex-grow gl-flex-col gl-overflow-y-auto gl-overscroll-contain gl-bg-inherit",attrs:{"data-testid":"chat-history"},on:{"scroll":_vm.handleScrollingThrottled}},[(_vm.shouldShowThreadList)?_c('duo-chat-threads',{attrs:{"threads":_vm.threadList,"preferred-locale":_vm.preferredLocale},on:{"new-chat":_vm.onNewChat,"select-thread":_vm.onSelectThread,"delete-thread":_vm.onDeleteThread,"close":_vm.hideChat}}):_c('transition-group',{staticClass:"duo-chat-history gl-mt-auto gl-p-5",attrs:{"mode":"out-in","tag":"section","name":"message"}},[_vm._l((_vm.conversations),function(conversation,index){return _c('duo-chat-conversation',{key:("conversation-" + index),attrs:{"enable-code-insertion":_vm.enableCodeInsertion,"messages":conversation,"show-delimiter":index > 0,"with-feedback":_vm.withFeedback,"is-tool-approval-processing":_vm.isToolApprovalProcessing,"working-directory":_vm.workingDirectory},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet,"copy-message":_vm.onCopyMessage,"get-context-item-content":_vm.onGetContextItemContent,"approve-tool":_vm.onApproveToolCall,"deny-tool":_vm.onDenyToolCall,"open-file-path":_vm.onOpenFilePath}})}),_vm._v(" "),(!_vm.hasMessages && !_vm.isLoading)?[_c('div',{key:"empty-state-message",staticClass:"duo-chat-message gl-rounded-bl-none gl-leading-20 gl-text-gray-900 gl-break-anywhere",attrs:{"data-testid":"gl-duo-chat-empty-state"}},[(_vm.emptyStateTitle)?_c('p',{staticClass:"gl-m-0",attrs:{"data-testid":"gl-duo-chat-empty-state-title"}},[_vm._v("\n "+_vm._s(_vm.emptyStateTitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('duo-chat-predefined-prompts',{key:"predefined-prompts",attrs:{"prompts":_vm.predefinedPrompts},on:{"click":_vm.sendPredefinedPrompt}})],1)]:_vm._e(),_vm._v(" "),(_vm.isLoading)?_c('duo-chat-loader',{key:"loader",attrs:{"tool-name":_vm.toolName}}):_vm._e(),_vm._v(" "),_c('div',{key:"anchor",ref:"anchor",staticClass:"scroll-anchor"})],2)],1),_vm._v(" "),(_vm.isChatAvailable && !_vm.shouldShowThreadList)?_c('footer',{staticClass:"duo-chat-drawer-footer gl-relative gl-z-2 gl-shrink-0 gl-border-0 gl-bg-default gl-pb-3",class:{ 'duo-chat-drawer-body-scrim-on-footer': !_vm.scrolledToBottom },attrs:{"data-testid":"chat-footer"}},[_c('gl-form',{attrs:{"data-testid":"chat-prompt-form"},on:{"submit":function($event){$event.stopPropagation();$event.preventDefault();return _vm.sendChatPrompt.apply(null, arguments)}}},[_c('div',{staticClass:"gl-relative gl-max-w-full"},[_vm._t("context-items-menu",null,{"isOpen":_vm.contextItemsMenuIsOpen,"onClose":_vm.closeContextItemsMenuOpen,"setRef":_vm.setContextItemsMenuRef,"focusPrompt":_vm.focusChatInput})],2),_vm._v(" "),_c('gl-form-input-group',{scopedSlots:_vm._u([{key:"append",fn:function(){return [(_vm.canSubmit)?_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-full",attrs:{"icon":"paper-airplane","category":"primary","variant":"confirm","type":"submit","disabled":_vm.isPromptEmpty || !_vm.hasValidPrompt,"data-testid":"chat-prompt-submit-button","aria-label":_vm.$options.i18n.CHAT_SUBMIT_LABEL}}):_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-full",attrs:{"icon":"stop","category":"primary","variant":"default","data-testid":"chat-prompt-cancel-button","aria-label":_vm.$options.i18n.CHAT_CANCEL_LABEL},on:{"click":_vm.cancelPrompt}})]},proxy:true}],null,false,2030360392)},[_c('div',{staticClass:"duo-chat-input gl-min-h-8 gl-max-w-full gl-grow gl-align-top",attrs:{"data-value":_vm.prompt}},[(_vm.shouldShowSlashCommands)?_c('gl-card',{ref:"commands",staticClass:"slash-commands !gl-absolute gl-w-full -gl-translate-y-full gl-list-none gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2"}},_vm._l((_vm.filteredSlashCommands),function(command,index){return _c('gl-dropdown-item',{key:command.name,class:{ 'active-command': index === _vm.activeCommandIndex },on:{"click":function($event){return _vm.selectSlashCommand(index)}},nativeOn:{"mouseenter":function($event){_vm.activeCommandIndex = index;}}},[_c('span',{staticClass:"gl-flex gl-justify-between"},[_c('span',{staticClass:"gl-block"},[_vm._v(_vm._s(command.name))]),_vm._v(" "),_c('small',{staticClass:"gl-pl-3 gl-text-right gl-italic gl-text-subtle"},[_vm._v(_vm._s(command.description))])])])}),1):_vm._e(),_vm._v(" "),_c('gl-form-textarea',{ref:"prompt",attrs:{"disabled":!_vm.canSubmit,"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"character-count-limit":_vm.maxPromptLength,"textarea-classes":[
697
+ 'gl-absolute',
698
+ '!gl-h-full',
699
+ 'gl-rounded-br-none',
700
+ 'gl-rounded-tr-none',
701
+ '!gl-bg-transparent',
702
+ '!gl-py-4',
703
+ '!gl-shadow-none',
704
+ 'form-control',
705
+ 'gl-form-input',
706
+ 'gl-form-textarea',
707
+ { 'gl-truncate': !_vm.prompt } ],"aria-label":"Chat prompt input","autofocus":""},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if(!$event.shiftKey){ return null; }if($event.altKey||$event.metaKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if(!$event.shiftKey){ return null; }if($event.ctrlKey||$event.altKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey){ return null; }return _vm.handleRedo.apply(null, arguments)}],"compositionend":_vm.compositionEnd},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();},"keyup":function($event){return _vm.onInputKeyup.apply(null, arguments)}},scopedSlots:_vm._u([{key:"remaining-character-count-text",fn:function(ref){
708
+ var count = ref.count;
709
+ return [(count <= _vm.promptLengthWarningCount)?_c('span',{staticClass:"gl-absolute gl-bottom-[-25px] gl-right-px gl-pr-3"},[_vm._v("\n "+_vm._s(_vm.remainingCharacterCountMessage(count))+"\n ")]):_vm._e()]}},{key:"character-count-over-limit-text",fn:function(ref){
710
+ var count = ref.count;
711
+ return [_c('span',{staticClass:"gl-absolute gl-bottom-[-25px] gl-right-px gl-pr-3"},[_vm._v(_vm._s(_vm.overLimitCharacterCountMessage(count)))])]}}],null,false,578626568),model:{value:(_vm.prompt),callback:function ($$v) {_vm.prompt=$$v;},expression:"prompt"}})],1)])],1),_vm._v(" "),_vm._t("footer-controls"),_vm._v(" "),_c('p',{staticClass:"gl-mb-0 gl-mt-3 gl-px-4 gl-text-sm gl-text-secondary",class:{ 'gl-mt-6 sm:gl-mt-3 sm:gl-max-w-1/2': _vm.prompt.length >= _vm.maxPromptLengthWarning }},[_vm._v("\n "+_vm._s(_vm.$options.i18n.CHAT_DISCLAMER)+"\n ")])],2):_vm._e()],1):_vm._e()])};
693
712
  var __vue_staticRenderFns__ = [];
694
713
 
695
714
  /* style */
@@ -1,5 +1,5 @@
1
1
  import Vue from 'vue';
2
- import { GlToast, GlAlert, GlBadge, GlAvatar, GlButton, GlDropdown, GlDropdownItem, GlDisclosureDropdown, GlSafeHtmlDirective, GlTooltipDirective } from '@gitlab/ui';
2
+ import { GlToast, GlAlert, GlBadge, GlButton, GlDropdown, GlDropdownItem, GlExperimentBadge, GlDisclosureDropdown, GlSafeHtmlDirective, GlTooltipDirective } from '@gitlab/ui';
3
3
  import { translate } from '../../../../utils/i18n';
4
4
  import { VIEW_TYPES } from './constants';
5
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
@@ -23,10 +23,10 @@ var script = {
23
23
  components: {
24
24
  GlAlert,
25
25
  GlBadge,
26
- GlAvatar,
27
26
  GlButton,
28
27
  GlDropdown,
29
28
  GlDropdownItem,
29
+ GlExperimentBadge,
30
30
  GlDisclosureDropdown
31
31
  },
32
32
  directives: {
@@ -121,11 +121,11 @@ var script = {
121
121
  const __vue_script__ = script;
122
122
 
123
123
  /* template */
124
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:"gl-border-b gl-shrink-0 gl-bg-default gl-p-0",attrs:{"data-testid":"chat-header"}},[_c('div',{staticClass:"gl-border-b gl-flex gl-w-full gl-items-center gl-px-5 gl-py-3"},[(_vm.subtitle)?_c('h4',{staticClass:"gl-mb-0 gl-shrink-0 gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap gl-pr-3 gl-text-sm gl-font-normal gl-text-subtle",attrs:{"data-testid":"chat-subtitle"}},[_vm._v("\n "+_vm._s(_vm.subtitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-ml-auto",attrs:{"category":"tertiary","variant":"default","icon":"close","size":"small","data-testid":"chat-close-button","aria-label":_vm.$options.i18n.CHAT_CLOSE_LABEL},on:{"click":function($event){return _vm.$emit('close')}}})],1),_vm._v(" "),_c('div',{staticClass:"drawer-title gl-flex gl-items-center gl-justify-start gl-p-5"},[_c('div',{staticClass:"gl-flex gl-flex-1 gl-overflow-hidden"},[_c('gl-avatar',{staticClass:"gl-mr-3",attrs:{"size":32,"entity-name":_vm.title,"shape":"circle"}}),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-items-center"},[_c('h3',{staticClass:"gl-my-0 gl-text-[0.875rem]"},[_vm._v(_vm._s(_vm.title))])])],1),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-gap-3"},[(
124
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:"gl-border-b gl-shrink-0 gl-bg-default gl-p-0",attrs:{"data-testid":"chat-header"}},[_c('div',{staticClass:"drawer-title gl-flex gl-items-center gl-justify-start gl-p-5"},[_c('div',{staticClass:"gl-flex-1 gl-overflow-hidden"},[_c('div',{staticClass:"gl-flex gl-items-center"},[_c('h3',{staticClass:"gl-my-0 gl-text-size-h2"},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),(_vm.badgeType)?_c('gl-experiment-badge',{attrs:{"type":_vm.badgeType,"container-id":"chat-component"}}):_vm._e()],1),_vm._v(" "),(_vm.subtitle)?_c('h4',{staticClass:"gl-mb-0 gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap gl-pr-3 gl-text-sm gl-font-normal gl-text-subtle",attrs:{"data-testid":"chat-subtitle"}},[_vm._v("\n "+_vm._s(_vm.subtitle)+"\n ")]):_vm._e()]),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-gap-3"},[(
125
125
  _vm.isMultithreaded && (_vm.activeThreadId || _vm.currentView === _vm.VIEW_TYPES.LIST || _vm.hasManyAgents)
126
126
  )?[(_vm.hasManyAgents)?_c('gl-disclosure-dropdown',{attrs:{"title":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"toggle-text":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"items":_vm.agents,"data-testid":"chat-new-button","variant":"confirm","category":"tertiary","size":"small","icon":"duo-chat-new","text-sr-only":"","aria-label":_vm.$options.i18n.CHAT_NEW_LABEL,"no-caret":""},on:{"action":_vm.startNewChat},scopedSlots:_vm._u([{key:"list-item",fn:function(ref){
127
127
  var item = ref.item;
128
- return [_c('span',{staticClass:"gl-flex gl-flex-col"},[_c('span',{attrs:{"clas":"gl-block"}},[_vm._v(_vm._s(item.name))]),_vm._v(" "),_c('span',{staticClass:"gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap gl-text-sm"},[_vm._v(_vm._s(item.description))])])]}}],null,false,117082970)}):_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"data-testid":"chat-new-button","variant":"confirm","category":"tertiary","size":"small","icon":"duo-chat-new","aria-label":_vm.$options.i18n.CHAT_NEW_LABEL},on:{"click":_vm.startNewChat}})]:_vm._e(),_vm._v(" "),(_vm.isMultithreaded && _vm.currentView === _vm.VIEW_TYPES.CHAT)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_HISTORY_TOOLTIP,"data-testid":"go-back-to-list-button","category":"tertiary","size":"small","icon":"history","aria-label":_vm.$options.i18n.CHAT_BACK_LABEL},on:{"click":function($event){return _vm.$emit('go-back')}}}):_vm._e(),_vm._v(" "),(_vm.isMultithreaded && _vm.activeThreadId && _vm.currentView === _vm.VIEW_TYPES.LIST)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP,"data-testid":"go-back-to-chat-button","category":"tertiary","size":"small","icon":"go-back","aria-label":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP},on:{"click":function($event){return _vm.$emit('go-back-to-chat')}}}):_vm._e(),_vm._v(" "),(_vm.sessionId)?_c('gl-dropdown',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip.hover",modifiers:{"hover":true}}],attrs:{"icon":"ellipsis_v","category":"tertiary","text-sr-only":"","size":"small","text":_vm.$options.i18n.CHAT_DROPDOWN_MORE_OPTIONS,"title":_vm.$options.i18n.CHAT_DROPDOWN_MORE_OPTIONS,"no-caret":""}},[_c('gl-dropdown-item',{on:{"click":function($event){return _vm.copySessionIdToClipboard()}}},[_c('span',{staticClass:"gl-flex gl-items-center gl-gap-2"},[_c('span',{staticClass:"gl-flex-shrink-0"},[_vm._v(_vm._s(_vm.$options.i18n.CHAT_COPY_TOOLTIP))]),_vm._v(" "),_c('gl-badge',{staticClass:"gl-flex-shrink"},[_c('span',{staticClass:"gl-max-w-12 gl-truncate",attrs:{"title":_vm.sessionId}},[_vm._v("\n "+_vm._s(_vm.sessionId)+"\n ")])])],1)])],1):_vm._e()],2)]),_vm._v(" "),_vm._t("subheader"),_vm._v(" "),(_vm.error)?_c('gl-alert',{key:"error",staticClass:"!gl-pl-9",attrs:{"dismissible":false,"variant":"danger","role":"alert","data-testid":"chat-error"}},[_c('span',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.error),expression:"error"}]})]):_vm._e()],2)};
128
+ return [_c('span',{staticClass:"gl-flex gl-flex-col"},[_c('span',{attrs:{"clas":"gl-block"}},[_vm._v(_vm._s(item.name))]),_vm._v(" "),_c('span',{staticClass:"gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap gl-text-sm"},[_vm._v(_vm._s(item.description))])])]}}],null,false,117082970)}):_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_NEW_TOOLTIP,"data-testid":"chat-new-button","variant":"confirm","category":"tertiary","size":"small","icon":"duo-chat-new","aria-label":_vm.$options.i18n.CHAT_NEW_LABEL},on:{"click":_vm.startNewChat}})]:_vm._e(),_vm._v(" "),(_vm.isMultithreaded && _vm.currentView === _vm.VIEW_TYPES.CHAT)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_HISTORY_TOOLTIP,"data-testid":"go-back-to-list-button","category":"tertiary","size":"small","icon":"history","aria-label":_vm.$options.i18n.CHAT_BACK_LABEL},on:{"click":function($event){return _vm.$emit('go-back')}}}):_vm._e(),_vm._v(" "),(_vm.isMultithreaded && _vm.activeThreadId && _vm.currentView === _vm.VIEW_TYPES.LIST)?_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],attrs:{"title":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP,"data-testid":"go-back-to-chat-button","category":"tertiary","size":"small","icon":"go-back","aria-label":_vm.$options.i18n.CHAT_BACK_TO_CHAT_TOOLTIP},on:{"click":function($event){return _vm.$emit('go-back-to-chat')}}}):_vm._e(),_vm._v(" "),(_vm.sessionId)?_c('gl-dropdown',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip.hover",modifiers:{"hover":true}}],attrs:{"icon":"ellipsis_v","category":"tertiary","text-sr-only":"","size":"small","text":_vm.$options.i18n.CHAT_DROPDOWN_MORE_OPTIONS,"title":_vm.$options.i18n.CHAT_DROPDOWN_MORE_OPTIONS,"no-caret":""}},[_c('gl-dropdown-item',{on:{"click":function($event){return _vm.copySessionIdToClipboard()}}},[_c('span',{staticClass:"gl-flex gl-items-center gl-gap-2"},[_c('span',{staticClass:"gl-flex-shrink-0"},[_vm._v(_vm._s(_vm.$options.i18n.CHAT_COPY_TOOLTIP))]),_vm._v(" "),_c('gl-badge',{staticClass:"gl-flex-shrink"},[_c('span',{staticClass:"gl-max-w-12 gl-truncate",attrs:{"title":_vm.sessionId}},[_vm._v("\n "+_vm._s(_vm.sessionId)+"\n ")])])],1)])],1):_vm._e(),_vm._v(" "),_c('gl-button',{staticClass:"gl-ml-auto",attrs:{"category":"tertiary","variant":"default","icon":"close","size":"small","data-testid":"chat-close-button","aria-label":_vm.$options.i18n.CHAT_CLOSE_LABEL},on:{"click":function($event){return _vm.$emit('close')}}})],2)]),_vm._v(" "),_vm._t("subheader"),_vm._v(" "),(_vm.error)?_c('gl-alert',{key:"error",staticClass:"!gl-pl-9",attrs:{"dismissible":false,"variant":"danger","role":"alert","data-testid":"chat-error"}},[_c('span',{directives:[{name:"safe-html",rawName:"v-safe-html",value:(_vm.error),expression:"error"}]})]):_vm._e()],2)};
129
129
  var __vue_staticRenderFns__ = [];
130
130
 
131
131
  /* style */
@@ -1,7 +1,8 @@
1
1
  import throttle from 'lodash/throttle';
2
- import { GlButton, GlFormTextarea, GlForm, GlCard, GlDropdownItem, GlSafeHtmlDirective } from '@gitlab/ui';
2
+ import VueResizable from 'vue-resizable';
3
+ import { GlButton, GlAlert, GlFormInputGroup, GlFormTextarea, GlForm, GlExperimentBadge, GlCard, GlDropdownItem, GlSafeHtmlDirective } from '@gitlab/ui';
3
4
  import { translate } from '../../utils/i18n';
4
- import { badgeTypes, badgeTypeValidator, MAX_PROMPT_LENGTH, PROMPT_LENGTH_WARNING, CHAT_RESET_MESSAGE, CHAT_INCLUDE_MESSAGE, MESSAGE_MODEL_ROLES, CHAT_CLEAR_MESSAGE, CHAT_NEW_MESSAGE } from './constants';
5
+ import { badgeTypes, badgeTypeValidator, CHAT_RESET_MESSAGE, CHAT_INCLUDE_MESSAGE, MESSAGE_MODEL_ROLES, CHAT_CLEAR_MESSAGE, CHAT_NEW_MESSAGE } from './constants';
5
6
  import { VIEW_TYPES } from './components/duo_chat_header/constants';
6
7
  import DuoChatLoader from './components/duo_chat_loader/duo_chat_loader';
7
8
  import DuoChatPredefinedPrompts from './components/duo_chat_predefined_prompts/duo_chat_predefined_prompts';
@@ -15,11 +16,10 @@ const i18n = {
15
16
  CHAT_HISTORY_TITLE: translate('GlDuoChat.chatHistoryTitle', 'Chat history'),
16
17
  CHAT_DISCLAMER: translate('GlDuoChat.chatDisclamer', 'Responses may be inaccurate. Verify before use.'),
17
18
  CHAT_EMPTY_STATE_TITLE: translate('DuoChat.chatEmptyStateTitle', '👋 I am GitLab Duo Chat, your personal AI-powered assistant. How can I help you today?'),
18
- CHAT_PROMPT_PLACEHOLDER_DEFAULT: translate('DuoChat.chatPromptPlaceholderDefault', "Let's work through this together..."),
19
+ CHAT_PROMPT_PLACEHOLDER_DEFAULT: translate('DuoChat.chatPromptPlaceholderDefault', 'GitLab Duo Chat'),
19
20
  CHAT_PROMPT_PLACEHOLDER_WITH_COMMANDS: translate('DuoChat.chatPromptPlaceholderWithCommands', 'Type /help to learn more'),
20
21
  CHAT_SUBMIT_LABEL: translate('DuoChat.chatSubmitLabel', 'Send chat message.'),
21
22
  CHAT_CANCEL_LABEL: translate('DuoChat.chatCancelLabel', 'Cancel'),
22
- CHAT_MODEL_PLACEHOLDER: translate('DuoChat.chatModelPlaceholder', 'GitLab Duo Chat'),
23
23
  CHAT_DEFAULT_PREDEFINED_PROMPTS: [translate('DuoChat.chatDefaultPredefinedPromptsChangePassword', 'How do I change my password in GitLab?'), translate('DuoChat.chatDefaultPredefinedPromptsForkProject', 'How do I fork a project?'), translate('DuoChat.chatDefaultPredefinedPromptsCloneRepository', 'How do I clone a repository?'), translate('DuoChat.chatDefaultPredefinedPromptsCreateTemplate', 'How do I create a template?')]
24
24
  };
25
25
  const isMessage = item => Boolean(item) && (item === null || item === void 0 ? void 0 : item.role);
@@ -45,20 +45,53 @@ var script = {
45
45
  name: 'DuoChat',
46
46
  components: {
47
47
  GlButton,
48
+ GlAlert,
49
+ GlFormInputGroup,
48
50
  GlFormTextarea,
49
51
  GlForm,
52
+ GlExperimentBadge,
50
53
  DuoChatLoader,
51
54
  DuoChatPredefinedPrompts,
52
55
  DuoChatConversation,
53
56
  DuoChatHeader,
54
57
  DuoChatThreads,
55
58
  GlCard,
56
- GlDropdownItem
59
+ GlDropdownItem,
60
+ VueResizable
57
61
  },
58
62
  directives: {
59
63
  SafeHtml: GlSafeHtmlDirective
60
64
  },
61
65
  props: {
66
+ /**
67
+ * Determines if the component should be resizable. When true, it renders inside
68
+ * a `vue-resizable` wrapper; otherwise, a standard `div` is used.
69
+ */
70
+ shouldRenderResizable: {
71
+ type: Boolean,
72
+ required: false,
73
+ default: false
74
+ },
75
+ /**
76
+ * Defines the dimensions of the chat container when resizable.
77
+ * By default, the height is set to match the height of the browser window,
78
+ * and the width is fixed at 400px. The `top` position is left undefined,
79
+ * allowing it to be dynamically adjusted if needed.
80
+ */
81
+ dimensions: {
82
+ type: Object,
83
+ required: false,
84
+ default: () => ({
85
+ width: undefined,
86
+ height: undefined,
87
+ top: undefined,
88
+ left: undefined,
89
+ maxWidth: undefined,
90
+ minWidth: 400,
91
+ maxHeight: undefined,
92
+ minHeight: 400
93
+ })
94
+ },
62
95
  /**
63
96
  * The title of the chat/feature.
64
97
  */
@@ -225,15 +258,11 @@ var script = {
225
258
  required: false,
226
259
  default: () => ['en-US', 'en'],
227
260
  validator: localeValidator
228
- },
229
- shouldRenderResizable: {
230
- type: Boolean,
231
- required: false,
232
- default: false
233
261
  }
234
262
  },
235
263
  data() {
236
264
  return {
265
+ isHidden: false,
237
266
  prompt: '',
238
267
  scrolledToBottom: true,
239
268
  activeCommandIndex: 0,
@@ -241,10 +270,7 @@ var script = {
241
270
  compositionJustEnded: false,
242
271
  contextItemsMenuIsOpen: false,
243
272
  contextItemMenuRef: null,
244
- currentView: this.multiThreadedView,
245
- maxPromptLength: MAX_PROMPT_LENGTH,
246
- maxPromptLengthWarning: PROMPT_LENGTH_WARNING,
247
- promptLengthWarningCount: MAX_PROMPT_LENGTH - PROMPT_LENGTH_WARNING
273
+ currentView: this.multiThreadedView
248
274
  };
249
275
  },
250
276
  computed: {
@@ -339,6 +365,7 @@ var script = {
339
365
  if (!newVal && !this.isStreaming) {
340
366
  this.displaySubmitButton = true; // Re-enable submit button when loading stops
341
367
  }
368
+ this.isHidden = false;
342
369
  },
343
370
  isStreaming(newVal) {
344
371
  if (!newVal && !this.isLoading) {
@@ -377,10 +404,14 @@ var script = {
377
404
  this.focusChatInput();
378
405
  });
379
406
  },
407
+ updateSize(e) {
408
+ this.$emit('chat-resize', e);
409
+ },
380
410
  compositionEnd() {
381
411
  this.compositionJustEnded = true;
382
412
  },
383
413
  hideChat() {
414
+ this.isHidden = true;
384
415
  /**
385
416
  * Emitted when clicking the cross in the title and the chat gets closed.
386
417
  */
@@ -436,10 +467,10 @@ var script = {
436
467
  (_this$$refs$anchor = this.$refs.anchor) === null || _this$$refs$anchor === void 0 ? void 0 : (_this$$refs$anchor$sc = _this$$refs$anchor.scrollIntoView) === null || _this$$refs$anchor$sc === void 0 ? void 0 : _this$$refs$anchor$sc.call(_this$$refs$anchor);
437
468
  },
438
469
  focusChatInput() {
439
- var _this$$refs$prompt, _this$$refs$prompt$$e, _this$$refs$prompt$$e2, _this$$refs$prompt$$e3;
470
+ var _this$$refs$prompt, _this$$refs$prompt$$e;
440
471
  // This method is also called directly by consumers of this component
441
472
  // https://gitlab.com/gitlab-org/gitlab-vscode-extension/-/blob/dae2d4669ab4da327921492a2962beae8a05c290/webviews/vue2/gitlab_duo_chat/src/App.vue#L109
442
- (_this$$refs$prompt = this.$refs.prompt) === null || _this$$refs$prompt === void 0 ? void 0 : (_this$$refs$prompt$$e = _this$$refs$prompt.$el) === null || _this$$refs$prompt$$e === void 0 ? void 0 : (_this$$refs$prompt$$e2 = _this$$refs$prompt$$e.querySelector) === null || _this$$refs$prompt$$e2 === void 0 ? void 0 : (_this$$refs$prompt$$e3 = _this$$refs$prompt$$e2.call(_this$$refs$prompt$$e, 'textarea')) === null || _this$$refs$prompt$$e3 === void 0 ? void 0 : _this$$refs$prompt$$e3.focus();
473
+ (_this$$refs$prompt = this.$refs.prompt) === null || _this$$refs$prompt === void 0 ? void 0 : (_this$$refs$prompt$$e = _this$$refs$prompt.$el) === null || _this$$refs$prompt$$e === void 0 ? void 0 : _this$$refs$prompt$$e.focus();
443
474
  },
444
475
  onTrackFeedback(event) {
445
476
  /**
@@ -595,12 +626,6 @@ var script = {
595
626
  handleRedo(event) {
596
627
  event.preventDefault();
597
628
  document.execCommand('redo');
598
- },
599
- remainingCharacterCountMessage(count) {
600
- return `${count} characters remaining`;
601
- },
602
- overLimitCharacterCountMessage(count) {
603
- return `${Math.abs(count)} characters over limit`;
604
629
  }
605
630
  },
606
631
  i18n
@@ -610,19 +635,13 @@ var script = {
610
635
  const __vue_script__ = script;
611
636
 
612
637
  /* template */
613
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"markdown-code-block duo-chat gl-bottom-0 gl-flex gl-max-h-full gl-flex-col",attrs:{"id":"chat-component","role":"complementary","data-testid":"chat-component"}},[(_vm.showHeader)?_c('duo-chat-header',{ref:"header",attrs:{"active-thread-id":_vm.activeThreadId,"title":_vm.isMultithreaded && _vm.currentView === 'list' ? _vm.$options.i18n.CHAT_HISTORY_TITLE : _vm.title,"subtitle":_vm.activeThreadTitleForView,"is-multithreaded":_vm.isMultithreaded,"current-view":_vm.currentView,"should-render-resizable":_vm.shouldRenderResizable,"badge-type":_vm.isMultithreaded ? null : _vm.badgeType},on:{"go-back":_vm.onGoBack,"go-back-to-chat":_vm.onGoBackToChat,"new-chat":_vm.onNewChat,"close":_vm.hideChat},scopedSlots:_vm._u([{key:"subheader",fn:function(){return [_vm._t("subheader")]},proxy:true}],null,true)}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-flex-1 gl-flex-grow gl-flex-col gl-overflow-y-auto gl-overscroll-contain gl-bg-inherit",attrs:{"data-testid":"chat-history"},on:{"scroll":_vm.handleScrollingThrottled}},[(_vm.shouldShowThreadList)?_c('duo-chat-threads',{attrs:{"threads":_vm.threadList,"preferred-locale":_vm.preferredLocale},on:{"new-chat":_vm.onNewChat,"select-thread":_vm.onSelectThread,"delete-thread":_vm.onDeleteThread,"close":_vm.hideChat}}):_c('transition-group',{staticClass:"duo-chat-history gl-mt-auto gl-p-5",attrs:{"mode":"out-in","tag":"section","name":"message"}},[_vm._l((_vm.conversations),function(conversation,index){return _c('duo-chat-conversation',{key:("conversation-" + index),attrs:{"enable-code-insertion":_vm.enableCodeInsertion,"messages":conversation,"canceled-request-ids":_vm.canceledRequestIds,"show-delimiter":index > 0,"trusted-urls":_vm.trustedUrls},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet,"copy-message":_vm.onCopyMessage,"get-context-item-content":_vm.onGetContextItemContent,"open-file-path":_vm.onOpenFilePath}})}),_vm._v(" "),(!_vm.hasMessages && !_vm.isLoading)?[_c('div',{key:"empty-state-message",staticClass:"duo-chat-message gl-rounded-bl-none gl-p-4 gl-leading-20 gl-text-gray-900 gl-break-anywhere",attrs:{"data-testid":"gl-duo-chat-empty-state"}},[(_vm.emptyStateTitle)?_c('p',{staticClass:"gl-m-0",attrs:{"data-testid":"gl-duo-chat-empty-state-title"}},[_vm._v("\n "+_vm._s(_vm.emptyStateTitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('duo-chat-predefined-prompts',{key:"predefined-prompts",attrs:{"prompts":_vm.predefinedPrompts},on:{"click":_vm.sendPredefinedPrompt}})],1)]:_vm._e(),_vm._v(" "),(_vm.isLoading)?_c('duo-chat-loader',{key:"loader",attrs:{"tool-name":_vm.toolName}}):_vm._e(),_vm._v(" "),_c('div',{key:"anchor",ref:"anchor",staticClass:"scroll-anchor"})],2)],1),_vm._v(" "),(_vm.isChatAvailable && !_vm.shouldShowThreadList)?_c('footer',{staticClass:"duo-chat-drawer-footer gl-relative gl-z-2 gl-shrink-0 gl-border-0 gl-bg-default gl-pb-3",class:{ 'duo-chat-drawer-body-scrim-on-footer': !_vm.scrolledToBottom },attrs:{"data-testid":"chat-footer"}},[_c('gl-form',{attrs:{"data-testid":"chat-prompt-form"},on:{"submit":function($event){$event.stopPropagation();$event.preventDefault();return _vm.sendChatPrompt.apply(null, arguments)}}},[_c('div',{staticClass:"gl-relative gl-max-w-full"},[_vm._t("context-items-menu",null,{"isOpen":_vm.contextItemsMenuIsOpen,"onClose":_vm.closeContextItemsMenuOpen,"setRef":_vm.setContextItemsMenuRef,"focusPrompt":_vm.focusChatInput})],2),_vm._v(" "),_c('div',{staticClass:"duo-chat-input gl-min-h-8 gl-max-w-full gl-grow gl-flex-col gl-rounded-bl-[12px] gl-rounded-br-[18px] gl-rounded-tl-[12px] gl-rounded-tr-[12px] gl-align-top"},[_c('div',{staticClass:"gl-flex gl-justify-between gl-border-0 gl-border-b-1 gl-border-solid gl-border-[#DCDCDE] gl-px-4 gl-py-4"},[_c('div',[_vm._v(_vm._s(_vm.$options.i18n.CHAT_MODEL_PLACEHOLDER))]),_vm._v(" "),_c('div',[_vm._t("agentic-switch")],2)]),_vm._v(" "),_c('div',{staticClass:"gl-h-[40px] gl-grow",attrs:{"data-value":_vm.prompt}},[(_vm.shouldShowSlashCommands)?_c('gl-card',{ref:"commands",staticClass:"slash-commands !gl-absolute gl-w-full -gl-translate-y-full gl-list-none gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2"}},_vm._l((_vm.filteredSlashCommands),function(command,index){return _c('gl-dropdown-item',{key:command.name,class:{ 'active-command': index === _vm.activeCommandIndex },on:{"click":function($event){return _vm.selectSlashCommand(index)}},nativeOn:{"mouseenter":function($event){_vm.activeCommandIndex = index;}}},[_c('span',{staticClass:"gl-flex gl-justify-between"},[_c('span',{staticClass:"gl-block"},[_vm._v(_vm._s(command.name))]),_vm._v(" "),_c('small',{staticClass:"gl-pl-3 gl-text-right gl-italic gl-text-subtle"},[_vm._v(_vm._s(command.description))])])])}),1):_vm._e(),_vm._v(" "),_c('gl-form-textarea',{ref:"prompt",attrs:{"data-testid":"chat-prompt-input","textarea-classes":[
614
- '!gl-h-full',
615
- '!gl-bg-transparent',
616
- '!gl-py-4',
617
- '!gl-shadow-none',
618
- 'form-control',
619
- 'gl-form-input',
620
- 'gl-form-textarea',
621
- { 'gl-truncate': !_vm.prompt } ],"placeholder":_vm.inputPlaceholder,"character-count-limit":_vm.maxPromptLength,"autofocus":""},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if(!$event.shiftKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if(!$event.shiftKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }return _vm.handleRedo.apply(null, arguments)}],"compositionend":_vm.compositionEnd},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();},"keyup":function($event){return _vm.onInputKeyup.apply(null, arguments)}},scopedSlots:_vm._u([{key:"remaining-character-count-text",fn:function(ref){
622
- var count = ref.count;
623
- return [(count <= _vm.promptLengthWarningCount)?_c('span',{staticClass:"gl-absolute gl-bottom-[-25px] gl-right-px gl-pr-3"},[_vm._v("\n "+_vm._s(_vm.remainingCharacterCountMessage(count))+"\n ")]):_vm._e()]}},{key:"character-count-over-limit-text",fn:function(ref){
624
- var count = ref.count;
625
- return [_c('span',{staticClass:"gl-absolute gl-bottom-[-25px] gl-right-px gl-pr-3"},[_vm._v(_vm._s(_vm.overLimitCharacterCountMessage(count)))])]}}],null,false,839584904),model:{value:(_vm.prompt),callback:function ($$v) {_vm.prompt=$$v;},expression:"prompt"}})],1),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-justify-end gl-px-3 gl-pb-3"},[(_vm.displaySubmitButton)?_c('gl-button',{staticClass:"gl-bottom-2 gl-right-2 gl-ml-auto !gl-rounded-full",attrs:{"icon":"paper-airplane","category":"primary","variant":"confirm","type":"submit","data-testid":"chat-prompt-submit-button","disabled":_vm.isPromptEmpty,"aria-label":_vm.$options.i18n.CHAT_SUBMIT_LABEL}}):_c('gl-button',{staticClass:"gl-bottom-2 gl-right-2 gl-ml-auto !gl-rounded-full",attrs:{"icon":"stop","category":"primary","variant":"default","data-testid":"chat-prompt-cancel-button","aria-label":_vm.$options.i18n.CHAT_CANCEL_LABEL},on:{"click":_vm.cancelPrompt}})],1)])]),_vm._v(" "),_vm._t("footer-controls"),_vm._v(" "),_c('p',{staticClass:"gl-mb-0 gl-mt-3 gl-px-4 gl-text-sm gl-text-secondary"},[_vm._v("\n "+_vm._s(_vm.$options.i18n.CHAT_DISCLAMER)+"\n ")])],2):_vm._e()],1)};
638
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.shouldRenderResizable ? 'vue-resizable' : 'div',{tag:"component",class:{
639
+ 'duo-chat-resizable': _vm.shouldRenderResizable,
640
+ 'non-resizable-wrapper': !_vm.shouldRenderResizable,
641
+ },attrs:{"width":_vm.shouldRenderResizable ? _vm.dimensions.width : null,"height":_vm.shouldRenderResizable ? _vm.dimensions.height : null,"max-width":_vm.shouldRenderResizable ? _vm.dimensions.maxWidth : null,"max-height":_vm.shouldRenderResizable ? _vm.dimensions.maxHeight : null,"min-width":_vm.shouldRenderResizable ? _vm.dimensions.minWidth : null,"left":_vm.shouldRenderResizable ? _vm.dimensions.left : null,"top":_vm.shouldRenderResizable ? _vm.dimensions.top : null,"fit-parent":true,"min-height":_vm.shouldRenderResizable ? _vm.dimensions.minHeight : null,"active":_vm.shouldRenderResizable ? ['l', 't', 'lt'] : null},on:{"resize:end":_vm.updateSize}},[(!_vm.isHidden)?_c('aside',{staticClass:"markdown-code-block duo-chat gl-bottom-0 gl-flex gl-max-h-full gl-flex-col",class:{
642
+ 'resizable-content': _vm.shouldRenderResizable,
643
+ 'duo-chat-drawer': !_vm.shouldRenderResizable,
644
+ },attrs:{"id":"chat-component","role":"complementary","data-testid":"chat-component"}},[(_vm.showHeader)?_c('duo-chat-header',{ref:"header",attrs:{"active-thread-id":_vm.activeThreadId,"title":_vm.isMultithreaded && _vm.currentView === 'list' ? _vm.$options.i18n.CHAT_HISTORY_TITLE : _vm.title,"subtitle":_vm.activeThreadTitleForView,"is-multithreaded":_vm.isMultithreaded,"current-view":_vm.currentView,"should-render-resizable":_vm.shouldRenderResizable,"badge-type":_vm.isMultithreaded ? null : _vm.badgeType},on:{"go-back":_vm.onGoBack,"go-back-to-chat":_vm.onGoBackToChat,"new-chat":_vm.onNewChat,"close":_vm.hideChat},scopedSlots:_vm._u([{key:"subheader",fn:function(){return [_vm._t("subheader")]},proxy:true}],null,true)}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"gl-flex gl-flex-1 gl-flex-grow gl-flex-col gl-overflow-y-auto gl-overscroll-contain gl-bg-inherit",attrs:{"data-testid":"chat-history"},on:{"scroll":_vm.handleScrollingThrottled}},[(_vm.shouldShowThreadList)?_c('duo-chat-threads',{attrs:{"threads":_vm.threadList,"preferred-locale":_vm.preferredLocale},on:{"new-chat":_vm.onNewChat,"select-thread":_vm.onSelectThread,"delete-thread":_vm.onDeleteThread,"close":_vm.hideChat}}):_c('transition-group',{staticClass:"duo-chat-history gl-mt-auto gl-p-5",attrs:{"mode":"out-in","tag":"section","name":"message"}},[_vm._l((_vm.conversations),function(conversation,index){return _c('duo-chat-conversation',{key:("conversation-" + index),attrs:{"enable-code-insertion":_vm.enableCodeInsertion,"messages":conversation,"canceled-request-ids":_vm.canceledRequestIds,"show-delimiter":index > 0,"trusted-urls":_vm.trustedUrls},on:{"track-feedback":_vm.onTrackFeedback,"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet,"copy-message":_vm.onCopyMessage,"get-context-item-content":_vm.onGetContextItemContent,"open-file-path":_vm.onOpenFilePath}})}),_vm._v(" "),(!_vm.hasMessages && !_vm.isLoading)?[_c('div',{key:"empty-state-message",staticClass:"duo-chat-message gl-rounded-bl-none gl-p-4 gl-leading-20 gl-text-gray-900 gl-break-anywhere",attrs:{"data-testid":"gl-duo-chat-empty-state"}},[(_vm.emptyStateTitle)?_c('p',{staticClass:"gl-m-0",attrs:{"data-testid":"gl-duo-chat-empty-state-title"}},[_vm._v("\n "+_vm._s(_vm.emptyStateTitle)+"\n ")]):_vm._e(),_vm._v(" "),_c('duo-chat-predefined-prompts',{key:"predefined-prompts",attrs:{"prompts":_vm.predefinedPrompts},on:{"click":_vm.sendPredefinedPrompt}})],1)]:_vm._e(),_vm._v(" "),(_vm.isLoading)?_c('duo-chat-loader',{key:"loader",attrs:{"tool-name":_vm.toolName}}):_vm._e(),_vm._v(" "),_c('div',{key:"anchor",ref:"anchor",staticClass:"scroll-anchor"})],2)],1),_vm._v(" "),(_vm.isChatAvailable && !_vm.shouldShowThreadList)?_c('footer',{staticClass:"duo-chat-drawer-footer gl-relative gl-z-2 gl-shrink-0 gl-border-0 gl-bg-default gl-pb-3",class:{ 'duo-chat-drawer-body-scrim-on-footer': !_vm.scrolledToBottom },attrs:{"data-testid":"chat-footer"}},[_c('gl-form',{attrs:{"data-testid":"chat-prompt-form"},on:{"submit":function($event){$event.stopPropagation();$event.preventDefault();return _vm.sendChatPrompt.apply(null, arguments)}}},[_c('div',{staticClass:"gl-relative gl-max-w-full"},[_vm._t("context-items-menu",null,{"isOpen":_vm.contextItemsMenuIsOpen,"onClose":_vm.closeContextItemsMenuOpen,"setRef":_vm.setContextItemsMenuRef,"focusPrompt":_vm.focusChatInput})],2),_vm._v(" "),_c('gl-form-input-group',{scopedSlots:_vm._u([{key:"append",fn:function(){return [(_vm.displaySubmitButton)?_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-full",attrs:{"icon":"paper-airplane","category":"primary","variant":"confirm","type":"submit","data-testid":"chat-prompt-submit-button","disabled":_vm.isPromptEmpty,"aria-label":_vm.$options.i18n.CHAT_SUBMIT_LABEL}}):_c('gl-button',{staticClass:"!gl-absolute gl-bottom-2 gl-right-2 !gl-rounded-full",attrs:{"icon":"stop","category":"primary","variant":"default","data-testid":"chat-prompt-cancel-button","aria-label":_vm.$options.i18n.CHAT_CANCEL_LABEL},on:{"click":_vm.cancelPrompt}})]},proxy:true}],null,false,661265825)},[_c('div',{staticClass:"duo-chat-input gl-min-h-8 gl-max-w-full gl-grow gl-align-top",attrs:{"data-value":_vm.prompt}},[(_vm.shouldShowSlashCommands)?_c('gl-card',{ref:"commands",staticClass:"slash-commands !gl-absolute gl-w-full -gl-translate-y-full gl-list-none gl-pl-0 gl-shadow-md",attrs:{"body-class":"!gl-p-2"}},_vm._l((_vm.filteredSlashCommands),function(command,index){return _c('gl-dropdown-item',{key:command.name,class:{ 'active-command': index === _vm.activeCommandIndex },on:{"click":function($event){return _vm.selectSlashCommand(index)}},nativeOn:{"mouseenter":function($event){_vm.activeCommandIndex = index;}}},[_c('span',{staticClass:"gl-flex gl-justify-between"},[_c('span',{staticClass:"gl-block"},[_vm._v(_vm._s(command.name))]),_vm._v(" "),_c('small',{staticClass:"gl-pl-3 gl-text-right gl-italic gl-text-subtle"},[_vm._v(_vm._s(command.description))])])])}),1):_vm._e(),_vm._v(" "),_c('gl-form-textarea',{ref:"prompt",staticClass:"gl-absolute !gl-h-full gl-rounded-br-none gl-rounded-tr-none !gl-bg-transparent !gl-py-4 !gl-shadow-none",class:{ 'gl-truncate': !_vm.prompt },attrs:{"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"autofocus":""},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey){ return null; }return _vm.handleUndo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }if(!$event.shiftKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"z",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }if(!$event.shiftKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.ctrlKey){ return null; }return _vm.handleRedo.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"y",undefined,$event.key,undefined)){ return null; }if(!$event.metaKey){ return null; }return _vm.handleRedo.apply(null, arguments)}],"compositionend":_vm.compositionEnd},nativeOn:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.preventDefault();},"keyup":function($event){return _vm.onInputKeyup.apply(null, arguments)}},model:{value:(_vm.prompt),callback:function ($$v) {_vm.prompt=$$v;},expression:"prompt"}})],1)])],1),_vm._v(" "),_vm._t("footer-controls"),_vm._v(" "),_c('p',{staticClass:"gl-mb-0 gl-mt-3 gl-px-4 gl-text-sm gl-text-secondary"},[_vm._v("\n "+_vm._s(_vm.$options.i18n.CHAT_DISCLAMER)+"\n ")])],2):_vm._e()],1):_vm._e()])};
626
645
  var __vue_staticRenderFns__ = [];
627
646
 
628
647
  /* style */
@@ -1,2 +1,2 @@
1
- @charset "UTF-8";.resizable-content{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 4px 12px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 4px 12px var(--tw-shadow-color);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:.875rem;height:100%;overflow-y:auto;width:100%}.recents-wrapper .resizable-content{margin-top:var(--gl-spacing-scale-0,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}.duo-chat{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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:0;transform:translateY(10px)}.duo-chat .duo-chat-loader.message-leave,.duo-chat .duo-chat-loader.message-leave-to{transition:none}.duo-chat .duo-chat-drawer-body-scrim-on-footer:before{background:linear-gradient(180deg,#fbfafd00,#fbfafd)}.duo-chat-drawer{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 4px 12px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 4px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:.875rem;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,0)}.duo-chat-drawer{display:flex;flex-direction:column;line-height:1rem}.duo-chat-drawer-footer{border-top:1px solid var(--gl-border-color-default);padding:var(--gl-spacing-scale-5,1rem)}.duo-chat-drawer-body-scrim-on-footer:before{--tw-translate-y:-100%;background:linear-gradient(180deg,#fbfafd00,#fbfafd);content:"";height:var(--gl-spacing-scale-5,1rem);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}.duo-chat-input{background:var(--gl-control-background-color-default);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{flex:1;max-height:240px;padding-right:40px;resize:none}.duo-chat-input:after{content:attr(data-value) " ";font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";padding:var(--gl-spacing-scale-4,.75rem);padding-right:40px;position:absolute;visibility:hidden;word-break:break-word}.duo-chat .duo-chat-suggestion-button{border-radius:1.25rem}.slash-commands{margin-top:calc(var(--gl-spacing-scale-2, .25rem)*-1)}.slash-commands .active-command{background-color:var(--gl-background-color-strong,var(--gl-color-neutral-50,#ececef));border-radius:.25rem}.slash-commands .gl-dropdown-item button.dropdown-item{background-color:initial;font-size:.75rem;padding-left:var(--gl-spacing-scale-3,.5rem);padding-right:var(--gl-spacing-scale-3,.5rem)}.slash-commands .gl-dropdown-item button.dropdown-item:hover{background-color:initial}.duo-chat-markdown{color:#3a383f;font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5rem}.duo-chat-markdown :first-child{margin-top:var(--gl-spacing-scale-0,0)}.duo-chat-markdown .gl-h1,.duo-chat-markdown h1{font-size:clamp(1.5rem,.8333333333rem + 1.3888888889vw,1.875rem);margin-top:0;margin-top:var(--gl-spacing-scale-7,2rem)}.duo-chat-markdown .gl-h1,.duo-chat-markdown .gl-h2,.duo-chat-markdown h1,.duo-chat-markdown h2{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:-.01em;line-height:1.25;margin-bottom:1rem}.duo-chat-markdown .gl-h2,.duo-chat-markdown h2{font-size:clamp(1.3125rem,.8680555556rem + .9259259259vw,1.5625rem);margin-top:0;margin-top:var(--gl-spacing-scale-6,1.5rem)}.duo-chat-markdown .gl-h3,.duo-chat-markdown h3{font-size:clamp(1.125rem,.9027777778rem + .462962963vw,1.25rem);margin-top:0;margin-top:var(--gl-spacing-scale-6,1.5rem)}.duo-chat-markdown .gl-h3,.duo-chat-markdown .gl-h4,.duo-chat-markdown h3,.duo-chat-markdown h4{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem}.duo-chat-markdown .gl-h4,.duo-chat-markdown h4{font-size:1rem;margin-top:0;margin-top:var(--gl-spacing-scale-5,1rem)}.duo-chat-markdown .gl-h5,.duo-chat-markdown h5{font-size:.875rem}.duo-chat-markdown .gl-h5,.duo-chat-markdown .gl-h6,.duo-chat-markdown h5,.duo-chat-markdown h6{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:0;margin-top:var(--gl-spacing-scale-5,1rem)}.duo-chat-markdown .gl-h6,.duo-chat-markdown h6{font-size:.8125rem}.duo-chat-markdown .gl-paragraph,.duo-chat-markdown p{margin-bottom:var(--gl-spacing-scale-0,0);margin-top:var(--gl-spacing-scale-0,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,1rem)}.duo-chat-markdown .gl-paragraph.sm,.duo-chat-markdown .sm,.duo-chat-markdown p.sm{font-size:.875rem;line-height:1.25rem}.duo-chat-markdown .monospace,.duo-chat-markdown code{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,#4c4b51);margin:var(--gl-spacing-scale-3,.5rem) var(--gl-spacing-scale-0,0);padding-bottom:var(--gl-spacing-scale-3,.5rem);padding-left:var(--gl-spacing-scale-6,1.5rem);padding-top:var(--gl-spacing-scale-3,.5rem)}.duo-chat-markdown .idiff{border-radius:.25rem;display:inline-flex;padding-left:var(--gl-spacing-scale-2,.25rem);padding-right:var(--gl-spacing-scale-2,.25rem)}.duo-chat-markdown .deletion{background-color:var(--red-100,#fdd4cd)}.duo-chat-markdown .addition{background-color:var(--green-100,#c3e6cd)}.duo-chat-markdown code{background-color:var(--gray-50,#ececef);border-radius:.25rem;color:var(--gray-950,#18171d);padding:var(--gl-spacing-scale-1,.125rem) var(--gl-spacing-scale-2,.25rem)}.duo-chat-markdown pre{border-radius:.25rem;box-shadow:inset 0 0 0 1px #dcdcde;margin-bottom:var(--gl-spacing-scale-7,2rem);margin-top:var(--gl-spacing-scale-7,2rem);overflow:auto;padding:var(--gl-spacing-scale-3,.5rem) var(--gl-spacing-scale-4,.75rem)}.duo-chat-markdown pre code{background-color:var(--white,#fff);border-radius:0;color:var(--gray-900,#28272d);padding:var(--gl-spacing-scale-0,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,.5rem)}.duo-chat-markdown .audio-container a:before{-webkit-font-smoothing:antialiased;content:"📎";margin-right:var(--gl-spacing-scale-2,.25rem);text-rendering:auto}.duo-chat-markdown table{margin-bottom:var(--gl-spacing-scale-7,2rem);margin-top:var(--gl-spacing-scale-7,2rem)}.duo-chat-markdown table td,.duo-chat-markdown table th{box-shadow:inset 0 -1px 0 0 #dcdcde;padding:var(--gl-spacing-scale-4,.75rem) var(--gl-spacing-scale-3,.5rem);vertical-align:top}.duo-chat-markdown table th{box-shadow:inset 0 1px 0 0 #dcdcde,inset 0 -1px 0 0 #dcdcde;font-weight:600}.duo-chat-markdown table thead{background-color:var(--gray-50,#ececef)}.duo-chat-markdown table tr:nth-child(2n){background-color:var(--gray-10,#fbfafd)}.duo-chat-compact-markdown{font-size:.875rem}.recents-wrapper .duo-chat-compact-markdown{margin-top:var(--gl-spacing-scale-0,0)}.duo-chat-compact-markdown{line-height:1.25rem}.duo-chat-compact-markdown .gl-h1,.duo-chat-compact-markdown h1{color:var(--gl-text-color-heading);font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.25;margin-bottom:1rem;margin-top:0;margin-top:var(--gl-spacing-scale-7,2rem)}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown h2{font-size:1.3125rem;letter-spacing:-.01em}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h2,.duo-chat-compact-markdown h3{color:var(--gl-text-color-heading);font-weight:600;line-height:1.25;margin-bottom:1rem;margin-top:0;margin-top:var(--gl-spacing-scale-6,1.5rem)}.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h3{font-size:1.125rem;letter-spacing:inherit}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown h4{font-size:1rem}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h4,.duo-chat-compact-markdown h5{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:0;margin-top:var(--gl-spacing-scale-5,1rem)}.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h5{font-size:.875rem}.duo-chat-compact-markdown .gl-h6,.duo-chat-compact-markdown h6{color:var(--gl-text-color-heading);font-size:.8125rem;font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:0;margin-top:var(--gl-spacing-scale-5,1rem)}.duo-chat-compact-markdown .sm{font-size:.75rem}.duo-chat-compact-markdown .monospace,.duo-chat-compact-markdown code{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,.5rem);padding-top:var(--gl-spacing-scale-3,.5rem)}.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: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:1}.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:0}.duo-chat-message{--gl-text-color-heading:var(--duo-chat-message-heading-color,inherit)!important;border-radius:1rem;color:var(--duo-chat-message-color,inherit)!important;position:relative}.duo-chat-message code{background-color:var(--gl-status-neutral-background-color,var(--gl-color-neutral-100,#dcdcde))}.duo-chat-message pre{border-color:var(--gl-border-color-default);border-style:solid;border-width:1px;box-shadow:none!important;color:var(--duo-chat-message-pre-color,inherit)!important;color:inherit;max-height:60vh;padding:var(--gl-spacing-scale-3,.5rem) var(--gl-spacing-scale-4,.75rem)}.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,2rem);left:1px;pointer-events:none;position:absolute;width:calc(100% - 2px)}.duo-chat-message pre.scrim-top:before{--tw-rotate:-180deg;background:linear-gradient(180deg,#fbfafd00,#fbfafd);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(180deg,#fbfafd00,#fbfafd);bottom:1px}.duo-chat-message pre code{background-color:initial;font-size:.75rem;line-height:1;white-space:inherit}.duo-chat-message p:last-of-type{margin-bottom:var(--gl-spacing-scale-0,0)}.duo-chat-message copy-code,.duo-chat-message insert-code-snippet{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,#dcdcde);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,.5rem);position:absolute;transform:rotate(45deg);width:var(--gl-spacing-scale-3,.5rem)}.duo-chat-message copy-code{margin-right:2.5rem}.duo-chat-message .js-markdown-code.markdown-code-block:hover copy-code,.duo-chat-message .js-markdown-code.markdown-code-block:hover copy-code:focus-within,.duo-chat-message .js-markdown-code.markdown-code-block:hover insert-code-snippet,.duo-chat-message .js-markdown-code.markdown-code-block:hover insert-code-snippet:focus-within{opacity:1}.duo-chat-message-container:not(:last-child),.message-map-item:not(:last-child){margin-bottom:var(--gl-spacing-scale-4,.75rem)}.insert-code-hidden insert-code-snippet{display:none}.insert-code-hidden copy-code{margin-right:0}.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:active,.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:focus,.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:focus:active{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.duo-chat-message-actions-enter{opacity:0;transform:translateX(-100%)}.duo-chat-message-actions-enter-active{transition:transform .3s ease-out,opacity .15s ease-out .15s}.duo-chat-message-actions-enter-to,.duo-chat-message-actions-leave{opacity:1;transform:translateX(0)}.duo-chat-message-actions-leave-active{transition:transform .2s ease-out,opacity .1s ease-out}.duo-chat-message-actions-leave-to{opacity:0;transform:translateX(-100%)}.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:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;font-size:.75rem;font-weight:600;padding-bottom:var(--gl-spacing-scale-2,.25rem);padding-left:var(--gl-spacing-scale-3,.5rem);padding-top:var(--gl-spacing-scale-2,.25rem);text-decoration-line:none;text-transform:uppercase;width:100%}.recents-wrapper .gl-accordion-item-header>.collapse{margin-left:var(--gl-spacing-scale-0,0)}.recents-wrapper .gl-text-base{margin-top:var(--gl-spacing-scale-0,0)}
1
+ @charset "UTF-8";.resizable-content{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 4px 12px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 4px 12px var(--tw-shadow-color);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:.875rem;height:100%;overflow-y:auto;width:100%}.recents-wrapper .resizable-content{margin-top: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}.duo-chat{font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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:0;transform:translateY(10px)}.duo-chat .duo-chat-loader.message-leave,.duo-chat .duo-chat-loader.message-leave-to{transition:none}.duo-chat .duo-chat-drawer-body-scrim-on-footer:before{background:linear-gradient(180deg,#fbfafd00,#fbfafd)}.duo-chat-drawer{--tw-shadow:0 0 2px var(--gl-shadow-color-default,#05050629),0 0 2px var(--gl-shadow-color-default,#05050629),0 4px 12px var(--gl-shadow-color-default,#05050629);--tw-shadow-colored:0 0 2px var(--tw-shadow-color),0 0 2px var(--tw-shadow-color),0 4px 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:.875rem;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:0}.duo-chat-drawer{display:flex;flex-direction:column;line-height:1rem}.duo-chat-drawer-footer{border-top:1px solid var(--gl-border-color-default);padding:1rem}.duo-chat-drawer-body-scrim-on-footer:before{--tw-translate-y:-100%;background:linear-gradient(180deg,#fbfafd00,#fbfafd);content:"";height:1rem;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}.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(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";padding:.75rem 40px .75rem .75rem;visibility:hidden;word-break:break-word}.duo-chat .duo-chat-suggestion-button{border-radius:1.25rem}.slash-commands{margin-top:-.25rem}.slash-commands .active-command{background-color:var(--gl-background-color-strong,var(--gl-color-neutral-50,#ececef));border-radius:.25rem}.slash-commands .gl-dropdown-item button.dropdown-item{background-color:initial;font-size:.75rem;padding-left:.5rem;padding-right:.5rem}.slash-commands .gl-dropdown-item button.dropdown-item:hover{background-color:initial}.duo-chat-markdown{color:#3a383f;font-family:var(--default-regular-font,"GitLab Sans"),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5rem}.duo-chat-markdown :first-child{margin-top:0}.duo-chat-markdown .gl-h1,.duo-chat-markdown h1{font-size:clamp(1.5rem,.8333333333rem + 1.3888888889vw,1.875rem);margin-top:2rem}.duo-chat-markdown .gl-h1,.duo-chat-markdown .gl-h2,.duo-chat-markdown h1,.duo-chat-markdown h2{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:-.01em;line-height:1.25;margin-bottom:1rem}.duo-chat-markdown .gl-h2,.duo-chat-markdown h2{font-size:clamp(1.3125rem,.8680555556rem + .9259259259vw,1.5625rem);margin-top:1.5rem}.duo-chat-markdown .gl-h3,.duo-chat-markdown h3{font-size:clamp(1.125rem,.9027777778rem + .462962963vw,1.25rem);margin-top:1.5rem}.duo-chat-markdown .gl-h3,.duo-chat-markdown .gl-h4,.duo-chat-markdown h3,.duo-chat-markdown h4{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem}.duo-chat-markdown .gl-h4,.duo-chat-markdown h4{font-size:1rem;margin-top:1rem}.duo-chat-markdown .gl-h5,.duo-chat-markdown h5{font-size:.875rem}.duo-chat-markdown .gl-h5,.duo-chat-markdown .gl-h6,.duo-chat-markdown h5,.duo-chat-markdown h6{color:var(--gl-text-color-heading);font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:1rem}.duo-chat-markdown .gl-h6,.duo-chat-markdown h6{font-size:.8125rem}.duo-chat-markdown .gl-paragraph,.duo-chat-markdown p{margin-bottom:0;margin-top: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:1rem}.duo-chat-markdown .gl-paragraph.sm,.duo-chat-markdown .sm,.duo-chat-markdown p.sm{font-size:.875rem;line-height:1.25rem}.duo-chat-markdown .monospace,.duo-chat-markdown code{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,#4c4b51);margin:.5rem 0;padding-bottom:.5rem;padding-left:1.5rem;padding-top:.5rem}.duo-chat-markdown .idiff{border-radius:.25rem;display:inline-flex;padding-left:.25rem;padding-right:.25rem}.duo-chat-markdown .deletion{background-color:var(--red-100,#fdd4cd)}.duo-chat-markdown .addition{background-color:var(--green-100,#c3e6cd)}.duo-chat-markdown code{background-color:var(--gray-50,#ececef);border-radius:.25rem;color:var(--gray-950,#18171d);padding:.125rem .25rem}.duo-chat-markdown pre{border-radius:.25rem;box-shadow:inset 0 0 0 1px #dcdcde;margin-bottom:2rem;margin-top:2rem;overflow:auto;padding:.5rem .75rem}.duo-chat-markdown pre code{background-color:var(--white,#fff);border-radius:0;color:var(--gray-900,#28272d);padding: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:.5rem}.duo-chat-markdown .audio-container a:before{-webkit-font-smoothing:antialiased;content:"📎";margin-right:.25rem;text-rendering:auto}.duo-chat-markdown table{margin-bottom:2rem;margin-top:2rem}.duo-chat-markdown table td,.duo-chat-markdown table th{box-shadow:inset 0 -1px 0 0 #dcdcde;padding:.75rem .5rem;vertical-align:top}.duo-chat-markdown table th{box-shadow:inset 0 1px 0 0 #dcdcde,inset 0 -1px 0 0 #dcdcde;font-weight:600}.duo-chat-markdown table thead{background-color:var(--gray-50,#ececef)}.duo-chat-markdown table tr:nth-child(2n){background-color:var(--gray-10,#fbfafd)}.duo-chat-compact-markdown{font-size:.875rem}.recents-wrapper .duo-chat-compact-markdown{margin-top:0}.duo-chat-compact-markdown{line-height:1.25rem}.duo-chat-compact-markdown .gl-h1,.duo-chat-compact-markdown h1{color:var(--gl-text-color-heading);font-size:1.5rem;font-weight:600;letter-spacing:-.01em;line-height:1.25;margin-bottom:1rem;margin-top:2rem}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown h2{color:var(--gl-text-color-heading);font-size:1.3125rem;font-weight:600;letter-spacing:-.01em;line-height:1.25;margin-bottom:1rem;margin-top:1.5rem}.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h3{color:var(--gl-text-color-heading);font-size:1.125rem;font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:1.5rem}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown h4{color:var(--gl-text-color-heading);font-size:1rem;font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:1rem}.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h5{color:var(--gl-text-color-heading);font-size:.875rem;font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:1rem}.duo-chat-compact-markdown .gl-h6,.duo-chat-compact-markdown h6{color:var(--gl-text-color-heading);font-size:.8125rem;font-weight:600;letter-spacing:inherit;line-height:1.25;margin-bottom:1rem;margin-top:1rem}.duo-chat-compact-markdown .sm{font-size:.75rem}.duo-chat-compact-markdown .monospace,.duo-chat-compact-markdown code{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:.5rem;padding-top:.5rem}.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: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:1}.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:0}.duo-chat-message{--gl-text-color-heading:var(--duo-chat-message-heading-color,inherit)!important;border-radius:1rem;color:var(--duo-chat-message-color,inherit)!important;position:relative}.duo-chat-message code{background-color:var(--gl-status-neutral-background-color,var(--gl-color-neutral-100,#dcdcde))}.duo-chat-message pre{border-color:var(--gl-border-color-default);border-style:solid;border-width:1px;box-shadow:none!important;color:var(--duo-chat-message-pre-color,inherit)!important;color:inherit;max-height:60vh;padding:.5rem .75rem}.duo-chat-message pre:after,.duo-chat-message pre:before{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;content:"";height:2rem;left:1px;pointer-events:none;position:absolute;width:calc(100% - 2px)}.duo-chat-message pre.scrim-top:before{--tw-rotate:-180deg;background:linear-gradient(180deg,#fbfafd00,#fbfafd);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(180deg,#fbfafd00,#fbfafd);bottom:1px}.duo-chat-message pre code{background-color:initial;font-size:.75rem;line-height:1;white-space:inherit}.duo-chat-message p:last-of-type{margin-bottom:0}.duo-chat-message copy-code,.duo-chat-message insert-code-snippet{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,#dcdcde);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:.5rem;position:absolute;transform:rotate(45deg);width:.5rem}.duo-chat-message copy-code{margin-right:2.5rem}.duo-chat-message .js-markdown-code.markdown-code-block:hover copy-code,.duo-chat-message .js-markdown-code.markdown-code-block:hover copy-code:focus-within,.duo-chat-message .js-markdown-code.markdown-code-block:hover insert-code-snippet,.duo-chat-message .js-markdown-code.markdown-code-block:hover insert-code-snippet:focus-within{opacity:1}.duo-chat-message-container:not(:last-child),.message-map-item:not(:last-child){margin-bottom:.75rem}.insert-code-hidden insert-code-snippet{display:none}.insert-code-hidden copy-code{margin-right:0}.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:active,.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:focus,.duo-chat-message-actions .gl-button.gl-button.btn-default-tertiary:focus:active{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.duo-chat-message-actions-enter{opacity:0;transform:translateX(-100%)}.duo-chat-message-actions-enter-active{transition:transform .3s ease-out,opacity .15s ease-out .15s}.duo-chat-message-actions-enter-to,.duo-chat-message-actions-leave{opacity:1;transform:translateX(0)}.duo-chat-message-actions-leave-active{transition:transform .2s ease-out,opacity .1s ease-out}.duo-chat-message-actions-leave-to{opacity:0;transform:translateX(-100%)}.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:0;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;font-size:.75rem;font-weight:600;padding-bottom:.25rem;padding-left:.5rem;padding-top:.25rem;text-decoration-line:none;text-transform:uppercase;width:100%}.recents-wrapper .gl-accordion-item-header>.collapse{margin-left:0}.recents-wrapper .gl-text-base{margin-top:0}
2
2
  /*# sourceMappingURL=components.css.map */