Browse Source

Ticket #4770 - Usage of assistants in Live Search and Studio Help.

AntonLV 2 years ago
parent
commit
995b7ac07d

+ 6 - 6
inc/classes/BxDolAIAssistant.php

@@ -70,7 +70,8 @@ class BxDolAIAssistant extends BxDol
         if(getParam('sys_agents_asst_chats_trans_del') == 'on') {
         if(getParam('sys_agents_asst_chats_trans_del') == 'on') {
             $aChats = $oAi->getAssistantChatsTransient(3600);
             $aChats = $oAi->getAssistantChatsTransient(3600);
             foreach($aChats as $aChat)
             foreach($aChats as $aChat)
-                self::getObjectInstance($aChat['assistant_id'])->deleteChat($aChat);
+                if(!empty($aChat['assistant_id']) && ($oAssistant = self::getObjectInstance($aChat['assistant_id'])) !== false)
+                    $oAssistant->deleteChat($aChat);
         }
         }
     }
     }
 
 
@@ -144,19 +145,18 @@ class BxDolAIAssistant extends BxDol
     {
     {
         $aChat = is_array($mixedChat) ? $mixedChat : $this->_oDb->getChatsBy(['sample' => 'id', 'id' => (int)$mixedChat]);
         $aChat = is_array($mixedChat) ? $mixedChat : $this->_oDb->getChatsBy(['sample' => 'id', 'id' => (int)$mixedChat]);
         if(empty($aChat) || !is_array($aChat))
         if(empty($aChat) || !is_array($aChat))
-            return false;
-
-        $oAIModel = $this->getModelObject();
+            return false;      
 
 
         if(($oCmts = $this->getChatCmtsObject($aChat['id'])) !== false)
         if(($oCmts = $this->getChatCmtsObject($aChat['id'])) !== false)
             $oCmts->onObjectDelete();
             $oCmts->onObjectDelete();
 
 
         if(!empty($aChat['ai_file_id'])) {
         if(!empty($aChat['ai_file_id'])) {
+            $oAIModel = $this->getModelObject();
             $oAIModel->callVectorStoresFilesDelete($this->_aData['ai_vs_id'], $aChat['ai_file_id']);
             $oAIModel->callVectorStoresFilesDelete($this->_aData['ai_vs_id'], $aChat['ai_file_id']);
             $oAIModel->callFilesDelete($aChat['ai_file_id']);
             $oAIModel->callFilesDelete($aChat['ai_file_id']);
         }
         }
 
 
-        return true;
+        return $this->_oDb->deleteChats(['id' => $aChat['id']]);
     }
     }
 
 
     public function processActionAddKnowledge()
     public function processActionAddKnowledge()
@@ -255,7 +255,7 @@ class BxDolAIAssistant extends BxDol
                 'cmt_text' => $sText
                 'cmt_text' => $sText
             ]);
             ]);
 
 
-            $sPopupContent = $oCmts->getCommentsBlock();
+            $sPopupContent = $oCmts->getCommentsBlock([], ['dynamic_mode' => true]);
         }
         }
 
 
         $sPopupId = 'bx_agents_assistants_ask';
         $sPopupId = 'bx_agents_assistants_ask';

+ 24 - 0
modules/boonex/artificer/data/template/system/css/general.css

@@ -58,10 +58,34 @@ import url(../../../../../../../template/css/general.css);
 .bx-toolbar-item.bx-ti-search .sys-search-results-quick .bx-btn.sys-agents-ask:last-child {
 .bx-toolbar-item.bx-ti-search .sys-search-results-quick .bx-btn.sys-agents-ask:last-child {
     margin-bottom: 0;
     margin-bottom: 0;
 }
 }
+#bx_agents_assistants_ask .bx-popup.bx-popup-width {
+    width: 42rem;
+}
 .bx-agents-popup .cmts {
 .bx-agents-popup .cmts {
     max-height: calc(0.5 * 100vh);
     max-height: calc(0.5 * 100vh);
     overflow-y: auto;
     overflow-y: auto;
 }
 }
+.bx-agents-popup .cmt-reply {
+    margin-bottom: 0;
+}
+.bx-agents-popup .bx-form-section-content {
+    display: flex;
+}
+.bx-agents-popup .bx-form-section-content > .bx-form-element-wrapper:first-child {
+    flex: 1 1 auto;
+}
+.bx-agents-popup .bx-form-section-content > .bx-form-element-wrapper:last-child {
+    flex: 0 0 auto;
+    margin: 0 0 0 1rem;
+}
+.bx-agents-popup .bx-form-value .bx-form-input-textarea {
+    height: 2.5rem;
+    line-height: 1.25rem;
+}
+.bx-agents-popup .bx-form-value .bx-btn i {
+    height: 1.375rem;
+    line-height: 1.375rem;
+}
 
 
 
 
 /*--- Page Content with Cover ---*/
 /*--- Page Content with Cover ---*/

