chd 1 mese fa
parent
commit
aadd7b30f2

+ 9 - 9
src/entrypoints/background/index.ts

@@ -241,15 +241,15 @@ export default defineBackground(() => {
     })
   })
 
-  onMessage('FROM_PLAN',  async (message) => {
-    messageList.push({
-      id:message.data.payload.id,
-      type:'ALL',
-      params:message.data.params,
-      result:message.data.payload
-    })
-    await plan()
-  })
+  // onMessage('FROM_PLAN',  async (message) => {
+  //   messageList.push({
+  //     id:message.data.payload.id,
+  //     type:'ALL',
+  //     params:message.data.params,
+  //     result:message.data.payload
+  //   })
+  //   await plan()
+  // })
 })
 
 // Allows users to open the side panel by clicking on the action toolbar icon

+ 10 - 14
src/entrypoints/sidepanel/AdvancedMode.vue

@@ -1,12 +1,12 @@
 <!-- Chat.vue -->
 <template>
 
-  <div class="chat-container" style="padding-top: 3rem;">
+  <div class="chat-container items-center" >
     <!-- <div v-if="!messages.length && !msgLoading" class="message-list">
       <pageMask />
     </div> -->
     <!-- 消息列表 -->
-    <div class="message-list">
+    <div class="message-list w-full">
       <el-scrollbar ref="scrollbar" @scroll="handleScroll" v-loading="msgLoading">
         <!-- 加载更多指示器 -->
         <div v-if="isLoadingMore" class="loading-more-indicator">
@@ -18,14 +18,12 @@
                :class="['message-item', message.role === 'user'  ? 'self' : 'other']">
             <el-avatar :size="32" :src="message.role === 'user' ? userAvatar : avatar" />
             <div class="message-content">
-              <div class="content" v-if="message.role ==='system'"
+              <div class="content w-full" v-if="message.role ==='system'"
                 :class="{ 'loading-content': message.content === '' }">
                 <StepsDisplay 
                 v-if="message.type === 'plan'"
-                 :content="message.rawContent" 
-                 :initialStep="initialSteps"
-                 @step-change="handleStepChange" @complete="handleComplete"
                  />
+                 
                 <span v-else v-html="message.content"></span>
                 <span class="loading-indicator" v-if="sendLoading && index === messages.length - 1">
                   <span class="dot"></span>
@@ -55,9 +53,9 @@
 
     <Tools  />
 
-    <div>
+    <div class="w-full max-w-[720px] p-[0_12px_12px]">
       <!-- 输入区域 -->
-      <div class="input-area">
+      <div class="input-area w-full">
         <el-icon class="closeShow" :style="{ display: isShowPage ? 'block' : 'none'}" size="16px" color="#909399"
                  @click="closePageInfo">
           <CircleClose />
@@ -120,7 +118,6 @@
 import { ref, onMounted, nextTick, inject, useTemplateRef, reactive,onBeforeMount } from 'vue'
 import { ElScrollbar, ElAvatar, ElInput, ElButton } from 'element-plus'
 import moment from 'moment'
-import { sendMessage } from 'webext-bridge/side-panel'
 import {
   controllerList
 } from '@/entrypoints/sidepanel/utils/ai-service.js'
@@ -191,7 +188,7 @@ function handleScroll(a) {
     handleScrollToTop()
   }
 }
-
+const format = (percentage) => (percentage === 100 ? 'Full' : `${percentage}%`)
 const messagesContainer = ref(null)
 let innerText = ''
 // 处理滚动到顶部的事件
