@yeaft/webchat-agent 1.0.245 → 1.0.247
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/local-runtime/version.json +1 -1
- package/local-runtime/web/app.bundle.js +3 -4
- package/local-runtime/web/app.bundle.js.gz +0 -0
- package/local-runtime/web/index.html +2 -2
- package/local-runtime/web/style.bundle.css +1 -1
- package/local-runtime/web/style.bundle.css.gz +0 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"1.0.
|
|
1
|
+
{"version":"1.0.247"}
|
|
@@ -1009,7 +1009,7 @@ ${String(e||"").trim()}
|
|
|
1009
1009
|
></div>
|
|
1010
1010
|
</div>
|
|
1011
1011
|
`,setup(e,{emit:t,expose:s}){let n=Vue.ref(null),i=Vue.ref(null),r=e.initialAlign==="end",o=Vue.ref(r?Number.MAX_SAFE_INTEGER:0),a=Vue.ref(_t.viewportHeight),l=Vue.reactive({}),c=new Map,d=new Map,u=new Map,p=null,f=null,h=null,b=null,m=0,A=!1,w=0,S=Vue.computed(()=>uo(e.items,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight})),v=Vue.computed(()=>Pd(e.items,S.value,{scrollTop:o.value,viewportHeight:a.value,overscan:e.overscan})),g=Vue.computed(()=>v.value.items),y=Vue.computed(()=>v.value.topSpacerHeight),_=Vue.computed(()=>v.value.bottomSpacerHeight);function L(Q){Q&&t("scroll-state",{scrollTop:Q.scrollTop||0,scrollHeight:Q.scrollHeight||0,clientHeight:Q.clientHeight||0})}function N(){let Q=i.value;Q&&(a.value=Math.max(1,Q.clientHeight||_t.viewportHeight),r&&e.items.length===0||(o.value=Math.max(0,Q.scrollTop||0)),L(Q))}function $(){let Q=i.value;return!r||e.initialAlign!=="end"||e.items.length===0||!Q?!1:(Q.scrollTop=Q.scrollHeight,r=!1,N(),!0)}function R(){$()||N()}function D(){f||(f=requestAnimationFrame(()=>{f=null,N()}))}function M(Q){return Q?Is({scrollTop:Q.scrollTop,scrollHeight:Q.scrollHeight,clientHeight:Q.clientHeight,threshold:_t.bottomThreshold}):!0}function C({delta:Q=0,toBottom:Z=!1}={},re=w){if(re!==w||(Math.abs(Q)>=di&&(m+=Q),Z&&(A=!0),b))return;let x=re;b=requestAnimationFrame(()=>{if(b=null,x!==w)return;let T=i.value;if(!T){m=0,A=!1;return}A?T.scrollTop=T.scrollHeight:Math.abs(m)>=di&&(T.scrollTop+=m),m=0,A=!1,N()})}function P(){w+=1,A=!1,m=0,b&&cancelAnimationFrame(b),b=null}function B(Q,Z,re){!Q||!re||(u.set(Q,{index:Z,el:re}),!h&&(h=requestAnimationFrame(()=>{h=null;let x=Array.from(u.entries());u.clear(),F(x)})))}function F(Q){let Z=[];for(let[ne,X]of Q){let O=X?.el;if(!O)continue;let J=Math.ceil(O.getBoundingClientRect?.().height||O.offsetHeight||0);if(!Number.isFinite(J)||J<=0)continue;let ie=l[ne];if(ie===J)continue;let he=c.get(ne);Z.push({key:ne,nextHeight:J,previousHeight:ie,itemIndex:Number.isFinite(he)?he:X.index})}if(!Z.length)return;let re=i.value,x=M(re),T=v.value.visibleStart,U=0,ee=!1;for(let ne of Z){let{key:X,nextHeight:O,previousHeight:J,itemIndex:ie}=ne;if(l[X]=O,!re||!Number.isFinite(J))continue;let he=O-J;Math.abs(he)<di||(Number.isFinite(ie)&&ie<T?U+=he:x&&(ee=!0))}if(!(Math.abs(U)>=di)&&!ee)return;let ke={delta:U,toBottom:ee},Ae=w;ee?Vue.nextTick(()=>C(ke,Ae)):C(ke,Ae)}function W(Q,Z,re){c.set(Q,Z),re&&(d.set(Q,re),p&&p.observe(re),Vue.nextTick(()=>B(Q,Z,re)))}function se(Q,Z,re){if(!Q)return;let x=d.get(Q);if(x&&x!==re&&p&&p.unobserve(x),!re){d.delete(Q);return}W(Q,Z,re)}async function ve(Q,{align:Z="center"}={}){let re=Number.isFinite(Q)?Math.floor(Q):-1,x=i.value;if(!x||re<0||re>=e.items.length)return!1;P();let T=Cs(e.items[re],re);x.scrollTop=Dd(e.items,re,l,{itemGap:e.itemGap,estimateHeight:e.estimateHeight,viewportHeight:x.clientHeight||a.value,align:Z}),N(),await Vue.nextTick();let U=d.get(T);return U?.scrollIntoView&&U.scrollIntoView({block:Z,inline:"nearest"}),N(),!0}function ue(Q,Z={}){let re=c.get(String(Q));return Number.isFinite(re)?ve(re,Z):Promise.resolve(!1)}return s({scrollToKey:ue,scrollToIndex:ve,cancelPendingBottomFollow:P}),Vue.watch(()=>e.items.map((Q,Z)=>Cs(Q,Z)).join(`
|
|
1012
|
-
`),()=>{c.clear(),e.items.forEach((Q,Z)=>c.set(Cs(Q,Z),Z)),Vue.nextTick(R)},{immediate:!0}),Vue.onMounted(()=>{if(i.value=n.value?.closest?.(".chat-container")||n.value?.parentElement||null,R(),i.value?.addEventListener("scroll",D,{passive:!0}),window.addEventListener("resize",D),typeof ResizeObserver<"u"){p=new ResizeObserver(Q=>{for(let Z of Q){let re=Z.target?.dataset?.virtualId,x=Number(Z.target?.dataset?.virtualIndex);re&&B(re,x,Z.target)}});for(let[Q,Z]of d.entries()){let re=c.get(Q)??Number(Z.dataset?.virtualIndex||0);W(Q,re,Z)}}}),Vue.onBeforeUnmount(()=>{i.value?.removeEventListener("scroll",D),window.removeEventListener("resize",D),p&&p.disconnect(),f&&cancelAnimationFrame(f),h&&cancelAnimationFrame(h),b&&cancelAnimationFrame(b),u.clear(),m=0,A=!1}),{rootRef:n,visibleEntries:g,topSpacerHeight:y,bottomSpacerHeight:_,setItemRef:se}}}});function an(e){return typeof e=="string"&&e.trim()?e.trim():""}function Rm(e){return an(e?.speakerVpId)||an(e?.vpId)}function Vd(e,t){if(!e||!t)return!1;let s=an(e.speakerVpId),n=Rm(t);if(s&&n&&s!==n)return!0;if(e.isHistory&&t.isHistory)return!1;let i=an(e.turnId),r=an(t.turnId);return!!(i&&r&&i!==r)}var Fd=H(()=>{});function ln(e){return e?e.type!=="user"&&e.type!=="system"&&e.type!=="error":!1}function ui(e){let t=Array.isArray(e?.items)?e.items:[];return e?.responseCollapsed?t.filter(s=>!ln(s)):t}function Lm(e){return(Array.isArray(e?.items)?e.items:[]).filter(ln)}function Od(e){let t=Lm(e);return t.length?t[0]:null}function $m(e){let t=e?.textContent??e?.text??e?.content??e?.message?.content??"";return typeof t=="string"?t:Array.isArray(t)?t.map(s=>typeof s=="string"?s:s&&s.type==="text"&&s.text||"").join(""):t==null?"":String(t)}function Hd(e){if(!e?.responseCollapsed)return[];let t=Od(e);return $m(t).replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[[^\]]*\]\(([^)]*)\)/g,"").replace(/[#>*_~\-]+/g," ").split(/\r?\n/).map(n=>n.trim()).filter(Boolean).slice(0,2)}function Nd(e,t){if(!e?.responseCollapsed||typeof t!="function")return null;let s=ui(e),n=Od(e)?74:0,i=s.length+(n?1:0);if(!s.length)return n;let r=s.reduce((a,l)=>a+t(l),0),o=Math.max(0,i-1)*18;return r+o+n}var Bd=H(()=>{});function Gt(e,t){typeof t!="string"||!/^m\d+$/.test(t)||e.includes(t)||e.push(t)}function Vm(e){if(!e)return[];let t=[];for(let s of Array.isArray(e.messages)?e.messages:[])Gt(t,s?.id),Gt(t,s?.messageId),Gt(t,s?.persistedMessageId);return Gt(t,e.message?.id),Gt(t,e.messageId),Gt(t,e.atMessageId),e.type!=="assistant-turn"&&Gt(t,e.id),t}function qd(e){return!e?.closest?.(".yeaft-conversation-outline, .yeaft-search-btn")}async function Wd({result:e,revealWindow:t,nextTick:s,revealMessage:n,isMobile:i,closeOutline:r}){if(!e||!await t?.(e))return!1;await s?.();let a=await n?.(e.messageId);return a&&i&&r?.(),!!a}function Fm(e,t){if(!t)return null;for(let s of Array.isArray(e)?e:[]){if(!s)continue;let n=Array.isArray(s.items)?s.items:[s];for(let i of n){if(!Vm(i).includes(t))continue;let r=i?.id,o=s?.id;return!r||!o?null:{blockId:o,rowId:r,collapseKey:s.responseCollapseKey||null,requiresExpansion:!!(s.responseCollapsed&&i.type==="assistant-turn")}}}return null}async function Ud({blocks:e,messageId:t,collapseStates:s,scrollToBlock:n,findRow:i,flashRow:r,nextTick:o}){let a=Fm(e,t);if(!a||typeof n!="function"||typeof i!="function")return!1;if(a.requiresExpansion){if(!a.collapseKey||!s)return!1;s[a.collapseKey]=!1,await o?.()}if(!await n(a.blockId))return!1;await o?.();let c=i(a.rowId);return c?(c.scrollIntoView?.({block:"center",inline:"nearest"}),r?.(a.rowId),!0):!1}var go=H(()=>{});var pi,mo=H(()=>{ot();Zr();ni();li();wd();lo();Sd();Id();xd();$d();Fd();fo();Bd();go();zt();pi={name:"MessageList",components:{MessageItem:ks,AssistantTurn:Ss,VpTurnBlock:bd,VpSpeakerHeader:oi,ReflectionCard:kd,SubAgentCard:Cd,UserTurnBlock:Ad,VirtualTranscript:Ld},template:`
|
|
1012
|
+
`),()=>{c.clear(),e.items.forEach((Q,Z)=>c.set(Cs(Q,Z),Z)),Vue.nextTick(R)},{immediate:!0}),Vue.onMounted(()=>{if(i.value=n.value?.closest?.(".chat-container")||n.value?.parentElement||null,R(),i.value?.addEventListener("scroll",D,{passive:!0}),window.addEventListener("resize",D),typeof ResizeObserver<"u"){p=new ResizeObserver(Q=>{for(let Z of Q){let re=Z.target?.dataset?.virtualId,x=Number(Z.target?.dataset?.virtualIndex);re&&B(re,x,Z.target)}});for(let[Q,Z]of d.entries()){let re=c.get(Q)??Number(Z.dataset?.virtualIndex||0);W(Q,re,Z)}}}),Vue.onBeforeUnmount(()=>{i.value?.removeEventListener("scroll",D),window.removeEventListener("resize",D),p&&p.disconnect(),f&&cancelAnimationFrame(f),h&&cancelAnimationFrame(h),b&&cancelAnimationFrame(b),u.clear(),m=0,A=!1}),{rootRef:n,visibleEntries:g,topSpacerHeight:y,bottomSpacerHeight:_,setItemRef:se}}}});function an(e){return typeof e=="string"&&e.trim()?e.trim():""}function Rm(e){return an(e?.speakerVpId)||an(e?.vpId)}function Vd(e,t){if(!e||!t)return!1;let s=an(e.speakerVpId),n=Rm(t);if(s&&n&&s!==n)return!0;if(e.isHistory&&t.isHistory)return!1;let i=an(e.turnId),r=an(t.turnId);return!!(i&&r&&i!==r)}var Fd=H(()=>{});function ln(e){return e?e.type!=="user"&&e.type!=="system"&&e.type!=="error":!1}function ui(e){let t=Array.isArray(e?.items)?e.items:[];return e?.responseCollapsed?t.filter(s=>!ln(s)):t}function Lm(e){return(Array.isArray(e?.items)?e.items:[]).filter(ln)}function Od(e){let t=Lm(e);return t.length?t[0]:null}function $m(e){let t=e?.textContent??e?.text??e?.content??e?.message?.content??"";return typeof t=="string"?t:Array.isArray(t)?t.map(s=>typeof s=="string"?s:s&&s.type==="text"&&s.text||"").join(""):t==null?"":String(t)}function Hd(e){if(!e?.responseCollapsed)return[];let t=Od(e);return $m(t).replace(/```[\s\S]*?```/g," ").replace(/`([^`]+)`/g,"$1").replace(/!\[[^\]]*\]\([^)]*\)/g," ").replace(/\[[^\]]*\]\(([^)]*)\)/g,"").replace(/[#>*_~\-]+/g," ").split(/\r?\n/).map(n=>n.trim()).filter(Boolean).slice(0,2)}function Nd(e,t){if(!e?.responseCollapsed||typeof t!="function")return null;let s=ui(e),n=Od(e)?74:0,i=s.length+(n?1:0);if(!s.length)return n;let r=s.reduce((a,l)=>a+t(l),0),o=Math.max(0,i-1)*18;return r+o+n}var Bd=H(()=>{});function Gt(e,t){typeof t!="string"||!/^m\d+$/.test(t)||e.includes(t)||e.push(t)}function Vm(e){if(!e)return[];let t=[];for(let s of Array.isArray(e.messages)?e.messages:[])Gt(t,s?.id),Gt(t,s?.messageId),Gt(t,s?.persistedMessageId);return Gt(t,e.message?.id),Gt(t,e.messageId),Gt(t,e.atMessageId),e.type!=="assistant-turn"&&Gt(t,e.id),t}function qd(e){return!e?.closest?.(".yeaft-conversation-outline, .yeaft-conversation-outline-sender-menu, .yeaft-search-btn")}async function Wd({result:e,revealWindow:t,nextTick:s,revealMessage:n,isMobile:i,closeOutline:r}){if(!e||!await t?.(e))return!1;await s?.();let a=await n?.(e.messageId);return a&&i&&r?.(),!!a}function Fm(e,t){if(!t)return null;for(let s of Array.isArray(e)?e:[]){if(!s)continue;let n=Array.isArray(s.items)?s.items:[s];for(let i of n){if(!Vm(i).includes(t))continue;let r=i?.id,o=s?.id;return!r||!o?null:{blockId:o,rowId:r,collapseKey:s.responseCollapseKey||null,requiresExpansion:!!(s.responseCollapsed&&i.type==="assistant-turn")}}}return null}async function Ud({blocks:e,messageId:t,collapseStates:s,scrollToBlock:n,findRow:i,flashRow:r,nextTick:o}){let a=Fm(e,t);if(!a||typeof n!="function"||typeof i!="function")return!1;if(a.requiresExpansion){if(!a.collapseKey||!s)return!1;s[a.collapseKey]=!1,await o?.()}if(!await n(a.blockId))return!1;await o?.();let c=i(a.rowId);return c?(c.scrollIntoView?.({block:"center",inline:"nearest"}),r?.(a.rowId),!0):!1}var go=H(()=>{});var pi,mo=H(()=>{ot();Zr();ni();li();wd();lo();Sd();Id();xd();$d();Fd();fo();Bd();go();zt();pi={name:"MessageList",components:{MessageItem:ks,AssistantTurn:Ss,VpTurnBlock:bd,VpSpeakerHeader:oi,ReflectionCard:kd,SubAgentCard:Cd,UserTurnBlock:Ad,VirtualTranscript:Ld},template:`
|
|
1013
1013
|
<main class="chat-container" ref="containerRef">
|
|
1014
1014
|
<!-- Session Loading Overlay - only covers message area -->
|
|
1015
1015
|
<div class="session-loading-overlay" v-if="showSessionLoadingOverlay">
|
|
@@ -1829,7 +1829,6 @@ ${String(e||"").trim()}
|
|
|
1829
1829
|
<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="6" y="6" width="12" height="12" rx="2"/></svg>
|
|
1830
1830
|
</button>
|
|
1831
1831
|
<button
|
|
1832
|
-
v-else
|
|
1833
1832
|
type="button"
|
|
1834
1833
|
class="send-btn"
|
|
1835
1834
|
@click="send"
|
|
@@ -1841,8 +1840,8 @@ ${String(e||"").trim()}
|
|
|
1841
1840
|
</button>
|
|
1842
1841
|
</div>
|
|
1843
1842
|
</footer>
|
|
1844
|
-
`,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Pinia.useAuthStore(),i=Pinia.useVpStore(),r=Pinia.useSessionsStore?Pinia.useSessionsStore():null,o=Vue.ref(""),a=Vue.ref(null),c=`chat-input-${Vue.getCurrentInstance()?.uid??0}`,d=Vue.ref(null),u=Vue.ref([]),p=Vue.computed(()=>u.value.some(E=>E.uploading)),f=Vue.ref(null),h=Vue.ref(null),b=Vue.ref(null),m=Vue.computed(()=>!!e.sendFn),A=Vue.computed(()=>!s.btwMode),w=Vue.computed(()=>e.placeholderKey||"chatInput.placeholder"),S=Vue.computed(()=>e.showStop||!m.value&&s.isProcessing),v=Vue.computed({get:()=>s.expertSelections||[],set:E=>{s.expertSelections=E}}),g=Vue.ref(!1),y=Vue.ref(0),_=Vue.computed(()=>yl(s.customExpertRoles)),L=Vue.computed(()=>{let E=o.value,K=E.lastIndexOf("@");if(K===-1||!g.value)return[];let ae=E.slice(K+1).toLowerCase();return _.value.filter(oe=>ae?oe.searchText.includes(ae):!0).filter(oe=>!v.value.some(fe=>fe.role===oe.roleId)).slice(0,12)}),N=E=>{if(v.value.length>=Wt)return;let K={role:E.roleId,action:E.actionId};s.expertSelections=[...v.value,K];let ae=o.value,oe=ae.lastIndexOf("@");oe!==-1&&(o.value=ae.slice(0,oe).trimEnd()),g.value=!1,Vue.nextTick(()=>a.value?.focus())},$=E=>{let K=[...v.value];K.splice(E,1),s.expertSelections=K},R=E=>qt(E,s.customExpertRoles),D=E=>E==="completed"?"\u2713":E==="in_progress"?"\u2192":"\u25CB",M=Vue.ref(!1),C=Vue.ref(0),P=()=>s.currentView==="yeaft"&&!!s.currentAgent,B=Vue.computed(()=>{let E=o.value,K=E.lastIndexOf("@");return K<0||!M.value?"":E.slice(K+1)}),F=Vue.computed(()=>{if(!r)return i.vpList||[];let E=s.yeaftActiveSessionFilter||r.activeSessionId||null,K=typeof r.sessionById=="function"?r.sessionById(E,s.currentAgent||null):r.sessions?.[E];return su(i.vpList,K)}),W=Vue.computed(()=>yo(F.value,B.value)),se=Vue.computed(()=>!s.btwMode&&M.value&&!g.value&&W.value.length>0),ve=bo(c),ue=Vue.computed(()=>{if(!se.value)return null;let E=W.value[C.value];return E?wo(c,E.vpId):null}),Q=E=>{!E||!E.vpId||(o.value=nu(o.value,E.vpId),M.value=!1,C.value=0,Vue.nextTick(()=>a.value?.focus()))},Z=Vue.computed(()=>e.draftKey||e.conversationId||s.currentConversation||null);Z.value&&s.inputDrafts[Z.value]&&(o.value=s.inputDrafts[Z.value]),Vue.watch(o,E=>{let K=Z.value;K&&(E?s.inputDrafts[K]=E:delete s.inputDrafts[K])}),Vue.watch(W,E=>{if(E.length===0){C.value=0;return}C.value>=E.length&&(C.value=E.length-1)}),Vue.watch(Z,(E,K)=>{K&&o.value&&(s.inputDrafts[K]=o.value),o.value=E&&s.inputDrafts[E]||""});let re=E=>{if(!E||typeof E!="string")return;let K=o.value||"",ae=K.length>0&&!/\s$/.test(K),oe=K+(ae?" ":"")+"@"+E+" ";o.value=oe,Vue.nextTick(()=>{let fe=a.value;fe&&(fe.focus(),fe.setSelectionRange(oe.length,oe.length),ie())})},x=Vue.ref(!1),T=Vue.ref(0),U=Vue.computed(()=>{let E=e.conversationId||s.activeConversationId||s.currentConversation,K=s.currentAgent,ae=Gd(s,E,K),oe=s.currentView==="yeaft"?Kd:jd;return mi(oe,ae).map(we=>we.startsWith("/")?we:"/"+we)}),ee=Vue.computed(()=>{let E=o.value.trim();if(!E.startsWith("/"))return[];let K=E.toLowerCase();return U.value.filter(ae=>ae.toLowerCase().startsWith(K)&&ae.toLowerCase()!==K).map(ae=>({cmd:ae,desc:Yd(ae,s.slashCommandDescriptions)}))}),ge=Vue.computed(()=>Qd(ee.value,s.slashCommandDescriptions,U.value)),ke=Vue.computed(()=>ee.value.map(E=>E.cmd)),Ae=Vue.computed(()=>e.conversationId||s.activeConversationId||s.currentConversation||null),ne=Vue.computed(()=>s.compactStatus?.status==="compacting"&&s.compactStatus?.conversationId===Ae.value),X=E=>typeof E?.fileId=="string"&&E.fileId.trim().length>0,O=Vue.computed(()=>{if(ne.value
|
|
1845
|
-
`||ae===0?P()?(M.value=!0,C.value=0,g.value=!1):(g.value=!0,y.value=0,M.value=!1):(g.value=!1,M.value=!1)}else ae===-1&&(g.value=!1,M.value=!1)},te=E=>{o.value=E+" ",x.value=!1,Vue.nextTick(()=>{a.value?.focus()})},ye=()=>{setTimeout(()=>{x.value=!1,g.value=!1,M.value=!1},150)},me=async E=>{let K=Array.from(E.target.files||[]);K.length>0&&await ts(K),E.target.value="",Vue.nextTick(()=>{a.value?.focus()})},He=async E=>{let K=E.clipboardData?.items;if(!K)return;let ae=[];for(let oe of K)if(oe.kind==="file"){let fe=oe.getAsFile();fe&&ae.push(fe)}ae.length>0&&(E.preventDefault(),await ts(ae))},We=E=>{let K=String(E||"").toLowerCase();return K==="image/png"?".png":K==="image/jpeg"?".jpg":K==="image/gif"?".gif":K==="image/webp"?".webp":K==="image/svg+xml"?".svg":K==="text/plain"?".txt":K==="application/json"?".json":""},Be=(E,K)=>{let ae=typeof E?.name=="string"?E.name.trim():"";return ae||`${String(E?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${K+1}${We(E?.type)}`},nt=1,ft=E=>{let K=Number(E);return!Number.isFinite(K)||K<=0?"":K<1024?`${K} B`:K<1024*1024?`${Math.round(K/1024)} KB`:`${(K/(1024*1024)).toFixed(K<10*1024*1024?1:0)} MB`},Qe=async E=>{for(let K of E)K.uploading=!0,K.uploadError=!1;try{let K=new FormData;for(let Ne of E)K.append("files",Ne.file,Ne.uploadName);let ae={},oe=n.getActiveToken?.()||n.token||null;oe&&(ae.Authorization=`Bearer ${oe}`);let fe=await fetch("/api/upload",{method:"POST",headers:ae,body:K});if(!fe.ok)throw new Error("Upload failed");let we=await fe.json(),Re=Array.isArray(we.files)?we.files:[];for(let[Ne,mt]of E.entries()){let Ct=Re[Ne],ns=typeof Ct?.fileId=="string"?Ct.fileId.trim():"";if(!ns)throw new Error("Upload response is incomplete");mt.fileId=ns,mt.uploading=!1,delete mt.uploadName}}catch{for(let ae of E)ae.fileId||(ae.uploading=!1,ae.uploadError=!0)}finally{Vue.nextTick(()=>a.value?.focus())}},ts=async E=>{let K=[];for(let[ae,oe]of E.entries()){let fe=Be(oe,ae),we=Vue.reactive({localId:`attachment-${nt++}`,file:oe,name:fe,size:oe.size,uploadName:fe,preview:null,uploading:!1,uploadError:!1,fileId:null});oe.type.startsWith("image/")&&(we.preview=URL.createObjectURL(oe)),u.value.push(we),K.push(we)}await Qe(K)},ss=async E=>{!E||E.uploading||E.fileId||(E.uploadName=E.name,await Qe([E]))},Le=E=>{let K=u.value[E];K.preview&&URL.revokeObjectURL(K.preview),u.value.splice(E,1),Vue.nextTick(()=>{a.value?.focus()})},qe=()=>{if(
|
|
1843
|
+
`,setup(e,{emit:t}){let s=Pinia.useChatStore(),n=Pinia.useAuthStore(),i=Pinia.useVpStore(),r=Pinia.useSessionsStore?Pinia.useSessionsStore():null,o=Vue.ref(""),a=Vue.ref(null),c=`chat-input-${Vue.getCurrentInstance()?.uid??0}`,d=Vue.ref(null),u=Vue.ref([]),p=Vue.computed(()=>u.value.some(E=>E.uploading)),f=Vue.ref(null),h=Vue.ref(null),b=Vue.ref(null),m=Vue.computed(()=>!!e.sendFn),A=Vue.computed(()=>!s.btwMode),w=Vue.computed(()=>e.placeholderKey||"chatInput.placeholder"),S=Vue.computed(()=>e.showStop||!m.value&&s.isProcessing),v=Vue.computed({get:()=>s.expertSelections||[],set:E=>{s.expertSelections=E}}),g=Vue.ref(!1),y=Vue.ref(0),_=Vue.computed(()=>yl(s.customExpertRoles)),L=Vue.computed(()=>{let E=o.value,K=E.lastIndexOf("@");if(K===-1||!g.value)return[];let ae=E.slice(K+1).toLowerCase();return _.value.filter(oe=>ae?oe.searchText.includes(ae):!0).filter(oe=>!v.value.some(fe=>fe.role===oe.roleId)).slice(0,12)}),N=E=>{if(v.value.length>=Wt)return;let K={role:E.roleId,action:E.actionId};s.expertSelections=[...v.value,K];let ae=o.value,oe=ae.lastIndexOf("@");oe!==-1&&(o.value=ae.slice(0,oe).trimEnd()),g.value=!1,Vue.nextTick(()=>a.value?.focus())},$=E=>{let K=[...v.value];K.splice(E,1),s.expertSelections=K},R=E=>qt(E,s.customExpertRoles),D=E=>E==="completed"?"\u2713":E==="in_progress"?"\u2192":"\u25CB",M=Vue.ref(!1),C=Vue.ref(0),P=()=>s.currentView==="yeaft"&&!!s.currentAgent,B=Vue.computed(()=>{let E=o.value,K=E.lastIndexOf("@");return K<0||!M.value?"":E.slice(K+1)}),F=Vue.computed(()=>{if(!r)return i.vpList||[];let E=s.yeaftActiveSessionFilter||r.activeSessionId||null,K=typeof r.sessionById=="function"?r.sessionById(E,s.currentAgent||null):r.sessions?.[E];return su(i.vpList,K)}),W=Vue.computed(()=>yo(F.value,B.value)),se=Vue.computed(()=>!s.btwMode&&M.value&&!g.value&&W.value.length>0),ve=bo(c),ue=Vue.computed(()=>{if(!se.value)return null;let E=W.value[C.value];return E?wo(c,E.vpId):null}),Q=E=>{!E||!E.vpId||(o.value=nu(o.value,E.vpId),M.value=!1,C.value=0,Vue.nextTick(()=>a.value?.focus()))},Z=Vue.computed(()=>e.draftKey||e.conversationId||s.currentConversation||null);Z.value&&s.inputDrafts[Z.value]&&(o.value=s.inputDrafts[Z.value]),Vue.watch(o,E=>{let K=Z.value;K&&(E?s.inputDrafts[K]=E:delete s.inputDrafts[K])}),Vue.watch(W,E=>{if(E.length===0){C.value=0;return}C.value>=E.length&&(C.value=E.length-1)}),Vue.watch(Z,(E,K)=>{K&&o.value&&(s.inputDrafts[K]=o.value),o.value=E&&s.inputDrafts[E]||""});let re=E=>{if(!E||typeof E!="string")return;let K=o.value||"",ae=K.length>0&&!/\s$/.test(K),oe=K+(ae?" ":"")+"@"+E+" ";o.value=oe,Vue.nextTick(()=>{let fe=a.value;fe&&(fe.focus(),fe.setSelectionRange(oe.length,oe.length),ie())})},x=Vue.ref(!1),T=Vue.ref(0),U=Vue.computed(()=>{let E=e.conversationId||s.activeConversationId||s.currentConversation,K=s.currentAgent,ae=Gd(s,E,K),oe=s.currentView==="yeaft"?Kd:jd;return mi(oe,ae).map(we=>we.startsWith("/")?we:"/"+we)}),ee=Vue.computed(()=>{let E=o.value.trim();if(!E.startsWith("/"))return[];let K=E.toLowerCase();return U.value.filter(ae=>ae.toLowerCase().startsWith(K)&&ae.toLowerCase()!==K).map(ae=>({cmd:ae,desc:Yd(ae,s.slashCommandDescriptions)}))}),ge=Vue.computed(()=>Qd(ee.value,s.slashCommandDescriptions,U.value)),ke=Vue.computed(()=>ee.value.map(E=>E.cmd)),Ae=Vue.computed(()=>e.conversationId||s.activeConversationId||s.currentConversation||null),ne=Vue.computed(()=>s.compactStatus?.status==="compacting"&&s.compactStatus?.conversationId===Ae.value),X=E=>typeof E?.fileId=="string"&&E.fileId.trim().length>0,O=Vue.computed(()=>{if(ne.value)return!1;let E=!!o.value.trim(),K=u.value.length>0;if(m.value){let Re=!p.value&&u.value.every(X);return(E||K)&&Re}let ae=v.value.length>0,oe=v.value.some(Re=>Re.action),fe=E||K||ae&&(E||oe),we=!p.value&&u.value.every(X);return fe&&s.currentAgent&&s.currentConversation&&we}),J=120,ie=()=>{let E=a.value;if(!E)return;E.style.height="auto";let K=Math.min(E.scrollHeight,J);E.style.height=K+"px",E.style.overflowY=E.scrollHeight>J?"auto":"hidden"},he=()=>{let E=a.value;E&&(E.style.height="auto",E.style.overflowY="hidden")},z=()=>{ie();let E=o.value.trim();E.startsWith("/")&&!E.includes(" ")?(x.value=!0,T.value=0,g.value=!1):x.value=!1;let K=o.value,ae=K.lastIndexOf("@");if(ae!==-1&&!x.value){let oe=ae>0?K[ae-1]:" ";oe===" "||oe===`
|
|
1844
|
+
`||ae===0?P()?(M.value=!0,C.value=0,g.value=!1):(g.value=!0,y.value=0,M.value=!1):(g.value=!1,M.value=!1)}else ae===-1&&(g.value=!1,M.value=!1)},te=E=>{o.value=E+" ",x.value=!1,Vue.nextTick(()=>{a.value?.focus()})},ye=()=>{setTimeout(()=>{x.value=!1,g.value=!1,M.value=!1},150)},me=async E=>{let K=Array.from(E.target.files||[]);K.length>0&&await ts(K),E.target.value="",Vue.nextTick(()=>{a.value?.focus()})},He=async E=>{let K=E.clipboardData?.items;if(!K)return;let ae=[];for(let oe of K)if(oe.kind==="file"){let fe=oe.getAsFile();fe&&ae.push(fe)}ae.length>0&&(E.preventDefault(),await ts(ae))},We=E=>{let K=String(E||"").toLowerCase();return K==="image/png"?".png":K==="image/jpeg"?".jpg":K==="image/gif"?".gif":K==="image/webp"?".webp":K==="image/svg+xml"?".svg":K==="text/plain"?".txt":K==="application/json"?".json":""},Be=(E,K)=>{let ae=typeof E?.name=="string"?E.name.trim():"";return ae||`${String(E?.type||"").startsWith("image/")?"pasted-image":"pasted-file"}-${Date.now()}-${K+1}${We(E?.type)}`},nt=1,ft=E=>{let K=Number(E);return!Number.isFinite(K)||K<=0?"":K<1024?`${K} B`:K<1024*1024?`${Math.round(K/1024)} KB`:`${(K/(1024*1024)).toFixed(K<10*1024*1024?1:0)} MB`},Qe=async E=>{for(let K of E)K.uploading=!0,K.uploadError=!1;try{let K=new FormData;for(let Ne of E)K.append("files",Ne.file,Ne.uploadName);let ae={},oe=n.getActiveToken?.()||n.token||null;oe&&(ae.Authorization=`Bearer ${oe}`);let fe=await fetch("/api/upload",{method:"POST",headers:ae,body:K});if(!fe.ok)throw new Error("Upload failed");let we=await fe.json(),Re=Array.isArray(we.files)?we.files:[];for(let[Ne,mt]of E.entries()){let Ct=Re[Ne],ns=typeof Ct?.fileId=="string"?Ct.fileId.trim():"";if(!ns)throw new Error("Upload response is incomplete");mt.fileId=ns,mt.uploading=!1,delete mt.uploadName}}catch{for(let ae of E)ae.fileId||(ae.uploading=!1,ae.uploadError=!0)}finally{Vue.nextTick(()=>a.value?.focus())}},ts=async E=>{let K=[];for(let[ae,oe]of E.entries()){let fe=Be(oe,ae),we=Vue.reactive({localId:`attachment-${nt++}`,file:oe,name:fe,size:oe.size,uploadName:fe,preview:null,uploading:!1,uploadError:!1,fileId:null});oe.type.startsWith("image/")&&(we.preview=URL.createObjectURL(oe)),u.value.push(we),K.push(we)}await Qe(K)},ss=async E=>{!E||E.uploading||E.fileId||(E.uploadName=E.name,await Qe([E]))},Le=E=>{let K=u.value[E];K.preview&&URL.revokeObjectURL(K.preview),u.value.splice(E,1),Vue.nextTick(()=>{a.value?.focus()})},qe=()=>{if(!O.value)return;x.value=!1,g.value=!1,M.value=!1;let E=o.value.trim();if(e.sendFn){let oe=u.value.filter(X).map(we=>({fileId:we.fileId,name:we.name,preview:we.preview,isImage:we.file?.type?.startsWith("image/")||!1,mimeType:we.file?.type||""})),fe=oe.length>0?oe:void 0;e.quote?e.sendFn(E,fe,e.quote):e.sendFn(E,fe),u.value=[],e.quote&&t("quote-consumed"),o.value="",Z.value&&delete s.inputDrafts[Z.value],he();return}if(E==="/btw"||E.startsWith("/btw ")){let oe=E.substring(4).trim();s.enterBtwMode(),oe&&s.sendBtwQuestion(oe),o.value="",Z.value&&delete s.inputDrafts[Z.value],he();return}if(s.btwMode){s.sendBtwQuestion(E),o.value="",Z.value&&delete s.inputDrafts[Z.value],he();return}let K=u.value.filter(X).map(oe=>({fileId:oe.fileId,name:oe.name,preview:oe.preview,isImage:oe.file?.type?.startsWith("image/")||!1,mimeType:oe.file?.type||""}));if(s.currentView==="yeaft"&&(E||K.length>0)){let oe=hi(E).mentions,fe=s.yeaftActiveSessionFilter||r?.activeSessionId||"grp_default";s.sendYeaftSessionMessage({groupId:fe,text:E,mentions:oe,attachments:K}),u.value=[],o.value="",Z.value&&delete s.inputDrafts[Z.value],he();return}let ae=[...v.value];s.sendMessage(o.value.trim(),K,{expertSelections:ae}),u.value=[],o.value="",s.expertSelections=[],Z.value&&delete s.inputDrafts[Z.value],he()},lt=E=>{if(!(E.isComposing||E.keyCode===229)){if(E.key==="Escape"&&s.btwMode){E.preventDefault(),s.closeBtw();return}if(M.value){let K=W.value;if(K.length>0){if(E.key==="ArrowDown"){E.preventDefault(),C.value=(C.value+1)%K.length;return}if(E.key==="ArrowUp"){E.preventDefault(),C.value=(C.value-1+K.length)%K.length;return}if(E.key==="Tab"||E.key==="Enter"&&!E.shiftKey){E.preventDefault(),Q(K[C.value]);return}}if(E.key==="Escape"){E.preventDefault(),M.value=!1;return}}if(g.value&&L.value.length>0){if(E.key==="ArrowDown"){E.preventDefault(),y.value=(y.value+1)%L.value.length;return}if(E.key==="ArrowUp"){E.preventDefault(),y.value=(y.value-1+L.value.length)%L.value.length;return}if(E.key==="Tab"||E.key==="Enter"&&!E.shiftKey){E.preventDefault(),N(L.value[y.value]);return}if(E.key==="Escape"){E.preventDefault(),g.value=!1;return}}if(x.value&&ke.value.length>0){if(E.key==="ArrowDown"){E.preventDefault(),T.value=(T.value+1)%ke.value.length;return}if(E.key==="ArrowUp"){E.preventDefault(),T.value=(T.value-1+ke.value.length)%ke.value.length;return}if(E.key==="Tab"||E.key==="Enter"&&!E.shiftKey){E.preventDefault(),te(ke.value[T.value]);return}if(E.key==="Escape"){E.preventDefault(),x.value=!1;return}}E.key==="Enter"&&!E.shiftKey&&(E.preventDefault(),qe())}},Ve=()=>{e.cancelFn?e.cancelFn():s.cancelExecution()},ze=E=>{o.value=typeof E=="string"?E:"",Vue.nextTick(()=>{ie(),a.value?.focus();let K=o.value.length;a.value?.setSelectionRange(K,K)})},gt=()=>Vue.nextTick(()=>a.value?.focus());return{store:s,inputText:o,inputRef:a,inputAreaRef:f,fileInput:d,attachments:u,uploading:p,canSend:O,isCompacting:ne,isStopVisible:S,effectivePlaceholderKey:w,attachmentsAllowed:A,showAutocomplete:x,selectedIndex:T,filteredCommands:ke,flatItems:ee,groupedCommands:ge,autocompleteRef:h,sendFn:Vue.toRef(e,"sendFn"),expertSelections:v,showExpertAutocomplete:g,expertSelectedIndex:y,expertAutocompleteFiltered:L,expertAutocompleteRef:b,selectExpertItem:N,removeExpertSelection:$,getExpertLabel:R,todoStatusSymbol:D,autoResize:ie,handleInput:z,selectCommand:te,onBlur:ye,handleFileSelect:me,handlePaste:He,formatFileSize:ft,retryAttachment:ss,removeAttachment:Le,send:qe,handleKeydown:lt,cancelExecution:Ve,vpStore:i,inputElementId:c,showVpAutocomplete:M,vpMentionPopupOpen:se,vpMentionPopupId:ve,vpMentionActiveOptionId:ue,vpSelectedIndex:C,vpMentionQuery:B,mentionVpCandidates:F,selectVpMention:Q,appendMention:re,replaceDraft:ze,focusInput:gt}}}});function ko(e){return new Promise((t,s)=>{if(document.querySelector(`script[src="${e}"]`))return t();let n=document.createElement("script");n.src=e,n.onload=t,n.onerror=s,document.head.appendChild(n)})}function ou(e){return e+":"+Math.random().toString(36).slice(2,8)}function un(e){return e?e.type==="pane"?[e.terminalId]:[...un(e.first),...un(e.second)]:[]}function wi(e){return e?e.type==="pane"?e.terminalId:wi(e.first):null}function bi(e,t,s){return e&&(e.type==="pane"?e.terminalId===t?s:e:{...e,first:bi(e.first,t,s),second:bi(e.second,t,s)})}function Rt(e,t){if(!e)return null;if(e.type==="pane")return e.terminalId===t?null:e;if(e.first?.type==="pane"&&e.first.terminalId===t)return e.second;if(e.second?.type==="pane"&&e.second.terminalId===t)return e.first;let s=Rt(e.first,t),n=Rt(e.second,t);return s?n?{...e,first:s,second:n}:s:n}var au=H(()=>{});var lu,cu=H(()=>{lu={name:"PaneTree",props:{node:Object,terminals:Object,activePane:String,onActivate:Function,onClosePane:Function,setMountRef:Function},template:`
|
|
1846
1845
|
<div v-if="node.type === 'pane'"
|
|
1847
1846
|
class="terminal-pane"
|
|
1848
1847
|
:class="{ active: node.terminalId === activePane }"
|
|
Binary file
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
|
6
6
|
<title>Yeaft</title>
|
|
7
7
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' rx='8' fill='%232c2c2c'/><path d='M16 22V13M16 13L10 8M16 13L22 8' stroke='white' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round' fill='none'/><circle cx='10' cy='8' r='2.4' fill='white'/><circle cx='22' cy='8' r='2.4' fill='white'/><circle cx='16' cy='22' r='2.4' fill='white'/></svg>">
|
|
8
|
-
<link rel="stylesheet" href="style.bundle.css?v=
|
|
8
|
+
<link rel="stylesheet" href="style.bundle.css?v=0ecf0c5a">
|
|
9
9
|
<script src="vendor.bundle.js?v=103fd8e7"></script>
|
|
10
10
|
<script defer src="jszip.min.js"></script>
|
|
11
11
|
<script defer src="docx-preview.min.js"></script>
|
|
@@ -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=
|
|
19
|
+
<script type="module" src="app.bundle.js?v=f5c8885c"></script>
|
|
20
20
|
</body>
|
|
21
21
|
</html>
|