@gitlab/duo-ui 10.15.3 → 10.16.0
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 +16 -0
- package/dist/components/agentic_chat/agentic_duo_chat.js +9 -9
- package/dist/components/chat/components/duo_chat_conversation/duo_chat_conversation.js +9 -1
- package/dist/components/chat/components/duo_chat_message/duo_chat_message.js +9 -1
- package/dist/components/chat/components/duo_chat_message/message_types/message_map.js +9 -1
- package/dist/components/chat/components/duo_chat_message/message_types/message_tool.js +29 -8
- package/dist/components/chat/components/duo_chat_message/message_types/message_workflow_end.js +2 -2
- package/dist/components/{ui/duo_terminal_command/duo_terminal_command.js → chat/components/duo_chat_message_tool_command_output/message_tool_command_output.js} +2 -2
- package/dist/components/chat/duo_chat.js +1 -7
- package/dist/index.js +0 -1
- package/package.json +1 -1
- package/src/components/agentic_chat/agentic_duo_chat.vue +10 -12
- package/src/components/chat/components/duo_chat_conversation/duo_chat_conversation.vue +9 -0
- package/src/components/chat/components/duo_chat_message/duo_chat_message.vue +9 -0
- package/src/components/chat/components/duo_chat_message/message_types/message_map.vue +9 -0
- package/src/components/chat/components/duo_chat_message/message_types/message_tool.vue +29 -2
- package/src/components/chat/components/duo_chat_message/message_types/message_workflow_end.vue +2 -2
- package/src/components/{ui/duo_terminal_command/duo_terminal_command.md → chat/components/duo_chat_message_tool_command_output/message_tool_command_output.md} +3 -3
- package/src/components/{ui/duo_terminal_command/duo_terminal_command.vue → chat/components/duo_chat_message_tool_command_output/message_tool_command_output.vue} +10 -5
- package/src/components/chat/duo_chat.vue +0 -12
- package/src/index.js +0 -1
- package/translations.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# [10.16.0](https://gitlab.com/gitlab-org/duo-ui/compare/v10.15.4...v10.16.0) (2025-08-13)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* drill down project path ([de6ac72](https://gitlab.com/gitlab-org/duo-ui/commit/de6ac72edb3b27def03a5202a1a4cdbda7c405e9))
|
|
7
|
+
* remove code bg transparency from scss ([7fa417a](https://gitlab.com/gitlab-org/duo-ui/commit/7fa417a82dd3dfa7adae320d147e90c943dd3bf0))
|
|
8
|
+
* update terminal command component into chat ([1dde731](https://gitlab.com/gitlab-org/duo-ui/commit/1dde731cc5fa80cddfff38b0fb001e84885cde5e))
|
|
9
|
+
|
|
10
|
+
## [10.15.4](https://gitlab.com/gitlab-org/duo-ui/compare/v10.15.3...v10.15.4) (2025-08-13)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* trigger release pipeline after reverting MR 235 ([a425969](https://gitlab.com/gitlab-org/duo-ui/commit/a4259699ea1b478006f75d9ab89f5be50af4d052))
|
|
16
|
+
|
|
1
17
|
## [10.15.3](https://gitlab.com/gitlab-org/duo-ui/compare/v10.15.2...v10.15.3) (2025-08-12)
|
|
2
18
|
|
|
3
19
|
|
|
@@ -258,6 +258,14 @@ var script = {
|
|
|
258
258
|
type: Boolean,
|
|
259
259
|
required: false,
|
|
260
260
|
default: false
|
|
261
|
+
},
|
|
262
|
+
/**
|
|
263
|
+
* Optional parameter to pass in the working directory - needed for MessageMap Tool type
|
|
264
|
+
*/
|
|
265
|
+
workingDirectory: {
|
|
266
|
+
type: String,
|
|
267
|
+
required: false,
|
|
268
|
+
default: ''
|
|
261
269
|
}
|
|
262
270
|
},
|
|
263
271
|
data() {
|
|
@@ -630,14 +638,6 @@ var script = {
|
|
|
630
638
|
* @param {String} filePath The file path to open
|
|
631
639
|
*/
|
|
632
640
|
this.$emit('open-file-path', filePath);
|
|
633
|
-
},
|
|
634
|
-
handleUndo() {
|
|
635
|
-
var _document$execCommand, _document;
|
|
636
|
-
(_document$execCommand = (_document = document).execCommand) === null || _document$execCommand === void 0 ? void 0 : _document$execCommand.call(_document, 'undo');
|
|
637
|
-
},
|
|
638
|
-
handleRedo() {
|
|
639
|
-
var _document$execCommand2, _document2;
|
|
640
|
-
(_document$execCommand2 = (_document2 = document).execCommand) === null || _document$execCommand2 === void 0 ? void 0 : _document$execCommand2.call(_document2, 'redo');
|
|
641
641
|
}
|
|
642
642
|
},
|
|
643
643
|
i18n
|
|
@@ -653,7 +653,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
653
653
|
},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:{
|
|
654
654
|
'resizable-content': _vm.shouldRenderResizable,
|
|
655
655
|
'duo-chat-drawer': !_vm.shouldRenderResizable,
|
|
656
|
-
},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},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},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","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,3738248012)},[_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:{"disabled":!_vm.canSubmit,"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"autofocus":""},on:{"
|
|
656
|
+
},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},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","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,3738248012)},[_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:{"disabled":!_vm.canSubmit,"data-testid":"chat-prompt-input","placeholder":_vm.inputPlaceholder,"autofocus":""},on:{"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()])};
|
|
657
657
|
var __vue_staticRenderFns__ = [];
|
|
658
658
|
|
|
659
659
|
/* style */
|
|
@@ -69,6 +69,14 @@ var script = {
|
|
|
69
69
|
type: Boolean,
|
|
70
70
|
required: false,
|
|
71
71
|
default: false
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* Optional parameter to pass in the working directory - needed for MessageMap Tool type
|
|
75
|
+
*/
|
|
76
|
+
workingDirectory: {
|
|
77
|
+
type: String,
|
|
78
|
+
required: false,
|
|
79
|
+
default: ''
|
|
72
80
|
}
|
|
73
81
|
},
|
|
74
82
|
computed: {
|
|
@@ -114,7 +122,7 @@ var script = {
|
|
|
114
122
|
const __vue_script__ = script;
|
|
115
123
|
|
|
116
124
|
/* template */
|
|
117
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['gl-flex gl-flex-col gl-justify-end', { 'insert-code-hidden': !_vm.enableCodeInsertion }]},[(_vm.showDelimiter)?_c('div',{staticClass:"gl-my-5 gl-flex gl-items-center gl-gap-4 gl-text-gray-500",attrs:{"data-testid":"conversation-delimiter"}},[_c('hr',{staticClass:"gl-grow"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.CONVERSATION_NEW_CHAT))]),_vm._v(" "),_c('hr',{staticClass:"gl-grow"})]):_vm._e(),_vm._v(" "),_vm._l((_vm.messages),function(msg,index){return _c('duo-chat-message',{key:((msg.role) + "-" + index),attrs:{"message":msg,"trusted-urls":_vm.trustedUrls,"is-cancelled":_vm.canceledRequestIds.includes(msg.requestId),"with-feedback":_vm.withFeedback},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.isAwaitingToolApproval)?_c('duo-chat-message-tool-approval',{attrs:{"message":_vm.messages[_vm.messages.length - 1],"is-processing":_vm.isToolApprovalProcessing},on:{"approve-tool":_vm.onApproveToolCall,"deny-tool":_vm.onDenyToolCall}}):_vm._e()],2)};
|
|
125
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['gl-flex gl-flex-col gl-justify-end', { 'insert-code-hidden': !_vm.enableCodeInsertion }]},[(_vm.showDelimiter)?_c('div',{staticClass:"gl-my-5 gl-flex gl-items-center gl-gap-4 gl-text-gray-500",attrs:{"data-testid":"conversation-delimiter"}},[_c('hr',{staticClass:"gl-grow"}),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.$options.i18n.CONVERSATION_NEW_CHAT))]),_vm._v(" "),_c('hr',{staticClass:"gl-grow"})]):_vm._e(),_vm._v(" "),_vm._l((_vm.messages),function(msg,index){return _c('duo-chat-message',{key:((msg.role) + "-" + index),attrs:{"message":msg,"trusted-urls":_vm.trustedUrls,"is-cancelled":_vm.canceledRequestIds.includes(msg.requestId),"with-feedback":_vm.withFeedback,"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,"open-file-path":_vm.onOpenFilePath}})}),_vm._v(" "),(_vm.isAwaitingToolApproval)?_c('duo-chat-message-tool-approval',{attrs:{"message":_vm.messages[_vm.messages.length - 1],"is-processing":_vm.isToolApprovalProcessing},on:{"approve-tool":_vm.onApproveToolCall,"deny-tool":_vm.onDenyToolCall}}):_vm._e()],2)};
|
|
118
126
|
var __vue_staticRenderFns__ = [];
|
|
119
127
|
|
|
120
128
|
/* style */
|
|
@@ -86,6 +86,14 @@ var script = {
|
|
|
86
86
|
type: Boolean,
|
|
87
87
|
required: false,
|
|
88
88
|
default: true
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Optional parameter to pass in the working directory
|
|
92
|
+
*/
|
|
93
|
+
workingDirectory: {
|
|
94
|
+
type: String,
|
|
95
|
+
required: false,
|
|
96
|
+
default: ''
|
|
89
97
|
}
|
|
90
98
|
},
|
|
91
99
|
data() {
|
|
@@ -293,7 +301,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
293
301
|
'gl-ml-auto gl-bg-feedback-info gl-p-3 gl-text-feedback-info': _vm.isUserMessage,
|
|
294
302
|
'gl-text-default': _vm.isAssistantMessage && !_vm.error,
|
|
295
303
|
'duo-chat-message-with-error gl-bg-feedback-danger gl-p-3': _vm.error,
|
|
296
|
-
},on:{"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet}},[(_vm.showA11yFromText)?_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._e(),_vm._v(" "),_c('div',{ref:"content-wrapper",class:{ 'has-error': _vm.error }},[(_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(" "),(_vm.error)?_c('div',{staticClass:"gl-flex"},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon gl-mr-3 gl-mt-1 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(" "),_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.renderedError),expression:"renderedError",arg:_vm.$options.safeHtmlConfigExtension}],ref:"error-message"})],1):_c('div',[_c('div',{staticClass:"gl-flex"},[(_vm.isUserMessage)?_c('gl-avatar',{staticClass:"gl-mr-3 gl-mt-1",attrs:{"size":16,"entity-name":"User","src":_vm.avatarUrl}}):_vm._e(),_vm._v(" "),_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.messageContent),expression:"messageContent",arg:_vm.$options.safeHtmlConfigExtension}],ref:"content"})],1),_vm._v(" "),(_vm.isAssistantMessage)?[(_vm.sources)?_c('documentation-sources',{attrs:{"sources":_vm.sources}}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"duo-chat-message-feedback gl-mt-4 gl-flex gl-items-end"},[(_vm.isChunkAndNotCancelled)?_c('gl-animated-loader-icon',{attrs:{"is-on":true}}):_vm._e(),_vm._v(" "),(_vm.shouldShowFeedbackLink)?_c('message-feedback',{attrs:{"has-feedback":_vm.hasFeedback},on:{"feedback":_vm.logEvent}}):_vm._e()],1)]:_vm._e()],2),_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()],1)]),_vm._v(" "),_c('transition',{attrs:{"name":"duo-chat-message-actions"}},[(_vm.shouldShowCopyAction)?_c('div',{staticClass:"duo-chat-message-actions gl-z-1099 gl-absolute gl-bottom-0 gl-right-0 gl-rounded-br-lg gl-rounded-tr-lg gl-bg-subtle"},[_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip.hover",modifiers:{"hover":true}}],class:{ '!gl-text-success': _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"},on:{"click":_vm.copyMessage}})],1):_vm._e()])]:_c('message-map',{attrs:{"message":_vm.message,"with-feedback":_vm.withFeedback,"data-testid":"workflow-message"},on:{"open-file-path":_vm.onOpenFilePath,"feedback":_vm.logEvent,"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet}})],2)};
|
|
304
|
+
},on:{"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet}},[(_vm.showA11yFromText)?_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._e(),_vm._v(" "),_c('div',{ref:"content-wrapper",class:{ 'has-error': _vm.error }},[(_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(" "),(_vm.error)?_c('div',{staticClass:"gl-flex"},[(_vm.error)?_c('gl-icon',{staticClass:"error-icon gl-mr-3 gl-mt-1 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(" "),_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.renderedError),expression:"renderedError",arg:_vm.$options.safeHtmlConfigExtension}],ref:"error-message"})],1):_c('div',[_c('div',{staticClass:"gl-flex"},[(_vm.isUserMessage)?_c('gl-avatar',{staticClass:"gl-mr-3 gl-mt-1",attrs:{"size":16,"entity-name":"User","src":_vm.avatarUrl}}):_vm._e(),_vm._v(" "),_c('div',{directives:[{name:"safe-html",rawName:"v-safe-html:[$options.safeHtmlConfigExtension]",value:(_vm.messageContent),expression:"messageContent",arg:_vm.$options.safeHtmlConfigExtension}],ref:"content"})],1),_vm._v(" "),(_vm.isAssistantMessage)?[(_vm.sources)?_c('documentation-sources',{attrs:{"sources":_vm.sources}}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"duo-chat-message-feedback gl-mt-4 gl-flex gl-items-end"},[(_vm.isChunkAndNotCancelled)?_c('gl-animated-loader-icon',{attrs:{"is-on":true}}):_vm._e(),_vm._v(" "),(_vm.shouldShowFeedbackLink)?_c('message-feedback',{attrs:{"has-feedback":_vm.hasFeedback},on:{"feedback":_vm.logEvent}}):_vm._e()],1)]:_vm._e()],2),_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()],1)]),_vm._v(" "),_c('transition',{attrs:{"name":"duo-chat-message-actions"}},[(_vm.shouldShowCopyAction)?_c('div',{staticClass:"duo-chat-message-actions gl-z-1099 gl-absolute gl-bottom-0 gl-right-0 gl-rounded-br-lg gl-rounded-tr-lg gl-bg-subtle"},[_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip.hover",modifiers:{"hover":true}}],class:{ '!gl-text-success': _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"},on:{"click":_vm.copyMessage}})],1):_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,"insert-code-snippet":_vm.onInsertCodeSnippet,"copy-code-snippet":_vm.onCopyCodeSnippet}})],2)};
|
|
297
305
|
var __vue_staticRenderFns__ = [];
|
|
298
306
|
|
|
299
307
|
/* style */
|
|
@@ -43,6 +43,14 @@ var script = {
|
|
|
43
43
|
type: Object,
|
|
44
44
|
required: false,
|
|
45
45
|
default: () => ({})
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Optional parameter to pass in the working directory
|
|
49
|
+
*/
|
|
50
|
+
workingDirectory: {
|
|
51
|
+
type: String,
|
|
52
|
+
required: false,
|
|
53
|
+
default: ''
|
|
46
54
|
}
|
|
47
55
|
},
|
|
48
56
|
computed: {
|
|
@@ -70,7 +78,7 @@ var script = {
|
|
|
70
78
|
const __vue_script__ = script;
|
|
71
79
|
|
|
72
80
|
/* template */
|
|
73
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.messageComponent,_vm._g(_vm._b({tag:"component",style:(_vm.customStyles),attrs:{"message":_vm.message}},'component',_vm.$attrs,false),_vm.$listeners))};
|
|
81
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.messageComponent,_vm._g(_vm._b({tag:"component",style:(_vm.customStyles),attrs:{"message":_vm.message,"working-directory":_vm.workingDirectory}},'component',_vm.$attrs,false),_vm.$listeners))};
|
|
74
82
|
var __vue_staticRenderFns__ = [];
|
|
75
83
|
|
|
76
84
|
/* style */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { GlIcon, GlLink } from '@gitlab/ui';
|
|
2
2
|
import { translate } from '../../../../../utils/i18n';
|
|
3
|
+
import MessageToolCommandOutput from '../../duo_chat_message_tool_command_output/message_tool_command_output';
|
|
3
4
|
import BaseMessage from './message_base';
|
|
4
5
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
5
6
|
|
|
@@ -10,12 +11,14 @@ const i18n = {
|
|
|
10
11
|
COMMIT_MESSAGE_LABEL: translate('DuoChatMessage.commitMessageLabel', 'Commit message'),
|
|
11
12
|
ACTION_LABEL: translate('DuoChatMessage.actionLabel', 'Action'),
|
|
12
13
|
CONTENT_LABEL: translate('DuoChatMessage.contentLabel', 'Content'),
|
|
13
|
-
FILE_PATH_LABEL: translate('DuoChatMessage.filePathLabel', 'File path')
|
|
14
|
+
FILE_PATH_LABEL: translate('DuoChatMessage.filePathLabel', 'File path'),
|
|
15
|
+
RAN_TERMINAL_COMMAND: translate('DuoChatMessage.ranTerminalCommand', 'Ran terminal command')
|
|
14
16
|
};
|
|
15
17
|
var script = {
|
|
16
18
|
name: 'DuoToolMessage',
|
|
17
19
|
components: {
|
|
18
20
|
BaseMessage,
|
|
21
|
+
MessageToolCommandOutput,
|
|
19
22
|
GlIcon,
|
|
20
23
|
GlLink
|
|
21
24
|
},
|
|
@@ -36,12 +39,16 @@ var script = {
|
|
|
36
39
|
validate: value => {
|
|
37
40
|
return value && value.tool_info;
|
|
38
41
|
}
|
|
42
|
+
},
|
|
43
|
+
workingDirectory: {
|
|
44
|
+
required: false,
|
|
45
|
+
type: String,
|
|
46
|
+
default: ''
|
|
39
47
|
}
|
|
40
48
|
},
|
|
41
49
|
computed: {
|
|
42
50
|
iconName() {
|
|
43
|
-
|
|
44
|
-
switch ((_this$message$tool_in = this.message.tool_info) === null || _this$message$tool_in === void 0 ? void 0 : _this$message$tool_in.name) {
|
|
51
|
+
switch (this.toolName) {
|
|
45
52
|
case 'read_file':
|
|
46
53
|
return 'eye';
|
|
47
54
|
case 'write_file':
|
|
@@ -59,12 +66,12 @@ var script = {
|
|
|
59
66
|
}
|
|
60
67
|
},
|
|
61
68
|
messageFilePath() {
|
|
62
|
-
var _this$message$
|
|
63
|
-
return (_this$message$
|
|
69
|
+
var _this$message$tool_in, _this$message$tool_in2;
|
|
70
|
+
return (_this$message$tool_in = this.message.tool_info) === null || _this$message$tool_in === void 0 ? void 0 : (_this$message$tool_in2 = _this$message$tool_in.args) === null || _this$message$tool_in2 === void 0 ? void 0 : _this$message$tool_in2.file_path;
|
|
64
71
|
},
|
|
65
72
|
toolArgs() {
|
|
66
|
-
var _this$message$
|
|
67
|
-
return ((_this$message$
|
|
73
|
+
var _this$message$tool_in3;
|
|
74
|
+
return ((_this$message$tool_in3 = this.message.tool_info) === null || _this$message$tool_in3 === void 0 ? void 0 : _this$message$tool_in3.args) || {};
|
|
68
75
|
},
|
|
69
76
|
hasActions() {
|
|
70
77
|
return this.toolArgs.actions && Array.isArray(this.toolArgs.actions);
|
|
@@ -80,6 +87,20 @@ var script = {
|
|
|
80
87
|
},
|
|
81
88
|
commitMessage() {
|
|
82
89
|
return this.toolArgs.commit_message;
|
|
90
|
+
},
|
|
91
|
+
hasCommandOutput() {
|
|
92
|
+
return this.message.message_sub_type === 'command_output';
|
|
93
|
+
},
|
|
94
|
+
toolName() {
|
|
95
|
+
var _this$message$tool_in4;
|
|
96
|
+
return (_this$message$tool_in4 = this.message.tool_info) === null || _this$message$tool_in4 === void 0 ? void 0 : _this$message$tool_in4.name;
|
|
97
|
+
},
|
|
98
|
+
toolResponse() {
|
|
99
|
+
var _this$message$tool_in5;
|
|
100
|
+
return (_this$message$tool_in5 = this.message.tool_info) === null || _this$message$tool_in5 === void 0 ? void 0 : _this$message$tool_in5.toolResponse;
|
|
101
|
+
},
|
|
102
|
+
toolWorkingDirectory() {
|
|
103
|
+
return this.workingDirectory;
|
|
83
104
|
}
|
|
84
105
|
},
|
|
85
106
|
methods: {
|
|
@@ -98,7 +119,7 @@ const __vue_script__ = script;
|
|
|
98
119
|
/* template */
|
|
99
120
|
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('base-message',{attrs:{"message":_vm.message},scopedSlots:_vm._u([{key:"message",fn:function(ref){
|
|
100
121
|
var content = ref.content;
|
|
101
|
-
return [_c('div',{staticClass:"gl-flex gl-items-baseline !gl-text-subtle"},[_c('div',{staticClass:"gl-mr-3 gl-flex-shrink-0"},[_c('gl-icon',{attrs:{"name":_vm.iconName}})],1),_vm._v(" "),_c('div',{staticClass:"gl-flex-1"},[_c('div',{staticClass:"gl-mb-2"},[_c('span',{attrs:{"data-testid":"tool-message-content"}},[_vm._v(_vm._s(content))])]),_vm._v(" "),(_vm.projectId)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-project-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.PROJECT_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-project-id"}},[_vm._v(_vm._s(_vm.projectId))])]):_vm._e(),_vm._v(" "),(_vm.branchName)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-branch-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.BRANCH_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-branch-name"}},[_vm._v(_vm._s(_vm.branchName))])]):_vm._e(),_vm._v(" "),(_vm.startBranch)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-start-branch-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.START_BRANCH_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-start-branch-name"}},[_vm._v(_vm._s(_vm.startBranch))])]):_vm._e(),_vm._v(" "),(_vm.commitMessage)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-commit-message-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.COMMIT_MESSAGE_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-commit-message-text"}},[_vm._v(_vm._s(_vm.commitMessage))])]):_vm._e(),_vm._v(" "),(_vm.hasActions)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-actions-section"}},[_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold",attrs:{"data-testid":"tool-message-actions-label"}},[_vm._v(_vm._s(_vm.$options.i18n.ACTION_LABEL)+"s:")])]),_vm._v(" "),_vm._l((_vm.toolArgs.actions),function(action,index){return _c('div',{key:index,staticClass:"gl-rounded gl-border gl-mb-3 gl-ml-4 gl-border-subtle gl-p-3",attrs:{"data-testid":"tool-message-action-item"}},[_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold",attrs:{"data-testid":"tool-message-action-type"}},[_vm._v(_vm._s(action.action))])]),_vm._v(" "),(action.file_path)?_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.FILE_PATH_LABEL)+":")]),_vm._v(" "),_c('gl-link',{staticClass:"gl-markdown file-path-link gl-ml-2 gl-break-all",attrs:{"data-testid":"tool-message-action-file-path-link"},on:{"click":function($event){$event.preventDefault();return _vm.onOpenFilePath(action.file_path)}}},[_c('code',[_vm._v(_vm._s(action.file_path))])])],1):_vm._e(),_vm._v(" "),(action.content)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-action-content"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.CONTENT_LABEL)+":")]),_vm._v(" "),_c('pre',{staticClass:"gl-rounded gl-mt-2 gl-overflow-auto gl-bg-subtle gl-p-2 gl-text-sm",attrs:{"data-testid":"tool-message-action-content-text"}},[_vm._v(_vm._s(action.content))])]):_vm._e()])})],2):(_vm.messageFilePath)?_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.FILE_PATH_LABEL)+":")]),_vm._v(" "),_c('gl-link',{staticClass:"gl-markdown file-path-link gl-ml-2 gl-break-all",attrs:{"data-testid":"tool-message-file-path-link"},on:{"click":function($event){$event.preventDefault();return _vm.onOpenFilePath(_vm.messageFilePath)}}},[_c('code',[_vm._v(_vm._s(_vm.messageFilePath))])])],1):_vm._e()])])]}}])})};
|
|
122
|
+
return [(_vm.hasCommandOutput)?_c('message-tool-command-output',{attrs:{"command-header":_vm.$options.i18n.RAN_TERMINAL_COMMAND,"command-action":_vm.toolName,"command-output":_vm.toolResponse,"working-directory":_vm.toolWorkingDirectory}}):_c('div',{staticClass:"gl-flex gl-items-baseline !gl-text-subtle"},[_c('div',{staticClass:"gl-mr-3 gl-flex-shrink-0"},[_c('gl-icon',{attrs:{"name":_vm.iconName}})],1),_vm._v(" "),_c('div',{staticClass:"gl-flex-1"},[_c('div',{staticClass:"gl-mb-2"},[_c('span',{attrs:{"data-testid":"tool-message-content"}},[_vm._v(_vm._s(content))])]),_vm._v(" "),(_vm.projectId)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-project-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.PROJECT_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-project-id"}},[_vm._v(_vm._s(_vm.projectId))])]):_vm._e(),_vm._v(" "),(_vm.branchName)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-branch-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.BRANCH_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-branch-name"}},[_vm._v(_vm._s(_vm.branchName))])]):_vm._e(),_vm._v(" "),(_vm.startBranch)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-start-branch-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.START_BRANCH_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-start-branch-name"}},[_vm._v(_vm._s(_vm.startBranch))])]):_vm._e(),_vm._v(" "),(_vm.commitMessage)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-commit-message-info"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.COMMIT_MESSAGE_LABEL)+":")]),_vm._v(" "),_c('span',{staticClass:"gl-ml-2",attrs:{"data-testid":"tool-message-commit-message-text"}},[_vm._v(_vm._s(_vm.commitMessage))])]):_vm._e(),_vm._v(" "),(_vm.hasActions)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-actions-section"}},[_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold",attrs:{"data-testid":"tool-message-actions-label"}},[_vm._v(_vm._s(_vm.$options.i18n.ACTION_LABEL)+"s:")])]),_vm._v(" "),_vm._l((_vm.toolArgs.actions),function(action,index){return _c('div',{key:index,staticClass:"gl-rounded gl-border gl-mb-3 gl-ml-4 gl-border-subtle gl-p-3",attrs:{"data-testid":"tool-message-action-item"}},[_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold",attrs:{"data-testid":"tool-message-action-type"}},[_vm._v(_vm._s(action.action))])]),_vm._v(" "),(action.file_path)?_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.FILE_PATH_LABEL)+":")]),_vm._v(" "),_c('gl-link',{staticClass:"gl-markdown file-path-link gl-ml-2 gl-break-all",attrs:{"data-testid":"tool-message-action-file-path-link"},on:{"click":function($event){$event.preventDefault();return _vm.onOpenFilePath(action.file_path)}}},[_c('code',[_vm._v(_vm._s(action.file_path))])])],1):_vm._e(),_vm._v(" "),(action.content)?_c('div',{staticClass:"gl-mb-2",attrs:{"data-testid":"tool-message-action-content"}},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.CONTENT_LABEL)+":")]),_vm._v(" "),_c('pre',{staticClass:"gl-rounded gl-mt-2 gl-overflow-auto gl-bg-subtle gl-p-2 gl-text-sm",attrs:{"data-testid":"tool-message-action-content-text"}},[_vm._v(_vm._s(action.content))])]):_vm._e()])})],2):(_vm.messageFilePath)?_c('div',{staticClass:"gl-mb-2"},[_c('span',{staticClass:"gl-font-weight-bold"},[_vm._v(_vm._s(_vm.$options.i18n.FILE_PATH_LABEL)+":")]),_vm._v(" "),_c('gl-link',{staticClass:"gl-markdown file-path-link gl-ml-2 gl-break-all",attrs:{"data-testid":"tool-message-file-path-link"},on:{"click":function($event){$event.preventDefault();return _vm.onOpenFilePath(_vm.messageFilePath)}}},[_c('code',[_vm._v(_vm._s(_vm.messageFilePath))])])],1):_vm._e()])])]}}])})};
|
|
102
123
|
var __vue_staticRenderFns__ = [];
|
|
103
124
|
|
|
104
125
|
/* style */
|
package/dist/components/chat/components/duo_chat_message/message_types/message_workflow_end.js
CHANGED
|
@@ -13,7 +13,7 @@ var script = {
|
|
|
13
13
|
endMessage: {
|
|
14
14
|
required: false,
|
|
15
15
|
type: String,
|
|
16
|
-
default: "Review the changes. To improve the implementation, create another
|
|
16
|
+
default: "Review the changes. To improve the implementation, create another session and describe the specific changes you'd like to see."
|
|
17
17
|
},
|
|
18
18
|
action: {
|
|
19
19
|
required: false,
|
|
@@ -27,7 +27,7 @@ var script = {
|
|
|
27
27
|
},
|
|
28
28
|
buttonText() {
|
|
29
29
|
var _this$action;
|
|
30
|
-
return ((_this$action = this.action) === null || _this$action === void 0 ? void 0 : _this$action.text) || 'New
|
|
30
|
+
return ((_this$action = this.action) === null || _this$action === void 0 ? void 0 : _this$action.text) || 'New session';
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
newRoute: {
|
|
@@ -2,7 +2,7 @@ import { GlCollapse, GlButton, GlIcon } from '@gitlab/ui';
|
|
|
2
2
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
3
3
|
|
|
4
4
|
var script = {
|
|
5
|
-
name: '
|
|
5
|
+
name: 'MessageToolCommandOutput',
|
|
6
6
|
components: {
|
|
7
7
|
GlCollapse,
|
|
8
8
|
GlButton,
|
|
@@ -63,7 +63,7 @@ var script = {
|
|
|
63
63
|
const __vue_script__ = script;
|
|
64
64
|
|
|
65
65
|
/* template */
|
|
66
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"gl-border-solid gl-border-neutral-600"},[_c('div',{staticClass:"gl-flex gl-w-full gl-items-center gl-justify-between gl-px-3 gl-py-2"},[_c('span',{staticClass:"gl-flex gl-items-center",attrs:{"data-testid":"terminal-command-header"}},[_c('gl-icon',{staticClass:"gl-mr-3",attrs:{"name":"terminal"}}),_vm._v("\n "+_vm._s(_vm.commandHeader)+"\n ")],1),_vm._v(" "),(_vm.isCommandOutputAvailable)?_c('gl-button',{attrs:{"text":"Toggle visibility","icon":_vm.toggleIcon,"data-testid":"toggle-visibility-button","category":"tertiary"},on:{"click":_vm.toggleVisibility}}):_vm._e()],1),_vm._v(" "),_c('div',{staticClass:"gl-leading-22 gl-border-t gl-flex gl-flex-col gl-p-3"},[_c('code',{staticClass:"gl-text-subtle",attrs:{"data-testid":"terminal-working-directory"}},[_vm._v(_vm._s(_vm.workingDirectory)+" >")]),_vm._v(" "),_c('code',{staticClass:"gl-text-default",attrs:{"data-testid":"terminal-command-action"}},[_vm._v(_vm._s(_vm.commandAction))])]),_vm._v(" "),(_vm.isCommandOutputAvailable)?_c('gl-collapse',{attrs:{"visible":_vm.isVisible}},[_c('div',{staticClass:"gl-bg-black gl-p-3"},[_c('code',[_vm._v(_vm._s(_vm.commandOutput))])])]):_vm._e(),_vm._v(" "),(_vm.$scopedSlots.actions)?_c('div',{staticClass:"gl-border-t gl-p-3"},[_vm._t("actions")],2):_vm._e()],1)};
|
|
66
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"terminal-command-output gl-border-solid gl-border-neutral-600"},[_c('div',{staticClass:"gl-flex gl-w-full gl-items-center gl-justify-between gl-px-3 gl-py-2"},[_c('span',{staticClass:"gl-flex gl-items-center",attrs:{"data-testid":"terminal-command-header"}},[_c('gl-icon',{staticClass:"gl-mr-3",attrs:{"name":"terminal"}}),_vm._v("\n "+_vm._s(_vm.commandHeader)+"\n ")],1),_vm._v(" "),(_vm.isCommandOutputAvailable)?_c('gl-button',{attrs:{"text":"Toggle visibility","icon":_vm.toggleIcon,"data-testid":"toggle-visibility-button","category":"tertiary"},on:{"click":_vm.toggleVisibility}}):_vm._e()],1),_vm._v(" "),_c('div',{staticClass:"gl-leading-22 gl-border-t gl-flex gl-flex-col gl-p-3"},[(_vm.workingDirectory)?_c('code',{staticClass:"!gl-bg-transparent gl-text-subtle",attrs:{"data-testid":"terminal-working-directory"}},[_vm._v(_vm._s(_vm.workingDirectory)+" >")]):_vm._e(),_vm._v(" "),_c('code',{staticClass:"!gl-bg-transparent gl-text-default",attrs:{"data-testid":"terminal-command-action"}},[_vm._v(_vm._s(_vm.commandAction))])]),_vm._v(" "),(_vm.isCommandOutputAvailable)?_c('gl-collapse',{attrs:{"visible":_vm.isVisible}},[_c('div',{staticClass:"gl-bg-black gl-p-3"},[_c('code',{staticClass:"!gl-bg-transparent"},[_vm._v(_vm._s(_vm.commandOutput))])])]):_vm._e(),_vm._v(" "),(_vm.$scopedSlots.actions)?_c('div',{staticClass:"gl-border-t gl-p-3"},[_vm._t("actions")],2):_vm._e()],1)};
|
|
67
67
|
var __vue_staticRenderFns__ = [];
|
|
68
68
|
|
|
69
69
|
/* style */
|
|
@@ -615,12 +615,6 @@ var script = {
|
|
|
615
615
|
* @param {String} filePath The file path to open
|
|
616
616
|
*/
|
|
617
617
|
this.$emit('open-file-path', filePath);
|
|
618
|
-
},
|
|
619
|
-
handleUndo() {
|
|
620
|
-
document.execCommand('undo');
|
|
621
|
-
},
|
|
622
|
-
handleRedo() {
|
|
623
|
-
document.execCommand('redo');
|
|
624
618
|
}
|
|
625
619
|
},
|
|
626
620
|
i18n
|
|
@@ -636,7 +630,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
636
630
|
},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:{
|
|
637
631
|
'resizable-content': _vm.shouldRenderResizable,
|
|
638
632
|
'duo-chat-drawer': !_vm.shouldRenderResizable,
|
|
639
|
-
},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","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,608602988)},[_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:{"
|
|
633
|
+
},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","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,608602988)},[_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:{"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()])};
|
|
640
634
|
var __vue_staticRenderFns__ = [];
|
|
641
635
|
|
|
642
636
|
/* style */
|
package/dist/index.js
CHANGED
|
@@ -18,7 +18,6 @@ export { default as DuoChatContextItemMenu } from './components/chat/components/
|
|
|
18
18
|
export { default as DuoChatContextItemPopover } from './components/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover';
|
|
19
19
|
export { default as DuoChatContextItemSelections } from './components/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections';
|
|
20
20
|
export { InsertCodeSnippetElement as DuoChatInsertCodeSnippetElement } from './components/chat/components/duo_chat_message/insert_code_snippet_element';
|
|
21
|
-
export { default as DuoTerminalCommand } from './components/ui/duo_terminal_command/duo_terminal_command';
|
|
22
21
|
export { default as DuoNavigationBar } from './components/ui/duo_navigation_bar/duo_navigation_bar';
|
|
23
22
|
export { default as DuoRecentCollapsible } from './components/ui/duo_recent_collapsible/duo_recent_collapsible';
|
|
24
23
|
export { default as DuoRecentContent } from './components/ui/duo_recent_content/duo_recent_content';
|
package/package.json
CHANGED
|
@@ -316,6 +316,14 @@ export default {
|
|
|
316
316
|
required: false,
|
|
317
317
|
default: false,
|
|
318
318
|
},
|
|
319
|
+
/**
|
|
320
|
+
* Optional parameter to pass in the working directory - needed for MessageMap Tool type
|
|
321
|
+
*/
|
|
322
|
+
workingDirectory: {
|
|
323
|
+
type: String,
|
|
324
|
+
required: false,
|
|
325
|
+
default: '',
|
|
326
|
+
},
|
|
319
327
|
},
|
|
320
328
|
data() {
|
|
321
329
|
return {
|
|
@@ -456,6 +464,7 @@ export default {
|
|
|
456
464
|
mounted() {
|
|
457
465
|
this.scrollToBottom();
|
|
458
466
|
},
|
|
467
|
+
|
|
459
468
|
methods: {
|
|
460
469
|
onGoBack() {
|
|
461
470
|
this.$emit('back-to-list');
|
|
@@ -696,12 +705,6 @@ export default {
|
|
|
696
705
|
*/
|
|
697
706
|
this.$emit('open-file-path', filePath);
|
|
698
707
|
},
|
|
699
|
-
handleUndo() {
|
|
700
|
-
document.execCommand?.('undo');
|
|
701
|
-
},
|
|
702
|
-
handleRedo() {
|
|
703
|
-
document.execCommand?.('redo');
|
|
704
|
-
},
|
|
705
708
|
},
|
|
706
709
|
i18n,
|
|
707
710
|
};
|
|
@@ -787,6 +790,7 @@ export default {
|
|
|
787
790
|
:show-delimiter="index > 0"
|
|
788
791
|
:with-feedback="withFeedback"
|
|
789
792
|
:is-tool-approval-processing="isToolApprovalProcessing"
|
|
793
|
+
:working-directory="workingDirectory"
|
|
790
794
|
@track-feedback="onTrackFeedback"
|
|
791
795
|
@insert-code-snippet="onInsertCodeSnippet"
|
|
792
796
|
@copy-code-snippet="onCopyCodeSnippet"
|
|
@@ -873,12 +877,6 @@ export default {
|
|
|
873
877
|
:placeholder="inputPlaceholder"
|
|
874
878
|
autofocus
|
|
875
879
|
@keydown.enter.exact.native.prevent
|
|
876
|
-
@keydown.prevent.ctrl.z.exact="handleUndo"
|
|
877
|
-
@keydown.prevent.meta.z.exact="handleUndo"
|
|
878
|
-
@keydown.prevent.ctrl.shift.z.exact="handleRedo"
|
|
879
|
-
@keydown.prevent.meta.shift.z.exact="handleRedo"
|
|
880
|
-
@keydown.prevent.ctrl.y.exact="handleRedo"
|
|
881
|
-
@keydown.prevent.meta.y.exact="handleRedo"
|
|
882
880
|
@keyup.native="onInputKeyup"
|
|
883
881
|
@compositionend="compositionEnd"
|
|
884
882
|
/>
|
|
@@ -72,6 +72,14 @@ export default {
|
|
|
72
72
|
required: false,
|
|
73
73
|
default: false,
|
|
74
74
|
},
|
|
75
|
+
/**
|
|
76
|
+
* Optional parameter to pass in the working directory - needed for MessageMap Tool type
|
|
77
|
+
*/
|
|
78
|
+
workingDirectory: {
|
|
79
|
+
type: String,
|
|
80
|
+
required: false,
|
|
81
|
+
default: '',
|
|
82
|
+
},
|
|
75
83
|
},
|
|
76
84
|
computed: {
|
|
77
85
|
isAwaitingToolApproval() {
|
|
@@ -134,6 +142,7 @@ export default {
|
|
|
134
142
|
:trusted-urls="trustedUrls"
|
|
135
143
|
:is-cancelled="canceledRequestIds.includes(msg.requestId)"
|
|
136
144
|
:with-feedback="withFeedback"
|
|
145
|
+
:working-directory="workingDirectory"
|
|
137
146
|
@track-feedback="onTrackFeedback"
|
|
138
147
|
@insert-code-snippet="onInsertCodeSnippet"
|
|
139
148
|
@copy-code-snippet="onCopyCodeSnippet"
|
|
@@ -102,6 +102,14 @@ export default {
|
|
|
102
102
|
required: false,
|
|
103
103
|
default: true,
|
|
104
104
|
},
|
|
105
|
+
/**
|
|
106
|
+
* Optional parameter to pass in the working directory
|
|
107
|
+
*/
|
|
108
|
+
workingDirectory: {
|
|
109
|
+
type: String,
|
|
110
|
+
required: false,
|
|
111
|
+
default: '',
|
|
112
|
+
},
|
|
105
113
|
},
|
|
106
114
|
data() {
|
|
107
115
|
return {
|
|
@@ -421,6 +429,7 @@ export default {
|
|
|
421
429
|
v-else
|
|
422
430
|
:message="message"
|
|
423
431
|
:with-feedback="withFeedback"
|
|
432
|
+
:working-directory="workingDirectory"
|
|
424
433
|
data-testid="workflow-message"
|
|
425
434
|
@open-file-path="onOpenFilePath"
|
|
426
435
|
@feedback="logEvent"
|
|
@@ -52,6 +52,14 @@ export default {
|
|
|
52
52
|
required: false,
|
|
53
53
|
default: () => ({}),
|
|
54
54
|
},
|
|
55
|
+
/**
|
|
56
|
+
* Optional parameter to pass in the working directory
|
|
57
|
+
*/
|
|
58
|
+
workingDirectory: {
|
|
59
|
+
type: String,
|
|
60
|
+
required: false,
|
|
61
|
+
default: '',
|
|
62
|
+
},
|
|
55
63
|
},
|
|
56
64
|
computed: {
|
|
57
65
|
messageMap() {
|
|
@@ -74,6 +82,7 @@ export default {
|
|
|
74
82
|
<component
|
|
75
83
|
:is="messageComponent"
|
|
76
84
|
:message="message"
|
|
85
|
+
:working-directory="workingDirectory"
|
|
77
86
|
v-bind="$attrs"
|
|
78
87
|
:style="customStyles"
|
|
79
88
|
v-on="$listeners"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { GlIcon, GlLink } from '@gitlab/ui';
|
|
3
3
|
import { translate } from '../../../../../utils/i18n';
|
|
4
|
+
import MessageToolCommandOutput from '../../duo_chat_message_tool_command_output/message_tool_command_output.vue';
|
|
4
5
|
import BaseMessage from './message_base.vue';
|
|
5
6
|
|
|
6
7
|
export const i18n = {
|
|
@@ -11,12 +12,14 @@ export const i18n = {
|
|
|
11
12
|
ACTION_LABEL: translate('DuoChatMessage.actionLabel', 'Action'),
|
|
12
13
|
CONTENT_LABEL: translate('DuoChatMessage.contentLabel', 'Content'),
|
|
13
14
|
FILE_PATH_LABEL: translate('DuoChatMessage.filePathLabel', 'File path'),
|
|
15
|
+
RAN_TERMINAL_COMMAND: translate('DuoChatMessage.ranTerminalCommand', 'Ran terminal command'),
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
export default {
|
|
17
19
|
name: 'DuoToolMessage',
|
|
18
20
|
components: {
|
|
19
21
|
BaseMessage,
|
|
22
|
+
MessageToolCommandOutput,
|
|
20
23
|
GlIcon,
|
|
21
24
|
GlLink,
|
|
22
25
|
},
|
|
@@ -38,10 +41,15 @@ export default {
|
|
|
38
41
|
return value && value.tool_info;
|
|
39
42
|
},
|
|
40
43
|
},
|
|
44
|
+
workingDirectory: {
|
|
45
|
+
required: false,
|
|
46
|
+
type: String,
|
|
47
|
+
default: '',
|
|
48
|
+
},
|
|
41
49
|
},
|
|
42
50
|
computed: {
|
|
43
51
|
iconName() {
|
|
44
|
-
switch (this.
|
|
52
|
+
switch (this.toolName) {
|
|
45
53
|
case 'read_file':
|
|
46
54
|
return 'eye';
|
|
47
55
|
case 'write_file':
|
|
@@ -79,6 +87,18 @@ export default {
|
|
|
79
87
|
commitMessage() {
|
|
80
88
|
return this.toolArgs.commit_message;
|
|
81
89
|
},
|
|
90
|
+
hasCommandOutput() {
|
|
91
|
+
return this.message.message_sub_type === 'command_output';
|
|
92
|
+
},
|
|
93
|
+
toolName() {
|
|
94
|
+
return this.message.tool_info?.name;
|
|
95
|
+
},
|
|
96
|
+
toolResponse() {
|
|
97
|
+
return this.message.tool_info?.toolResponse;
|
|
98
|
+
},
|
|
99
|
+
toolWorkingDirectory() {
|
|
100
|
+
return this.workingDirectory;
|
|
101
|
+
},
|
|
82
102
|
},
|
|
83
103
|
methods: {
|
|
84
104
|
onOpenFilePath(filePath) {
|
|
@@ -93,7 +113,14 @@ export default {
|
|
|
93
113
|
<template>
|
|
94
114
|
<base-message :message="message">
|
|
95
115
|
<template #message="{ content }">
|
|
96
|
-
<
|
|
116
|
+
<message-tool-command-output
|
|
117
|
+
v-if="hasCommandOutput"
|
|
118
|
+
:command-header="$options.i18n.RAN_TERMINAL_COMMAND"
|
|
119
|
+
:command-action="toolName"
|
|
120
|
+
:command-output="toolResponse"
|
|
121
|
+
:working-directory="toolWorkingDirectory"
|
|
122
|
+
/>
|
|
123
|
+
<div v-else class="gl-flex gl-items-baseline !gl-text-subtle">
|
|
97
124
|
<div class="gl-mr-3 gl-flex-shrink-0">
|
|
98
125
|
<gl-icon :name="iconName" />
|
|
99
126
|
</div>
|
package/src/components/chat/components/duo_chat_message/message_types/message_workflow_end.vue
CHANGED
|
@@ -15,7 +15,7 @@ export default {
|
|
|
15
15
|
required: false,
|
|
16
16
|
type: String,
|
|
17
17
|
default:
|
|
18
|
-
"Review the changes. To improve the implementation, create another
|
|
18
|
+
"Review the changes. To improve the implementation, create another session and describe the specific changes you'd like to see.",
|
|
19
19
|
},
|
|
20
20
|
action: {
|
|
21
21
|
required: false,
|
|
@@ -30,7 +30,7 @@ export default {
|
|
|
30
30
|
: this.$options.newRoute;
|
|
31
31
|
},
|
|
32
32
|
buttonText() {
|
|
33
|
-
return this.action?.text || 'New
|
|
33
|
+
return this.action?.text || 'New session';
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
newRoute: {
|
|
@@ -19,7 +19,7 @@ And you can also pass in the following slot:
|
|
|
19
19
|
### Basic Usage
|
|
20
20
|
|
|
21
21
|
```vue
|
|
22
|
-
<
|
|
22
|
+
<message-tool-command-output
|
|
23
23
|
command-header="Ran terminal command"
|
|
24
24
|
command-action="npm install"
|
|
25
25
|
command-output="added 1256 packages, and audited 1257 packages in 30s"
|
|
@@ -30,7 +30,7 @@ And you can also pass in the following slot:
|
|
|
30
30
|
### With Custom Actions
|
|
31
31
|
|
|
32
32
|
```vue
|
|
33
|
-
<
|
|
33
|
+
<message-tool-command-output
|
|
34
34
|
command-header="Ran terminal command"
|
|
35
35
|
command-action="npm install"
|
|
36
36
|
command-output="added 1256 packages, and audited 1257 packages in 30s"
|
|
@@ -39,5 +39,5 @@ And you can also pass in the following slot:
|
|
|
39
39
|
<template #actions>
|
|
40
40
|
<gl-button category="tertiary" @click="runCommand">Open terminal</gl-button>
|
|
41
41
|
</template>
|
|
42
|
-
</
|
|
42
|
+
</message-tool-command-output>
|
|
43
43
|
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { GlCollapse, GlButton, GlIcon } from '@gitlab/ui';
|
|
3
3
|
|
|
4
4
|
export default {
|
|
5
|
-
name: '
|
|
5
|
+
name: 'MessageToolCommandOutput',
|
|
6
6
|
components: {
|
|
7
7
|
GlCollapse,
|
|
8
8
|
GlButton,
|
|
@@ -61,7 +61,7 @@ export default {
|
|
|
61
61
|
</script>
|
|
62
62
|
|
|
63
63
|
<template>
|
|
64
|
-
<div class="gl-border-solid gl-border-neutral-600">
|
|
64
|
+
<div class="terminal-command-output gl-border-solid gl-border-neutral-600">
|
|
65
65
|
<div class="gl-flex gl-w-full gl-items-center gl-justify-between gl-px-3 gl-py-2">
|
|
66
66
|
<span class="gl-flex gl-items-center" data-testid="terminal-command-header">
|
|
67
67
|
<gl-icon name="terminal" class="gl-mr-3" />
|
|
@@ -77,14 +77,19 @@ export default {
|
|
|
77
77
|
/>
|
|
78
78
|
</div>
|
|
79
79
|
<div class="gl-leading-22 gl-border-t gl-flex gl-flex-col gl-p-3">
|
|
80
|
-
<code
|
|
80
|
+
<code
|
|
81
|
+
v-if="workingDirectory"
|
|
82
|
+
class="!gl-bg-transparent gl-text-subtle"
|
|
83
|
+
data-testid="terminal-working-directory"
|
|
81
84
|
>{{ workingDirectory }} ></code
|
|
82
85
|
>
|
|
83
|
-
<code class="gl-text-default" data-testid="terminal-command-action">{{
|
|
86
|
+
<code class="!gl-bg-transparent gl-text-default" data-testid="terminal-command-action">{{
|
|
87
|
+
commandAction
|
|
88
|
+
}}</code>
|
|
84
89
|
</div>
|
|
85
90
|
<gl-collapse v-if="isCommandOutputAvailable" :visible="isVisible">
|
|
86
91
|
<div class="gl-bg-black gl-p-3">
|
|
87
|
-
<code>{{ commandOutput }}</code>
|
|
92
|
+
<code class="!gl-bg-transparent">{{ commandOutput }}</code>
|
|
88
93
|
</div>
|
|
89
94
|
</gl-collapse>
|
|
90
95
|
<div v-if="$scopedSlots.actions" class="gl-border-t gl-p-3">
|
|
@@ -688,12 +688,6 @@ export default {
|
|
|
688
688
|
*/
|
|
689
689
|
this.$emit('open-file-path', filePath);
|
|
690
690
|
},
|
|
691
|
-
handleUndo() {
|
|
692
|
-
document.execCommand('undo');
|
|
693
|
-
},
|
|
694
|
-
handleRedo() {
|
|
695
|
-
document.execCommand('redo');
|
|
696
|
-
},
|
|
697
691
|
},
|
|
698
692
|
i18n,
|
|
699
693
|
};
|
|
@@ -862,12 +856,6 @@ export default {
|
|
|
862
856
|
:placeholder="inputPlaceholder"
|
|
863
857
|
autofocus
|
|
864
858
|
@keydown.enter.exact.native.prevent
|
|
865
|
-
@keydown.prevent.ctrl.z.exact="handleUndo"
|
|
866
|
-
@keydown.prevent.meta.z.exact="handleUndo"
|
|
867
|
-
@keydown.prevent.ctrl.shift.z="handleRedo"
|
|
868
|
-
@keydown.prevent.meta.shift.z="handleRedo"
|
|
869
|
-
@keydown.prevent.ctrl.y="handleRedo"
|
|
870
|
-
@keydown.prevent.meta.y="handleRedo"
|
|
871
859
|
@keyup.native="onInputKeyup"
|
|
872
860
|
@compositionend="compositionEnd"
|
|
873
861
|
/>
|
package/src/index.js
CHANGED
|
@@ -39,7 +39,6 @@ export { default as DuoChatContextItemSelections } from './components/chat/compo
|
|
|
39
39
|
export { InsertCodeSnippetElement as DuoChatInsertCodeSnippetElement } from './components/chat/components/duo_chat_message/insert_code_snippet_element';
|
|
40
40
|
|
|
41
41
|
// Duo UI components
|
|
42
|
-
export { default as DuoTerminalCommand } from './components/ui/duo_terminal_command/duo_terminal_command.vue';
|
|
43
42
|
export { default as DuoNavigationBar } from './components/ui/duo_navigation_bar/duo_navigation_bar.vue';
|
|
44
43
|
export { default as DuoRecentCollapsible } from './components/ui/duo_recent_collapsible/duo_recent_collapsible.vue';
|
|
45
44
|
export { default as DuoRecentContent } from './components/ui/duo_recent_content/duo_recent_content.vue';
|
package/translations.js
CHANGED
|
@@ -90,6 +90,7 @@ export default {
|
|
|
90
90
|
'DuoChatMessage.modalMessageError': 'Error sending the message',
|
|
91
91
|
'DuoChatMessage.modalTitle': 'Give feedback on GitLab Duo Chat',
|
|
92
92
|
'DuoChatMessage.projectLabel': 'Project',
|
|
93
|
+
'DuoChatMessage.ranTerminalCommand': 'Ran terminal command',
|
|
93
94
|
'DuoChatMessage.startBranchLabel': 'Start branch',
|
|
94
95
|
'DuoChatMessageSources.messageSources': null,
|
|
95
96
|
'DuoRecentCollapsable.viewAllText': 'View All',
|