@@ -350,10 +347,9 @@ async function createWS(msg) {
       obj.type = 'plan'
       console.log(res, 5558)
       obj.rawContent = res.data.plan
-      sendMessage('FROM_PLAN', {
-        params,
-        payload: { ...res.data.plan }
-      }, 'background')
+      chrome.runtime.sendMessage({
+        type: "FROM_PLAN",
+        payload: {params,...res.data.plan},});
     }).catch(res => {
       obj.rawContent = '接口出错,请重试。'
       obj.content = '接口出错,请重试。'

+ 1 - 2
src/entrypoints/sidepanel/Chat.vue

@@ -138,7 +138,6 @@
 <script setup>
 import { ref, onMounted, nextTick, inject, useTemplateRef, reactive, onBeforeMount } from 'vue'
 import { ElScrollbar, ElAvatar, ElInput, ElButton } from 'element-plus'
-import { sendMessage } from 'webext-bridge/side-panel'
 import moment from 'moment'
 import fileLogo from '@/assets/svg/file.svg'
 import {
@@ -614,7 +613,7 @@ function handleCapture() {
       ElMessage.warning('请先打开一个页面')
       return
     }
-    sendMessage('SCREENSHOT', { t: 'Start taking screenshots' }, `content-script@${tabs[0].id}`)
+    // sendMessage('SCREENSHOT', { t: 'Start taking screenshots' }, `content-script@${tabs[0].id}`)
   })
 
 

+ 13 - 11
src/entrypoints/sidepanel/component/StepsDisplay.vue

@@ -1,9 +1,11 @@
 <template>
-  <div class="steps-display-container">
-    <div v-if="parsedContent" class="steps-content">
-      <h2 class="steps-title">{{ parsedContent.title }}</h2>
-      <!-- <p class="steps-id">计划ID: {{ parsedContent.planId }}</p> -->
-      <el-steps 
+  <div class="">
+    <div  class="steps-content">
+
+      <el-progress :show-text="false" style="width: 240px;"   format=" "  :percentage="100"
+      :indeterminate="true"
+      :duration="2"/>
+      <!-- <el-steps 
         :active="-1"
         finish-status="success"
         class="custom-steps"
@@ -19,9 +21,9 @@
               <div v-if="index < activeStep" class="step-icon completed">
                 <el-icon><Check /></el-icon>
               </div>
-<!--              <div v-else-if="index === activeStep" class="step-icon current">-->
-<!--                <el-icon><Loading /></el-icon>-->
-<!--              </div>-->
+             <div v-else-if="index === activeStep" class="step-icon current">
+               <el-icon><Loading /></el-icon>
+             </div>
               <div v-else style="border-radius: 50%;">
                 {{ index + 1 }}
               </div>
@@ -60,7 +62,7 @@
             </div>
           </template>
         </el-step>
-      </el-steps>
+      </el-steps> -->
 <!--       
       <div class="steps-controls">
         <el-button 
@@ -92,14 +94,14 @@
 
 
     </div>
-    <div v-else class="error-message">
+    <!-- <div v-else class="error-message">
       <el-alert
         title="内容格式错误"
         type="error"
         description="无法解析传入的内容,请检查格式是否正确"
         show-icon
       />
-    </div>
+    </div> -->
   </div>
 </template>
 

+ 0 - 1
src/entrypoints/sidepanel/component/tools.vue

@@ -69,7 +69,6 @@ onMounted(async () => {
 </script>
 
 <template>
-  <div class="px-3 py-2 flex justify-between items-center w-full max-w-[720px]">
   <div class="px-3 py-2 flex justify-between items-center w-full max-w-[720px]">
     <div class="flex items-center">
       <el-select placement="top" v-model="modelId" placeholder="选择" value-key="id"

+ 0 - 1
src/store/modules/msg.ts

@@ -2,7 +2,6 @@ import { defineStore } from 'pinia'
 import { getChatDetail } from '@/api/index'
 import {
   formatMessage
-  formatMessage
 } from '@/entrypoints/sidepanel/utils/ai-service.js'
 import { v4 as uuidv4 } from 'uuid'
 

+ 4 - 5
src/utils/navigator.js

@@ -257,7 +257,6 @@ export const navigator=()=> {
                     type: "FROM_STEP",
                     payload: JSON.parse(toolExecution)
                 });
-                console.log(JSON.parse(toolExecution))
                 if (JSON.parse(toolExecution).action == 'navigate') {
                     await switchTabOrOpenNew(JSON.parse(toolExecution).url)
                 }
@@ -288,14 +287,14 @@ export const navigator=()=> {
         let add = await getexecuteapi(params)
                 console.log(add,'add')
                 let toolExecution = add.data.plan.steps[item.stepIndex].toolExecution
-                console.log(JSON.parse(toolExecution))
                 if (toolExecution) {
+                   
+                    let toolExecution=JSON.parse(add.data.plan.steps[item.stepIndex].toolExecution)[0].toolParameters
                     chrome.runtime.sendMessage({
                         type: "FROM_STEP",
-                        payload: JSON.parse(toolExecution).toolParameters
+                        payload: JSON.parse(toolExecution)  
                     });
-                    let toolExecution=JSON.parse(add.data.plan.steps[item.stepIndex].toolExecution)[0].toolParameters
-                    await browserautomate(browdata.domState.buildDomTree, browdata.page, JSON.parse(toolExecution).action, JSON.parse(toolExecution).index,JSON.parse(toolExecution).text)
+                    await browserautomate(browdata.domState.buildDomTree, browdata.page, JSON.parse(toolExecution).action, JSON.parse(toolExecution).index, JSON.parse(toolExecution).text)
 
                 }else {
                     return