@yeaft/webchat-agent 1.0.502 → 1.0.503

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":"1.0.502"}
1
+ {"version":"1.0.503"}
@@ -6108,7 +6108,7 @@ ${String(e||"").trim()}
6108
6108
  </div>
6109
6109
  </div>
6110
6110
  </Teleport>
6111
- `,data(){return{form:{provider:["yeaft","copilot","claude-code"].includes(this.initialProvider)?this.initialProvider:"yeaft",name:"",vpIds:[],defaultVpId:null,workDir:"",agentId:this.initialAgentId||null},busy:!1,submitError:"",...kc(),vpPickerTouched:!1,vpRosterOpen:!1,vpRosterPlacement:"down",vpRosterAvailableHeight:null,scannedSessions:[],restoreScanning:!1,restoring:null,restoreError:"",vpSnapshotTimer:null}},computed:{chat(){try{if(typeof window<"u"&&window.Pinia?.useChatStore)return window.Pinia.useChatStore()}catch{}return null},vpStore(){try{if(typeof window<"u"&&window.Pinia?.useVpStore)return window.Pinia.useVpStore()}catch{}return null},sessionsStore(){try{if(typeof window<"u"&&window.Pinia?.useSessionsStore)return window.Pinia.useSessionsStore()}catch{}return null},isYeaftProvider(){return this.form.provider==="yeaft"},vpLibraryReady(){let e=this.vpStore;return!!(e&&e.snapshotStatus==="ready"&&e.snapshotAgentId===this.form.agentId&&e.lastVpSnapshotAgentId===this.form.agentId)},vpList(){return this.vpLibraryReady?this.vpStore?.vpList||[]:[]},vpDomainSections(){return hn(this.vpList)},vpListSignature(){return(this.vpList||[]).map(e=>e&&e.vpId).filter(Boolean).join(",")},vpLibraryEmpty(){let e=this.vpStore;return!e||!this.vpLibraryReady?!1:e.emptyLibrary===!0?!0:!!(e.lastSnapshotAt&&e.lastSnapshotAt>0&&(e.vpOrder?.length||0)===0)},vpLibraryError(){let e=this.vpStore;return!e||e.snapshotStatus!=="error"?!1:!e.snapshotAgentId||e.snapshotAgentId===this.form.agentId},agentOptions(){let e=this.chat;return!e||!Array.isArray(e.agents)?[]:e.agents.map(t=>({id:t.id,name:t.name,online:!!t.online,workDir:t.workDir||""}))},agentSelectOptions(){return this.agentOptions.map(e=>({value:e.id,label:e.name||e.id,sublabel:e.online?"":this.$t("settings.dashboard.offline"),disabled:!e.online}))},providerOptions(){return[{value:"yeaft",label:"Yeaft"},{value:"copilot",label:this.$t("provider.copilot")},{value:"claude-code",label:this.$t("provider.claudeCode")}]},agentSignature(){return this.agentOptions.map(e=>`${e.id}:${e.online?1:0}`).join(",")},folderPickerAgentId(){return this.form.agentId||this.chat?.currentAgent||""},defaultWorkDir(){return this.agentOptions.find(t=>t.id===this.form.agentId)?.workDir||this.chat?.currentAgentInfo?.workDir||""},workDirPlaceholder(){return this.defaultWorkDir||this.$t("modal.newConv.inputOrSelect")},allSessions(){return this.sessionsStore?.sessionList||[]},agentSessions(){let e=this.form.agentId||null;return e?this.allSessions.filter(t=>{let s=t&&t.agentId;return!s||s===e}):this.allSessions},folderAggregates(){let e=new Map;for(let t of this.agentSessions){let s=t&&typeof t.workDir=="string"?t.workDir.trim():"";if(!s)continue;let n=e.get(s)||{path:s,count:0};n.count+=1,e.set(s,n)}return Array.from(e.values()).sort((t,s)=>t.path.localeCompare(s.path))},sessionsInDir(){let e=this.form.agentId||null;return(Array.isArray(this.scannedSessions)?this.scannedSessions:[]).filter(s=>s&&s.id).map(s=>({...s,...s.agentId||e?{agentId:s.agentId||e}:{}}))},chatFolderRows(){return(this.chat?.folders||[]).map(e=>({path:e.path||e.name||"",count:Number(e.sessionCount)||0})).filter(e=>e.path)},createFolderRows(){return this.isYeaftProvider?this.folderAggregates:this.chatFolderRows},createSessionRows(){return this.isYeaftProvider?this.sessionsInDir:(this.chat?.historySessions||[]).map(e=>({...e,id:e.sessionId,name:e.title,createdAt:e.lastModified}))},canSubmit(){if(this.isYeaftProvider&&(!this.vpLibraryReady||this.form.vpIds.length===0)||!this.form.agentId)return!1;let e=this.agentOptions.find(t=>t.id===this.form.agentId);return!!(e&&e.online)},vpRosterSummary(){let e=this.form.vpIds||[];return e.length===0?this.$t("yeaft.session.create.vpNone"):e.length<=3?e.map(t=>this.vpLabelFor(t)).join(this.$t("common.comma")):this.$t("yeaft.session.create.vpCount",{n:e.length})},vpRosterPopupStyle(){return Number.isFinite(this.vpRosterAvailableHeight)?{"--vp-roster-available-height":`${this.vpRosterAvailableHeight}px`}:{}}},mounted(){window.addEventListener("keydown",this.onEsc),window.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("scroll",this.scheduleVpRosterLayout),window.addEventListener("workbench-message",this.handleFolderPickerMessage),document.addEventListener("click",this.handleOutsideRosterClick,!0),this.seedAgentDefault(),this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()},watch:{vpListSignature(){this.applyDefaultSelection(),this.scheduleVpRosterLayout()},agentSignature(){this.seedAgentDefault(),this.scheduleVpRosterLayout()},"form.provider"(e,t){e!==t&&(this.form.workDir="",this.scannedSessions=[],this.restoreError="",e==="yeaft"?(this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()):this.form.agentId&&this.chat?.listFoldersForAgent?.(this.form.agentId,e))},"form.agentId"(e,t){e!==t&&(this.isYeaftProvider&&this.subscribeVpsFor(e),this.form.vpIds=[],this.form.defaultVpId=null,this.vpPickerTouched=!1,this.isYeaftProvider&&this.applyDefaultSelection(),this.scannedSessions=[],this.restoreError="",!this.isYeaftProvider&&e&&this.chat?.listFoldersForAgent?.(e,this.form.provider),(this.form.workDir||"").trim()&&this.loadProviderSessions())},"form.workDir"(e,t){e===t||(this.restoreError="",this.scannedSessions=[],!(e||"").trim())||this.loadProviderSessions()}},beforeUnmount(){window.removeEventListener("keydown",this.onEsc),window.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("scroll",this.scheduleVpRosterLayout),window.removeEventListener("workbench-message",this.handleFolderPickerMessage),document.removeEventListener("click",this.handleOutsideRosterClick,!0),this._vpRosterLayoutFrame&&cancelAnimationFrame(this._vpRosterLayoutFrame),this._folderPickerTimer&&clearTimeout(this._folderPickerTimer),this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer)},methods:{toggleVpRoster(){if(this.vpRosterOpen){this.closeVpRoster();return}this.vpRosterPlacement="down",this.vpRosterAvailableHeight=null,this.vpRosterOpen=!0,this.$nextTick(this.scheduleVpRosterLayout)},closeVpRoster(){this.vpRosterOpen=!1,this.vpRosterAvailableHeight=null},scheduleVpRosterLayout(){!this.vpRosterOpen||this._vpRosterLayoutFrame||(this._vpRosterLayoutFrame=requestAnimationFrame(()=>{this._vpRosterLayoutFrame=null,this.updateVpRosterLayout()}))},updateVpRosterLayout(){if(!this.vpRosterOpen)return;let e=this.$refs.vpRosterTrigger,t=this.$refs.vpRosterPopup,s=e?.closest?.(".resume-modal");if(!e||!t||!s)return;let n=t.style.maxHeight;t.style.maxHeight="none";let r=t.scrollHeight;t.style.maxHeight=n;let i=window.visualViewport,o=i?i.offsetTop:0,a=i?i.height:window.innerHeight,l={top:o,bottom:o+a},c=s.getBoundingClientRect(),d=nk(e.getBoundingClientRect(),c,l,r);this.vpRosterPlacement=d.placement,this.vpRosterAvailableHeight=d.availableHeight},seedAgentDefault(){try{let e=this.agentOptions;if(!Array.isArray(e)||e.length===0||e.find(i=>i.id===this.form.agentId&&i.online))return;let s=this.chat,n=s&&s.currentAgent||null,r=e.find(i=>i.id===n&&i.online)||e.find(i=>i.online)||null;r&&(this.form.agentId=r.id)}catch{}},subscribeVpsFor(e,{force:t=!1}={}){let s=this.chat,n=e||s?.currentAgent||null,r=this.vpStore;if(!s||typeof s.sendWsMessage!="function"||!n){let l=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,l),r?.failSnapshot?.(n,l,"No online Agent is available."),!1}if(!t&&r?.snapshotStatus==="ready"&&r.snapshotAgentId===n&&r.lastVpSnapshotAgentId===n)return this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=null,!0;let o=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,o),s.sendWsMessage({type:"yeaft_vp_subscribe",agentId:n,requestId:o})===!1?(r?.failSnapshot?.(n,o,"WebSocket is not connected."),!1):(this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=setTimeout(()=>{this.vpSnapshotTimer=null,r?.snapshotStatus==="loading"&&r.snapshotRequestId===o&&r.failSnapshot(n,o,"VP library request timed out.")},1e4),!0)},retryVpSnapshot(){this.subscribeVpsFor(this.form.agentId,{force:!0})},loadProviderSessions(){if(this.isYeaftProvider)return this.loadRestoreCandidates();let e=(this.form.workDir||"").trim();!e||!this.form.agentId||this.chat?.listHistorySessionsForAgent?.(this.form.agentId,e,this.form.provider)},async loadRestoreCandidates(){if(this.restoreScanning)return;let e=(this.form.workDir||"").trim();if(!e){this.scannedSessions=[];return}let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"no agent selected"});return}this.restoreScanning=!0,this.restoreError="";try{let n=await t.sessionCrudRequest("scan_workdir",{workDir:e},{agentId:s});if(n&&n.ok){let r=Array.isArray(n.sessions)?n.sessions:Array.isArray(n.groups)?n.groups:[];this.scannedSessions=r}else{this.scannedSessions=[];let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:r})}}catch(n){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:n?.message||String(n)})}finally{this.restoreScanning=!1}},async onRestoreClick(e){if(!e||!e.id||this.restoring)return;let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"no agent selected"});return}this.restoring=e.id,this.restoreError="";try{let n=await t.sessionCrudRequest("restore",{sessionId:e.id,workDir:(this.form.workDir||"").trim()},{agentId:s});if(n&&n.ok){let i=n.session||n.group||e,o=i?.agentId||e.agentId||s;o&&t.currentAgent!==o&&typeof t.selectAgent=="function"&&t.selectAgent(o),this.sessionsStore&&this.sessionsStore.setActive(i.id||e.id,o),typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(i.id||e.id,{agentId:o,force:!0}),this.$emit("created",i),this.$emit("close");return}let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:r})}catch(n){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:n?.message||String(n)})}finally{this.restoring=null}},applyDefaultSelection(){if(this.vpPickerTouched)return;let e=this.vpList||[];if(e.length===0)return;let t=e.map(o=>o&&o.vpId).filter(Boolean);if(t.length===0)return;let s=Array.isArray(this.form.vpIds)?this.form.vpIds:[],n=s.filter(o=>t.includes(o)),r=this.form.defaultVpId&&n.includes(this.form.defaultVpId);if(n.length>0&&r){n.length!==s.length&&(this.form.vpIds=n);return}let i=t.includes(qh)?qh:n[0]||t[0];this.form.vpIds=[i],this.form.defaultVpId=i},toggleVp(e,t){this.vpPickerTouched=!0,t?(this.form.vpIds.includes(e)||this.form.vpIds.push(e),this.form.defaultVpId||(this.form.defaultVpId=e)):(this.form.vpIds=this.form.vpIds.filter(s=>s!==e),this.form.defaultVpId&&!this.form.vpIds.includes(this.form.defaultVpId)&&(this.form.defaultVpId=this.form.vpIds[0]||null))},vpLabelFor(e){let t=this.vpStore?.vpLabel;return typeof t=="function"?t(e):e},vpDescriptionFor(e){let t=this.vpStore?.vpDescription;return typeof t=="function"?t(e):""},vpTextColorFor(e){let t=this.vpStore?.vpTextColor;return typeof t=="function"?t(e):"var(--text-primary)"},selectFolder(e){this.form.workDir=e},selectSession(e){if(!(!e||!e.id)){if(!this.isYeaftProvider){let t=e.workDir||(this.form.workDir||"").trim()||this.defaultWorkDir;this.chat?.selectAgent?.(this.form.agentId),this.chat._pendingSessionTitle=e.name||e.title||null,this.chat?.resumeConversation?.(e.id,t,this.form.agentId,this.chatProviderOptions()),this.$emit("close");return}e.legacyImport?this.onRestoreClick(e):this.resumeExisting(e)}},chatProviderOptions(){let e={provider:this.form.provider};return this.form.provider==="copilot"&&(e.providerOptions={allowAllTools:!0}),e},resumeExisting(e){if(!e||!e.id)return;let t=this.chat,s=e.agentId||this.form.agentId||null;s&&t&&t.currentAgent!==s&&typeof t.selectAgent=="function"&&t.selectAgent(s),this.sessionsStore&&this.sessionsStore.setActive(e.id,s),t&&typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(e.id,{agentId:s,force:!0}),this.$emit("close")},handleOutsideRosterClick(e){if(!this.vpRosterOpen)return;let t=this.$refs.vpRosterRoot;t&&(t.contains(e.target)||this.closeVpRoster())},getLastPathSegment(e){return li(e)},formatDate(e){return Xo(e,this.$t.bind(this))},onEsc(e){if(e.key==="Escape"&&!this.folderPickerOpen){if(this.vpRosterOpen){this.closeVpRoster();return}this.busy||this.requestClose()}},onOverlayClick(){this.busy||this.requestClose()},requestClose(){this.$emit("close")},folderPickerInitialDir(){return this.form.workDir||this.defaultWorkDir||""},folderPickerSetWorkDir(e){this.form.workDir=e},...Sc,async onSubmit(){if(!(this.busy||!this.canSubmit)){this.submitError="",this.busy=!0;try{if(!this.chat){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}if(!this.isYeaftProvider){let d=this.form.workDir.trim()||this.defaultWorkDir;this.chat.selectAgent?.(this.form.agentId),this.chat.createConversation?.(d,this.form.agentId,null,this.chatProviderOptions()),this.$emit("created",{provider:this.form.provider,workDir:d}),this.$emit("close");return}if(typeof this.chat.createYeaftSession!="function"){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}let e=new Set((this.vpList||[]).map(d=>d&&d.vpId).filter(Boolean)),t=this.form.vpIds.filter(d=>e.has(d));if(t.length===0){this.submitError=this.$t("yeaft.session.error.unknown",{message:"no valid VP selected"});return}let s=this.form.defaultVpId&&t.includes(this.form.defaultVpId)?this.form.defaultVpId:t[0],r=this.form.name.trim()||li(this.form.workDir.trim())||this.$t("yeaft.session.create.untitled"),i=await this.chat.createYeaftSession({displayName:r,vpIds:t,defaultVpId:s,workDir:this.form.workDir.trim(),agentId:this.form.agentId||null});if(i&&i.ok){let d=this.chat,u=i.session||i.group||null,p=u&&u.id,f=u?.agentId||this.form.agentId||null;p&&(f&&d&&d.currentAgent!==f&&typeof d.selectAgent=="function"&&d.selectAgent(f),this.sessionsStore&&this.sessionsStore.setActive(p,f),d&&typeof d.setActiveSessionFilter=="function"&&d.setActiveSessionFilter(p,{agentId:f,force:!0})),this.$emit("created",u),this.$emit("close");return}let o=i?.error?.code||"unknown",a=i?.error?.message||"",l=`yeaft.session.error.${o}`,c=this.$t(l,{message:a});this.submitError=c===l?this.$t("yeaft.session.error.unknown",{message:a}):c}catch(e){this.submitError=this.$t("yeaft.session.error.unknown",{message:e?.message||String(e)})}finally{this.busy=!1}}}}}});var Nh,Wh=N(()=>{So();ko();Gr();Nh={name:"WorkCenterActionDetail",components:{UserTurnBlock:Zn,VpTurnBlock:Xn},props:{action:{type:Object,default:null},canMessage:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},messagesNextCursor:{type:[String,Number],default:null},messagesLoading:{type:Boolean,default:!1},messagesError:{type:String,default:""},previewingAttachmentId:{type:String,default:null},attachmentError:{type:String,default:""}},emits:["back","close","load-earlier-messages","open-attachment","quote","edit-as-new"],computed:{executorName(){return this.action?.assignedVp?.name||this.action?.assignedVp?.id||this.action?.requiredRole||this.tr("workCenter.actionExecutorPending","Executor pending")},hasMessages(){return this.messages.length>0},waitingQuestion(){return this.action?.status!=="waiting"?"":String(this.action?.canonicalResult?.waitingReason||"").trim()},conversationBlocks(){return this.messages.map(e=>{let t=Number(e?.updatedAt||e?.createdAt)||0;if(e?.role==="user")return{key:e.id,kind:"user",message:{id:e.id,messageId:e.id,type:"user",content:e.text||"",attachments:Array.isArray(e.attachments)?e.attachments:[],quote:e.quote||null,timestamp:t}};let s=e.speaker||{},n=this.messageSpeaker(e),r=s.id||`work-center-action:${this.action?.id||"unknown"}`;return{key:e.id,kind:"assistant",speakerName:n,turn:{id:e.id,messageId:e.id,atMessageId:e.id,turnId:e.turnId||e.id,textContent:e.text||"",textSegments:e.text?[{key:e.id,content:e.text,kind:e.status==="running"?"progress":"result",isStreaming:e.status==="running"}]:[],isStreaming:e.status==="running",speakerVpId:r,speakerTimestamp:t,showSpeakerHeader:!0,timestamp:t,createdAt:t,todoMsg:null,toolMsgs:[],toolSummaryCount:0,imageMsgs:[],askMsg:null,attachments:Array.isArray(e.attachments)?e.attachments:[]}}})}},watch:{messages:{deep:!0,handler(){this.$nextTick(()=>Dt(this.$el))}}},mounted(){this.$nextTick(()=>Dt(this.$el))},methods:{tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},actionSequence(){let e=Number(this.action?.sequence);return Number.isFinite(e)&&e>0?e:1},messageSpeaker(e){if(e?.role==="user")return this.tr("workCenter.you","You");let t=this.$t("workCenter.actionNumber",{number:this.actionSequence()}),s=e?.speaker?.name||e?.speaker?.id||"";return s?this.$t("workCenter.messageSpeakerRole",{name:s,role:t}):t},time(e){if(!e)return"";try{return new Date(Number(e)).toLocaleString()}catch{return""}},formatAttachmentSize(e){let t=Math.max(0,Number(e)||0);return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(1)} MB`},openAttachment(e){this.$emit("open-attachment",e?.attachment||e,e?.trigger||null)}},template:`
6111
+ `,data(){return{form:{provider:["yeaft","copilot","claude-code"].includes(this.initialProvider)?this.initialProvider:"yeaft",name:"",vpIds:[],defaultVpId:null,workDir:"",agentId:this.initialAgentId||null},busy:!1,submitError:"",...kc(),vpPickerTouched:!1,vpRosterOpen:!1,vpRosterPlacement:"down",vpRosterAvailableHeight:null,scannedSessions:[],restoreScanning:!1,restoring:null,restoreError:"",vpSnapshotTimer:null}},computed:{chat(){try{if(typeof window<"u"&&window.Pinia?.useChatStore)return window.Pinia.useChatStore()}catch{}return null},vpStore(){try{if(typeof window<"u"&&window.Pinia?.useVpStore)return window.Pinia.useVpStore()}catch{}return null},sessionsStore(){try{if(typeof window<"u"&&window.Pinia?.useSessionsStore)return window.Pinia.useSessionsStore()}catch{}return null},isYeaftProvider(){return this.form.provider==="yeaft"},vpLibraryReady(){let e=this.vpStore;return!!(e&&e.snapshotStatus==="ready"&&e.snapshotAgentId===this.form.agentId&&e.lastVpSnapshotAgentId===this.form.agentId)},vpList(){return this.vpLibraryReady?this.vpStore?.vpList||[]:[]},vpDomainSections(){return hn(this.vpList)},vpListSignature(){return(this.vpList||[]).map(e=>e&&e.vpId).filter(Boolean).join(",")},vpLibraryEmpty(){let e=this.vpStore;return!e||!this.vpLibraryReady?!1:e.emptyLibrary===!0?!0:!!(e.lastSnapshotAt&&e.lastSnapshotAt>0&&(e.vpOrder?.length||0)===0)},vpLibraryError(){let e=this.vpStore;return!e||e.snapshotStatus!=="error"?!1:!e.snapshotAgentId||e.snapshotAgentId===this.form.agentId},agentOptions(){let e=this.chat;return!e||!Array.isArray(e.agents)?[]:e.agents.map(t=>({id:t.id,name:t.name,online:!!t.online,workDir:t.workDir||""}))},agentSelectOptions(){return this.agentOptions.map(e=>({value:e.id,label:e.name||e.id,sublabel:e.online?"":this.$t("settings.dashboard.offline"),disabled:!e.online}))},providerOptions(){return[{value:"yeaft",label:"Yeaft"},{value:"copilot",label:this.$t("provider.copilot")},{value:"claude-code",label:this.$t("provider.claudeCode")}]},agentSignature(){return this.agentOptions.map(e=>`${e.id}:${e.online?1:0}`).join(",")},folderPickerAgentId(){return this.form.agentId||this.chat?.currentAgent||""},defaultWorkDir(){return this.agentOptions.find(t=>t.id===this.form.agentId)?.workDir||this.chat?.currentAgentInfo?.workDir||""},workDirPlaceholder(){return this.defaultWorkDir||this.$t("modal.newConv.inputOrSelect")},allSessions(){return this.sessionsStore?.sessionList||[]},agentSessions(){let e=this.form.agentId||null;return e?this.allSessions.filter(t=>{let s=t&&t.agentId;return!s||s===e}):this.allSessions},folderAggregates(){let e=new Map;for(let t of this.agentSessions){let s=t&&typeof t.workDir=="string"?t.workDir.trim():"";if(!s)continue;let n=e.get(s)||{path:s,count:0};n.count+=1,e.set(s,n)}return Array.from(e.values()).sort((t,s)=>t.path.localeCompare(s.path))},sessionsInDir(){let e=this.form.agentId||null;return(Array.isArray(this.scannedSessions)?this.scannedSessions:[]).filter(s=>s&&s.id).map(s=>({...s,...s.agentId||e?{agentId:s.agentId||e}:{}}))},chatFolderRows(){return(this.chat?.folders||[]).map(e=>({path:e.path||e.name||"",count:Number(e.sessionCount)||0})).filter(e=>e.path)},createFolderRows(){return this.isYeaftProvider?this.folderAggregates:this.chatFolderRows},createSessionRows(){return this.isYeaftProvider?this.sessionsInDir:(this.chat?.historySessions||[]).map(e=>({...e,id:e.sessionId,name:e.title,createdAt:e.lastModified}))},canSubmit(){if(this.isYeaftProvider&&(!this.vpLibraryReady||this.form.vpIds.length===0)||!this.form.agentId)return!1;let e=this.agentOptions.find(t=>t.id===this.form.agentId);return!!(e&&e.online)},vpRosterSummary(){let e=this.form.vpIds||[];return e.length===0?this.$t("yeaft.session.create.vpNone"):e.length<=3?e.map(t=>this.vpLabelFor(t)).join(this.$t("common.comma")):this.$t("yeaft.session.create.vpCount",{n:e.length})},vpRosterPopupStyle(){return Number.isFinite(this.vpRosterAvailableHeight)?{"--vp-roster-available-height":`${this.vpRosterAvailableHeight}px`}:{}}},mounted(){window.addEventListener("keydown",this.onEsc),window.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.addEventListener("scroll",this.scheduleVpRosterLayout),window.addEventListener("workbench-message",this.handleFolderPickerMessage),document.addEventListener("click",this.handleOutsideRosterClick,!0),this.seedAgentDefault(),this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()},watch:{vpListSignature(){this.applyDefaultSelection(),this.scheduleVpRosterLayout()},agentSignature(){this.seedAgentDefault(),this.scheduleVpRosterLayout()},"form.provider"(e,t){e!==t&&(this.form.workDir="",this.scannedSessions=[],this.restoreError="",e==="yeaft"?(this.subscribeVpsFor(this.form.agentId),this.applyDefaultSelection()):this.form.agentId&&this.chat?.listFoldersForAgent?.(this.form.agentId,e))},"form.agentId"(e,t){e!==t&&(this.isYeaftProvider&&this.subscribeVpsFor(e),this.form.vpIds=[],this.form.defaultVpId=null,this.vpPickerTouched=!1,this.isYeaftProvider&&this.applyDefaultSelection(),this.scannedSessions=[],this.restoreError="",!this.isYeaftProvider&&e&&this.chat?.listFoldersForAgent?.(e,this.form.provider),(this.form.workDir||"").trim()&&this.loadProviderSessions())},"form.workDir"(e,t){e===t||(this.restoreError="",this.scannedSessions=[],!(e||"").trim())||this.loadProviderSessions()}},beforeUnmount(){window.removeEventListener("keydown",this.onEsc),window.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("resize",this.scheduleVpRosterLayout),window.visualViewport?.removeEventListener("scroll",this.scheduleVpRosterLayout),window.removeEventListener("workbench-message",this.handleFolderPickerMessage),document.removeEventListener("click",this.handleOutsideRosterClick,!0),this._vpRosterLayoutFrame&&cancelAnimationFrame(this._vpRosterLayoutFrame),this._folderPickerTimer&&clearTimeout(this._folderPickerTimer),this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer)},methods:{toggleVpRoster(){if(this.vpRosterOpen){this.closeVpRoster();return}this.vpRosterPlacement="down",this.vpRosterAvailableHeight=null,this.vpRosterOpen=!0,this.$nextTick(this.scheduleVpRosterLayout)},closeVpRoster(){this.vpRosterOpen=!1,this.vpRosterAvailableHeight=null},scheduleVpRosterLayout(){!this.vpRosterOpen||this._vpRosterLayoutFrame||(this._vpRosterLayoutFrame=requestAnimationFrame(()=>{this._vpRosterLayoutFrame=null,this.updateVpRosterLayout()}))},updateVpRosterLayout(){if(!this.vpRosterOpen)return;let e=this.$refs.vpRosterTrigger,t=this.$refs.vpRosterPopup,s=e?.closest?.(".resume-modal");if(!e||!t||!s)return;let n=t.style.maxHeight;t.style.maxHeight="none";let r=t.scrollHeight;t.style.maxHeight=n;let i=window.visualViewport,o=i?i.offsetTop:0,a=i?i.height:window.innerHeight,l={top:o,bottom:o+a},c=s.getBoundingClientRect(),d=nk(e.getBoundingClientRect(),c,l,r);this.vpRosterPlacement=d.placement,this.vpRosterAvailableHeight=d.availableHeight},seedAgentDefault(){try{let e=this.agentOptions;if(!Array.isArray(e)||e.length===0||e.find(i=>i.id===this.form.agentId&&i.online))return;let s=this.chat,n=s&&s.currentAgent||null,r=e.find(i=>i.id===n&&i.online)||e.find(i=>i.online)||null;r&&(this.form.agentId=r.id)}catch{}},subscribeVpsFor(e,{force:t=!1}={}){let s=this.chat,n=e||s?.currentAgent||null,r=this.vpStore;if(!s||typeof s.sendWsMessage!="function"||!n){let l=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,l),r?.failSnapshot?.(n,l,"No online Agent is available."),!1}if(!t&&r?.snapshotStatus==="ready"&&r.snapshotAgentId===n&&r.lastVpSnapshotAgentId===n)return this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=null,!0;let o=`vp_snapshot_${Date.now()}_${Math.random().toString(36).slice(2,8)}`;return r?.beginSnapshot?.(n,o),s.sendWsMessage({type:"yeaft_vp_subscribe",agentId:n,requestId:o})===!1?(r?.failSnapshot?.(n,o,"WebSocket is not connected."),!1):(this.vpSnapshotTimer&&clearTimeout(this.vpSnapshotTimer),this.vpSnapshotTimer=setTimeout(()=>{this.vpSnapshotTimer=null,r?.snapshotStatus==="loading"&&r.snapshotRequestId===o&&r.failSnapshot(n,o,"VP library request timed out.")},1e4),!0)},retryVpSnapshot(){this.subscribeVpsFor(this.form.agentId,{force:!0})},loadProviderSessions(){if(this.isYeaftProvider)return this.loadRestoreCandidates();let e=(this.form.workDir||"").trim();!e||!this.form.agentId||this.chat?.listHistorySessionsForAgent?.(this.form.agentId,e,this.form.provider)},async loadRestoreCandidates(){if(this.restoreScanning)return;let e=(this.form.workDir||"").trim();if(!e){this.scannedSessions=[];return}let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:"no agent selected"});return}this.restoreScanning=!0,this.restoreError="";try{let n=await t.sessionCrudRequest("scan_workdir",{workDir:e},{agentId:s});if(n&&n.ok){let r=Array.isArray(n.sessions)?n.sessions:Array.isArray(n.groups)?n.groups:[];this.scannedSessions=r}else{this.scannedSessions=[];let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:r})}}catch(n){this.scannedSessions=[],this.restoreError=this.$t("yeaft.restore.modal.scanError",{message:n?.message||String(n)})}finally{this.restoreScanning=!1}},async onRestoreClick(e){if(!e||!e.id||this.restoring)return;let t=this.chat;if(!t||typeof t.sessionCrudRequest!="function"){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"store unavailable"});return}let s=this.form.agentId||null;if(!s){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"no agent selected"});return}this.restoring=e.id,this.restoreError="";try{let n=await t.sessionCrudRequest("restore",{sessionId:e.id,workDir:(this.form.workDir||"").trim()},{agentId:s});if(n&&n.ok){let i=n.session||n.group||e,o=i?.agentId||e.agentId||s;o&&t.currentAgent!==o&&typeof t.selectAgent=="function"&&t.selectAgent(o),this.sessionsStore&&this.sessionsStore.setActive(i.id||e.id,o),typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(i.id||e.id,{agentId:o,force:!0}),this.$emit("created",i),this.$emit("close");return}let r=n?.error?.message||n?.error?.code||"unknown";this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:r})}catch(n){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:n?.message||String(n)})}finally{this.restoring=null}},applyDefaultSelection(){if(this.vpPickerTouched)return;let e=this.vpList||[];if(e.length===0)return;let t=e.map(o=>o&&o.vpId).filter(Boolean);if(t.length===0)return;let s=Array.isArray(this.form.vpIds)?this.form.vpIds:[],n=s.filter(o=>t.includes(o)),r=this.form.defaultVpId&&n.includes(this.form.defaultVpId);if(n.length>0&&r){n.length!==s.length&&(this.form.vpIds=n);return}let i=t.includes(qh)?qh:n[0]||t[0];this.form.vpIds=[i],this.form.defaultVpId=i},toggleVp(e,t){this.vpPickerTouched=!0,t?(this.form.vpIds.includes(e)||this.form.vpIds.push(e),this.form.defaultVpId||(this.form.defaultVpId=e)):(this.form.vpIds=this.form.vpIds.filter(s=>s!==e),this.form.defaultVpId&&!this.form.vpIds.includes(this.form.defaultVpId)&&(this.form.defaultVpId=this.form.vpIds[0]||null))},vpLabelFor(e){let t=this.vpStore?.vpLabel;return typeof t=="function"?t(e):e},vpDescriptionFor(e){let t=this.vpStore?.vpDescription;return typeof t=="function"?t(e):""},vpTextColorFor(e){let t=this.vpStore?.vpTextColor;return typeof t=="function"?t(e):"var(--text-primary)"},selectFolder(e){this.form.workDir=e},selectSession(e){if(!(!e||!e.id)){if(!this.isYeaftProvider){let t=e.workDir||(this.form.workDir||"").trim()||this.defaultWorkDir;this.chat?.selectAgent?.(this.form.agentId),this.chat._pendingSessionTitle=e.name||e.title||null,this.chat?.resumeConversation?.(e.id,t,this.form.agentId,this.chatProviderOptions()),this.$emit("close");return}e.legacyImport?this.onRestoreClick(e):this.resumeExisting(e)}},chatProviderOptions(){let e={provider:this.form.provider};return this.form.provider==="copilot"&&(e.providerOptions={allowAllTools:!0}),e},resumeExisting(e){if(!e||!e.id)return;let t=this.chat,s=e.agentId||this.form.agentId||null,n=(t?.hiddenSessionCatalog||[]).find(r=>r?.runtimeProvider==="yeaft"&&r?.routeRef?.agentId===s&&r?.routeRef?.sessionId===e.id);if(n&&t?.restoreCatalogSession?.(n)!==!0){this.restoreError=this.$t("yeaft.restore.modal.restoreError",{message:"catalog unavailable"});return}s&&t&&t.currentAgent!==s&&typeof t.selectAgent=="function"&&t.selectAgent(s),this.sessionsStore&&this.sessionsStore.setActive(e.id,s),t&&typeof t.setActiveSessionFilter=="function"&&t.setActiveSessionFilter(e.id,{agentId:s,force:!0}),this.$emit("created",{...e,...s?{agentId:s}:{}}),this.$emit("close")},handleOutsideRosterClick(e){if(!this.vpRosterOpen)return;let t=this.$refs.vpRosterRoot;t&&(t.contains(e.target)||this.closeVpRoster())},getLastPathSegment(e){return li(e)},formatDate(e){return Xo(e,this.$t.bind(this))},onEsc(e){if(e.key==="Escape"&&!this.folderPickerOpen){if(this.vpRosterOpen){this.closeVpRoster();return}this.busy||this.requestClose()}},onOverlayClick(){this.busy||this.requestClose()},requestClose(){this.$emit("close")},folderPickerInitialDir(){return this.form.workDir||this.defaultWorkDir||""},folderPickerSetWorkDir(e){this.form.workDir=e},...Sc,async onSubmit(){if(!(this.busy||!this.canSubmit)){this.submitError="",this.busy=!0;try{if(!this.chat){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}if(!this.isYeaftProvider){let d=this.form.workDir.trim()||this.defaultWorkDir;this.chat.selectAgent?.(this.form.agentId),this.chat.createConversation?.(d,this.form.agentId,null,this.chatProviderOptions()),this.$emit("created",{provider:this.form.provider,workDir:d}),this.$emit("close");return}if(typeof this.chat.createYeaftSession!="function"){this.submitError=this.$t("yeaft.session.error.unknown",{message:"store unavailable"});return}let e=new Set((this.vpList||[]).map(d=>d&&d.vpId).filter(Boolean)),t=this.form.vpIds.filter(d=>e.has(d));if(t.length===0){this.submitError=this.$t("yeaft.session.error.unknown",{message:"no valid VP selected"});return}let s=this.form.defaultVpId&&t.includes(this.form.defaultVpId)?this.form.defaultVpId:t[0],r=this.form.name.trim()||li(this.form.workDir.trim())||this.$t("yeaft.session.create.untitled"),i=await this.chat.createYeaftSession({displayName:r,vpIds:t,defaultVpId:s,workDir:this.form.workDir.trim(),agentId:this.form.agentId||null});if(i&&i.ok){let d=this.chat,u=i.session||i.group||null,p=u&&u.id,f=u?.agentId||this.form.agentId||null;p&&(f&&d&&d.currentAgent!==f&&typeof d.selectAgent=="function"&&d.selectAgent(f),this.sessionsStore&&this.sessionsStore.setActive(p,f),d&&typeof d.setActiveSessionFilter=="function"&&d.setActiveSessionFilter(p,{agentId:f,force:!0})),this.$emit("created",u),this.$emit("close");return}let o=i?.error?.code||"unknown",a=i?.error?.message||"",l=`yeaft.session.error.${o}`,c=this.$t(l,{message:a});this.submitError=c===l?this.$t("yeaft.session.error.unknown",{message:a}):c}catch(e){this.submitError=this.$t("yeaft.session.error.unknown",{message:e?.message||String(e)})}finally{this.busy=!1}}}}}});var Nh,Wh=N(()=>{So();ko();Gr();Nh={name:"WorkCenterActionDetail",components:{UserTurnBlock:Zn,VpTurnBlock:Xn},props:{action:{type:Object,default:null},canMessage:{type:Boolean,default:!1},messages:{type:Array,default:()=>[]},messagesNextCursor:{type:[String,Number],default:null},messagesLoading:{type:Boolean,default:!1},messagesError:{type:String,default:""},previewingAttachmentId:{type:String,default:null},attachmentError:{type:String,default:""}},emits:["back","close","load-earlier-messages","open-attachment","quote","edit-as-new"],computed:{executorName(){return this.action?.assignedVp?.name||this.action?.assignedVp?.id||this.action?.requiredRole||this.tr("workCenter.actionExecutorPending","Executor pending")},hasMessages(){return this.messages.length>0},waitingQuestion(){return this.action?.status!=="waiting"?"":String(this.action?.canonicalResult?.waitingReason||"").trim()},conversationBlocks(){return this.messages.map(e=>{let t=Number(e?.updatedAt||e?.createdAt)||0;if(e?.role==="user")return{key:e.id,kind:"user",message:{id:e.id,messageId:e.id,type:"user",content:e.text||"",attachments:Array.isArray(e.attachments)?e.attachments:[],quote:e.quote||null,timestamp:t}};let s=e.speaker||{},n=this.messageSpeaker(e),r=s.id||`work-center-action:${this.action?.id||"unknown"}`;return{key:e.id,kind:"assistant",speakerName:n,turn:{id:e.id,messageId:e.id,atMessageId:e.id,turnId:e.turnId||e.id,textContent:e.text||"",textSegments:e.text?[{key:e.id,content:e.text,kind:e.status==="running"?"progress":"result",isStreaming:e.status==="running"}]:[],isStreaming:e.status==="running",speakerVpId:r,speakerTimestamp:t,showSpeakerHeader:!0,timestamp:t,createdAt:t,todoMsg:null,toolMsgs:[],toolSummaryCount:0,imageMsgs:[],askMsg:null,attachments:Array.isArray(e.attachments)?e.attachments:[]}}})}},watch:{messages:{deep:!0,handler(){this.$nextTick(()=>Dt(this.$el))}}},mounted(){this.$nextTick(()=>Dt(this.$el))},methods:{tr(e,t){let s=this.$t?this.$t(e):e;return s&&s!==e?s:t},statusLabel(e){return this.tr(`workCenter.status.${e}`,String(e||"").replace("_"," "))},actionSequence(){let e=Number(this.action?.sequence);return Number.isFinite(e)&&e>0?e:1},messageSpeaker(e){if(e?.role==="user")return this.tr("workCenter.you","You");let t=this.$t("workCenter.actionNumber",{number:this.actionSequence()}),s=e?.speaker?.name||e?.speaker?.id||"";return s?this.$t("workCenter.messageSpeakerRole",{name:s,role:t}):t},time(e){if(!e)return"";try{return new Date(Number(e)).toLocaleString()}catch{return""}},formatAttachmentSize(e){let t=Math.max(0,Number(e)||0);return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(1)} MB`},openAttachment(e){this.$emit("open-attachment",e?.attachment||e,e?.trigger||null)}},template:`
6112
6112
  <section class="work-center-action-detail-pane" v-if="action">
6113
6113
  <header class="work-center-action-detail-header">
6114
6114
  <button class="work-center-icon-button" type="button" @click="$emit('back')" :title="tr('workCenter.backToActions', 'Back to Actions')" :aria-label="tr('workCenter.backToActions', 'Back to Actions')">
Binary file
@@ -16,6 +16,6 @@
16
16
  </head>
17
17
  <body>
18
18
  <div id="app"></div>
19
- <script type="module" src="app.bundle.js?v=9947d760"></script>
19
+ <script type="module" src="app.bundle.js?v=6648a4d0"></script>
20
20
  </body>
21
21
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yeaft/webchat-agent",
3
- "version": "1.0.502",
3
+ "version": "1.0.503",
4
4
  "description": "Remote worker agent for Yeaft Web Code Agent — connects the native Yeaft engine, CLI providers, and workbench tools",
5
5
  "main": "index.js",
6
6
  "type": "module",