+ 1 - 1
plugins_public/tailwind/css/tailwind.css

@@ -1249,7 +1249,7 @@
     .bx-std #bx-std-pcap-menu-popup-actions .bx-popup,
     .bx-std #bx-std-pcap-menu-popup-actions .bx-popup,
     .bx-std #bx-std-pcap-menu-popup-account .bx-popup,
     .bx-std #bx-std-pcap-menu-popup-account .bx-popup,
     .bx-std .bx-std-mod-popup-settings-wrapper.bx-popup-applied:not(.bx-popup-chain) .bx-popup {
     .bx-std .bx-std-mod-popup-settings-wrapper.bx-popup-applied:not(.bx-popup-chain) .bx-popup {
-        @apply ring-1 ring-gray-600;
+        @apply ring-1 ring-gray-800;
     }
     }
 
 
     .bx-std .bx-menu-top-center .bx-menu-tab-active .bx-mi-icon {
     .bx-std .bx-menu-top-center .bx-menu-tab-active .bx-mi-icon {

File diff suppressed because it is too large
+ 0 - 0
plugins_public/tailwind/css/tailwind.min.css


+ 4 - 11
studio/classes/BxDolStudioAgentsAsstChatsCmts.php

@@ -84,7 +84,7 @@ class BxDolStudioAgentsAsstChatsCmts extends BxTemplCmts
 
 
     public function getCommentsBlock($aBp = [], $aDp = [])
     public function getCommentsBlock($aBp = [], $aDp = [])
     {
     {
-        $aComments = parent::getCommentsBlock($aBp, ['in_designbox' => false]);
+        $aComments = parent::getCommentsBlock($aBp, array_merge($aDp, ['in_designbox' => false]));
         if(empty($aComments['content']))
         if(empty($aComments['content']))
             return MsgBox(_t('_error occured'));
             return MsgBox(_t('_error occured'));
 
 
@@ -206,23 +206,16 @@ class BxDolStudioAgentsAsstChatsCmts extends BxTemplCmts
     {
     {
         return parent::_getFormBox($sType, $aBp, array_merge($aDp, ['min_post_form' => false]));
         return parent::_getFormBox($sType, $aBp, array_merge($aDp, ['min_post_form' => false]));
     }
     }
-
-    protected function _getTmplVarsText($aCmt)
-    {
-        $aResult = parent::_getTmplVarsText($aCmt);
-
-        if((int)$aCmt['cmt_author_id'] == $this->_iProfileIdAi)
-            $aResult['text'] = '<pre>' . $aResult['text'] . '</pre>';
-
-        return $aResult;
-    }
     
     
     protected function _getForm($sAction, $iId)
     protected function _getForm($sAction, $iId)
     {
     {
         $oForm = parent::_getForm($sAction, $iId);
         $oForm = parent::_getForm($sAction, $iId);
 
 
+        $oForm->aInputs['cmt_text']['caption'] = '';
         $oForm->aInputs['cmt_text']['db']['pass'] = 'xss';
         $oForm->aInputs['cmt_text']['db']['pass'] = 'xss';
 
 
+        $oForm->aInputs['cmt_submit']['value'] = $this->_oTemplate->parseIcon('arrow-right');
+
         return $oForm;
         return $oForm;
     }
     }
 
 

+ 26 - 11
studio/template/css/menu_top.css

@@ -370,6 +370,7 @@ body > .bx-popup-wrapper.bx-std-mod-popup-settings-wrapper,
 #bx-std-pcap-menu-popup-help .bx-popup .sys-icon,
 #bx-std-pcap-menu-popup-help .bx-popup .sys-icon,
 #bx-std-pcap-menu-popup-assistant .bx-popup,
 #bx-std-pcap-menu-popup-assistant .bx-popup,
 #bx-std-pcap-menu-popup-assistant .bx-popup .bx-popup-header h2,
 #bx-std-pcap-menu-popup-assistant .bx-popup .bx-popup-header h2,
+#bx-std-pcap-menu-popup-assistant .bx-popup .bx-popup-header .bx-icon,
 #bx-std-pcap-menu-popup-assistant .bx-popup a,
 #bx-std-pcap-menu-popup-assistant .bx-popup a,
 #bx-std-pcap-menu-popup-assistant .bx-popup .sys-icon,
 #bx-std-pcap-menu-popup-assistant .bx-popup .sys-icon,
 #bx-std-pcap-menu-popup-actions .bx-popup,
 #bx-std-pcap-menu-popup-actions .bx-popup,
@@ -402,31 +403,45 @@ body > .bx-popup-wrapper.bx-std-mod-popup-settings-wrapper,
 
 
 /*--- Assistant ---*/
 /*--- Assistant ---*/
 #bx-std-pcap-menu-popup-assistant .bx-popup .bx-popup-header {
 #bx-std-pcap-menu-popup-assistant .bx-popup .bx-popup-header {
-    border-bottom: 1px solid rgb(75 85 99);
+    border-bottom: 1px solid rgb(31 41 55);
+}
+#bx-std-pcap-menu-popup-assistant .bx-popup .bx-popup-content {
+    padding-top: 0;
 }
 }
 .bx-std-pcap-assistant .cmts {
 .bx-std-pcap-assistant .cmts {
     max-height: calc(0.5 * 100vh);
     max-height: calc(0.5 * 100vh);
     overflow-y: auto;
     overflow-y: auto;
 }
 }
-.bx-std-pcap-assistant .cmt-reply.cmt-reply-bottom {
-    margin-bottom: 0;
+.bx-std-pcap-assistant .cmt {
+    margin-top: 1rem;
 }
 }
-.bx-std-pcap-assistant .cmt-head .cmt-meta {
+.bx-std-pcap-assistant .cmt > .cmts {
+    display: none;
+}
+.bx-std-pcap-assistant .cmt .cmt-head .cmt-meta {
     margin-right: 0;
     margin-right: 0;
     color: rgb(156 163 175);
     color: rgb(156 163 175);
 }
 }
-.bx-std-pcap-assistant .cmt-head ul li:first-child .bx-base-general-unit-meta-div {
+.bx-std-pcap-assistant .cmt .cmt-head ul li:first-child .bx-base-general-unit-meta-div {
   display: none;
   display: none;
 }
 }
-.bx-std-pcap-assistant .cmt-cont .cmt-body,
-.bx-std-pcap-assistant .cmt-cont .cmt-body pre {
+.bx-std-pcap-assistant .cmt .cmt-cont .cmt-body {
     color: rgb(229, 231, 235);
     color: rgb(229, 231, 235);
 }
 }
-.bx-std-pcap-assistant .cmt-cont .cmt-body pre {
-    border: 1px solid rgba(107, 114, 128, 0.2);
-    background-color: rgb(31 41 55);
+.bx-std-pcap-assistant .cmt-reply.cmt-reply-bottom {
+    margin-bottom: 0;
+}
+.bx-std-pcap-assistant .bx-form-section-content {
+    display: flex;
+}
+.bx-std-pcap-assistant .bx-form-section-content > .bx-form-element-wrapper:first-child {
+    flex: 1 1 auto;
+}
+.bx-std-pcap-assistant .bx-form-section-content > .bx-form-element-wrapper:last-child {
+    flex: 0 0 auto;
+    margin: 0 0 0 1rem;
 }
 }
 .bx-std-pcap-assistant .bx-form-value .bx-form-input-textarea {
 .bx-std-pcap-assistant .bx-form-value .bx-form-input-textarea {
-    height: 5.0rem;
+    height: 2.5rem;
     background-color: rgb(31 41 55);
     background-color: rgb(31 41 55);
 }
 }

+ 1 - 1
studio/template/scripts/BxBaseStudioAgentsAsstChats.php

@@ -138,7 +138,7 @@ class BxBaseStudioAgentsAsstChats extends BxDolStudioAgentsAsstChats
             if(($aResponse = $oAIModel->callVectorStoresFiles($aAssistant['ai_vs_id'], ['file_id' => $aFile['id']])) !== false) {
             if(($aResponse = $oAIModel->callVectorStoresFiles($aAssistant['ai_vs_id'], ['file_id' => $aFile['id']])) !== false) {
                 $iNow = time();
                 $iNow = time();
                 $this->_oDb->insertFile(['name' => $sFile, 'assistant_id' => $aAssistant['id'], 'added' => $iNow, 'ai_file_id' => $aFile['id'], 'locked' => 1]);
                 $this->_oDb->insertFile(['name' => $sFile, 'assistant_id' => $aAssistant['id'], 'added' => $iNow, 'ai_file_id' => $aFile['id'], 'locked' => 1]);
-                $this->_oDb->updateChats(['ai_file_id' => $aFile['id'], 'stored' => $iNow], ['id' => $iId]);
+                $this->_oDb->updateChats(['type' => BX_DOL_AI_ASST_TYPE_PERMANENT, 'ai_file_id' => $aFile['id'], 'stored' => $iNow], ['id' => $iId]);
 
 
                 $aRes = ['grid' => $this->getCode(false), 'blink' => $iId];
                 $aRes = ['grid' => $this->getCode(false), 'blink' => $iId];
             }
             }

+ 12 - 7
template/scripts/BxBaseCmts.php

@@ -87,20 +87,24 @@ class BxBaseCmts extends BxDolCmts
     /**
     /**
      * Add comments CSS/JS
      * Add comments CSS/JS
      */
      */
-    public function addCssJs ()
+    public function addCssJs($aBp = [], $aDp = [])
     {
     {
+        $bDynamicMode = isset($aDp['dynamic_mode']) && $aDp['dynamic_mode'] === true;
+
         $oForm = BxDolForm::getObjectInstance($this->_sFormObject, $this->_sFormDisplayPost);
         $oForm = BxDolForm::getObjectInstance($this->_sFormObject, $this->_sFormDisplayPost);
         $oForm->addCssJs();
         $oForm->addCssJs();
 
 
-        $this->_oTemplate->addCss(array(
+        $sResult = $this->_oTemplate->addCss([
             BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'photo-swipe/|photoswipe.css',
             BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'photo-swipe/|photoswipe.css',
             BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'photo-swipe/default-skin/|default-skin.css',
             BX_DIRECTORY_PATH_PLUGINS_PUBLIC . 'photo-swipe/default-skin/|default-skin.css',
-        ));
+        ], $bDynamicMode);
 
 
-        $this->_oTemplate->addJs(array(
+        $sResult .= $this->_oTemplate->addJs([
             'photo-swipe/photoswipe.min.js',
             'photo-swipe/photoswipe.min.js',
             'photo-swipe/photoswipe-ui-default.min.js',
             'photo-swipe/photoswipe-ui-default.min.js',
-        ));
+        ], $bDynamicMode);
+
+        return $sResult;
     }
     }
 
 
     public function getJsObjectName()
     public function getJsObjectName()
@@ -115,6 +119,7 @@ class BxBaseCmts extends BxDolCmts
      */
      */
     public function getJsScript($aBp = [], $aDp = [])
     public function getJsScript($aBp = [], $aDp = [])
     {
     {
+        $bDynamicMode = isset($aDp['dynamic_mode']) && $aDp['dynamic_mode'] === true;
         $bMinPostForm = isset($aDp['min_post_form']) ? $aDp['min_post_form'] : $this->_bMinPostForm;
         $bMinPostForm = isset($aDp['min_post_form']) ? $aDp['min_post_form'] : $this->_bMinPostForm;
 
 
         $aParams = [
         $aParams = [
@@ -137,8 +142,8 @@ class BxBaseCmts extends BxDolCmts
         if($this->_aParams)
         if($this->_aParams)
             $aParams['aParams'] = $this->_aParams;
             $aParams['aParams'] = $this->_aParams;
 
 
-        $this->addCssJs();
-        return $this->_oTemplate->_wrapInTagJsCode("if(window['" . $this->_sJsObjName . "'] == undefined) var " . $this->_sJsObjName . " = new " . $this->_sJsObjClass . "(" . json_encode($aParams) . "); " . $this->_sJsObjName . ".cmtInit();");
+        $sIncludes = $this->addCssJs($aBp, $aDp);
+        return ($bDynamicMode ? $sIncludes : '') . $this->_oTemplate->_wrapInTagJsCode("if(window['" . $this->_sJsObjName . "'] == undefined) var " . $this->_sJsObjName . " = new " . $this->_sJsObjClass . "(" . json_encode($aParams) . "); " . $this->_sJsObjName . ".cmtInit();");
     }
     }
 
 
     function getCommentsBlockAPI($aParams, $aBp = [], $aDp = ['in_designbox' => false, 'show_empty' => false])
     function getCommentsBlockAPI($aParams, $aBp = [], $aDp = ['in_designbox' => false, 'show_empty' => false])

Some files were not shown because too many files changed in this diff