@blueking/ai-blueking 2.2.2-beta.8 → 2.2.2-beta.9
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/dist/manager/business/chat-business-manager.d.ts +3 -0
- package/dist/manager/business/chat-business-manager.d.ts.map +1 -1
- package/dist/standalone/index.es.min.js +7 -4
- package/dist/standalone/index.iife.min.js +2 -2
- package/dist/standalone/index.umd.min.js +2 -2
- package/dist/vue2/index.es.min.js +7 -4
- package/dist/vue2/index.iife.min.js +3 -3
- package/dist/vue2/index.umd.min.js +3 -3
- package/dist/vue3/index.es.min.js +7 -4
- package/dist/vue3/index.iife.min.js +2 -2
- package/dist/vue3/index.umd.min.js +2 -2
- package/package.json +3 -3
|
@@ -3494,6 +3494,6 @@ Use Shift + Enter to enter a new line`:`输入 "/" 唤出 Skill
|
|
|
3494
3494
|
`)||``},null,8,[`content`])):(B(!0),V(Lr,{key:1},fr(Array.isArray(e.content)?e.content:[e.content],e=>(B(),Gr(a9,{key:e,content:e},null,8,[`content`]))),128))],512),[[wi,!n.value]])]))}}),HJt={class:`ai-key-value-content`},UJt={key:0,class:`ai-key-value-title`},WJt={class:`ai-key-value-content`},GJt={class:`item-key`},KJt={class:`item-value`},qJt=$n({__name:`key-value-content`,props:{content:{},title:{}},setup(e){return(t,n)=>(B(),V(`div`,HJt,[e.title?(B(),V(`div`,UJt,[Yr(z(sae)),Qr(` `+ke(e.title),1)])):$r(`v-if`,!0),H(`div`,WJt,[(B(!0),V(Lr,null,fr(e.content,e=>(B(),V(`div`,{key:e.key,class:`key-value-item`},[H(`div`,GJt,ke(e.key),1),n[0]||=Qr(` : `,-1),H(`div`,KJt,ke(e.value),1)]))),128))])]))}}),JJt={class:`ai-text-content`},YJt=$n({__name:`text-content`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,JJt,ke(e.content),1))}}),XJt={class:`ai-user-message`},ZJt={key:0,class:`ai-user-message-binary-files`},QJt={key:1,class:`ai-user-message-content`},$Jt={class:`user-edit-footer`},eYt=$n({__name:`user-message`,props:{content:{},id:{},messageId:{},name:{},onAction:{type:Function},property:{},role:{},status:{},tippyOptions:{},uid:{},messageToolsStatus:{},onInputConfirm:{type:Function},onShortcutConfirm:{type:Function}},setup(e){let t=e,n=QTe(),{copy:r}=fp(),i=cn(!1),a=cn(``),o=er(`chatInputRef`),s=fi(()=>{let e=t.property?.extra?.cite;if(!(!e||typeof e==`string`))return e.title}),l=fi(()=>{let e=t.property?.extra?.cite;return!e||typeof e==`string`?e:e.data}),u=fi(()=>{if(!t.property?.extra)return null;let{extra:e}=t.property,{shortcut:n,cite:r,context:i}=e||{};if(n)return n;if(r&&typeof r==`object`&&r.data?.length){let e=[];for(let t of r.data){let n=i?.find(e=>e.__label===t.key);n?.__key&&e.push({formItemProps:{label:n.__label,required:!!n.fillBack},props:{default:n.__value},key:n.__key,type:`textarea`})}return{components:e,name:r.title}}return null}),d=e=>!!e.url||Are(e.mimeType||e.file?.type),f=fi(()=>Array.isArray(t.content)?t.content?.filter(e=>e.type===Ui.Binary):[]),p=fi(()=>f.value.filter(e=>d(e))),m=fi(()=>f.value.filter(e=>!d(e))),h=fi(()=>t.content?typeof t.content==`string`?[t.content]:t.content.filter(e=>e.type===Ui.Text&&!!e.text?.trim()).map(e=>e.text):[]),g=async e=>{e.id===`edit`?(h.value.length&&(a.value=h.value[0]??``,i.value=!0),f.value.length&&(i.value=!0)):e.id===`copy`&&r(typeof t.content==`string`?t.content:JSON.stringify(t.content||``)),await t.onAction?.(e)},_=async()=>{await o.value?.triggerSendMessage?.(),i.value=!1},v=()=>{i.value=!1},y=()=>{i.value=!1},b=async e=>{t.onShortcutConfirm?.(e),i.value=!1},x=async(e,n)=>{t.onInputConfirm?.(e,n),i.value=!1};return(t,r)=>(B(),V(`div`,XJt,[l.value&&typeof l.value==`string`?(B(),Gr(bUt,{key:0,class:`ai-user-message-cite`,content:l.value},null,8,[`content`])):$r(`v-if`,!0),$r(` 非编辑状态 `),i.value?(B(),V(Lr,{key:2},[$r(` 编辑状态 `),u.value?(B(),Gr(FTe,ri({key:0},u.value,{class:`user-shortcut-render`,onClose:y,onSubmit:b}),null,16)):(B(),Gr(KWt,{key:1,ref_key:`chatInputRef`,ref:o,modelValue:a.value,"onUpdate:modelValue":r[0]||=e=>a.value=e,class:`user-edit-input`,"default-upload-files":f.value,"on-send-message":x,"support-upload":z(n)?.supportUpload.value??!1},{"send-icon":Mn(()=>[H(`div`,$Jt,[Yr(z(wu),{size:`small`,onClick:v},{default:Mn(()=>[Qr(ke(z(Bi)(`取消`)),1)]),_:1}),Yr(z(wu),{size:`small`,theme:`primary`,onClick:_},{default:Mn(()=>[Qr(ke(z(Bi)(`发送`)),1)]),_:1})])]),_:1},8,[`modelValue`,`default-upload-files`,`support-upload`]))],64)):(B(),V(Lr,{key:1},[f.value.length?(B(),V(Lr,{key:0},[p.value.length?(B(),V(`div`,ZJt,[Yr(ZUt,{files:p.value,readonly:!0},null,8,[`files`])])):$r(`v-if`,!0),(B(!0),V(Lr,null,fr(m.value,(e,t)=>(B(),V(`div`,{key:e.url??t,class:`ai-user-message-binary-files`},[Yr(ZUt,{files:[e],readonly:!0},null,8,[`files`])]))),128))],64)):$r(`v-if`,!0),l.value||h.value.length?(B(),V(`div`,QJt,[Array.isArray(l.value)?(B(),V(Lr,{key:0},[$r(` property.extra.cite 是数组时,显示结构化内容 `),Yr(qJt,{content:l.value,title:s.value},null,8,[`content`,`title`])],64)):e.content?(B(),V(Lr,{key:1},[$r(` agui user message content 显示`),(B(!0),V(Lr,null,fr(h.value,(e,t)=>(B(),Gr(YJt,{key:t,content:e},null,8,[`content`]))),128))],2112)):$r(`v-if`,!0)])):$r(`v-if`,!0),e.messageToolsStatus===z(D9).Hidden?$r(`v-if`,!0):(B(),Gr(NKt,{key:2,class:`ai-user-message-tools`,"message-tools":z(cie),"message-tools-status":e.messageToolsStatus,"on-action":g,"tippy-options":e.tippyOptions,"update-tools":[]},null,8,[`message-tools`,`message-tools-status`,`tippy-options`]))],64))]))}}),tYt=$n({__name:`message-render`,props:{messageToolsStatus:{},onInputConfirm:{type:Function},onShortcutConfirm:{type:Function},onAction:{type:Function},tippyOptions:{},message:{},onInterruptResume:{type:Function}},setup(e){let t=e,n=_r(),r=fi(()=>{switch(t.message.role){case Wi.User:return U(eYt,{...t.message,onAction:t.onAction,onInputConfirm:t.onInputConfirm,onShortcutConfirm:t.onShortcutConfirm,messageToolsStatus:t.messageToolsStatus,tippyOptions:t.tippyOptions});case Wi.Assistant:return U(mJt,t.message,{default:e=>mr(n,`default`,e,()=>[U(s9,{content:t.message.content||``,status:t.message.status},n.codeHeader?{codeHeader:e=>n.codeHeader?.(e)}:void 0)])});case Wi.Info:return U(_Jt,t.message);case Wi.Reasoning:return U(VJt,t.message);case Wi.Tool:return U(rJt,t.message);case Wi.Activity:return U(Yqt,{...t.message,onInterruptResume:t.onInterruptResume});case Wi.Interrupt:return U(PJt,{...t.message,onInterruptResume:t.onInterruptResume},n.answeredQuestion?{answeredQuestion:e=>n.answeredQuestion?.(e)}:void 0);case Wi.Loading:return U(IJt,t.message);default:return null}});return(e,t)=>(B(),Gr(ur(r.value)))}}),nYt=[`id`,`data-message-group-id`,`onMouseenter`,`onMouseleave`],rYt=[`data-message-id`],iYt={class:`ai-message-fixed-bottom`},aYt=$n({__name:`message-container`,props:yr({enableSelection:{type:Boolean,default:!1},messageGroups:{},messages:{},messageStatus:{},messageTools:{},messageToolsStatus:{},messageToolsTippyOptions:{},onAgentAction:{},onAgentFeedback:{},onInterruptResume:{},onUserAction:{},renderMode:{},updateTools:{},onUserInputConfirm:{},onUserShortcutConfirm:{}},{selectedUserMessages:{required:!1},selectedUserMessagesModifiers:{}}),emits:yr([`stopStreaming`],[`update:selectedUserMessages`]),setup(e){let t=e,n=Dr(e,`selectedUserMessages`),r=e=>{let t=e.id||e.uid;return t===void 0?void 0:String(t)},i=er(`messageContainerRef`),a=er(`messageContainerBottomRef`),{jumpToBottom:o,toScrollBottom:s,debouncedShowScrollBottomBtn:l}=UTe(i,a);sr(()=>{t.messageGroups?.length&&(o(),requestAnimationFrame(()=>o()))});let{copy:u}=fp(),d=(e,t)=>{if(!t?.length)return e;let n=e.map(e=>{let n=t.find(t=>t.id===e.id);return n?{...e,...n}:e}),r=t.filter(t=>!e.some(e=>e.id===t.id));return[...n,...r].filter(e=>!e.hidden)},f=fi(()=>d(sie,t.messageTools).filter(e=>t.renderMode!==Ji.Test||e.id!==`share`)),p=fi(()=>d(lie,t.updateTools)),m=fi(()=>t.renderMode===Ji.Share?t.messageGroups.filter(e=>e.type!==Wi.Loading):t.messageGroups),h=e=>{e.messages?.at(-1)?.role!==Wi.Interrupt&&(e.isHover=!0)},g=(e,t)=>{let n=t.toElement??t.relatedTarget;n instanceof Element&&n.classList.contains(`ai-user-feedback`)||(e.isHover=!1)},_=(e,r)=>{let i=e.type===Wi.User;t.messageGroups?.forEach((n,a)=>{if(n===e){n.checked=r;let e=i?t.messageGroups.at(a+1):t.messageGroups.at(a-1);e&&(e.checked=r)}}),n.value=t.messageGroups?.filter(e=>e.checked).map(e=>e.messages).flat()},v=async(e,n)=>(e.id===`copy`&&u(n.filter(e=>e.role!==Wi.Reasoning).map(e=>typeof e.content==`string`?e.content:JSON.stringify(e.content||``)).join(`
|
|
3495
3495
|
`)),t.onAgentAction?.(e,n)),y=async(e,n)=>{t.onUserAction?.(e,n)},b=async(e,n,r)=>{t.onUserInputConfirm?.(e,n,r)},x=async(e,n)=>{t.onUserShortcutConfirm?.(e,n)};return(n,o)=>(B(),V(`div`,{ref_key:`messageContainerRef`,ref:i,class:`ai-message-container`},[(B(!0),V(Lr,null,fr(m.value,(i,a)=>(B(),V(`div`,{id:i.uid,key:a,class:`message-group`,"data-message-group-id":i.uid,style:ge({backgroundColor:i.checked?`#f5f7fa`:`transparent`}),onMouseenter:e=>h(i),onMouseleave:e=>g(i,e)},[mr(n.$slots,`group`,ri({ref_for:!0},{group:i}),()=>[e.enableSelection&&i.type!==z(Wi).Loading?(B(),Gr(z(Hu),{key:0,class:`message-group-checkbox`,"model-value":i.checked,"onUpdate:modelValue":e=>_(i,e)},null,8,[`model-value`,`onUpdate:modelValue`])):$r(`v-if`,!0),H(`div`,{class:xe([`message-group-messages`,{"message-group-enabled-selection":e.renderMode===z(Ji).Share||e.enableSelection&&i.type!==z(Wi).Loading}]),style:ge({width:e.enableSelection&&i.type!==z(Wi).Loading?`calc(100% - 16px)`:`100%`})},[(B(!0),V(Lr,null,fr(i.messages,(i,a)=>(B(),V(`div`,{key:a,class:`ai-message-item`,"data-message-id":r(i)},[mr(n.$slots,`default`,ri({ref_for:!0},{message:i,messageToolsStatus:e.messageToolsStatus,onInterruptResume:t.onInterruptResume}),()=>[(B(),Gr(tYt,{key:a,message:i,"message-tools-status":e.messageToolsStatus,"on-action":e=>y(e,i),"on-input-confirm":(e,t)=>b(i,e,t),"on-interrupt-resume":t.onInterruptResume,"on-shortcut-confirm":e=>x(i,e),"tippy-options":e.messageToolsTippyOptions},pr({_:2},[n.$slots.answeredQuestion?{name:`answeredQuestion`,fn:Mn(e=>[mr(n.$slots,`answeredQuestion`,ri({ref_for:!0},e))]),key:`0`}:void 0]),1032,[`message`,`message-tools-status`,`on-action`,`on-input-confirm`,`on-interrupt-resume`,`on-shortcut-confirm`,`tippy-options`]))])],8,rYt))),128)),e.renderMode!==z(Ji).Share&&!(e.enableSelection&&i.type!==z(Wi).Loading)&&!i.pause&&i.type===z(Wi).Assistant&&e.messageToolsStatus!==z(D9).Hidden?(B(),Gr(NKt,{key:0,"message-tools":f.value,"message-tools-status":e.messageToolsStatus,"on-action":e=>v(e,i.messages),style:ge({visibility:i.isHover?`visible`:`hidden`}),"tippy-options":t.messageToolsTippyOptions,"update-tools":p.value,onFeedback:(e,n,r)=>t.onAgentFeedback?.(e,i.messages,n,r)},null,8,[`message-tools`,`message-tools-status`,`on-action`,`style`,`tippy-options`,`update-tools`,`onFeedback`])):$r(`v-if`,!0)],6)])],44,nYt))),128)),H(`div`,{ref_key:`messageContainerBottomRef`,ref:a,class:`message-container-bottom`,tabindex:`0`},null,512),H(`div`,iYt,[Nn(Yr(eCe,{loading:e.messageStatus===z(Gi).StopLoading,title:e.messageStatus===z(Gi).StopLoading?z(Bi)(`正在停止`):z(Bi)(`停止生成`),onClick:o[0]||=e=>n.$emit(`stopStreaming`)},{icon:Mn(()=>[Yr(z(Kie))]),_:1},8,[`loading`,`title`]),[[wi,e.renderMode!==z(Ji).Share&&(e.messageStatus===z(Gi).Streaming||e.messageStatus===z(Gi).StopLoading||e.messageStatus===z(Gi).Fetching||e.messageStatus===z(Gi).Pending)]]),Nn(Yr(eCe,{title:z(Bi)(`返回底部`),onClick:o[1]||=()=>z(s)(`smooth`)},{icon:Mn(()=>[Yr(z(lae))]),_:1},8,[`title`]),[[wi,z(l)]])])],512))}}),oYt={class:`ai-execution-summary`},sYt={class:`ai-execution-summary-header`},cYt={class:`ai-execution-summary-content`},lYt=[`onMouseenter`],uYt={class:`content-item-header`},dYt={class:`content-item-title`},fYt={class:`content-item-messages`},pYt={key:0,class:`timeline-line`},mYt={key:1,class:`ai-execution-summary-content-empty`},hYt={class:`ai-execution-summary-content-empty-text`},gYt=$n({__name:`execution-summary`,props:{messageGroups:{}},emits:[`locateMessageGroup`,`updateKeyword`],setup(e,{emit:t}){let n=t,r=hp(),{keyword:i}=uEe(),a=cn(void 0),o=e=>{if(!e)return``;let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}`},s=e=>{n(`locateMessageGroup`,e.uid,e)},l=()=>{i.value=``,n(`updateKeyword`,``)};return(t,u)=>(B(),V(`div`,oYt,[H(`div`,sYt,[Yr(z(Fu),{modelValue:z(i),"onUpdate:modelValue":[u[0]||=e=>on(i)?i.value=e:null,u[1]||=e=>n(`updateKeyword`,e)],class:`ai-execution-summary-header-input`,clearable:``,placeholder:z(Bi)(`搜索 关键字`)},null,8,[`modelValue`,`placeholder`])]),H(`div`,cYt,[e.messageGroups.length?(B(!0),V(Lr,{key:0},fr(e.messageGroups,(t,n)=>(B(),V(`div`,{key:t.uid,class:`ai-execution-summary-content-item`,onMouseenter:e=>a.value=t.uid,onMouseleave:u[2]||=e=>a.value=void 0},[H(`div`,uYt,[u[3]||=H(`span`,{class:`timeline-dot`},null,-1),Nn((B(),V(`span`,dYt,[Qr(ke(typeof t.userMessageTitle==`number`?o(t.userMessageTitle):t.userMessageTitle),1)])),[[z(Mp),{...z(r)}]]),Nn(Yr(z(wu),{class:`content-item-locate`,text:``,theme:`primary`,onClick:e=>s(t)},{default:Mn(()=>[Qr(ke(z(Bi)(`在对话中定位`)),1)]),_:1},8,[`onClick`]),[[wi,a.value===t.uid]])]),H(`div`,fYt,[(B(!0),V(Lr,null,fr(t.messages,(e,t)=>(B(),Gr(tYt,{key:t,message:e},null,8,[`message`]))),128))]),n<e.messageGroups.length-1?(B(),V(`div`,pYt)):$r(`v-if`,!0)],40,lYt))),128)):(B(),V(`div`,mYt,[Yr(z(Ed),{class:`empty-exception`,type:`empty`}),H(`div`,hYt,[Qr(ke(z(i)?z(Bi)(`搜索结果为空`):z(Bi)(`暂无数据`))+` `,1),z(i)?(B(),Gr(z(wu),{key:0,text:``,theme:`primary`,onClick:l},{default:Mn(()=>[Qr(ke(z(Bi)(`清空搜索`)),1)]),_:1})):$r(`v-if`,!0)])]))])]))}}),_Yt={class:`ai-selection-footer`},vYt={class:`ai-selection-footer-left`},yYt={class:`select-all-text`},bYt={class:`ai-selection-footer-right`},xYt=$n({__name:`selection-footer`,props:{isAllSelected:{type:Boolean},loading:{type:Boolean},selectedCount:{}},emits:[`cancel`,`confirm`,`toggle-all`],setup(e,{emit:t}){let n=t;return(t,r)=>(B(),V(`div`,_Yt,[H(`div`,vYt,[Yr(z(Hu),{"model-value":e.isAllSelected,"onUpdate:modelValue":r[0]||=e=>n(`toggle-all`,e)},null,8,[`model-value`]),H(`span`,yYt,ke(z(Bi)(`全选`)),1)]),H(`div`,bYt,[Yr(z(wu),{disabled:e.loading,onClick:r[1]||=e=>n(`cancel`)},{default:Mn(()=>[Qr(ke(z(Bi)(`取消`)),1)]),_:1},8,[`disabled`]),Yr(z(wu),{disabled:e.selectedCount===0,loading:e.loading,theme:`primary`,onClick:r[2]||=e=>n(`confirm`)},{default:Mn(()=>[Qr(ke(z(Bi)(`确定`)),1)]),_:1},8,[`disabled`,`loading`])])]))}}),SYt=[`data-ai-size`],CYt={key:0,class:`ai-chat-container-loading`},wYt={class:`screen-wrapper`},TYt={key:1,class:`ai-welcome-content`},EYt={class:`ai-welcome-title`},DYt={key:0,class:`ai-welcome-remark`},OYt=$n({__name:`chat-container`,props:yr({chatLoading:{type:Boolean},commonTippyOptions:{},executionTabVisible:{type:Boolean,default:!0},getSideRenderComponent:{},getSideTabRenderComponent:{},onArtifactClick:{},onCustomTabChange:{},openingRemark:{},placement:{default:`left`},resizeProps:{},size:{default:`small`},welcomeTitle:{},defaultUploadFiles:{},inputMaxHeight:{},messageStatus:{},models:{},modelValue:{},onSendMessage:{},onStopSending:{},onUpload:{},placeholder:{},prompts:{},resources:{},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{},supportUpload:{type:Boolean},tippyOptions:{},messages:{},messageTools:{},messageToolsStatus:{},onAgentAction:{},onAgentFeedback:{},onInterruptResume:{},onUserAction:{},renderMode:{},updateTools:{},onUserInputConfirm:{},onUserShortcutConfirm:{}},{renderMode:{required:!1,default:Ji.Chat},renderModeModifiers:{},selectedShortcut:{required:!1},selectedShortcutModifiers:{},cite:{required:!1,default:``},citeModifiers:{},selectedModel:{required:!1},selectedModelModifiers:{}}),emits:yr([`selectShortcut`,`deleteShortcut`,`update:modelValue`,`modelChange`,`stopStreaming`,`shortcutClose`,`shortcutSubmit`,`confirmShare`,`collapseChange`],[`update:renderMode`,`update:selectedShortcut`,`update:cite`,`update:selectedModel`]),setup(e,{expose:t,emit:n}){let r=XSe.TabPanel,i=e,a=Dr(e,`renderMode`),o=er(`fullScreenRef`),{isFullScreen:s,enter:l,exit:u}=YTe(o);dEe({renderMode:a});let d=fi(()=>({collapsible:!1,immediate:!0,min:400,...i.resizeProps,placement:i.placement})),f=fi(()=>i.getSideRenderComponent?.(U,y.value.data?.props??{})??y.value.data?.component);ZTe({size:fi(()=>i.size??`small`),supportUpload:fi(()=>i.supportUpload??!1)}),Rn(()=>i.size??`small`,e=>{typeof document<`u`&&(document.body.dataset.aiSize=e)},{immediate:!0});let p=Dr(e,`selectedShortcut`),m=Dr(e,`cite`),h=Dr(e,`selectedModel`),g=n;pEe({tippyOptions:fi(()=>i.commonTippyOptions??{})});let{displayTabs:_,tabs:v,selectedTab:y,isCollapse:b,addCustomTab:x,ensureCustomTab:S,removeCustomTab:C,selectCustomTab:w,resetCustomTab:T}=qTe({executionTabVisible:()=>i.executionTabVisible,onTabChange:async e=>{if(e.name===`file-artifact`)return;let t=y.value.data?.props||{loading:!0,data:{}};y.value.data={...y.value.data,props:t};let n=await i.onCustomTabChange?.(e);y.value.data={...y.value.data,props:{...t,loading:!1,data:n}}}}),E=()=>{S({closable:!1,label:Bi(`文件产物`),name:up,order:-1})},D=cn(``),O=sn([]),k=cn(),A=cn((()=>{let e=i.resizeProps?.initialDivide;return typeof e==`number`?e:400})()),j=fi(()=>`calc(100% - ${A.value}px)`),{messageGroups:M,executionGroups:N,sessionArtifacts:P,isShareMode:F,isAllSelected:I,onToggleShareAll:L,onCancelShare:R,onConfirmShare:ee,pendingApprovalTipText:te,activeUserQuestionInterrupt:ne}=oEe({keyword:D,messages:fi(()=>i.messages),renderMode:fi(()=>a.value),selectedUserMessages:O}),re=fi(()=>v.value.some(e=>e.name===up)),{activeArtifactId:ie,setActiveArtifactId:ae}=RTe({getOnArtifactClick:()=>i.onArtifactClick,onOpen:()=>{x({closable:!1,label:Bi(`文件产物`),name:up,order:-1})}});Rn(P,e=>{if(!e.length){C(up),ae(``);return}E(),e.some(e=>e.outputId===ie.value)||ae(e[0].outputId)},{immediate:!0}),Rn(b,e=>{e&&(D.value=``,A.value=0),g(`collapseChange`,e,A.value)}),Rn(()=>N.value,e=>{!e.length&&!D.value&&!re.value&&T()},{immediate:!0,deep:!1});let oe=fi(()=>i.messageStatus===Gi.StopLoading?Gi.StopLoading:M.value?.some(e=>e.messages.some(e=>e.id===`__loading__`))?Gi.Fetching:i.messageStatus),se=()=>{p.value=null,g(`shortcutClose`)},ce=e=>{g(`shortcutSubmit`,e)},le=()=>{g(`deleteShortcut`)},ue=e=>{g(`selectShortcut`,e)},de=(e,t)=>{g(`update:modelValue`,e,t)},fe=async(e,t)=>{let n=ne.value;return i.onSendMessage?.(e,t,n?{payload:RGt(n),interrupt:n}:void 0)},pe=()=>{b.value=!b.value},me=e=>{if(!e)return;let t=document.getElementById(e);if(!t){let t=M.value.find(t=>t.messages.some(t=>t.uid===e));t&&document.getElementById(t.uid)?.scrollIntoView({behavior:`smooth`});return}t.scrollIntoView({behavior:`smooth`})},he=e=>e===`execution`?Die:e===`file-artifact`?Fie:Oie,_e=e=>{w(v.value.find(t=>t.name===e))},ve=e=>{D.value=e},ye=async(e,t)=>{if(e.id===`share`||e.triggerSelection){k.value=e,F.value=!0;return}return i.onAgentAction?.(e,t)},be=()=>{g(`confirmShare`,ee(),k.value),Dn(()=>{F.value=!1,O.value=[],k.value=void 0})},Ce=()=>{R(),k.value=void 0},we=e=>{A.value=e};return lr(()=>{T(),typeof document<`u`&&delete document.body.dataset.aiSize}),t({selectedTab:y,addCustomTab:x,removeCustomTab:C,selectCustomTab:w,enterShareMode:()=>{F.value=!0},exitShareMode:()=>{Ce()}}),(t,n)=>(B(),V(`div`,{class:`ai-chat-container`,"data-ai-size":e.size,style:ge({"--resize-main-width":j.value,borderTopColor:z(b)?`transparent`:`#eaebf0`})},[e.chatLoading?(B(),V(`div`,CYt,[Yr(oGt)])):(B(),Gr(z(FSe),ri({key:1,class:[`ai-chat-container-resize-layout`,{"ai-is-collapse":z(b)||z(_).length>0&&!D.value?.length&&z(N)?.length<1&&!re.value}]},d.value,{onResizing:we}),{aside:Mn(()=>[!z(b)&&z(_).length>0&&(z(N)?.length||D.value?.length||re.value)?(B(),V(`div`,{key:0,ref_key:`fullScreenRef`,ref:o,class:`ai-full-screen-wrapper`},[Yr(z(XSe),{active:z(y).name,class:`ai-chat-container-tab`,"label-height":40,type:`unborder-card`,onChange:_e},{setting:Mn(()=>[H(`div`,wYt,[Yr(Np,{class:`screen-btn`,"tippy-options":{...e.commonTippyOptions,appendTo:z(s)?o.value:e.commonTippyOptions?.appendTo,content:z(s)?z(Bi)(`退出全屏`):z(Bi)(`全屏`)}},{default:Mn(()=>[z(s)?(B(),Gr(z(dae),{key:1,onClick:z(u)},null,8,[`onClick`])):(B(),Gr(z(uae),{key:0,onClick:z(l)},null,8,[`onClick`]))]),_:1},8,[`tippy-options`])])]),default:Mn(()=>[(B(!0),V(Lr,null,fr(z(_),t=>(B(),Gr(z(r),{key:t.name,class:`ai-chat-container-tab-panel`,label:()=>U(`div`,{class:`ai-execution-summary-label`,onVnodeMounted:e=>{z(y).name===t.name&&e.el?.scrollIntoView({behavior:`smooth`})}},e.getSideTabRenderComponent?.(U,t,{removeCustomTab:z(C)})??[U(he(t.name),{class:`ai-execution-summary-icon`}),Nn(U(`span`,{class:`ai-execution-summary-label-text`},t.label??``),[[z(Mp),{...e.commonTippyOptions,text:t.label??``}]]),t.closable!==!1&&t.name!==z(`execution`)?U(z(ta),{class:`ai-execution-close-icon`,onClick:()=>{z(C)(t.name)}}):null]),name:t.name},null,8,[`label`,`name`]))),128))]),_:1},8,[`active`]),z(y)?.name===z(`execution`)&&e.executionTabVisible!==!1?(B(),V(Lr,{key:0},[z(b)?$r(`v-if`,!0):(B(),Gr(gYt,{key:0,"message-groups":z(N),style:{height:`calc(100% - 40px)`},onLocateMessageGroup:me,onUpdateKeyword:ve},null,8,[`message-groups`]))],64)):z(y)?.name===z(`file-artifact`)?(B(),Gr(PGt,{key:1,"active-id":z(ie),artifacts:z(P),style:{height:`calc(100% - 40px)`},onSelect:z(ae)},null,8,[`active-id`,`artifacts`,`onSelect`])):$r(`v-if`,!0),z(y)&&z(y).name!==z(`file-artifact`)?(B(),V(`div`,{key:z(y).name,class:`ai-chat-container-message-slot`},[(B(),Gr(ur(f.value),ri({key:z(y).name},z(y)?.data?.props),{locateButton:Mn(()=>[Yr(z(wu),{class:`ai-locate-button`,size:`small`,text:``,theme:`primary`,onClick:n[0]||=e=>me(z(y)?.data?.messageUid)},{default:Mn(()=>[Qr(ke(z(Bi)(`在对话中定位`)),1)]),_:1})]),_:1},16))])):$r(`v-if`,!0)],512)):$r(`v-if`,!0),z(_).length>0&&(z(N)?.length||re.value)?(B(),V(`div`,{key:1,class:xe([`collapse-button`,{"is-right":e.placement===`right`,"is-collapsed":z(b)}]),onClick:pe},[Yr(z(ea))],2)):$r(`v-if`,!0)]),main:Mn(()=>[e.messages?.length?mr(t.$slots,`default`,Se(ri({key:0},{messages:e.messages,messageStatus:e.messageStatus,messageGroups:z(M),selectedUserMessages:O.value,messageToolsStatus:e.messageToolsStatus,isShareMode:z(F),commonTippyOptions:e.commonTippyOptions,handleAgentAction:ye,onAgentFeedback:e.onAgentFeedback,onInterruptResume:e.onInterruptResume,onUserAction:e.onUserAction,onUserInputConfirm:e.onUserInputConfirm,onUserShortcutConfirm:e.onUserShortcutConfirm})),()=>[e.messages?.length?(B(),Gr(aYt,{key:0,"selected-user-messages":O.value,"onUpdate:selectedUserMessages":n[1]||=e=>O.value=e,"enable-selection":z(F),"message-groups":z(M),"message-status":oe.value,"message-tools":e.messageTools,"message-tools-status":e.messageToolsStatus,"message-tools-tippy-options":e.commonTippyOptions,messages:e.messages,"on-agent-action":ye,"on-agent-feedback":e.onAgentFeedback,"on-interrupt-resume":e.onInterruptResume,"on-user-action":e.onUserAction,"on-user-input-confirm":e.onUserInputConfirm,"on-user-shortcut-confirm":e.onUserShortcutConfirm,"render-mode":a.value,"update-tools":e.updateTools,onStopStreaming:n[2]||=e=>g(`stopStreaming`)},{group:Mn(({group:e})=>[mr(t.$slots,`group`,Se(Xr({group:e})))]),default:Mn(({message:e,messageToolsStatus:n,onInterruptResume:r})=>[mr(t.$slots,`message`,Se(Xr({message:e,messageToolsStatus:n,onInterruptResume:r})))]),_:3},8,[`selected-user-messages`,`enable-selection`,`message-groups`,`message-status`,`message-tools`,`message-tools-status`,`message-tools-tippy-options`,`messages`,`on-agent-feedback`,`on-interrupt-resume`,`on-user-action`,`on-user-input-confirm`,`on-user-shortcut-confirm`,`render-mode`,`update-tools`])):$r(`v-if`,!0)]):(B(),V(`div`,TYt,[mr(t.$slots,`welcome`,Se(Xr({openingRemark:e.openingRemark,welcomeTitle:e.welcomeTitle})),()=>[Yr(z(_ie)),H(`h2`,EYt,ke(e.welcomeTitle??z(Bi)(`你好,我是小鲸`)),1),e.openingRemark?(B(),V(`div`,DYt,[Yr(s9,{content:e.openingRemark},null,8,[`content`])])):$r(`v-if`,!0)])])),a.value===z(Ji).Share?$r(`v-if`,!0):(B(),V(Lr,{key:2},[z(F)?(B(),Gr(xYt,{key:0,"is-all-selected":z(I),loading:!1,"selected-count":O.value.length,onCancel:Ce,onConfirm:be,onToggleAll:z(L)},null,8,[`is-all-selected`,`selected-count`,`onToggleAll`])):p.value?.components?.length?(B(),Gr(FTe,ri({key:1},p.value,{class:{"is-welcome-overlay":!e.messages?.length},onClose:se,onSubmit:ce}),null,16,[`class`])):(B(),Gr(KWt,{key:2,cite:m.value,"onUpdate:cite":n[3]||=e=>m.value=e,"selected-model":h.value,"onUpdate:selectedModel":n[4]||=e=>h.value=e,"message-status":oe.value,"model-value":e.modelValue,models:e.models,"on-send-message":fe,"on-stop-sending":e.onStopSending,"on-upload":e.onUpload,placeholder:e.placeholder,prompts:e.prompts,resources:e.resources,"send-disabled-tip":z(te),"shortcut-id":p.value?.id,shortcuts:e.shortcuts,skills:e.skills,"support-upload":e.supportUpload,"tippy-options":e.commonTippyOptions,onDeleteShortcut:le,onModelChange:n[5]||=e=>g(`modelChange`,e),onSelectShortcut:ue,"onUpdate:modelValue":de},{interrupt:Mn(()=>[z(ne)?(B(),Gr(z(_Kt),{key:0,interrupt:z(ne),"on-resume":e.onInterruptResume},{question:Mn(({question:e,qIndex:n,answer:r,setAnswer:i,confirm:a})=>[mr(t.$slots,`interruptQuestion`,Se(Xr({question:e,qIndex:n,answer:r,setAnswer:i,confirm:a})))]),_:3},8,[`interrupt`,`on-resume`])):$r(`v-if`,!0),z(te)?(B(),Gr(YWt,{key:1,content:z(te)},null,8,[`content`])):$r(`v-if`,!0)]),_:3},8,[`cite`,`selected-model`,`message-status`,`model-value`,`models`,`on-stop-sending`,`on-upload`,`placeholder`,`prompts`,`resources`,`send-disabled-tip`,`shortcut-id`,`shortcuts`,`skills`,`support-upload`,`tippy-options`]))],64))]),_:3},16,[`class`]))],12,SYt))}}),kYt=`data:image/png;base64,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`,N9=function(e){return e.ArtifactsGenerated=`artifacts_generated`,e.FlowAgent=`flow_agent`,e.KnowledgeRag=`knowledge_rag`,e.ReferenceDocument=`reference_document`,e.Info=`info`,e.Interrupt=`interrupt`,e}({}),P9=function(e){return e.Activity=`activity`,e.Assistant=`assistant`,e.Developer=`developer`,e.Guide=`guide`,e.Hidden=`hidden`,e.HiddenAssistant=`hidden-assistant`,e.HiddenGuide=`hidden-guide`,e.HiddenSystem=`hidden-system`,e.HiddenUser=`hidden-user`,e.Info=`info`,e.Pause=`pause`,e.Placeholder=`placeholder`,e.Reasoning=`reasoning`,e.System=`system`,e.TemplateAssistant=`template-assistant`,e.TemplateGuide=`template-guide`,e.TemplateHidden=`template-hidden`,e.TemplateSystem=`template-system`,e.TemplateUser=`template-user`,e.Tool=`tool`,e.User=`user`,e.Interrupt=`interrupt`,e}({}),F9=function(e){return e.Complete=`complete`,e.Error=`error`,e.Pending=`pending`,e.Stop=`stop`,e.Streaming=`streaming`,e}({}),AYt=function(e){return e.Binary=`binary`,e.Function=`function`,e.Text=`text`,e}({}),I9=function(e){return e.FlowNodeRetry=`flow_node_retry`,e.FlowNodeSkip=`flow_node_skip`,e.ApprovalCancel=`approval_cancel`,e}({}),jYt=()=>`temp_${Date.now()}_${Math.random().toString(36).slice(2,9)}`,MYt=e=>{let t=sn([]),n=sn(!1),r=sn(!1),i=r=>(n.value=!0,e.http?.message.getMessages(r).then(e=>{t.value=e}).finally(()=>{n.value=!1})),a=()=>f(t.value),o=e=>{t.value=t.value.map(t=>t.messageId===e.messageId?e:t)},s=e=>{t.value.push(e)},l=()=>t.value.findLast(e=>[F9.Pending,F9.Streaming].includes(e.status)),u=e=>t.value.find(t=>t.messageId===e),d=async n=>{let r=jYt(),i={...n,id:r,messageId:r};t.value.push(i);try{let i=await e.http?.message.plusMessage(n);if(i){let e=t.value.findIndex(e=>e.messageId===r);if(e!==-1){let r={...i,...`property`in n&&n.property?{property:n.property}:{}};t.value[e]=r}}}catch(e){let n=t.value.findIndex(e=>e.messageId===r);throw n!==-1&&(t.value[n]={...t.value[n],status:F9.Error}),e}},f=async n=>{let i=n.reduce((e,t)=>(t.role===P9.User&&e.push(t.id),e),[]);if(i.length<=0)return;let a=[...t.value];t.value=t.value.filter(e=>!n.includes(e)),r.value=!0;try{await e.http?.message.batchDeleteMessages(i)}catch(e){throw t.value=a,e}finally{r.value=!1}};return{list:t,isListLoading:n,isDeleteLoading:r,getMessages:i,clearMessages:a,getCurrentLoadingMessage:l,getMessageByMessageId:u,modifyMessage:o,plusMessage:s,createAndPlusMessage:d,deleteMessages:f,shareMessages:async(t,n,r)=>{let i=n.reduce((e,t)=>(t.role===P9.User&&e.push(t.id),e),[]);if(!(i.length<=0))return e.http?.message.shareMessages(t,i,r)},getFlowAgentTaskInfo:t=>e.http?.message.getFlowAgentTaskInfo(t),getFlowAgentTaskNodeInfo:(t,n)=>e.http?.message.getFlowAgentTaskNodeInfo(t,n),reset:()=>{t.value=[],n.value=!1,r.value=!1}}},L9=function(e){return e.ArtifactsGenerated=`artifacts_generated`,e.FlowAgentEnd=`flow_agent_end`,e.FlowAgentResult=`flow_agent_result`,e.FlowAgentStart=`flow_agent_start`,e.FlowAgentUpdate=`flow_agent_update`,e.FlowAgentRestart=`flow_agent_restart`,e.Info=`info`,e.KnowledgeRagEnd=`knowledge_rag_end`,e.KnowledgeRagResult=`knowledge_rag_result`,e.KnowledgeRagStart=`knowledge_rag_start`,e.KnowledgeRagTextContent=`knowledge_rag_text_content`,e.ReferenceDocument=`reference_document`,e.TempMessage=`temp_message`,e.ApprovalResult=`approval_result`,e}({}),R9=function(e){return e.ActivityDelta=`ACTIVITY_DELTA`,e.ActivitySnapshot=`ACTIVITY_SNAPSHOT`,e.Custom=`CUSTOM`,e.MessagesSnapshot=`MESSAGES_SNAPSHOT`,e.Raw=`RAW`,e.RunError=`RUN_ERROR`,e.RunFinished=`RUN_FINISHED`,e.RunStarted=`RUN_STARTED`,e.StateDelta=`STATE_DELTA`,e.StateSnapshot=`STATE_SNAPSHOT`,e.StepFinished=`STEP_FINISHED`,e.StepStarted=`STEP_STARTED`,e.TextMessageChunk=`TEXT_MESSAGE_CHUNK`,e.TextMessageContent=`TEXT_MESSAGE_CONTENT`,e.TextMessageEnd=`TEXT_MESSAGE_END`,e.TextMessageStart=`TEXT_MESSAGE_START`,e.ThinkingEnd=`THINKING_END`,e.ThinkingStart=`THINKING_START`,e.ThinkingTextMessageContent=`THINKING_TEXT_MESSAGE_CONTENT`,e.ThinkingTextMessageEnd=`THINKING_TEXT_MESSAGE_END`,e.ThinkingTextMessageStart=`THINKING_TEXT_MESSAGE_START`,e.ToolCallArgs=`TOOL_CALL_ARGS`,e.ToolCallChunk=`TOOL_CALL_CHUNK`,e.ToolCallEnd=`TOOL_CALL_END`,e.ToolCallResult=`TOOL_CALL_RESULT`,e.ToolCallStart=`TOOL_CALL_START`,e}({}),NYt=function(e){return e.Blocked=`BLOCKED`,e.Created=`CREATED`,e.Failed=`FAILED`,e.Finished=`FINISHED`,e.LoopReady=`LOOP_READY`,e.Ready=`READY`,e.Revoked=`REVOKED`,e.RollBackFailed=`ROLL_BACK_FAILED`,e.RollBackSuccess=`ROLL_BACK_SUCCESS`,e.RollingBack=`ROLLING_BACK`,e.Running=`RUNNING`,e.Suspended=`SUSPENDED`,e}({}),PYt=function(e){return e.Success=`success`,e.Interrupt=`interrupt`,e}({}),FYt=function(e){return e.Abandoned=`abandoned`,e.Approved=`approved`,e.Cancelled=`cancelled`,e.Draft=`draft`,e.Expired=`expired`,e.Rejected=`rejected`,e.Pending=`pending`,e}({}),IYt=function(e){return e.Resolved=`resolved`,e.Cancelled=`cancelled`,e}({}),z9=class{messageModule;onDoneCallback;onErrorCallback;onMessageCallback;onStartCallback;constructor(e){this.onDoneCallback=e?.onDone,this.onErrorCallback=e?.onError,this.onMessageCallback=e?.onMessage,this.onStartCallback=e?.onStart}handleActivityDeltaEvent(e){}handleActivitySnapshotEvent(e){if(e.activityType===N9.Info){let t=this.messageModule.getMessageByMessageId(e.messageId);t?.role===P9.Info&&(t.content=e.content);return}if(e.activityType===N9.Interrupt){let t=this.messageModule.getCurrentLoadingMessage();t?.role===P9.Interrupt&&(t.content=e.content,t.status=F9.Complete)}}handleArtifactsGeneratedCustomEvent(e){let t=this.messageModule.list.value.findLast(e=>e.role===P9.Assistant);if(t){let n=e.value;t.property??={},t.property.artifacts=n.artifacts}}handleCustomEvent(e){switch(e.name){case L9.ArtifactsGenerated:this.handleArtifactsGeneratedCustomEvent(e);break;case L9.FlowAgentStart:this.handleFlowAgentStartCustomEvent(e);break;case L9.FlowAgentResult:this.handleFlowAgentResultCustomEvent(e);break;case L9.FlowAgentEnd:this.handleFlowAgentEndCustomEvent(e);break;case L9.FlowAgentRestart:this.handleFlowAgentRestartCustomEvent(e);break;case L9.ReferenceDocument:this.handleReferenceDocumentCustomEvent(e);break;case L9.KnowledgeRagStart:this.handleKnowledgeRagStartCustomEvent(e);break;case L9.KnowledgeRagTextContent:this.handleKnowledgeRagTextContentCustomEvent(e);break;case L9.KnowledgeRagResult:this.handleKnowledgeRagResultCustomEvent(e);break;case L9.KnowledgeRagEnd:this.handleKnowledgeRagEndCustomEvent(e);break;case L9.TempMessage:this.handleTempMessageCustomEvent(e);break;case L9.ApprovalResult:this.handleApprovalResultCustomEvent(e);break;case L9.FlowAgentUpdate:this.handleFlowAgentUpdateCustomEvent(e);break;case L9.Info:this.handleInfoCustomEvent(e);break;default:break}}handleFlowAgentEndCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();if(t&&t.role===P9.Activity&&t.activityType===N9.FlowAgent){t.status=F9.Complete;let n=e.value;this.messageModule.plusMessage({role:P9.Assistant,content:n.map(e=>e.task_outputs.join(`
|
|
3496
3496
|
`)).join(`
|
|
3497
|
-
`),status:F9.Complete})}}handleFlowAgentRestartCustomEvent(e){let t=e.value;this.messageModule.list.value.forEach(e=>{e.role===P9.Activity&&e.activityType===N9.FlowAgent&&e.content[0].task_id===t[0].task_id&&(e.status=F9.Streaming)})}handleFlowAgentResultCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Activity&&t.activityType===N9.FlowAgent&&(t.content=e.value)}handleFlowAgentStartCustomEvent(e){let t=e.value;this.messageModule.plusMessage({role:P9.Activity,activityType:N9.FlowAgent,content:t.map(e=>({nodes:{},task_id:e.task_id,task_name:``,task_outputs:[],task_state:NYt.Created})),status:F9.Streaming})}handleFlowAgentUpdateCustomEvent(e){let t=e.value;this.messageModule.list.value.forEach(e=>{e.role===P9.Activity&&e.activityType===N9.FlowAgent&&e.content[0].task_id===t[0].task_id&&(e.content=t)})}handleInfoCustomEvent(e){let t=e.value;this.messageModule.plusMessage({role:P9.Info,messageId:t.messageId,content:t.content,status:F9.Complete})}handleKnowledgeRagEndCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Activity&&t.activityType===N9.KnowledgeRag&&(t.status=F9.Complete)}handleKnowledgeRagResultCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Activity&&t.activityType===N9.KnowledgeRag&&(t.content.referenceDocument=e.value)}handleKnowledgeRagStartCustomEvent(e){this.messageModule.plusMessage({role:P9.Activity,activityType:N9.KnowledgeRag,content:{content:``,referenceDocument:[]},status:F9.Streaming})}handleKnowledgeRagTextContentCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();if(t&&t.role===P9.Activity&&t.activityType===N9.KnowledgeRag){let n=e.value;t.content.content=n.cover?n.chunk.content:t.content.content+n.chunk.content}}handleMessagesSnapshotEvent(e){e.messages&&e.messages.length>0&&(this.messageModule.list.value=e.messages)}handleRawEvent(e){}handleReferenceDocumentCustomEvent(e){this.messageModule.plusMessage({role:P9.Activity,activityType:N9.ReferenceDocument,content:e.value,status:F9.Complete})}handleRunErrorEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&(t.status=F9.Complete),this.messageModule.plusMessage({role:P9.Assistant,content:e.message,status:F9.Error})}handleRunFinishedEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&(t.status=F9.Complete),e.outcome?.type===PYt.Interrupt&&this.messageModule.plusMessage({role:P9.Interrupt,content:e,status:F9.Pending}),e.outcome?.type===PYt.Success&&t?.role===P9.Interrupt&&(t.content=e)}handleRunStartedEvent(e){}handleStateDeltaEvent(e){}handleStateSnapshotEvent(e){}handleStepFinishedEvent(e){}handleStepStartedEvent(e){}handleTempMessageCustomEvent(e){let t=e.value;this.messageModule.plusMessage({role:P9.Assistant,content:t.message,status:t.status})}handleApprovalResultCustomEvent(e){let t=e.value,n=this.messageModule.getCurrentLoadingMessage();n&&(n.content=t,n.status=F9.Complete)}handleTextMessageChunkEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t?t.content+=e.delta||``:this.messageModule.plusMessage({role:e.role,content:e.delta||``,status:F9.Complete,messageId:e.messageId})}handleTextMessageContentEvent(e){let t=this.messageModule.getMessageByMessageId(e.messageId);t&&(t.content+=e.delta)}handleTextMessageEndEvent(e){let t=this.messageModule.getMessageByMessageId(e.messageId);t&&(t.status=F9.Complete)}handleTextMessageStartEvent(e){let t=this.messageModule.getMessageByMessageId(e.messageId);if(t){t.content=``,t.status=F9.Streaming;return}this.messageModule.plusMessage({role:e.role,content:``,status:F9.Streaming,messageId:e.messageId})}handleThinkingEndEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Reasoning&&(t.duration=e.duration,t.status=F9.Complete)}handleThinkingStartEvent(e){this.messageModule.plusMessage({role:P9.Reasoning,content:[],status:F9.Streaming})}handleThinkingTextMessageContentEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Reasoning&&(t.content[t.content.length-1]+=e.delta)}handleThinkingTextMessageEndEvent(e){}handleThinkingTextMessageStartEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Reasoning&&t.content.push(``)}handleToolCallArgsEvent(e){this.messageModule.list.value.forEach(t=>{t.role===P9.Assistant&&t.toolCalls&&t.toolCalls.forEach(t=>{t.id===e.toolCallId&&(t.function.arguments+=e.delta)})})}handleToolCallChunkEvent(e){}handleToolCallEndEvent(e){this.messageModule.list.value.forEach(t=>{t.role===P9.Assistant&&t.toolCalls&&t.toolCalls.some(t=>t.id===e.toolCallId)&&(t.status=F9.Complete)})}handleToolCallResultEvent(e){this.messageModule.plusMessage({role:P9.Tool,content:e.content,duration:e.duration,status:e.isError?F9.Error:F9.Complete,toolCallId:e.toolCallId,messageId:e.messageId})}handleToolCallStartEvent(e){this.messageModule.plusMessage({role:P9.Assistant,content:``,status:F9.Streaming,toolCalls:[{id:e.toolCallId,type:AYt.Function,function:{mcpName:e.mcpName,name:e.toolCallName,arguments:``,description:e.description}}]})}injectMessageModule(e){this.messageModule=e}onDone(){this.onDoneCallback?.()}onError(e){this.messageModule?.plusMessage({role:P9.Assistant,content:e.message,status:F9.Error}),this.onErrorCallback?.(e)}onMessage(e){let t=e;switch(this.onMessageCallback?.(t),t.type){case R9.ActivityDelta:this.handleActivityDeltaEvent(t);break;case R9.ActivitySnapshot:this.handleActivitySnapshotEvent(t);break;case R9.Custom:this.handleCustomEvent(t);break;case R9.MessagesSnapshot:this.handleMessagesSnapshotEvent(t);break;case R9.Raw:this.handleRawEvent(t);break;case R9.RunError:this.handleRunErrorEvent(t);break;case R9.RunFinished:this.handleRunFinishedEvent(t);break;case R9.RunStarted:this.handleRunStartedEvent(t);break;case R9.StateDelta:this.handleStateDeltaEvent(t);break;case R9.StateSnapshot:this.handleStateSnapshotEvent(t);break;case R9.StepFinished:this.handleStepFinishedEvent(t);break;case R9.StepStarted:this.handleStepStartedEvent(t);break;case R9.TextMessageChunk:this.handleTextMessageChunkEvent(t);break;case R9.TextMessageContent:this.handleTextMessageContentEvent(t);break;case R9.TextMessageEnd:this.handleTextMessageEndEvent(t);break;case R9.TextMessageStart:this.handleTextMessageStartEvent(t);break;case R9.ThinkingEnd:this.handleThinkingEndEvent(t);break;case R9.ThinkingStart:this.handleThinkingStartEvent(t);break;case R9.ThinkingTextMessageContent:this.handleThinkingTextMessageContentEvent(t);break;case R9.ThinkingTextMessageEnd:this.handleThinkingTextMessageEndEvent(t);break;case R9.ThinkingTextMessageStart:this.handleThinkingTextMessageStartEvent(t);break;case R9.ToolCallArgs:this.handleToolCallArgsEvent(t);break;case R9.ToolCallChunk:this.handleToolCallChunkEvent(t);break;case R9.ToolCallEnd:this.handleToolCallEndEvent(t);break;case R9.ToolCallResult:this.handleToolCallResultEvent(t);break;case R9.ToolCallStart:this.handleToolCallStartEvent(t);break;default:break}}onStart(){this.onStartCallback?.()}},LYt=function(e){return e.Running=`running`,e.Finished=`finished`,e.Failed=`failed`,e.Cancelled=`cancelled`,e}({}),RYt=5,zYt=1e3,BYt=8e3,VYt=e=>Math.min(zYt*2**(e-1),BYt),HYt=e=>{if(e.name===`AbortError`)return!1;let t=e.response?.status,n=e.message.match(/status code (\d+)/i),r=t??(n?Number(n[1]):void 0);if(r!==void 0){if(r===408||r===429)return!0;if(r>=400&&r<500)return!1;if(r>=500)return!0}return!0},UYt=(e,t)=>{let n=sn(null),r=sn(!1),i=sn(!1),a=sn([]),o=sn(!1),s=t||new z9,l=null,u=null,d=null,f=!1,p=0,m=!1,h=0,g=null,_=null,v=null,y=(t,n)=>{o.value=!0;let r=e.http?.agent.getLlms(t,n);return r?r.then(e=>(a.value=e,e)).catch(e=>{throw a.value=[],e}).finally(()=>{o.value=!1}):(o.value=!1,a.value=[],Promise.resolve([]))},b=()=>(r.value=!0,e.http?.agent.getAgentInfo().then(e=>{n.value=e}).finally(()=>{r.value=!1})),x=(t,n)=>{let r=t.promptSetting?.content?.at(-1);r?.role===P9.Pause&&e.message?.createAndPlusMessage({role:P9.Assistant,content:r.content,status:F9.Complete,sessionCode:n,property:{extra:{pause:!0}}})},S=(t,n,r,i,a)=>e.http?.message.userOperation(t,n,r,i).then(()=>{n===I9.ApprovalCancel?(N(),M(t,a)):k({sessionCode:t,config:i,model:a})}),C=(e=!1)=>{if(g&&=(clearTimeout(g),null),_){let t=_;_=null,t(e)}},w=e=>new Promise(t=>{_=t,g=setTimeout(()=>{g=null,_=null,t(!0)},e)}),T=()=>{f=!1,p=0,m=!1,C(!1)},E=()=>{let t=e.message?.list.value;if(t?.length)for(;t.length>0;){let e=t[t.length-1];if(e.role===P9.User)break;if(e.status===F9.Streaming||e.status===F9.Pending){t.pop();continue}break}},D=t=>t===e.session?.current?.value?.sessionCode,O=async(t,n)=>{let r=()=>n===h&&!f;if(!r()||!D(t))return`failed`;try{await e.session?.getSession(t)}catch{}if(!r()||!D(t))return`failed`;if(e.session?.current.value?.status!==LYt.Running)return`finished`;if(p>=RYt||(p+=1,i.value=!0,!await w(VYt(p))||!r()||!D(t)))return`failed`;if(e.session?.current.value?.status!==LYt.Running)return`finished`;if(!r())return`failed`;E();let a=e.message?.list.value.at(-1)?.id,o=v;return k({sessionCode:t,model:o?.model,url:o?.url,config:o?.config,lastMessageId:a===void 0?void 0:String(a),isReconnect:!0}),`reconnected`},k=async({sessionCode:t,model:n,url:r,config:a,resume:o,input:u,lastMessageId:d,isReconnect:p=!1})=>{p||T(),v={sessionCode:t,model:n,url:r,config:a};let g=++h,_=l;l=new AbortController,_?.abort?.();let y=()=>g===h;s instanceof z9&&s.injectMessageModule(e.message),u&&e.message?.list.value.push({role:P9.User,content:u,status:F9.Complete,sessionCode:t});let b=()=>{y()&&(i.value=!1,s.onDone?.call(s),u&&e.http?.message?.getMessages(t).then(t=>{let n=e.message?.list.value.findLast(e=>e.role===P9.User),r=t.findLast(e=>e.role===P9.User);n&&r&&(n.id=r.id)}),M(t))},x=e=>{y()&&(i.value=!1,s.onError?.call(s,e))},S=()=>{if(y()&&!f){if(m){b();return}O(t,g).then(e=>{if(y()&&e!==`reconnected`){if(e===`finished`){b();return}if(f||!D(t)){i.value=!1;return}x(Error(`Connection lost, please try again`))}})}},C=e=>{if(!(!y()||f)){if(!HYt(e)){x(e);return}O(t,g).then(n=>{if(y()&&n!==`reconnected`){if(n===`finished`){b();return}if(f||!D(t)){i.value=!1;return}x(e)}})}},w=e=>{y()&&(e?.type===R9.RunFinished&&(m=!0),s.onMessage?.call(s,e))},E=()=>{y()&&(i.value=!0,s.onStart?.call(s))};e.http?.fetchClient.streamRequest({url:r||`chat_completion/`,method:`POST`,data:{session_code:t,model:n,input:u,execute_kwargs:{stream:!0,persist_input:!!u,last_message_id:d,resume:o}},...a,controller:l,onDone:S,onError:C,onMessage:w,onStart:E}).catch(()=>{})},A=async(t,n,r,i,a,o)=>{await e.message?.createAndPlusMessage({role:P9.User,content:t,status:F9.Complete,sessionCode:n,...a&&{property:a}}),k({sessionCode:n,model:o,url:r,config:i})},j=(t,n,r,i)=>{if(e.session?.current.value?.status===LYt.Running){let a=e.message?.list.value.at(-1)?.id;k({sessionCode:t,model:i,url:n,config:r,lastMessageId:a})}},M=(t,n)=>{let r=e.message?.list.value.at(-1),i=r?.content?.outcome?.type===PYt.Interrupt?r.content.outcome.interrupts.find(e=>[FYt.Pending,FYt.Draft].includes(e.metadata?.ticket?.status)):void 0;r?.role===P9.Interrupt&&i&&(N(),u=new AbortController,e.http?.session.isResumeSession(t,{controller:u}).then(r=>{r?k({sessionCode:t,model:n,resume:{interruptId:i.id,status:IYt.Resolved}}):d=setTimeout(()=>{t===e.session?.current?.value?.sessionCode&&M(t,n)},1e4)}))},N=()=>{clearTimeout(d),d=null,u?.abort?.(),u=null},P=()=>{f=!0,h+=1,C(!1),N(),i.value=!1,l?.abort?.(),l=null};return{info:n,isInfoLoading:r,isChatting:i,models:a,isModelsLoading:o,chat:A,handleRole:x,resendMessage:async(t,n,r,i,a,o)=>{let s=e.message?.list.value||[],l=s.findIndex(e=>String(e.id)===t);if(l===-1)throw Error(`Message not found: ${t}`);let u=s[l];if(u.role!==P9.User)throw Error(`Can only resend user messages`);let d=u.content,f=u.property,p=r??d,m=s.slice(l),h=e.message?.deleteMessages(m),g=e.message?.createAndPlusMessage({role:P9.User,content:p,status:F9.Complete,sessionCode:n,...f&&{property:f}});k({sessionCode:n,model:o,url:i,config:a}),Promise.all([h,g]).catch(e=>{console.error(`[resendMessage] API error:`,e)})},resumeStreamingChat:j,abortChat:P,stopChat:async t=>e.http.message?.stopChat(t),getAgentInfo:b,getLlms:y,reset:e=>{P(),s=e||new z9,n.value=null,r.value=!1,i.value=!1,a.value=[],o.value=!1,v=null,p=0,m=!1},pollResumeSession:M,clearLongPollTimer:N,userOperationStreamRequest:S,streamRequest:k}};function WYt(e){return on(e)}function B9(e){if(e==null)return;let t=e,n=0;for(;n<32;){if(n+=1,typeof t==`function`){t=t();continue}if(WYt(t)){t=z(t);continue}break}return n>=32&&console.warn(`[chat-helper] resolveRequestValue: exceeded max unwrap depth`),t}var GYt=class{handlers=[];clear(){this.handlers=[]}eject(e){this.handlers[e]&&(this.handlers[e]=null)}forEach(e){this.handlers.forEach(t=>{t!==null&&e(t)})}use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1}},KYt=class e{defaults;interceptors;globalErrorHandler;ignoreErrorPatterns=[];constructor(e={}){this.defaults=H9({method:`GET`,headers:{"Content-Type":`application/json`},timeout:3e4,responseType:`json`,credentials:`include`,mode:`cors`,validateStatus:e=>e>=200&&e<300},e),this.interceptors={request:new GYt,response:new GYt}}onError(e,t){this.globalErrorHandler=e,t?.ignoreErrors&&(this.ignoreErrorPatterns=t.ignoreErrors)}shouldIgnoreError(e){let t=e.config?.url||``,n=e.config?.baseURL||``,r=n&&!t.startsWith(`http`)?n+t:t;return this.ignoreErrorPatterns.some(e=>typeof e==`string`?t.includes(e)||r.includes(e):e.test(t)||e.test(r))}dispatchError(e){this.globalErrorHandler&&!this.shouldIgnoreError(e)&&this.globalErrorHandler(e)}applyResponseErrorInterceptors(e){let t=e;return this.interceptors.response.forEach(e=>{e.rejected&&(t=e.rejected(t))}),t}create(t){return new e(H9(this.defaults,t||{}))}delete(e,t,n){return this.request({...n,url:e,method:`DELETE`,params:t})}get(e,t,n){return this.request({...n,url:e,method:`GET`,params:t})}head(e,t,n){return this.request({...n,url:e,method:`HEAD`,params:t})}options(e,t,n){return this.request({...n,url:e,method:`OPTIONS`,params:t})}patch(e,t,n){return this.request({...n,url:e,method:`PATCH`,data:t})}post(e,t,n){return this.request({...n,url:e,method:`POST`,data:t})}prepareRequest(e,t=!1){let n=H9(this.defaults,e);this.interceptors.request.forEach(e=>{if(e.fulfilled)try{n=e.fulfilled(n)}catch(t){throw e.rejected?e.rejected(t):t}});let r=n.url||``;n.baseURL&&!r.startsWith(`http`)&&(r=n.baseURL+r),r=qYt(r,n.params);let i=XYt(n.data),a=new Headers(XYt(n.headers));t&&!a.has(`Accept`)&&a.set(`Accept`,`text/event-stream`),i!=null&&(n.transformRequest?i=n.transformRequest(i,XYt(n.headers)):a.get(`Content-Type`)?.includes(`application/json`)&&typeof i==`object`&&!(i instanceof FormData)&&!(i instanceof Blob)&&!(i instanceof ArrayBuffer)&&(i=JSON.stringify(i)));let o=n.controller??new AbortController,s={method:n.method,credentials:n.credentials,mode:n.mode,headers:a,body:i,signal:o.signal};return{url:r,requestConfig:n,fetchConfig:s,controller:o}}put(e,t,n){return this.request({...n,url:e,method:`PUT`,data:t})}async request(e){let{url:t,fetchConfig:n,requestConfig:r,controller:i}=this.prepareRequest(e),a=!1,o=r.timeout&&r.timeout>0?setTimeout(()=>{a=!0,i.abort()},r.timeout):void 0;try{let e=await fetch(t,n);o&&clearTimeout(o);let i,a=r.responseType||`json`;try{switch(a){case`json`:i=await e.json();break;case`text`:i=await e.text();break;case`blob`:i=await e.blob();break;case`arrayBuffer`:i=await e.arrayBuffer();break;case`formData`:i=await e.formData();break;default:i=await e.json()}}catch{i=null}r.transformResponse&&(i=r.transformResponse(i));let s={data:i,status:e.status,statusText:e.statusText,headers:e.headers,config:r};if(!(r.validateStatus||this.defaults.validateStatus)(e.status)){let{code:t,message:n}=JYt(s.data,`Request failed with status code ${e.status}`);throw V9(n,r,t,s)}let l=s;this.interceptors.response.forEach(e=>{if(e.fulfilled)try{l=e.fulfilled(l)}catch(t){throw e.rejected?e.rejected(t):t}}),l instanceof Promise&&(l=await l);let u=l.data;if(!u)return;if(![0,`success`].includes(u.code)){let{code:e,message:t}=JYt(u,`Request failed with code ${u.code}`);throw V9(t,r,e,l)}return u.data}catch(e){if(o&&clearTimeout(o),e instanceof Error&&e.name===`AbortError`&&!a){console.warn(`User canceled request`,e.message);return}let t=a?V9(`timeout of ${r.timeout}ms exceeded`,r,`ECONNABORTED`,void 0):e.isAxiosError===!0?e:V9(e.message,r,e.code,void 0);throw this.dispatchError(t),this.applyResponseErrorInterceptors(t)}}stream(e,t){return this.streamRequest({...t,url:e})}async streamRequest(e){let t=!1,n=e.onError,r=e=>{if(!t){let n=e;n.config||=s,this.dispatchError(n),t=!0}n?.(e)},i={...e,onError:r},{url:a,fetchConfig:o,requestConfig:s,controller:l}=this.prepareRequest(i,!0),u,d=()=>{u?.cancel().catch(()=>{})};try{let e=await fetch(a,o);if(!(s.validateStatus||this.defaults.validateStatus)(e.status)){let t=null;try{t=await e.json()}catch{t=null}let{code:n,message:i}=JYt(t,`Request failed with status code ${e.status}`);r(V9(i,s,n,void 0));return}if(i.onStart?.(),u=e.body?.pipeThrough(new window.TextDecoderStream).getReader(),!u){r(Error(`IResponse body is not readable`));return}if(l.signal.addEventListener(`abort`,d,{once:!0}),l.signal.aborted){d(),i.onDone?.();return}let t=``,n=e=>{try{return JSON.parse(e),!0}catch{return!1}};for(;;){let{value:e,done:r}=await u.read();if(r){i.onDone?.();break}(t+e.toString()).split(`
|
|
3498
|
-
`).forEach(e=>{let r=e.replace(`data:`,``).trim();if(n(r)){let e=JSON.parse(r);i.onMessage?.(e),t=``}else r&&(t=r)})}}catch(e){if(e instanceof Error){if(e.name===`AbortError`){i.onDone?.();return}r(e)}throw e}finally{l.signal.removeEventListener(`abort`,d)}}};function qYt(e,t){if(!t)return e;let n=new URLSearchParams;Object.keys(t).forEach(e=>{let r=t[e];r!=null&&(Array.isArray(r)?r.forEach(t=>n.append(e,String(t))):n.append(e,String(r)))});let r=n.toString();return r?`${e}${e.includes(`?`)?`&`:`?`}${r}`:e}function JYt(e,t){let n=`ERR_BAD_RESPONSE`;if(!e||typeof e!=`object`)return{code:n,message:t};let r=e;return r.error?.message?{code:r.error.code??n,data:r.error.data,message:YYt(r.error.message,t)}:r.message?{code:r.code??n,data:r.data,message:YYt(r.message,t)}:r.detail?{code:r.code??n,data:r.data,message:YYt(r.detail,t)}:{code:r.code??n,data:r.data,message:t}}function YYt(e,t){if(typeof e==`string`)return e||t;try{return JSON.stringify(e)||t}catch{return t}}function V9(e,t,n,r){let i=Error(e);return i.config=t,i.code=String(n),i.response=r,i.isAxiosError=!0,i}function XYt(e){return B9(e)}function ZYt(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function H9(e,t){let n={...e};for(let r in t){let i=t[r];if(ZYt(i)){let t=e[r];n[r]=H9(t||{},i)}else n[r]=i}return n}new KYt;var QYt=new Set([`POST`,`PUT`,`PATCH`,`DELETE`]),$Yt=new Set([`GET`,`HEAD`,`OPTIONS`]);function eXt(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function tXt(e,t){let{headers:n,data:r}=t.requestData;!n&&!r||e.interceptors.request.use(e=>{let t=e,i=(e.method??`GET`).toUpperCase();if(n){let r=B9(n);if(r&&Object.keys(r).length>0){let n=B9(e.headers)??{};t={...t,headers:{...n,...r}}}}if(r){let n=B9(r);if(n&&Object.keys(n).length>0){if(QYt.has(i)){let r=B9(e.data);r==null?t={...t,data:n}:eXt(r)?t={...t,data:{...n,...r}}:console.warn(`[chat-helper] requestData.data 无法注入:当前请求体不是普通对象(FormData/Blob/string 等),已跳过合并。`,{method:i,existingType:typeof r})}else if($Yt.has(i)){let r=e.params??{};t={...t,params:{...n,...r}}}}}return t})}var nXt=e=>{let t=new KYt({baseURL:e.requestData.urlPrefix});return tXt(t,e),e.interceptors?.request&&t.interceptors.request.use(e.interceptors.request),e.interceptors?.response&&t.interceptors.response.use(e.interceptors.response),{fetchClient:t,reset:e=>{t.defaults.baseURL=e.requestData.urlPrefix,t.interceptors.request.clear(),t.interceptors.response.clear(),tXt(t,e),e.interceptors?.request&&t.interceptors.request.use(e.interceptors.request),e.interceptors?.response&&t.interceptors.response.use(e.interceptors.response)}}},rXt=e=>({conversationSettings:{openingRemark:e?.conversation_settings?.opening_remark,predefinedQuestions:e?.conversation_settings?.predefined_questions,commands:e?.conversation_settings?.commands?.map(e=>({id:e.id,name:e.name,alias:e.alias,icon:e.icon,components:e.components.map(e=>({type:e.type,name:e.name,key:e.key,placeholder:e.placeholder,default:e.default,required:e.required,fillBack:e.fill_back,fillRegx:e.fill_regx,rows:e.rows,min:e.min,max:e.max,options:e.options})),content:e.content,agentId:e.agent_id,status:e.status,supportUpload:e.support_upload})),enableChatSession:e?.conversation_settings?.enable_chat_session},promptSetting:e?.prompt_setting?{content:e.prompt_setting.content,supportUpload:e.prompt_setting.support_upload}:void 0,agentName:e?.agent_name,relatedSkills:e?.related_skills?.map(e=>({id:e.id,skill_name:e.skill_name,skill_code:e.skill_code,description:e.description,icon:e.icon})),chatGroup:e?.chat_group?{enabled:e.chat_group.enabled,staff:e.chat_group.staff,username:e.chat_group.username}:void 0,saasUrl:e?.saas_url,resources:e?.resources}),iXt=e=>({id:e.id??0,llm_code:e.llm_code,llm_name:e.llm_name,llm_type:e.llm_type??`chat.completion`,icon:e.icon??``,description:e.description??``,base_model:e.base_model,max_token_size:e.max_token_size??0,property:e.property??{},space_auth_mode:e.space_auth_mode??``,user_auth_mode:e.user_auth_mode??``,tag_names:e.tag_names}),aXt=e=>Array.isArray(e)?e.map(iXt):[],oXt=e=>({getAgentInfo:t=>e.get(`agent/info/`,void 0,t).then(rXt),getLlms:(t,n)=>{let r={llm_type:t?.llm_type??`chat.completion`};return t?.fuzzy&&(r.fuzzy=t.fuzzy),t?.supports&&(r.supports=t.supports),e.get(`llms/`,r,n).then(aXt)}}),sXt=e=>{let t={id:e.id,messageId:e.message_id,name:e.name,role:e.role,sessionCode:e.session_code,status:e.status};switch(e.role){case P9.Activity:{let n=e,r=e=>e.map(e=>({name:e.name,originFileUrl:e.origin_file_url,url:e.url})),i;switch(n.activity_type){case N9.ReferenceDocument:i=r(n.content);break;case N9.KnowledgeRag:{let e=n.content;i={content:e.content,referenceDocument:r(e.reference_document)};break}case N9.FlowAgent:case N9.ArtifactsGenerated:default:i=n.content;break}return{...t,activityType:n.activity_type,content:i,property:n.property,role:n.role}}case P9.Assistant:{let n=e;return{...t,content:n.content,property:n.property,role:n.role,toolCalls:n.tool_calls?.map(e=>({function:{arguments:e.function.arguments,name:e.function.name,description:e.function.description,mcpName:e.function.mcp_name},id:e.id,type:e.type}))}}case P9.Developer:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Guide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Hidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Info:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Pause:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Placeholder:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Reasoning:{let n=e;return{...t,content:n.content,duration:n.duration,role:n.role}}case P9.System:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateHidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Tool:{let n=e;return{...t,content:n.content,duration:n.duration,error:n.error,role:n.role,toolCallId:n.tool_call_id}}case P9.User:{let n=e,r=n.content;return{...t,content:Array.isArray(r)?r.map(e=>{if(e.type===AYt.Binary){let t=e;return{data:t.data,filename:t.filename,id:t.id,mimeType:t.mime_type,type:t.type,url:t.url}}return e}):r,property:n.property,role:n.role}}case P9.Interrupt:return{...t,...e}}},cXt=e=>{let t={id:e.id,message_id:e.messageId,name:e.name,role:e.role,session_code:e.sessionCode,status:e.status};switch(e.role){case P9.Activity:{let n=e,r=e=>e.map(e=>({name:e.name,origin_file_url:e.originFileUrl,url:e.url})),i;switch(n.activityType){case N9.ReferenceDocument:i=r(n.content);break;case N9.KnowledgeRag:{let e=n.content;i={content:e.content,reference_document:r(e.referenceDocument)};break}case N9.FlowAgent:case N9.ArtifactsGenerated:default:i=n.content;break}return{...t,activity_type:n.activityType,content:i,property:n.property,role:n.role}}case P9.Assistant:{let n=e;return{...t,property:n.property,content:n.content,role:n.role,tool_calls:n.toolCalls?.map(e=>({function:{arguments:e.function.arguments,name:e.function.name,description:e.function.description,mcp_name:e.function.mcpName},id:e.id,type:e.type}))}}case P9.Developer:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Guide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Hidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Info:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Pause:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Placeholder:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Reasoning:{let n=e;return{...t,content:n.content,duration:n.duration,role:n.role}}case P9.System:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateHidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Tool:{let n=e;return{...t,content:n.content,duration:n.duration,error:n.error,role:n.role,tool_call_id:n.toolCallId}}case P9.User:{let n=e,r=n.content;return{...t,content:Array.isArray(r)?r.map(e=>{if(e.type===AYt.Binary){let t=e;return{data:t.data,filename:t.filename,id:t.id,mime_type:t.mimeType,type:t.type,url:t.url}}return e}):r,property:n.property,role:n.role}}case P9.Interrupt:return{...t,...e}}},lXt=e=>({getMessages:(t,n,r)=>e.get(`session_content/content/`,{session_code:t,limit:n},r).then(e=>e.map(sXt)),plusMessage:(t,n)=>e.post(`session_content/`,cXt(t),n).then(sXt),modifyMessage:(t,n)=>e.put(`session_content/${t.id}/`,cXt(t),n).then(sXt),deleteMessage:(t,n)=>e.delete(`session_content/${t}/`,void 0,n),batchDeleteMessages:(t,n)=>e.post(`session_content/batch_delete/`,{ids:t},n),shareMessages:(t,n,r,i)=>e.post(`share/`,{session_code:t,content_ids:n,...r?{expired_at:r}:{}},i),stopChat:(t,n)=>e.post(`session_content/stop/`,{session_code:t},n),getFlowAgentTaskInfo:(t,n)=>e.get(`flow_agent/${t}/task_info/`,void 0,n),getFlowAgentTaskNodeInfo:(t,n,r)=>e.get(`flow_agent/${t}/task_node_info/${n}/`,void 0,r),retryFlowAgentTaskNode:(t,n,r,i)=>e.post(`flow_agent/${t}/node/${n}/retry/`,{task_id:r},i),skipFlowAgentTaskNode:(t,n,r,i)=>e.post(`flow_agent/${t}/node/${n}/skip/`,{task_id:r},i),userOperation:(t,n,r,i)=>e.post(`user_operation/`,{session_code:t,operation:n,payload:r},i)}),U9=e=>({sessionCode:e.session_code,sessionContentCount:e.session_content_count,sessionName:e.session_name,isTemporary:e.is_temporary,model:e.model,comment:e.comment,rate:e.rate,updatedAt:e.updated_at,createdAt:e.created_at,status:e.status,roleInfo:e.role_info?{collectionId:e.role_info.collection_id,collectionName:e.role_info.collection_name,content:e.role_info.content,variables:e.role_info.variables}:void 0,sessionProperty:{isAutoClear:e.session_property?.is_auto_clear,isAutoCalcPrompt:e.session_property?.is_auto_clac_prompt,labels:e.session_property?.labels}}),uXt=e=>({session_code:e.sessionCode,session_content_count:e.sessionContentCount,session_name:e.sessionName,is_temporary:e.isTemporary,model:e.model,comment:e.comment,rate:e.rate,updated_at:e.updatedAt,created_at:e.createdAt,status:e.status,role_info:e.roleInfo?{collection_id:e.roleInfo.collectionId,collection_name:e.roleInfo.collectionName,content:e.roleInfo.content,variables:e.roleInfo.variables}:void 0,session_property:{is_auto_clear:e.sessionProperty?.isAutoClear,is_auto_clac_prompt:e.sessionProperty?.isAutoCalcPrompt,labels:e.sessionProperty?.labels}}),dXt=e=>({session_code:e.sessionCode,session_content_ids:e.sessionContentIds,rate:e.rate,comment:e.comment,labels:e.labels}),fXt=e=>({sessionCode:e.session_code,sessionContentIds:e.session_content_ids,rate:e.rate,comment:e.comment,labels:e.lables}),pXt=`upload_file`,mXt=20,hXt=600,gXt=2e4,_Xt=e=>{if(Array.isArray(e))return{page:1,numPages:1,count:e.length,results:e.map(U9)};let t=Array.isArray(e?.results)?e.results:[];return{page:e?.page??1,numPages:e?.num_pages??1,count:e?.count??t.length,results:t.map(U9)}},vXt=e=>{let t=e.split(`.`).pop();if(!t||t===e)return``;let n=t.replace(/[^A-Za-z0-9]/g,``).slice(0,20).toLowerCase();return n?`.${n}`:``},yXt=e=>`${pXt}_${`${Date.now()}_${Math.random().toString(36).slice(2,8)}`}${vXt(e.name)}`,bXt=e=>`attachment; filename="${e}"`,xXt=e=>({clearSession:(t,n)=>e.post(`chat_completion/${t}/clear/`,void 0,n),getSessions:(t,n)=>e.get(`session/`,{page:t?.page??1,page_size:t?.page_size??mXt},n).then(_Xt),plusSession:(t,n)=>e.post(`session/`,uXt(t),n).then(e=>U9(e)),modifySession:(t,n)=>e.put(`session/${t.sessionCode}/`,uXt(t),n).then(e=>U9(e)),deleteSession:(t,n)=>e.delete(`session/${t}/`,void 0,n),batchDeleteSessions:(t,n)=>e.post(`session/batch_delete/`,{session_codes:t},n),getSession:(t,n)=>e.get(`session/${t}/`,void 0,n).then(e=>U9(e)),postSessionFeedback:(t,n)=>e.post(`session_feedback/`,dXt(t),n).then(e=>fXt(e)),getSessionFeedbackReasons:(t,n)=>e.get(`session_feedback/reasons/`,{rate:t},n),renameSession:(t,n)=>e.post(`session/${t}/ai_rename/`,void 0,n).then(e=>U9(e)),uploadFile:(t,n,r)=>{let i=yXt(n),a=encodeURIComponent(i),o=B9(r?.headers)??{};return n.arrayBuffer().then(n=>e.post(`session/${t}/upload/${a}/`,n,{...r,headers:{...o,"Content-Disposition":bXt(i)}}))},getPvFileDownloadUrl:(t,n,r,i)=>{let a=r?.expiresIn??hXt,o=r?.timeout??gXt;return e.get(`session/${t}/pv_files/download_url/`,{expires_in:a,path:n},{...i,timeout:i?.timeout??o})},isResumeSession:(t,n)=>e.get(`session/${t}/is_resume/`,void 0,n)}),SXt=e=>({agent:oXt(e),session:xXt(e),message:lXt(e),fetchClient:e}),CXt=e=>{let{fetchClient:t,reset:n}=nXt(e);return{...SXt(t),reset:n,onError:t.onError.bind(t)}},wXt=()=>({agent:null,http:null,message:null,session:null,registerAgent(e){this.agent=e},registerHttp(e){this.http=e},registerMessage(e){this.message=e},registerSession(e){this.session=e}}),TXt=20,EXt=e=>{let t=sn([]),n=sn(null),r=sn(0),i=sn(0),a=sn(0),o=sn(!1),s=sn(!1),l=sn(!1),u=sn(!1),d=sn(!1),f=sn(!1),p=sn(!1),m=sn(!1),h=fi(()=>r.value>0&&r.value<i.value),g=e=>{t.value=t.value.map(t=>t.sessionCode===e.sessionCode?{...t,...e}:t),n.value?.sessionCode===e.sessionCode&&(n.value=t.value.find(t=>t.sessionCode===e.sessionCode)??{...n.value,...e})},_=n=>{s.value=!0;let o={page:n?.page??1,page_size:n?.page_size??TXt};return e.http?.session.getSessions(o).then(e=>{t.value=e.results,r.value=e.page,i.value=e.numPages,a.value=e.count}).finally(()=>{s.value=!1})},v=async(n=TXt)=>{if(!(!h.value||s.value||l.value)){l.value=!0;try{let o=await e.http?.session.getSessions({page:r.value+1,page_size:n});if(!o)return;let s=new Set(t.value.map(e=>e.sessionCode)),l=o.results.filter(e=>!s.has(e.sessionCode));t.value=[...t.value,...l],r.value=o.page,i.value=o.numPages,a.value=o.count}finally{l.value=!1}}},y=async(r,i)=>{e.agent?.abortChat();let a=i?.loadMessages!==!1,o=t.value.find(e=>e.sessionCode===r);!a&&o?n.value=o:await b(r),a?(await e.message?.getMessages(r),e.agent?.resumeStreamingChat(r),e.agent?.pollResumeSession(r)):e.message&&(e.message.list.value=[])},b=t=>(o.value=!0,e.http?.session.getSession(t).then(e=>{n.value=e}).finally(()=>{o.value=!1}));return{list:t,current:n,page:r,numPages:i,count:a,hasMore:h,isCurrentLoading:o,isListLoading:s,isLoadingMore:l,isCreateLoading:u,isUpdateLoading:d,isDeleteLoading:f,isBatchDeleteLoading:p,getSessions:_,loadMoreSessions:v,chooseSession:y,getSession:b,createSession:async(n,r)=>{u.value=!0;try{let i=await e.http?.session.plusSession(n);i&&(t.value.unshift(i),a.value+=1,await y(i.sessionCode,{loadMessages:r?.loadMessages??!1}))}finally{u.value=!1}},updateSession:t=>(d.value=!0,e.http?.session.modifySession(t).then(e=>{g(e)}).finally(()=>{d.value=!1})),deleteSession:async r=>{f.value=!0;try{await e.http?.session.deleteSession(r),t.value=t.value.filter(e=>e.sessionCode!==r),a.value=Math.max(0,a.value-1),n.value?.sessionCode===r&&t.value[0]?.sessionCode&&await y(t.value[0].sessionCode)}finally{f.value=!1}},batchDeleteSessions:async r=>{if(r.length!==0){p.value=!0;try{await e.http?.session.batchDeleteSessions(r);let i=new Set(r),o=t.value.length;t.value=t.value.filter(e=>!i.has(e.sessionCode));let s=o-t.value.length;a.value=Math.max(0,a.value-s),n.value&&i.has(n.value.sessionCode)&&(t.value.length>0?await y(t.value[0].sessionCode):(n.value=null,e.message&&(e.message.list.value=[])))}finally{p.value=!1}}},postSessionFeedback:t=>e.http?.session.postSessionFeedback(t),getSessionFeedbackReasons:t=>e.http?.session.getSessionFeedbackReasons(t),renameSession:t=>(m.value=!0,e.http?.session.renameSession(t).then(e=>(g({sessionCode:e.sessionCode,sessionName:e.sessionName}),e)).finally(()=>{m.value=!1})),uploadFile:(t,n)=>e.http?.session.uploadFile(t,n),getPvFileDownloadUrl:(t,n,r)=>e.http?.session.getPvFileDownloadUrl(t,n,r),reset:()=>{t.value=[],n.value=null,r.value=0,i.value=0,a.value=0,o.value=!1,s.value=!1,l.value=!1,u.value=!1,d.value=!1,f.value=!1,p.value=!1,m.value=!1}}},DXt=e=>{let t=wXt(),n=CXt(e),r=UYt(t,e.protocol),i=MYt(t),a=EXt(t);return t.registerHttp(n),t.registerMessage(i),t.registerAgent(r),t.registerSession(a),{agent:r,session:a,message:i,http:n,reset:e=>{n.reset(e),r.reset(e.protocol),i.reset(),a.reset()},onError:n.onError}},OXt=new Set([`context_type`,`__label`,`__key`,`__value`]);function kXt(e,t){return{urlPrefix:e,headers:()=>B9(un(t)?.headers),data:()=>B9(un(t)?.data)}}function AXt(e){return e?Array.isArray(e)?e.map(e=>{if(e.__key)return e;let t=Object.entries(e).filter(([e])=>!OXt.has(e));if(t.length===0)return e;let[n,r]=t[0];return{...e,[n]:r,context_type:e.context_type??`input`,__label:e.__label??n,__key:e.__key??n,__value:e.__value??r}}):Object.entries(e).map(([e,t])=>({[e]:t,context_type:`input`,__label:e,__key:e,__value:t})):[]}function jXt(e,t){if(!t)return e;let n=t()?.context;if(!n)return e;let r=AXt(n);return r.length===0?e:MXt(e,r)}function MXt(e,t){if(t.length===0)return e??{};let n=e??{},r=n.extra??{},i=r.context??[],a=new Set(t.map(e=>e.__key).filter(Boolean)),o=i.filter(e=>{let t=e.__key;return!t||!a.has(t)});return{...n,extra:{...r,context:[...o,...t]}}}function NXt(e){return e.some(e=>{if(!(`property`in e))return!0;let{property:t}=e;return!t?.extra?.pause})}function PXt(e,t){let n=null;for(let r of e)if(r.role===`user`&&r.id!==void 0&&(n=r),r===t)break;return n}function FXt(e,t){let n=PXt(e,t);if(n?.id!==void 0)return typeof n.id==`number`?n.id:Number(n.id)}function IXt(e){if(!e)return[];if(typeof e!=`string`)return[{type:`text`,content:e}];let t=[],n=/```custom-component\s*\n([\s\S]*?)\n```/g,r=0,i;for(;(i=n.exec(e))!==null;){if(i.index>r){let n=e.slice(r,i.index).trim();n&&t.push({type:`text`,content:n})}try{let e=JSON.parse(i[1]);t.push({type:`custom`,data:e,raw:i[1]})}catch{t.push({type:`text`,content:i[0]})}r=i.index+i[0].length}if(r<e.length){let n=e.slice(r).trim();n&&t.push({type:`text`,content:n})}return t}var LXt=e=>{if(e instanceof Error)return e;if(typeof e==`string`)return Error(e);if(e&&typeof e==`object`){let{message:t}=e;if(typeof t==`string`&&t)return Error(t);try{return Error(JSON.stringify(e)??String(e))}catch{return Error(String(e))}}return Error(String(e))},RXt=e=>{let t=document.cookie.match(RegExp(`(^| )${e}=([^;]*)(;|$)`));return t?t[2]:``},zXt=e=>e.endsWith(`/`)?e:`${e}/`,BXt=e=>{if(!e)return e;try{let t=new URL(e,window.location.origin);return t.protocol=window.location.protocol,zXt(t.toString())}catch(t){return console.warn(`Failed to normalize URL:`,t),zXt(e)}};async function VXt(e){if(typeof navigator<`u`&&`clipboard`in navigator)try{return await navigator.clipboard.writeText(e),!0}catch{}let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,t.style.top=`-9999px`,t.style.opacity=`0`,document.body.appendChild(t),t.focus(),t.select();try{return document.execCommand(`copy`)}catch{return!1}finally{document.body.removeChild(t)}}function HXt(){let e=window.navigator.userAgent.toLowerCase(),t=window.navigator.platform.toLowerCase();return t.includes(`mac`)||e.includes(`mac`)?`mac`:t.includes(`win`)||e.includes(`win`)?`windows`:t.includes(`linux`)||e.includes(`linux`)?`linux`:`unknown`}function UXt(){return WXt()?`Cmd + I`:`Ctrl + I`}function WXt(){return HXt()===`mac`}function GXt(e){let t=WXt()?e.metaKey:e.ctrlKey,n=e.key.toLowerCase()===`i`;return t&&n&&!e.shiftKey&&!e.altKey}var KXt=RXt(`blueking_language`)||`zh-cn`,qXt={小鲸:`BK GPT`,关闭:`close`,发送:`Send`,请输入:`Please input`,昨天:`yesterday`,"3天前":`3 days ago`,"5天前":`5 days ago`,"1周前":`1 week ago`,更早:`Older`,删除:`Delete`,恢复默认大小:`Restore default size`,"AI 小鲸":`AI BK GPT`,新增会话:`New chat`,历史会话:`History session`,停止生成:`Stop generating`,复制:`Copy`,编辑:`Edit`,今天:`Today`,搜索会话名称:`Search session name`,重命名:`Rename`,自动生成命名:`Auto generate name`,分享会话:`Share session`,无智能体使用权限:`No permission to use this agent`,暂无使用权限:`No permission`,请输入新的会话名称:`Please enter new session name`,"确认删除会话 ?":`Confirm delete session?`,搜索为空:`No search results`,暂无对话:`No conversations`,"加载中...":`Loading...`,转人工:`Transfer to human`,缩小高度:`Shrink height`,全选:`Select all`,取消:`Cancel`,确定:`Confirm`,分享链接已复制到剪贴板:`Share link copied to clipboard`,请求失败:`Request failed`,当前已是新会话:`Already in a new session`,"正在创建会话...":`Creating session...`},JXt={重命名:`重命名`,自动生成命名:`自动生成命名`,分享会话:`分享会话`,全选:`全选`,取消:`取消`,确定:`确定`,分享链接已复制到剪贴板:`分享链接已复制到剪贴板`,请求失败:`请求失败`},W9=e=>KXt===`en`?qXt[e]||e:JXt[e]||e;function YXt(e){let{triggerRef:t,panelComponent:n,panelProps:r={},tippyOptions:i={}}=e,a=sn(null),o=null,s=()=>(o||=document.createElement(`div`),Ni(U(n,{...r,onClose:f}),o),o),l=e=>{let n=e.target,r=t.value;if(r&&r.contains(n))return;let i=document.querySelector(`.tippy-box[data-theme~="history-panel"]`);if(i&&i.contains(n))return;let o=document.querySelector(`.tippy-box[data-theme~="more-menu-light"]`);o&&o.contains(n)||a.value?.state.isVisible&&a.value.hide()},u=()=>{if(!t.value||a.value)return;let e={placement:`bottom-end`,offset:[0,8],appendTo:document.querySelector(`.ai-blueking-container-wrapper`)||document.body};a.value=jp(t.value,{content:s(),interactive:!0,trigger:`manual`,theme:`light history-panel`,arrow:!1,hideOnClick:!1,animation:`scale`,duration:200,delay:[0,0],...e,...i,onShow:()=>{a.value&&o&&a.value.setContent(s()),setTimeout(()=>{document.addEventListener(`click`,l,!1)},0)},onHidden:()=>{document.removeEventListener(`click`,l,!1)}})},d=()=>{a.value||u(),a.value?.show()},f=()=>{a.value?.hide()},p=()=>{a.value||u(),a.value?.state.isVisible?f():d()},m=e=>{e.stopPropagation(),p()},h=()=>{a.value&&=(a.value.destroy(),null),o&&=(Ni(null,o),null),document.removeEventListener(`click`,l,!1)};return cr(()=>{h()}),{show:d,hide:f,toggle:p,handleTriggerClick:m,destroy:h,isVisible:()=>a.value?.state.isVisible??!1}}var XXt={class:`history-group`},ZXt={class:`history-group-title`},QXt={class:`history-group-list`},$Xt=$n({__name:`history-group`,props:{currentSessionCode:{},sessions:{},title:{}},setup(e){let t=e;return(e,n)=>(B(),V(`div`,XXt,[H(`div`,ZXt,[H(`span`,null,ke(t.title),1)]),H(`div`,QXt,[mr(e.$slots,`default`,{},void 0,!0)])]))}}),G9=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},eZt=G9($Xt,[[`__scopeId`,`data-v-3b603cb6`]]),tZt={class:`history-item-actions`},nZt=G9($n({__name:`history-item`,props:{isActive:{type:Boolean},isEditing:{type:Boolean},session:{}},emits:[`click`,`delete`,`edit`,`rename-cancel`,`rename-confirm`],setup(e,{emit:t}){let n=e,r=t,i=$Se,a=sn(null),o=sn(``);Rn(()=>n.isEditing,e=>{e&&(o.value=n.session.sessionName,Dn(()=>{if(a.value)try{let e=a.value;e&&typeof e.focus==`function`&&e.focus();let t=e.$el?.querySelector(`input`);t&&typeof t.select==`function`&&t.select()}catch(e){console.warn(`Failed to focus edit input:`,e)}}))});let s=()=>{n.isEditing||r(`click`,n.session)},l=()=>{r(`edit`,n.session)},u=()=>{r(`delete`,n.session.sessionCode)},d=()=>{let e=o.value.trim();e&&e!==n.session.sessionName?r(`rename-confirm`,n.session.sessionCode,e):r(`rename-cancel`)},f=()=>{r(`rename-cancel`)},p=(e,t)=>{t.key===`Enter`?d():t.key===`Escape`&&f()};return(e,t)=>(B(),V(`div`,{class:xe([`history-item`,{active:n.isActive}]),onClick:s},[n.isEditing?(B(),Gr(z(Fu),{key:1,ref_key:`editInputRef`,ref:a,modelValue:o.value,"onUpdate:modelValue":t[1]||=e=>o.value=e,style:{width:`100%`,height:`28px`},onBlur:d,onKeyup:p,onClick:t[2]||=Mi(()=>{},[`stop`])},null,8,[`modelValue`])):(B(),V(Lr,{key:0},[Yr(z(Hve),{style:{width:`calc(100% - 42px)`}},{default:Mn(()=>[Qr(ke(n.session.sessionName),1)]),_:1}),H(`span`,tZt,[Nn(H(`i`,{class:`bkai-icon bkai-bianji`,onClick:Mi(l,[`stop`])},null,512),[[z(i),{content:z(W9)(`编辑`),boundary:`parent`}]]),Yr(z(sSe),{title:z(W9)(`确认删除会话 ?`),content:`删除操作无法撤回,请谨慎操作!`,"confirm-config":{theme:`danger`},trigger:`click`,boundary:`parent`,onConfirm:u},{default:Mn(()=>[Nn(H(`i`,{class:`bkai-icon bkai-shanchu`,onClick:t[0]||=Mi(()=>{},[`stop`])},null,512),[[z(i),{content:z(W9)(`删除`),boundary:`parent`}]])]),_:1},8,[`title`])])],64))],2))}}),[[`__scopeId`,`data-v-fea14d3a`]]),rZt={class:`history-search`},iZt={class:`input-icon`},aZt=G9($n({__name:`history-search`,props:{modelValue:{default:``},placeholder:{default:``}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:modelValue`,e)};return(e,t)=>(B(),V(`div`,rZt,[Yr(z(Fu),{"model-value":n.modelValue,behavior:`simplicity`,placeholder:n.placeholder||z(W9)(`搜索会话名称`),style:{height:`22px`},"onUpdate:modelValue":i},{suffix:Mn(()=>[H(`span`,iZt,[Yr(z(kl))])]),_:1},8,[`model-value`,`placeholder`])]))}}),[[`__scopeId`,`data-v-e7ff40b2`]]),oZt={class:`history-dropdown-header`},sZt={class:`history-dropdown-header-title`},cZt={class:`history-dropdown-content`},lZt={key:0,class:`history-dropdown-loading`},uZt={class:`history-dropdown-loading-dots`},dZt=40,fZt=G9($n({__name:`index`,props:{sessionBusinessManager:{}},emits:[`close`,`session-delete`,`session-rename`,`session-switch`],setup(e,{emit:t}){let n=e,r=t,i=sn(``),a=sn(null),o=fi(()=>n.sessionBusinessManager.currentSession.value?.sessionCode),s=fi(()=>n.sessionBusinessManager.isLoadingMore.value),l=e=>{let t=e.target;t.scrollHeight-t.scrollTop-t.clientHeight>dZt||n.sessionBusinessManager.hasMoreSessions.value&&(n.sessionBusinessManager.isLoadingMore.value||n.sessionBusinessManager.loadMoreSessions())},u=fi(()=>{let e={today:{key:`today`,alias:W9(`今天`),sessionList:[]},yesterday:{key:`yesterday`,alias:W9(`昨天`),sessionList:[]},"3days":{key:`3days`,alias:W9(`3天前`),sessionList:[]},"5days":{key:`5days`,alias:W9(`5天前`),sessionList:[]},"1week":{key:`1week`,alias:W9(`1周前`),sessionList:[]},before:{key:`before`,alias:W9(`更早`),sessionList:[]}},t=n.sessionBusinessManager.sessionList.value.filter(e=>e.sessionName.toLowerCase().includes(i.value.toLowerCase())),r=new Date,a=new Date(r);a.setDate(a.getDate()-1);let o=new Date(r);o.setDate(r.getDate()-3);let s=new Date(r);s.setDate(r.getDate()-5);let l=new Date(r);l.setDate(r.getDate()-7);for(let n of t){let t=new Date(n.createdAt||``),i=t.toDateString();i===r.toDateString()?e.today.sessionList.push(n):i===a.toDateString()?e.yesterday.sessionList.push(n):t>=o&&t>s?e[`3days`].sessionList.push(n):t>=s&&t>l?e[`5days`].sessionList.push(n):t>=l?e[`1week`].sessionList.push(n):e.before.sessionList.push(n)}for(let t of Object.values(e))t.sessionList.sort((e,t)=>{let n=new Date(e.createdAt||0).getTime();return new Date(t.createdAt||0).getTime()-n});return Object.values(e).filter(e=>e.sessionList.length>0)}),d=e=>o.value===e,f=e=>{d(e.sessionCode)||(r(`session-switch`,e.sessionCode),r(`close`))},p=e=>{a.value=e.sessionCode},m=e=>{r(`session-delete`,e)},h=(e,t)=>{let i=n.sessionBusinessManager.sessionList.value.find(t=>t.sessionCode===e);i&&(i.sessionName=t),a.value=null,r(`session-rename`,e,t)},g=()=>{a.value=null};return(e,t)=>(B(),V(`div`,{class:`bkai-history-dropdown`,onScroll:l},[H(`div`,oZt,[H(`h1`,sZt,ke(z(W9)(`历史会话`)),1),Yr(aZt,{modelValue:i.value,"onUpdate:modelValue":t[0]||=e=>i.value=e,placeholder:z(W9)(`搜索会话名称`)},null,8,[`modelValue`,`placeholder`])]),H(`div`,cZt,[u.value.length>0?(B(),V(Lr,{key:0},[(B(!0),V(Lr,null,fr(u.value,e=>(B(),Gr(eZt,{key:e.key,"current-session-code":o.value,sessions:e.sessionList,title:e.alias},{default:Mn(()=>[(B(!0),V(Lr,null,fr(e.sessionList,e=>(B(),Gr(nZt,{key:e.sessionCode,"is-active":d(e.sessionCode),"is-editing":a.value===e.sessionCode,session:e,onClick:f,onDelete:m,onEdit:p,onRenameCancel:g,onRenameConfirm:h},null,8,[`is-active`,`is-editing`,`session`]))),128))]),_:2},1032,[`current-session-code`,`sessions`,`title`]))),128)),s.value?(B(),V(`div`,lZt,[H(`span`,uZt,[(B(),V(Lr,null,fr(3,e=>H(`i`,{key:e,class:`history-dropdown-loading-dot`,style:ge({"--dot-index":e-1})},null,4)),64))])])):$r(`v-if`,!0)],64)):(B(),Gr(z(Ed),{key:1,description:i.value?z(W9)(`搜索为空`):z(W9)(`暂无对话`),scene:`part`,style:{"margin-top":`100px`},type:i.value?`search-empty`:`empty`},null,8,[`description`,`type`]))])],32))}}),[[`__scopeId`,`data-v-bf2401b6`]]);function pZt(e){return e.sessionBusinessManager?YXt({triggerRef:e.triggerRef,panelComponent:fZt,panelProps:{sessionBusinessManager:e.sessionBusinessManager,onSessionSwitch:e.onSessionSwitch,onSessionDelete:e.onSessionDelete,onSessionRename:e.onSessionRename},tippyOptions:{placement:`bottom-end`,offset:[0,8],appendTo:()=>document.querySelector(`.ai-blueking-panel`)||document.body}}):{handleTriggerClick:()=>{},show:()=>{},hide:()=>{},toggle:()=>{},destroy:()=>{},isVisible:()=>!1}}var mZt={class:`left-section`},hZt={class:`logo`},gZt=[`src`],_Zt={key:0,class:`rename-tooltip`},vZt={class:`rename-content`},yZt={key:0,class:`tippy-dropdown-menu`},bZt={key:1,class:`bkai-icon bkai-auto-refresh-line`},xZt={class:`right-section`},SZt=G9($n({__name:`index`,props:{title:{default:``},agentName:{default:``},sessionName:{default:``},isCompressionHeight:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},showHistoryIcon:{type:Boolean,default:!0},showNewChatIcon:{type:Boolean,default:!0},showCompressionIcon:{type:Boolean,default:!0},showMoreIcon:{type:Boolean,default:!0},enableChatSession:{type:Boolean,default:!0},hasPermission:{type:Boolean,default:!0},chatGroup:{default:()=>({enabled:!1,staff:[],username:``})},hasSessionContents:{type:Boolean},autoGenerateLoading:{type:Boolean},dropdownMenuConfig:{default:()=>({showRename:!0,showAutoGenerate:!0,showShare:!1})},sessionBusinessManager:{default:void 0},selectedLlmCode:{default:void 0},renderMode:{default:Ji.Chat}},emits:[`close`,`toggle-compression`,`new-chat`,`history-click`,`auto-generate-name`,`help-click`,`rename`,`share`,`history-session-switch`,`history-session-delete`,`history-session-rename`,`new-chat-created`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=$Se,o=sn(null),s=sn(null),l=er(`moreMenuTippyRef`),u=sn(!1),d=sn(``),f=sn(null),p=sn(!1),m=()=>document.querySelector(`.ai-blueking-panel`)||document.body,h=null,g=()=>{!s.value||!r.sessionBusinessManager||(h=pZt({triggerRef:s,sessionBusinessManager:r.sessionBusinessManager,onSessionSwitch:e=>i(`history-session-switch`,e),onSessionDelete:e=>i(`history-session-delete`,e),onSessionRename:(e,t)=>i(`history-session-rename`,e,t)}))},_=fi(()=>r.hasPermission?r.enableChatSession?r.title||`${r.agentName||``}-${r.sessionName||``}`:r.agentName:W9(`无智能体使用权限`)),v=fi(()=>r.isCompressionHeight?`bkai-morenchicun`:`bkai-yasuo`),y=fi(()=>r.isCompressionHeight?W9(`恢复默认尺寸`):W9(`缩小高度`)),b=fi(()=>r.hasPermission),x=e=>b.value?e:W9(`暂无使用权限`),S=()=>({cursor:b.value?`pointer`:`not-allowed`}),C=sn(!1),w=async()=>{if(!C.value){C.value=!0;try{if(r.sessionBusinessManager)try{let e=await r.sessionBusinessManager.createNewSession({model:r.selectedLlmCode});e&&i(`new-chat-created`,{sessionCode:e.sessionCode,sessionName:e.sessionName,createdAt:e.createdAt})}catch(e){console.error(`Failed to create new session:`,e),jd({theme:`error`,message:W9(`创建会话失败`)})}i(`new-chat`)}finally{C.value=!1}}},T=e=>{e.stopPropagation(),r.sessionBusinessManager?(h||g(),h&&h.handleTriggerClick(e)):i(`history-click`,e)},E=()=>{i(`help-click`)},D=e=>{e.stopPropagation(),h&&h.isVisible()&&h.hide(),l.value&&(p.value?l.value.hide():l.value.show())},O=()=>{l.value?.hide(),j()},k=()=>{!r.hasSessionContents||r.autoGenerateLoading||i(`auto-generate-name`)},A=()=>{r.hasSessionContents&&(l.value?.hide(),i(`share`))},j=()=>{document.removeEventListener(`click`,F),d.value=r.sessionName||``,u.value=!0,setTimeout(()=>{document.addEventListener(`click`,F)},100),setTimeout(()=>{if(f.value)try{let e=f.value;e&&typeof e.focus==`function`&&e.focus();let t=e.$el?.querySelector(`input`);t&&typeof t.select==`function`&&t.select()}catch(e){console.warn(`Failed to focus rename input:`,e)}},100)},M=()=>{let e=d.value.trim();if(!e){N();return}i(`rename`,e),u.value=!1,d.value=``},N=()=>{u.value=!1,d.value=``},P=(e,t)=>{d.value=e,t.key===`Enter`?M():t.key===`Escape`&&N()},F=e=>{if(!u.value)return;let t=e.target,n=document.querySelector(`.rename-tooltip`);n&&!n.contains(t)&&N()};return Rn(()=>r.autoGenerateLoading,(e,t)=>{t&&!e&&p.value&&l.value?.hide()}),sr(()=>{r.sessionBusinessManager&&g(),document.addEventListener(`click`,F)}),cr(()=>{h&&=(h.destroy(),null),document.removeEventListener(`click`,F)}),t({headerRef:o,historyIconRef:s}),(t,n)=>(B(),V(`div`,{ref_key:`headerRef`,ref:o,class:xe([`ai-header drag-handle`,{draggable:r.draggable}])},[H(`div`,mZt,[H(`div`,hZt,[H(`img`,{alt:`logo`,src:z(kYt)},null,8,gZt)]),H(`div`,{class:xe([`title`,{"title-with-tooltip":u.value}])},[Qr(ke(_.value)+` `,1),$r(` 重命名 tooltip 直接绑定在 title 上 `),u.value?(B(),V(`div`,_Zt,[H(`div`,vZt,[Yr(z(Fu),{ref_key:`renameInputRef`,ref:f,modelValue:d.value,"onUpdate:modelValue":n[0]||=e=>d.value=e,class:`rename-input`,placeholder:z(W9)(`请输入新的会话名称`),onKeyup:P},null,8,[`modelValue`,`placeholder`]),H(`div`,{class:`rename-buttons`},[H(`i`,{class:`bkai-icon bkai-check-1 rename-btn confirm-btn`,onClick:M}),H(`i`,{class:`bkai-icon bkai-close rename-btn cancel-btn`,onClick:N})])])])):$r(`v-if`,!0)],2),$r(` 更多图标下拉菜单 - 使用 vue-tippy `),r.showMoreIcon&&b.value?(B(),Gr(z(sp),{key:0,ref_key:`moreMenuTippyRef`,ref:l,arrow:!1,"append-to":m,offset:[0,4],interactive:``,placement:`bottom-start`,theme:`ai-blueking-light more-menu-light light`,trigger:`manual`,onHidden:n[1]||=e=>p.value=!1,onShown:n[2]||=e=>p.value=!0},{content:Mn(()=>[p.value?(B(),V(`div`,yZt,[r.dropdownMenuConfig?.showRename?(B(),V(`div`,{key:0,class:`tippy-menu-item`,onClick:O},[n[7]||=H(`i`,{class:`bkai-icon bkai-bianji`},null,-1),H(`span`,null,ke(z(W9)(`重命名`)),1)])):$r(`v-if`,!0),r.dropdownMenuConfig?.showAutoGenerate?Nn((B(),V(`div`,{key:1,class:xe([`tippy-menu-item`,{disabled:!r.hasSessionContents||r.autoGenerateLoading}]),onClick:k},[r.autoGenerateLoading?(B(),Gr(z(gu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`i`,bZt)),H(`span`,null,ke(z(W9)(`自动生成命名`)),1)],2)),[[z(cp),{content:r.hasSessionContents?``:z(W9)(`请先发起会话`),theme:`ai-blueking-tooltip`,arrow:!0,delay:[300,0],appendTo:m}]]):$r(`v-if`,!0),r.dropdownMenuConfig?.showShare&&r.renderMode!==z(Ji).Test?Nn((B(),V(`div`,{key:2,class:xe([`tippy-menu-item`,{disabled:!r.hasSessionContents}]),onClick:A},[n[8]||=H(`i`,{class:`bkai-icon bkai-fenxiang`},null,-1),H(`span`,null,ke(z(W9)(`分享会话`)),1)],2)),[[z(cp),{content:r.hasSessionContents?``:z(W9)(`请先发起会话`),theme:`ai-blueking-tooltip`,arrow:!0,delay:[300,0],appendTo:m}]]):$r(`v-if`,!0)])):$r(`v-if`,!0)]),default:Mn(()=>[H(`span`,{class:`bkai-icon bkai-more`,onClick:D})]),_:1},512)):$r(`v-if`,!0)]),mr(t.$slots,`headerLeft`,{},void 0,!0),H(`div`,xZt,[$r(` 新增会话按钮 `),r.showNewChatIcon&&e.enableChatSession!==!1?Nn((B(),V(`i`,{key:0,class:xe([`bkai-icon`,`bkai-xinzengliaotian`,{disabled:!b.value||C.value||!e.hasSessionContents}]),style:ge(S()),onClick:n[3]||=t=>b.value&&!C.value&&e.hasSessionContents?w():void 0},null,6)),[[z(a),{content:C.value?z(W9)(`正在创建会话...`):e.hasSessionContents?x(z(W9)(`新增会话`)):z(W9)(`当前已是新会话`),boundary:`parent`}]]):$r(`v-if`,!0),$r(` 历史会话按钮 `),r.showHistoryIcon&&e.enableChatSession!==!1?Nn((B(),V(`i`,{key:1,ref_key:`historyIconRef`,ref:s,class:xe([`bkai-icon`,`bkai-history`,{disabled:!b.value}]),style:ge(S()),onClick:n[4]||=e=>b.value?T(e):void 0},null,6)),[[z(a),{content:x(z(W9)(`历史会话`)),boundary:`parent`}]]):$r(`v-if`,!0),e.chatGroup?.enabled?Nn((B(),V(`i`,{key:2,class:`bkai-icon bkai-zhushou`,onClick:E},null,512)),[[z(a),{content:z(W9)(`转人工`),boundary:`parent`}]]):$r(`v-if`,!0),r.showCompressionIcon?Nn((B(),V(`i`,{key:3,class:xe([`bkai-icon`,v.value]),onClick:n[5]||=e=>i(`toggle-compression`)},null,2)),[[z(a),{content:y.value,boundary:`parent`}]]):$r(`v-if`,!0),Nn(H(`i`,{class:`bkai-icon bkai-close-line-2`,onClick:n[6]||=e=>i(`close`)},null,512),[[z(a),{content:z(W9)(`关闭`),boundary:`parent`}]])])],2))}}),[[`__scopeId`,`data-v-6dcebb8e`]]);function CZt(e){let t=BXt(e);fetch(t,{method:`GET`,credentials:`include`}).catch(()=>{})}async function wZt(e,t={}){let{enableModelSelect:n=!0}=t,r=[e.agent.getAgentInfo(),e.session.getSessions()];n&&typeof e.agent.getLlms==`function`&&r.push(e.agent.getLlms().catch(e=>{console.error(`[runAgentBootstrap] Failed to load models:`,e)})),await Promise.all(r);let i=e.agent.info.value?.saasUrl;i&&CZt(i)}var TZt=class{_isGenerating;_isModelsLoading;_isStopLoading;_models;_selectedLlmCode;_selectedModelName;_selectedModelSupportsVision;agentModule;config;eventEmitter;messageModule;sessionModule;hasValidSelection(){let e=this._selectedLlmCode.value;return!!e&&this._models.value.some(t=>t.llm_code===e)}isSessionPending(){return this.sessionModule!=null&&this.sessionModule.current.value==null}applySessionModel(e){let t=this._models.value;if(t.length===0){this._selectedLlmCode.value=void 0;return}if(this.isSessionPending())return;if(e&&t.some(t=>t.llm_code===e)){this._selectedLlmCode.value=e;return}if(this.hasValidSelection())return;let n=t.find(e=>e.property?.default)??t[0];this._selectedLlmCode.value=n?.llm_code}async persistSessionModel(e){let t=this.sessionModule?.current.value;if(!(!t?.sessionCode||!e)&&t.model!==e)try{await this.sessionModule.updateSession({...t,model:e})}catch(e){console.error(`[ChatBusinessManager] Failed to persist session model:`,e),this.emit(`chat-error`,{action:`persistSessionModel`,error:e})}}resolveChatModel(e){return(e??this._selectedLlmCode.value)||void 0}autoRenameSessionIfNeeded(e){let t=this.sessionModule;if(!t||this.messageModule.list.value.length!==1)return;let n=t.renameSession(e);n&&n.then(n=>{let r=t.list.value.find(t=>t.sessionCode===e)??(t.current?.value?.sessionCode===e?t.current.value:null),i=n?.sessionName??r?.sessionName;i&&this.config.onSessionRenamed?.(i,e)}).catch(e=>{console.error(`[ChatBusinessManager] Auto rename session failed:`,e)})}emit(e,t){this.eventEmitter?.emit(e,t)}constructor(e,t,n=null,r=null,i={}){this.agentModule=e,this.messageModule=t,this.sessionModule=n,this.eventEmitter=r,this.config=i,this._isGenerating=sn(!1),this._isStopLoading=sn(!1),this._isModelsLoading=sn(!1),this._models=sn([]),this._selectedLlmCode=sn(void 0),this._selectedModelName=fi(()=>{let e=this._selectedLlmCode.value;return e?this._models.value.find(t=>t.llm_code===e)?.llm_name??``:``}),this._selectedModelSupportsVision=fi(()=>{let e=this._selectedLlmCode.value;return e?!!this._models.value.find(t=>t.llm_code===e)?.property?.support_vision:!1}),this.sessionModule&&Rn(()=>this.sessionModule.current.value?.sessionCode,()=>{this.applySessionModel(this.sessionModule.current.value?.model)})}get isGenerating(){return this._isGenerating}get isStopLoading(){return this._isStopLoading}get isMessagesLoading(){return this.messageModule.isListLoading}get models(){return this._models}get isModelsLoading(){return this._isModelsLoading}get selectedLlmCode(){return this._selectedLlmCode}get selectedModelName(){return this._selectedModelName}get selectedModelSupportsVision(){return this._selectedModelSupportsVision}get messages(){return this.messageModule.list}async loadModels(e={}){this._isModelsLoading.value=!0;try{let t=this.agentModule.models?.value;if(!e.force&&Array.isArray(t)&&t.length>0)this._models.value=[...t];else if(typeof this.agentModule.getLlms==`function`){let e=await this.agentModule.getLlms();this._models.value=Array.isArray(e)?e:[]}else this._models.value=[];this.applySessionModel(this.sessionModule?.current.value?.model)}catch(e){console.error(`[ChatBusinessManager] Failed to load models:`,e),this._models.value=[],this._selectedLlmCode.value=void 0}finally{this._isModelsLoading.value=!1}}setModels(e){this._models.value=e,this.applySessionModel(this.sessionModule?.current.value?.model)}setSelectedModelByName(e){if(!e){this._selectedLlmCode.value=void 0;return}let t=this._models.value.find(t=>t.llm_name===e);this._selectedLlmCode.value=t?.llm_code,this.persistSessionModel(t?.llm_code)}setSelectedModel(e){this._selectedLlmCode.value=e?.llm_code,this.persistSessionModel(e?.llm_code)}get openingRemark(){return this.config.openingRemark||``}get predefinedQuestions(){return this.config.predefinedQuestions||[]}async batchDeleteMessages(e){try{await this.messageModule.deleteMessages(e);let t=e.map(e=>e.id).filter(Boolean);this.emit(`messages-batch-deleted`,{messageIds:t})}catch(e){throw console.error(`Failed to batch delete messages:`,e),this.emit(`chat-error`,{action:`batch-delete-messages`,error:e}),e}}async deleteMessage(e){try{await this.messageModule.deleteMessages([e]),this.emit(`message-deleted`,{messageId:e.id})}catch(e){throw console.error(`Failed to delete message:`,e),this.emit(`chat-error`,{action:`delete-message`,error:e}),e}}handleStreamEnd(){this._isGenerating.value=!1,this.emit(`receive-end`,{})}handleStreamError(e){this._isGenerating.value=!1,this.emit(`receive-error`,{error:e})}handleStreamStart(){this._isGenerating.value=!0,this.emit(`receive-start`,{})}async regenerateFromAIMessages(e,t){try{if(!e||e.length===0)throw Error(`No AI messages provided`);let n=this.messages.value,r=PXt(n,e[0]);if(!r)throw Error(`No user message found before AI messages`);let i=r.id;if(i===void 0)throw Error(`User message has no id`);await this.regenerateMessage(String(i),t)}catch(e){throw console.error(`Failed to regenerate from AI messages:`,e),this.emit(`chat-error`,{action:`regenerate`,error:e}),e}}async regenerateMessage(e,t){try{let n=this.messages.value,r=n.findIndex(t=>String(t.id)===e);if(r===-1)throw Error(`Message not found: ${e}`);let i=n[r];if(i.role!==P9.User)throw Error(`Can only regenerate from user messages`);let a=n.slice(r),o=typeof i.content==`string`?i.content:JSON.stringify(i.content),s=i.property;this._isGenerating.value=!0;let l=this.messageModule.deleteMessages(a);this.agentModule.chat(o,t,void 0,void 0,s,this.resolveChatModel()),this.emit(`chat-regenerate`,{messageId:e}),l.catch(e=>{console.error(`[regenerateMessage] Delete API error:`,e)})}catch(e){throw console.error(`Failed to regenerate message:`,e),this._isGenerating.value=!1,this.emit(`chat-error`,{action:`regenerate`,error:e}),e}}async resendMessageWithProperty(e,t,n,r){try{let i=this.messages.value,a=i.findIndex(t=>String(t.id)===e);if(a===-1)throw Error(`Message not found: ${e}`);if(i[a].role!==P9.User)throw Error(`Can only resend user messages`);let o=i.slice(a);this._isGenerating.value=!0;let s=this.messageModule.deleteMessages(o);this.agentModule.chat(n,t,void 0,void 0,r,this.resolveChatModel()),this.emit(`chat-resend`,{messageId:e}),s.catch(e=>{console.error(`[resendMessageWithProperty] Delete API error:`,e)})}catch(e){throw console.error(`Failed to resend message with property:`,e),this._isGenerating.value=!1,this.emit(`chat-error`,{action:`resend`,error:e}),e}}async retryMessage(e){try{console.warn(`retryMessage not implemented yet`),this.emit(`chat-retry`,{messageId:e})}catch(e){throw console.error(`Failed to retry message:`,e),this.emit(`chat-error`,{action:`retry`,error:e}),e}}async sendMessage(e,t,n={}){try{if(!t)throw Error(`No active session. Please create or select a session first.`);this._isGenerating.value=!0,this.emit(`send-message`,{content:e}),await this.agentModule.chat(e,t,void 0,void 0,n.property,this.resolveChatModel(n.model)),this.autoRenameSessionIfNeeded(t)}catch(e){throw console.error(`Failed to send message:`,e),this._isGenerating.value=!1,this.emit(`chat-error`,{action:`send`,error:e}),e}}async stopGeneration(){let e=this.sessionModule?.current?.value?.sessionCode??``;this._isStopLoading.value=!0;try{this.agentModule.abortChat(),await this.agentModule.stopChat(e),this._isGenerating.value=!1,this.emit(`stop`,{})}catch(e){throw console.error(`Failed to stop generation:`,e),this.emit(`chat-error`,{action:`stop`,error:e}),e}finally{this._isStopLoading.value=!1}}},EZt=class{agentModule;config;eventEmitter;messageModule;sessionModule;emit(e,t){this.eventEmitter?.emit(e,t)}constructor(e,t=null,n=null,r={},i=null){this.sessionModule=e,this.agentModule=t,this.eventEmitter=n,this.config=r,this.messageModule=i}get currentSession(){return this.sessionModule.current}get isCreateLoading(){return this.sessionModule.isCreateLoading}get isCurrentLoading(){return this.sessionModule.isCurrentLoading}get isDeleteLoading(){return this.sessionModule.isDeleteLoading}get isListLoading(){return this.sessionModule.isListLoading}get isLoadingMore(){return this.sessionModule.isLoadingMore}get isUpdateLoading(){return this.sessionModule.isUpdateLoading}get hasMoreSessions(){return this.sessionModule.hasMore}get sessionCount(){return this.sessionModule.count}get sessionList(){return this.sessionModule.list}async createNewSession(e){let t=this.currentSession.value;if(t?.sessionCode&&this.isCurrentSessionEmpty(t))return null;await this.loadSessions();let n=this.sessionList.value;if(n.length>0){let r=n[0];if(r.sessionCode===t?.sessionCode?this.isCurrentSessionEmpty(r):this.isSessionEmpty(r))return await this.syncSessionModelIfNeeded(e?.model,r),await this.switchSession(r.sessionCode,{loadMessages:!1}),null}return await this.createSession({name:`新会话`,sessionCode:this.generateSessionCode(),model:e?.model}),this.sessionModule.current.value}generateSessionCode(){return`new_session_${Date.now()}`}async syncSessionModelIfNeeded(e,t){if(!e)return;let n=t??this.sessionModule.current.value;!n?.sessionCode||n.model===e||await this.sessionModule.updateSession({...n,model:e})}async createSession(e={}){if(this.config.enableChatSession===!1)throw Error(`Chat session is disabled`);try{let t={sessionName:e.name||`新会话`,sessionCode:e.sessionCode||`session_${Date.now()}`,isTemporary:e.isTemporary||!1,...e.model?{model:e.model}:{},sessionProperty:{labels:e.labels}};await this.sessionModule.createSession(t);let n=this.agentModule?.info.value;n&&this.agentModule?.handleRole(n,t.sessionCode),this.emit(`session-created`,{session:this.sessionModule.current.value})}catch(e){throw console.error(`Failed to create session:`,e),this.emit(`session-error`,{action:`create`,error:e}),e}}async deleteSession(e){try{await this.sessionModule.deleteSession(e),this.emit(`session-deleted`,{sessionCode:e})}catch(e){throw console.error(`Failed to delete session:`,e),this.emit(`session-error`,{action:`delete`,error:e}),e}}async getSession(e){try{await this.sessionModule.getSession(e)}catch(e){throw console.error(`Failed to get session:`,e),this.emit(`session-error`,{action:`get`,error:e}),e}}isSessionEmpty(e){let t=this.findSession(e.sessionCode)?.sessionContentCount??e.sessionContentCount;return t==null?!1:t===0}isCurrentSessionEmpty(e){return this.messageModule&&NXt(this.messageModule.list.value)?!1:this.isSessionEmpty(e)}findSession(e){return this.sessionList.value.find(t=>t.sessionCode===e)}async loadRecentSession(e){try{if(this.currentSession.value?.sessionCode)return;e?.skipLoadSessions||await this.loadSessions();let t=this.sessionList.value;if(this.config.initialSessionCode){let e=this.findSession(this.config.initialSessionCode);await this.switchSession(this.config.initialSessionCode,{loadMessages:e?!this.isSessionEmpty(e):!0});return}if(t.length>0){let n=t[0],r=(n.sessionContentCount??0)>0,i=e?.alwaysCreateNewSession??this.config.alwaysCreateNewSession??!1;r||i?await this.createSession({name:`新会话`,sessionCode:this.generateSessionCode()}):await this.switchSession(n.sessionCode,{loadMessages:!1});return}await this.createSession({name:`新会话`,sessionCode:this.generateSessionCode()})}catch(e){throw console.error(`Failed to load recent session:`,e),e}}async loadSessions(){try{await this.sessionModule.getSessions(),this.emit(`sessions-loaded`,{sessions:this.sessionList.value})}catch(e){throw console.error(`Failed to load sessions:`,e),this.emit(`session-error`,{action:`load`,error:e}),e}}async loadMoreSessions(){try{await this.sessionModule.loadMoreSessions()}catch(e){throw console.error(`Failed to load more sessions:`,e),this.emit(`session-error`,{action:`loadMore`,error:e}),e}}async switchSession(e,t){try{await this.sessionModule.chooseSession(e,t),this.emit(`session-switched`,{session:this.sessionModule.current.value})}catch(e){throw console.error(`Failed to switch session:`,e),this.emit(`session-error`,{action:`switch`,error:e}),e}}async updateSessionName(e,t){try{let n=this.sessionList.value.find(t=>t.sessionCode===e);if(!n)throw Error(`Session not found: ${e}`);await this.sessionModule.updateSession({...n,sessionName:t}),this.emit(`session-updated`,{session:this.sessionModule.current.value})}catch(e){throw console.error(`Failed to update session name:`,e),this.emit(`session-error`,{action:`update`,error:e}),e}}},DZt=class{messageModule;sessionModule;constructor(e,t){this.messageModule=e,this.sessionModule=t}async shareMessages(e){if(e.length===0)throw Error(`No messages to share`);let t=this.sessionModule.current?.value?.sessionCode;if(!t)throw Error(`No active session`);let n=await this.messageModule.shareMessages(t,e);if(!n)throw Error(`Share failed: no result returned`);return{shareUrl:`${n.share_page}share-page/${n.share_token}`,userMessageIds:e.map(e=>String(e.id))}}},OZt=class{_agentShortcuts;_effectiveShortcuts;_propsShortcuts;eventEmitter;emit(e,t){this.eventEmitter?.emit(e,t)}constructor(e=null,t=[]){this._propsShortcuts=sn(t),this._agentShortcuts=sn([]),this.eventEmitter=e,this._effectiveShortcuts=fi(()=>this._propsShortcuts.value.length>0?this._propsShortcuts.value:this._agentShortcuts.value.length>0?this._agentShortcuts.value:[])}get count(){return this._effectiveShortcuts.value.length}get effectiveShortcuts(){return this._effectiveShortcuts}get hasShortcuts(){return this._effectiveShortcuts.value.length>0}get shortcuts(){return this._effectiveShortcuts}addShortcut(e){this._propsShortcuts.value.push(e)}clear(){this._propsShortcuts.value=[],this._agentShortcuts.value=[]}filterByTextLength(e,t){return!e||e.length>t?[]:this._effectiveShortcuts.value}filterShortcuts(e,t){return t?this._effectiveShortcuts.value.filter(n=>t(n,e)):this._effectiveShortcuts.value}getShortcutById(e){return this._effectiveShortcuts.value.find(t=>t.id===e)}handleShortcutClick(e,t,n=`main`){this.emit(`shortcut-click`,{shortcut:e,selectedText:t,source:n})}limitShortcuts(e){return this._effectiveShortcuts.value.slice(0,e)}removeShortcut(e){this._propsShortcuts.value=this._propsShortcuts.value.filter(t=>t.id!==e)}setAgentShortcuts(e){this._agentShortcuts.value=e}setShortcuts(e){this._propsShortcuts.value=e}},kZt=class{_isCompressed;_isDraggingOrResizing;_nimbusMinimized;_panelVisible;_positionAndSize;cleanupFunctions;config;containerRef=null;debugMode;listeners;onceListeners;constructor(e={}){this.config=e,this.listeners=new Map,this.onceListeners=new Map,this.debugMode=e.debug??!1,this.cleanupFunctions=[],this._panelVisible=sn(e.initialPanelVisible??!1),this._nimbusMinimized=sn(e.initialNimbusMinimized??!1),this._isDraggingOrResizing=sn(!1),this._isCompressed=sn(!1),this._positionAndSize=sn({x:0,y:0,width:400,height:window.innerHeight})}get container(){return{updatePosition:this.updatePosition.bind(this),updateSize:this.updateSize.bind(this),updatePositionAndSize:this.updatePositionAndSize.bind(this),toggleCompression:this.toggleCompression.bind(this),expandForSidePanel:this.expandForSidePanel.bind(this),collapseSidePanel:this.collapseSidePanel.bind(this),positionAndSize:fi(()=>this.containerRef?.positionAndSize?.value??this._positionAndSize.value),isCompressed:fi(()=>this._isCompressed.value),isSidePanelExpanded:fi(()=>this.containerRef?.isSidePanelExpanded?.value??!1)}}get isCompressed(){return this._isCompressed}get isDraggingOrResizing(){return this._isDraggingOrResizing}get nimbus(){return{minimize:this.minimizeNimbus.bind(this),restore:this.restoreNimbus.bind(this),toggle:this.toggleNimbus.bind(this),isMinimized:fi(()=>this._nimbusMinimized.value)}}get nimbusMinimized(){return this._nimbusMinimized}get panel(){return{show:this.showPanel.bind(this),hide:this.hidePanel.bind(this),toggle:this.togglePanel.bind(this),isVisible:fi(()=>this._panelVisible.value)}}get panelVisible(){return this._panelVisible}get state(){return{panelVisible:this._panelVisible,nimbusMinimized:this._nimbusMinimized,isDraggingOrResizing:this._isDraggingOrResizing,positionAndSize:this._positionAndSize}}collapseSidePanel(){this.containerRef?.collapseSidePanel&&this.containerRef.collapseSidePanel()}destroy(){this.listeners.clear(),this.onceListeners.clear(),this.cleanupFunctions.forEach(e=>e()),this.cleanupFunctions=[],this.debugMode&&console.debug(`[ComponentManager] Destroyed`)}emit(e,t){this.debugMode&&console.debug(`[ComponentManager] Emitting "${e}"`,t);let n=this.listeners.get(e);n&&n.forEach(n=>{try{n(t)}catch(t){console.error(`[ComponentManager] Error in listener for "${e}":`,t)}});let r=this.onceListeners.get(e);if(r&&r.size>0){let n=Array.from(r);this.onceListeners.delete(e),n.forEach(n=>{try{n(t)}catch(t){console.error(`[ComponentManager] Error in once listener for "${e}":`,t)}})}}emitInternal(e,t){this.emit(e,t)}expandForSidePanel(e){this.containerRef?.expandForSidePanel&&this.containerRef.expandForSidePanel(e)}getConfig(){return this.config}getRegisteredEvents(){let e=new Set;return this.listeners.forEach((t,n)=>e.add(n)),this.onceListeners.forEach((t,n)=>e.add(n)),Array.from(e)}handleDragging(e){this._isDraggingOrResizing.value=!0,this._positionAndSize.value=e,this.emit(`dragging`,e)}handleDragStop(e){this._isDraggingOrResizing.value=!1,this._positionAndSize.value=e,this.emit(`drag-stop`,e)}handleNimbusClick(){this.emit(`nimbus-click`,{}),this.showPanel()}handlePopupClick(){this.emit(`popup-click`,{}),this.showPanel()}handlePopupShortcutClick(e){this.emit(`popup-shortcut-click`,{shortcut:e}),this.emit(`shortcut-click`,{shortcut:e,source:`popup`})}handleResizeStop(e){this._isDraggingOrResizing.value=!1,this._positionAndSize.value=e,this.emit(`resize-stop`,e)}handleResizing(e){this._isDraggingOrResizing.value=!0,this._positionAndSize.value=e,this.emit(`resizing`,e)}handleShortcutClick(e,t){this.emit(`shortcut-click`,{shortcut:e,source:t})}hasListeners(e){return this.listenerCount(e)>0}hidePanel(){this._panelVisible.value=!1,this.emit(`panel-hide`,{})}listenerCount(e){return(this.listeners.get(e)?.size??0)+(this.onceListeners.get(e)?.size??0)}minimizeNimbus(){this._nimbusMinimized.value=!0,this.emit(`nimbus-minimize`,{})}off(e,t){t?(this.listeners.get(e)?.delete(t),this.onceListeners.get(e)?.delete(t),this.debugMode&&console.debug(`[ComponentManager] Unsubscribed from "${e}", remaining: ${this.listenerCount(e)}`)):(this.listeners.delete(e),this.onceListeners.delete(e),this.debugMode&&console.debug(`[ComponentManager] Removed all listeners for "${e}"`))}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this.debugMode&&console.debug(`[ComponentManager] Subscribed to "${e}", total: ${this.listenerCount(e)}`),()=>{this.off(e,t)}}once(e,t){return this.onceListeners.has(e)||this.onceListeners.set(e,new Set),this.onceListeners.get(e).add(t),this.debugMode&&console.debug(`[ComponentManager] Subscribed once to "${e}"`),()=>{this.onceListeners.get(e)?.delete(t)}}restoreNimbus(){this._nimbusMinimized.value=!1,this.emit(`nimbus-restore`,{})}setCompressed(e){this._isCompressed.value=e}setContainerRef(e){this.containerRef=e,e?.isCompressed&&(this._isCompressed.value=e.isCompressed.value)}setDebugMode(e){this.debugMode=e}setDraggingOrResizing(e){this._isDraggingOrResizing.value=e}showPanel(e){this._panelVisible.value=!0,this.emit(`panel-show`,{sessionCode:e})}toggleCompression(){this.containerRef?this.containerRef.toggleCompression():this._isCompressed.value=!this._isCompressed.value}toggleNimbus(){this._nimbusMinimized.value?this.restoreNimbus():this.minimizeNimbus()}togglePanel(){this._panelVisible.value?this.hidePanel():this.showPanel()}updatePosition(e,t){this._positionAndSize.value={...this._positionAndSize.value,x:e,y:t}}updatePositionAndSize(e,t,n,r){this._positionAndSize.value={x:e,y:t,width:n,height:r}}updateSize(e,t){this._positionAndSize.value={...this._positionAndSize.value,width:e,height:t}}};function AZt(e){return new kZt(e)}var jZt={"panel-show":`show`,"panel-hide":`close`,"panel-toggle":null,"nimbus-click":null,"nimbus-minimize":null,"nimbus-restore":null,"popup-click":null,"popup-shortcut-click":null,dragging:`dragging`,resizing:`resizing`,"drag-stop":`drag-stop`,"resize-stop":`resize-stop`,"compression-toggle":null,"side-panel-expand":null,"side-panel-collapse":null,"send-message":`send-message`,"receive-start":`receive-start`,"receive-text":`receive-text`,"receive-end":`receive-end`,"receive-error":null,stop:`stop`,"chat-regenerate":null,"chat-retry":null,"message-deleted":null,"messages-batch-deleted":null,"session-created":null,"session-switched":null,"session-deleted":null,"session-updated":null,"sessions-loaded":null,"session-initialized":`session-initialized`,"session-error":null,"shortcut-click":`shortcut-click`,"chat-error":null,"sdk-error":`sdk-error`,"new-chat":`new-chat`,"new-chat-created":`new-chat-created`,"history-click":`history-click`,"auto-generate-name":`auto-generate-name`,"help-click":`help-click`,rename:`rename`,share:`share`,close:`close`,"toggle-compression":null,"transfer-messages":`transfer-messages`,"share-messages":`share-messages`,"agent-info-loaded":null,error:null};function MZt(e,t){switch(e){case`send-message`:return[t.content];case`rename`:return[t.newName,t.sessionCode];case`history-click`:return[t.event];case`dragging`:case`resizing`:case`drag-stop`:case`resize-stop`:case`shortcut-click`:case`session-initialized`:case`sdk-error`:case`transfer-messages`:case`share-messages`:case`new-chat-created`:return[t];case`panel-show`:case`panel-hide`:case`receive-start`:case`receive-text`:case`receive-end`:case`stop`:case`new-chat`:case`auto-generate-name`:case`help-click`:case`share`:case`close`:return[];default:return[t]}}var NZt=class{_selectedMessageIds;_isSelectionMode;_editingSessionCode;_loadingStates;constructor(){this._selectedMessageIds=sn(new Set),this._isSelectionMode=sn(!1),this._editingSessionCode=sn(null),this._loadingStates=Jt({})}get isSelectionMode(){return this._isSelectionMode}get editingSessionCode(){return this._editingSessionCode}toggleSelectionMode(){this._isSelectionMode.value=!this._isSelectionMode.value,this._isSelectionMode.value||this.clearSelection()}enableSelectionMode(){this._isSelectionMode.value=!0}disableSelectionMode(){this._isSelectionMode.value=!1,this.clearSelection()}toggleMessageSelection(e){this._selectedMessageIds.value.has(e)?this._selectedMessageIds.value.delete(e):this._selectedMessageIds.value.add(e),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}selectMessage(e){this._selectedMessageIds.value.add(e),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}deselectMessage(e){this._selectedMessageIds.value.delete(e),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}isMessageSelected(e){return this._selectedMessageIds.value.has(e)}clearSelection(){this._selectedMessageIds.value.clear(),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}selectAllMessages(e){this._selectedMessageIds.value=new Set(e)}get selectedMessages(){return Array.from(this._selectedMessageIds.value)}get selectedCount(){return this._selectedMessageIds.value.size}get hasSelection(){return this._selectedMessageIds.value.size>0}startEditingSession(e){this._editingSessionCode.value=e}stopEditingSession(){this._editingSessionCode.value=null}isEditingSession(e){return e?this._editingSessionCode.value===e:this._editingSessionCode.value!==null}setLoading(e,t){this._loadingStates[e]=t}isLoading(e){return this._loadingStates[e]??!1}clearLoadingStates(){Object.keys(this._loadingStates).forEach(e=>{this._loadingStates[e]=!1})}reset(){this.clearSelection(),this.disableSelectionMode(),this.stopEditingSession(),this.clearLoadingStates()}},PZt=class extends Error{constructor(){super(`[ChatBot] Initialization was superseded by a newer init`),this.name=`ChatBotInitStaleError`}};function FZt(e){let{props:t,emit:n,reportError:r,managerErrorBridge:i}=e,a=cn(null),o=cn(null),s=cn(null),l=cn(null),u=sn(!1),d=sn(!t.chatHelper),f=sn(null),p=fi(()=>u.value),m=()=>t.chatHelper?!t.chatHelper.agent||!t.chatHelper.session||!t.chatHelper.message?{valid:!1,error:`[ChatBot] Invalid chatHelper: missing required modules (agent, session, message)`}:{valid:!0}:t.url?{valid:!0}:{valid:!1,error:`[ChatBot] Neither chatHelper nor url provided. Component requires at least one.`},h=()=>{let e=m();if(!e.valid)return console.error(e.error),f.value=Error(e.error),null;if(t.chatHelper)return t.chatHelper;let i=new z9({onStart:()=>{n(`receive-start`)},onMessage:e=>{n(`receive-text`)},onDone:()=>{n(`receive-end`)},onError:e=>{r(e,`Stream error`)}}),a=DXt({requestData:kXt(BXt(t.url),()=>un(t.requestOptions)),protocol:i});return i.injectMessageModule(a.message),a},g=e=>{if(e)try{e.agent.abortChat(),e.agent.clearLongPollTimer?.()}catch{}},_=0,v=null,y=null,b=null,x=e=>{b&&=(e?b.reject(e):b.resolve(),null),v=null},S=e=>{if(e!==_)throw new PZt},C=async e=>{let p=a.value;u.value=!1,f.value=null,d.value=!t.chatHelper,g(p),S(e),a.value=null,o.value=null,s.value=null,l.value=null;let m=h();if(!m)throw f.value??Error(`[ChatBot] Failed to create chatHelper`);let _=new EZt(m.session,m.agent,i,{enableChatSession:!0,autoSwitchToInitialSession:!!t.sessionCode,loadRecentSessionOnMount:t.autoLoad,initialSessionCode:t.sessionCode,alwaysCreateNewSession:t.alwaysCreateNewSession},m.message),v=new TZt(m.agent,m.message,m.session,i,{openingRemark:t.helloText,predefinedQuestions:t.prompts,placeholder:t.placeholder,onSessionRenamed:(e,t)=>n(`rename`,e,t)}),y=new OZt(null,t.shortcuts||[]);a.value=m,o.value=_,s.value=v,l.value=y;try{d.value&&(await wZt(m,{enableModelSelect:t.enableModelSelect!==!1&&!t.models?.length}),S(e),await _.loadRecentSession({skipLoadSessions:!0}),S(e)),t.enableModelSelect!==!1&&(t.models?.length?v.setModels(t.models):await v.loadModels(),S(e)),S(e),u.value=!0,n(`agent-info-loaded`,m)}catch(t){throw S(e),f.value=r(t,`Failed to initialize ChatBot`),t}},w=()=>{x(new PZt),y=null;let e=++_;v=new Promise((t,n)=>{b={resolve:t,reject:n},C(e).then(()=>{b&&=(y=Promise.resolve(),b.resolve(),null)}).catch(e=>{b&&=(b.reject(LXt(e)),null)}).finally(()=>{e===_&&(v=null)})}),v.catch(()=>{})};return Rn([()=>t.url,()=>t.chatHelper],()=>w(),{immediate:!0}),cr(()=>{x(),g(a.value)}),{chatHelper:a,isStandaloneMode:d,isInitialized:u,isReady:p,initError:f,whenReady:()=>u.value?(y||=Promise.resolve(),y):f.value?Promise.reject(f.value):v||Promise.resolve(),chatBusinessManager:s,sessionBusinessManager:o,shortcutManager:l}}function IZt(e){let{props:t,chatHelper:n,chatBusinessManager:r,sessionBusinessManager:i,shortcutManager:a,isStandaloneMode:o,isInitialized:s,selectedShortcut:l}=e,u=fi(()=>r.value?.isStopLoading.value?Gi.StopLoading:((t.chatHelper||n.value)?.agent)?.isChatting?.value?Gi.Streaming:Gi.Complete),d=fi(()=>u.value===Gi.Streaming?D9.Disabled:void 0),f=fi(()=>r.value?.messages.value??[]),p=fi(()=>r.value?.isMessagesLoading.value??!1);return{messageStatus:u,messageToolsStatus:d,messages:f,isMessagesLoading:p,isGenerating:fi(()=>r.value?.isGenerating.value??!1),currentSession:fi(()=>i.value?.currentSession.value??null),isWelcomeState:fi(()=>o.value&&!s.value?!1:!p.value&&f.value.length===0),openingRemark:fi(()=>n.value?.agent.info.value?.conversationSettings?.openingRemark||``),effectiveResources:fi(()=>t.resources?.length?t.resources:n.value?.agent.info.value?.resources??[]),effectivePrompts:fi(()=>t.prompts?.length?t.prompts:n.value?.agent.info.value?.conversationSettings?.predefinedQuestions??[]),effectiveSkills:fi(()=>t.skills?.length?t.skills:(n.value?.agent.info.value?.relatedSkills??[]).map(e=>({skill_name:e.skill_name,skill_code:e.skill_code,description:e.description,icon:e.icon}))),effectiveSupportUpload:fi(()=>l.value?.supportUpload?l.value.supportUpload.vision===!0:r.value?.selectedModelSupportsVision.value??!1),chatbotStyle:fi(()=>({height:typeof t.height==`number`?`${t.height}px`:t.height,maxWidth:typeof t.maxWidth==`number`?`${t.maxWidth}px`:t.maxWidth})),filteredShortcuts:fi(()=>a.value?.shortcuts.value??[])}}var LZt=new Set([`chat-error`,`receive-error`,`session-error`]);function RZt(e,t={}){let n=new WeakSet,r=(r,i)=>{let a=LXt(r);return n.has(a)?a:(n.add(a),console.error(i?`[ChatBot] ${i}:`:`[ChatBot] error:`,r),e(`error`,a),un(t.errorToast)!==!1&&jd({message:a.message||W9(`请求失败`),theme:`error`}),a)};return{managerErrorBridge:{emit:(e,t)=>{LZt.has(e)&&r(t?.error)}},reportError:r}}var zZt={[qi.ApprovalCancel]:I9.ApprovalCancel,[qi.FlowNodeRetry]:I9.FlowNodeRetry,[qi.FlowNodeSkip]:I9.FlowNodeSkip};function BZt(e){return`operation`in e}function VZt(e){return`interruptId`in e&&`reason`in e&&e.reason===Hi.UserQuestion}function HZt(e){return e===`cancelled`?IYt.Cancelled:IYt.Resolved}function UZt(e){let t=e?.session.current?.value?.sessionCode;if(!t)throw Error(`[ChatBot] Cannot resume interrupt: no active session`);return t}function WZt(e){return{interruptId:e.interruptId,status:HZt(e.status),payload:e.payload}}function GZt(e){let{chatHelper:t,reportError:n}=e,r=async e=>{let n=t.value;if(!n)throw Error(`[ChatBot] Cannot resume interrupt: chatHelper not initialized`);if(!BZt(e))throw Error(`[ChatBot] Unsupported interrupt resume payload`);let r=UZt(n);if(e.operation===qi.ApprovalRefresh){n.agent.pollResumeSession(r);return}let i=zZt[e.operation];if(!i)throw Error(`[ChatBot] Unsupported interrupt resume operation: ${e.operation}`);let a=n.agent;if(e.operation===qi.ApprovalCancel){await a.userOperationStreamRequest(r,i,{interrupt_id:e.payload.interrupt_id});return}(e.operation===qi.FlowNodeRetry||e.operation===qi.FlowNodeSkip)&&await a.userOperationStreamRequest(r,i,{node_id:e.payload.node_id,task_id:String(e.payload.task_id)})},i=async(e,n)=>{let r=t.value;if(!r)throw Error(`[ChatBot] Cannot resume interrupt: chatHelper not initialized`);let i=UZt(r);await r.agent.streamRequest({sessionCode:i,resume:WZt(e),...n?{input:n}:{}})};return{handleInterruptResume:async(e,t)=>{try{if(BZt(e)){await r(e);return}if(VZt(e)){await i(e);return}throw Error(`[ChatBot] Unsupported interrupt resume payload`)}catch(e){n(e,`Failed to handle interrupt resume`)}},resumeUserQuestionWithInput:async(e,t)=>{try{if(!t.payload||!VZt(t.payload))throw Error(`[ChatBot] Invalid user question resume options`);let n=typeof e==`string`?e.trim():``;if(!n)throw Error(`[ChatBot] User question free text input is empty`);await i(t.payload,n)}catch(e){n(e,`Failed to resume user question with input`)}}}}function KZt(e){let{emit:t,chatHelper:n,chatBusinessManager:r,getRequestOptions:i,reportError:a,resumeUserQuestionWithInput:o,selectedShortcut:s,selectedResources:l}=e,u=cn([[]]),d=cn(``),f=(e,t)=>{u.value=e,l.value=t},p=async(e,a={})=>{if(!r.value||!n.value)throw Error(`[ChatBot] Cannot send message: chatBusinessManager not initialized`);let o=n.value.session.current?.value?.sessionCode;if(!o)throw Error(`[ChatBot] Cannot send message: no active session`);u.value=[[]],d.value=``,l.value=[],t(`send-message`,typeof e==`string`?e:``);let s=jXt(a.property,i);await r.value.sendMessage(e,o,{...a,...s?{property:s}:{}})},m=async e=>{let t=n.value?.session.current?.value?.sessionCode;if(!t)throw Error(`[ChatBot] Cannot upload: no active session`);let r=await n.value.session.uploadFile(t,e);if(!r?.download_url)throw Error(`[ChatBot] Upload failed: no download URL returned`);return r},h=async e=>{let t=n.value?.session.current?.value?.sessionCode;if(!t)throw Error(`[ChatBot] Cannot resolve artifact URL: no active session`);let r=await n.value.session.getPvFileDownloadUrl(t,e.outputId);return{download_url:r?.download_url,preview_url:r?.preview_url}},g=async(e,t,n)=>{try{if(n?.payload&&o){u.value=[[]],d.value=``,l.value=[],await o(e,n);return}let t={};d.value&&(t.cite=d.value),s.value&&(t.command=s.value.id),l.value.length&&(t.resources=l.value),await p(e,Object.keys(t).length?{property:{extra:t}}:{})}catch(e){a(e,`Failed to send message`)}},_=async()=>{await v()},v=async()=>{if(!r.value){console.error(`[ChatBot] Cannot stop generation: chatBusinessManager not initialized`);return}try{await r.value.stopGeneration(),t(`stop`)}catch(e){a(e,`Failed to stop generation`)}};return{userInput:u,cite:d,handleUpdateModelValue:f,doSendMessage:p,handleSendMessage:g,handleArtifactClick:h,handleUpload:m,handleStopSending:_,stopGeneration:v}}var qZt=e=>!e||e.id===`share`;function JZt(e){let{emit:t,chatHelper:n,isStandaloneMode:r}=e,i=async e=>{if(!(!n.value||e.length===0))try{await VXt((await new DZt(n.value.message,n.value.session).shareMessages(e)).shareUrl),jd({message:`分享链接已复制到剪贴板`,theme:`success`})}catch(e){console.error(`[ChatBot] Failed to share messages:`,e),jd({message:`分享失败,请重试`,theme:`error`})}};return{handleConfirmShare:async(e,n)=>{r.value&&qZt(n)&&await i(e),t(`confirm-share`,e,n)}}}function YZt(e){let{props:t,emit:n,shortcutManager:r,doSendMessage:i,reportError:a,selectedShortcut:o}=e,s=fi(()=>r.value?.effectiveShortcuts.value??[]),l=(e,t)=>{let n=e,r;if(r=n.enable_fill_back&&n.fill_back_component_key?n.fill_back_component_key:n.components?.find(e=>e.fillBack)?.key,r&&t){let e=n.components?.map(e=>e.key===r?{...e,default:t}:{...e,default:e.default??void 0});o.value={...n,components:e,formModel:{...n.formModel,[r]:t}}}else o.value={...n,formModel:{...n.formModel}}},u=(e,t)=>{let n=e.components||[];return{extra:{cite:{type:`structured`,title:e.alias||e.name,data:n.map(e=>({key:e.name||e.key,value:String(t[e.key]??``)}))},command:e.id,context:n.map(e=>({[e.key]:t[e.key],context_type:e.type,__label:e.name||e.key,__key:e.key,__value:t[e.key]}))}}},d=e=>{let t=e.property?.extra;return t?.shortcut?t.shortcut:t?.command?s.value.find(e=>e.id===t.command)??null:null},f=(e,t)=>{l(e,t),n(`shortcut-click`,{shortcut:e,source:`main`})},p=()=>{o.value=null};return Rn(()=>t.shortcuts,e=>{r.value?.setShortcuts(e||[])},{immediate:!0}),Rn(()=>e.chatHelper.value?.agent.info.value?.conversationSettings?.commands,e=>{e&&r.value?.setAgentShortcuts(e)},{immediate:!0}),{effectiveShortcuts:s,selectShortcutWithText:l,buildShortcutProperty:u,getShortcutFromMessage:d,handleSelectShortcut:f,handleCloseShortcut:p,handleShortcutSubmit:async e=>{if(!o.value){console.error(`[ChatBot] No selected shortcut`);return}let t=u(o.value,e),n=o.value.name,r=o.value;p();try{await i(n,{property:t})}catch(e){o.value=r,a(e,`Failed to submit shortcut`)}},sendShortcutDirectly:async(e,t)=>{let n=e,r={...n.formModel},o=n.components||[];for(let e of o)e.key in r||(r[e.key]=e.default??``);let s;s=n.enable_fill_back&&n.fill_back_component_key?n.fill_back_component_key:o.find(e=>e.fillBack)?.key,s&&t&&(r[s]=t);let l=u(n,r),d=n.name;try{await i(d,{property:l})}catch(e){a(e,`Failed to send shortcut directly`)}}}}function XZt(e){let{emit:t,chatHelper:n,chatBusinessManager:r,cite:i,focusInput:a,getShortcutFromMessage:o,buildShortcutProperty:s,getRequestOptions:l,reportError:u,stopGeneration:d}=e,f=async e=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot delete messages: chatBusinessManager not initialized`);return}try{let t=r.value.messages.value,i=PXt(t,e[0]);if(!i){console.error(`[ChatBot] No user message found before AI messages`);return}let a=[i,...e];await n.value.message.deleteMessages(a)}catch(e){u(e,`Failed to delete messages`)}},p=async e=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot regenerate: chatBusinessManager not initialized`);return}let t=n.value.session.current?.value?.sessionCode;if(!t){console.error(`[ChatBot] Cannot regenerate: no active session`);return}try{await r.value.regenerateFromAIMessages(e,t)}catch(e){u(e,`Failed to regenerate`)}},m=async e=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot delete message: chatHelper not initialized`);return}try{let t=r.value.messages.value,i=t.findIndex(t=>t===e);if(i===-1){console.error(`[ChatBot] User message not found in messages list`);return}let a=[];for(let e=i+1;e<t.length;e++){let n=t[e];if(n.role===Wi.User)break;a.push(n)}let o=[e,...a];await n.value.message.deleteMessages(o)}catch(e){u(e,`Failed to delete user message`)}};return{handleAgentAction:async(e,r)=>{if(e.id===`cite`){i.value=r.filter(e=>e.role!==Wi.Reasoning).map(e=>typeof e.content==`string`?e.content:JSON.stringify(e.content||``)).join(`
|
|
3497
|
+
`),status:F9.Complete})}}handleFlowAgentRestartCustomEvent(e){let t=e.value;this.messageModule.list.value.forEach(e=>{e.role===P9.Activity&&e.activityType===N9.FlowAgent&&e.content[0].task_id===t[0].task_id&&(e.status=F9.Streaming)})}handleFlowAgentResultCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Activity&&t.activityType===N9.FlowAgent&&(t.content=e.value)}handleFlowAgentStartCustomEvent(e){let t=e.value;this.messageModule.plusMessage({role:P9.Activity,activityType:N9.FlowAgent,content:t.map(e=>({nodes:{},task_id:e.task_id,task_name:``,task_outputs:[],task_state:NYt.Created})),status:F9.Streaming})}handleFlowAgentUpdateCustomEvent(e){let t=e.value;this.messageModule.list.value.forEach(e=>{e.role===P9.Activity&&e.activityType===N9.FlowAgent&&e.content[0].task_id===t[0].task_id&&(e.content=t)})}handleInfoCustomEvent(e){let t=e.value;this.messageModule.plusMessage({role:P9.Info,messageId:t.messageId,content:t.content,status:F9.Complete})}handleKnowledgeRagEndCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Activity&&t.activityType===N9.KnowledgeRag&&(t.status=F9.Complete)}handleKnowledgeRagResultCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Activity&&t.activityType===N9.KnowledgeRag&&(t.content.referenceDocument=e.value)}handleKnowledgeRagStartCustomEvent(e){this.messageModule.plusMessage({role:P9.Activity,activityType:N9.KnowledgeRag,content:{content:``,referenceDocument:[]},status:F9.Streaming})}handleKnowledgeRagTextContentCustomEvent(e){let t=this.messageModule.getCurrentLoadingMessage();if(t&&t.role===P9.Activity&&t.activityType===N9.KnowledgeRag){let n=e.value;t.content.content=n.cover?n.chunk.content:t.content.content+n.chunk.content}}handleMessagesSnapshotEvent(e){e.messages&&e.messages.length>0&&(this.messageModule.list.value=e.messages)}handleRawEvent(e){}handleReferenceDocumentCustomEvent(e){this.messageModule.plusMessage({role:P9.Activity,activityType:N9.ReferenceDocument,content:e.value,status:F9.Complete})}handleRunErrorEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&(t.status=F9.Complete),this.messageModule.plusMessage({role:P9.Assistant,content:e.message,status:F9.Error})}handleRunFinishedEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&(t.status=F9.Complete),e.outcome?.type===PYt.Interrupt&&this.messageModule.plusMessage({role:P9.Interrupt,content:e,status:F9.Pending}),e.outcome?.type===PYt.Success&&t?.role===P9.Interrupt&&(t.content=e)}handleRunStartedEvent(e){}handleStateDeltaEvent(e){}handleStateSnapshotEvent(e){}handleStepFinishedEvent(e){}handleStepStartedEvent(e){}handleTempMessageCustomEvent(e){let t=e.value;this.messageModule.plusMessage({role:P9.Assistant,content:t.message,status:t.status})}handleApprovalResultCustomEvent(e){let t=e.value,n=this.messageModule.getCurrentLoadingMessage();n&&(n.content=t,n.status=F9.Complete)}handleTextMessageChunkEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t?t.content+=e.delta||``:this.messageModule.plusMessage({role:e.role,content:e.delta||``,status:F9.Complete,messageId:e.messageId})}handleTextMessageContentEvent(e){let t=this.messageModule.getMessageByMessageId(e.messageId);t&&(t.content+=e.delta)}handleTextMessageEndEvent(e){let t=this.messageModule.getMessageByMessageId(e.messageId);t&&(t.status=F9.Complete)}handleTextMessageStartEvent(e){let t=this.messageModule.getMessageByMessageId(e.messageId);if(t){t.content=``,t.status=F9.Streaming;return}this.messageModule.plusMessage({role:e.role,content:``,status:F9.Streaming,messageId:e.messageId})}handleThinkingEndEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Reasoning&&(t.duration=e.duration,t.status=F9.Complete)}handleThinkingStartEvent(e){this.messageModule.plusMessage({role:P9.Reasoning,content:[],status:F9.Streaming})}handleThinkingTextMessageContentEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Reasoning&&(t.content[t.content.length-1]+=e.delta)}handleThinkingTextMessageEndEvent(e){}handleThinkingTextMessageStartEvent(e){let t=this.messageModule.getCurrentLoadingMessage();t&&t.role===P9.Reasoning&&t.content.push(``)}handleToolCallArgsEvent(e){this.messageModule.list.value.forEach(t=>{t.role===P9.Assistant&&t.toolCalls&&t.toolCalls.forEach(t=>{t.id===e.toolCallId&&(t.function.arguments+=e.delta)})})}handleToolCallChunkEvent(e){}handleToolCallEndEvent(e){this.messageModule.list.value.forEach(t=>{t.role===P9.Assistant&&t.toolCalls&&t.toolCalls.some(t=>t.id===e.toolCallId)&&(t.status=F9.Complete)})}handleToolCallResultEvent(e){this.messageModule.plusMessage({role:P9.Tool,content:e.content,duration:e.duration,status:e.isError?F9.Error:F9.Complete,toolCallId:e.toolCallId,messageId:e.messageId})}handleToolCallStartEvent(e){this.messageModule.plusMessage({role:P9.Assistant,content:``,status:F9.Streaming,toolCalls:[{id:e.toolCallId,type:AYt.Function,function:{mcpName:e.mcpName,name:e.toolCallName,arguments:``,description:e.description}}]})}injectMessageModule(e){this.messageModule=e}onDone(){this.onDoneCallback?.()}onError(e){this.messageModule?.plusMessage({role:P9.Assistant,content:e.message,status:F9.Error}),this.onErrorCallback?.(e)}onMessage(e){let t=e;switch(this.onMessageCallback?.(t),t.type){case R9.ActivityDelta:this.handleActivityDeltaEvent(t);break;case R9.ActivitySnapshot:this.handleActivitySnapshotEvent(t);break;case R9.Custom:this.handleCustomEvent(t);break;case R9.MessagesSnapshot:this.handleMessagesSnapshotEvent(t);break;case R9.Raw:this.handleRawEvent(t);break;case R9.RunError:this.handleRunErrorEvent(t);break;case R9.RunFinished:this.handleRunFinishedEvent(t);break;case R9.RunStarted:this.handleRunStartedEvent(t);break;case R9.StateDelta:this.handleStateDeltaEvent(t);break;case R9.StateSnapshot:this.handleStateSnapshotEvent(t);break;case R9.StepFinished:this.handleStepFinishedEvent(t);break;case R9.StepStarted:this.handleStepStartedEvent(t);break;case R9.TextMessageChunk:this.handleTextMessageChunkEvent(t);break;case R9.TextMessageContent:this.handleTextMessageContentEvent(t);break;case R9.TextMessageEnd:this.handleTextMessageEndEvent(t);break;case R9.TextMessageStart:this.handleTextMessageStartEvent(t);break;case R9.ThinkingEnd:this.handleThinkingEndEvent(t);break;case R9.ThinkingStart:this.handleThinkingStartEvent(t);break;case R9.ThinkingTextMessageContent:this.handleThinkingTextMessageContentEvent(t);break;case R9.ThinkingTextMessageEnd:this.handleThinkingTextMessageEndEvent(t);break;case R9.ThinkingTextMessageStart:this.handleThinkingTextMessageStartEvent(t);break;case R9.ToolCallArgs:this.handleToolCallArgsEvent(t);break;case R9.ToolCallChunk:this.handleToolCallChunkEvent(t);break;case R9.ToolCallEnd:this.handleToolCallEndEvent(t);break;case R9.ToolCallResult:this.handleToolCallResultEvent(t);break;case R9.ToolCallStart:this.handleToolCallStartEvent(t);break;default:break}}onStart(){this.onStartCallback?.()}},LYt=function(e){return e.Running=`running`,e.Finished=`finished`,e.Failed=`failed`,e.Cancelled=`cancelled`,e}({}),RYt=5,zYt=1e3,BYt=8e3,VYt=e=>Math.min(zYt*2**(e-1),BYt),HYt=e=>{if(e.name===`AbortError`)return!1;let t=e.response?.status,n=e.message.match(/status code (\d+)/i),r=t??(n?Number(n[1]):void 0);if(r!==void 0){if(r===408||r===429)return!0;if(r>=400&&r<500)return!1;if(r>=500)return!0}return!0},UYt=(e,t)=>{let n=sn(null),r=sn(!1),i=sn(!1),a=sn([]),o=sn(!1),s=t||new z9,l=null,u=null,d=null,f=!1,p=0,m=!1,h=0,g=null,_=null,v=null,y=(t,n)=>{o.value=!0;let r=e.http?.agent.getLlms(t,n);return r?r.then(e=>(a.value=e,e)).catch(e=>{throw a.value=[],e}).finally(()=>{o.value=!1}):(o.value=!1,a.value=[],Promise.resolve([]))},b=()=>(r.value=!0,e.http?.agent.getAgentInfo().then(e=>{n.value=e}).finally(()=>{r.value=!1})),x=(t,n)=>{let r=t.promptSetting?.content?.at(-1);r?.role===P9.Pause&&e.message?.createAndPlusMessage({role:P9.Assistant,content:r.content,status:F9.Complete,sessionCode:n,property:{extra:{pause:!0}}})},S=(t,n,r,i,a)=>e.http?.message.userOperation(t,n,r,i).then(()=>{n===I9.ApprovalCancel?(N(),M(t,a)):k({sessionCode:t,config:i,model:a})}),C=(e=!1)=>{if(g&&=(clearTimeout(g),null),_){let t=_;_=null,t(e)}},w=e=>new Promise(t=>{_=t,g=setTimeout(()=>{g=null,_=null,t(!0)},e)}),T=()=>{f=!1,p=0,m=!1,C(!1)},E=()=>{let t=e.message?.list.value;if(t?.length)for(;t.length>0;){let e=t[t.length-1];if(e.role===P9.User)break;if(e.status===F9.Streaming||e.status===F9.Pending){t.pop();continue}break}},D=t=>t===e.session?.current?.value?.sessionCode,O=async(t,n)=>{let r=()=>n===h&&!f;if(!r()||!D(t))return`failed`;try{await e.session?.getSession(t)}catch{}if(!r()||!D(t))return`failed`;if(e.session?.current.value?.status!==LYt.Running)return`finished`;if(p>=RYt||(p+=1,i.value=!0,!await w(VYt(p))||!r()||!D(t)))return`failed`;if(e.session?.current.value?.status!==LYt.Running)return`finished`;if(!r())return`failed`;E();let a=e.message?.list.value.at(-1)?.id,o=v;return k({sessionCode:t,model:o?.model,url:o?.url,config:o?.config,lastMessageId:a===void 0?void 0:String(a),isReconnect:!0}),`reconnected`},k=async({sessionCode:t,model:n,url:r,config:a,resume:o,input:u,lastMessageId:d,isReconnect:p=!1})=>{p||T(),v={sessionCode:t,model:n,url:r,config:a};let g=++h,_=l;l=new AbortController,_?.abort?.();let y=()=>g===h;s instanceof z9&&s.injectMessageModule(e.message),u&&e.message?.list.value.push({role:P9.User,content:u,status:F9.Complete,sessionCode:t});let b=()=>{y()&&(i.value=!1,s.onDone?.call(s),u&&e.http?.message?.getMessages(t).then(t=>{let n=e.message?.list.value.findLast(e=>e.role===P9.User),r=t.findLast(e=>e.role===P9.User);n&&r&&(n.id=r.id)}),M(t))},x=e=>{y()&&(i.value=!1,s.onError?.call(s,e))},S=()=>{if(y()&&!f){if(m){b();return}O(t,g).then(e=>{if(y()&&e!==`reconnected`){if(e===`finished`){b();return}if(f||!D(t)){i.value=!1;return}x(Error(`Connection lost, please try again`))}})}},C=e=>{if(!(!y()||f)){if(!HYt(e)){x(e);return}O(t,g).then(n=>{if(y()&&n!==`reconnected`){if(n===`finished`){b();return}if(f||!D(t)){i.value=!1;return}x(e)}})}},w=e=>{if(!y())return;let t=e;(t?.type===R9.RunFinished||t?.type===R9.RunError)&&(m=!0),s.onMessage?.call(s,e)},E=()=>{y()&&(i.value=!0,s.onStart?.call(s))};e.http?.fetchClient.streamRequest({url:r||`chat_completion/`,method:`POST`,data:{session_code:t,model:n,input:u,execute_kwargs:{stream:!0,persist_input:!!u,last_message_id:d,resume:o}},...a,controller:l,onDone:S,onError:C,onMessage:w,onStart:E}).catch(()=>{})},A=async(t,n,r,i,a,o)=>{await e.message?.createAndPlusMessage({role:P9.User,content:t,status:F9.Complete,sessionCode:n,...a&&{property:a}}),k({sessionCode:n,model:o,url:r,config:i})},j=(t,n,r,i)=>{if(e.session?.current.value?.status===LYt.Running){let a=e.message?.list.value.at(-1)?.id;k({sessionCode:t,model:i,url:n,config:r,lastMessageId:a})}},M=(t,n)=>{let r=e.message?.list.value.at(-1),i=r?.content?.outcome?.type===PYt.Interrupt?r.content.outcome.interrupts.find(e=>[FYt.Pending,FYt.Draft].includes(e.metadata?.ticket?.status)):void 0;r?.role===P9.Interrupt&&i&&(N(),u=new AbortController,e.http?.session.isResumeSession(t,{controller:u}).then(r=>{r?k({sessionCode:t,model:n,resume:{interruptId:i.id,status:IYt.Resolved}}):d=setTimeout(()=>{t===e.session?.current?.value?.sessionCode&&M(t,n)},1e4)}))},N=()=>{clearTimeout(d),d=null,u?.abort?.(),u=null},P=()=>{f=!0,h+=1,C(!1),N(),i.value=!1,l?.abort?.(),l=null};return{info:n,isInfoLoading:r,isChatting:i,models:a,isModelsLoading:o,chat:A,handleRole:x,resendMessage:async(t,n,r,i,a,o)=>{let s=e.message?.list.value||[],l=s.findIndex(e=>String(e.id)===t);if(l===-1)throw Error(`Message not found: ${t}`);let u=s[l];if(u.role!==P9.User)throw Error(`Can only resend user messages`);let d=u.content,f=u.property,p=r??d,m=s.slice(l),h=e.message?.deleteMessages(m),g=e.message?.createAndPlusMessage({role:P9.User,content:p,status:F9.Complete,sessionCode:n,...f&&{property:f}});k({sessionCode:n,model:o,url:i,config:a}),Promise.all([h,g]).catch(e=>{console.error(`[resendMessage] API error:`,e)})},resumeStreamingChat:j,abortChat:P,stopChat:async t=>e.http.message?.stopChat(t),getAgentInfo:b,getLlms:y,reset:e=>{P(),s=e||new z9,n.value=null,r.value=!1,i.value=!1,a.value=[],o.value=!1,v=null,p=0,m=!1},pollResumeSession:M,clearLongPollTimer:N,userOperationStreamRequest:S,streamRequest:k}};function WYt(e){return on(e)}function B9(e){if(e==null)return;let t=e,n=0;for(;n<32;){if(n+=1,typeof t==`function`){t=t();continue}if(WYt(t)){t=z(t);continue}break}return n>=32&&console.warn(`[chat-helper] resolveRequestValue: exceeded max unwrap depth`),t}var GYt=class{handlers=[];clear(){this.handlers=[]}eject(e){this.handlers[e]&&(this.handlers[e]=null)}forEach(e){this.handlers.forEach(t=>{t!==null&&e(t)})}use(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1}},KYt=class e{defaults;interceptors;globalErrorHandler;ignoreErrorPatterns=[];constructor(e={}){this.defaults=H9({method:`GET`,headers:{"Content-Type":`application/json`},timeout:3e4,responseType:`json`,credentials:`include`,mode:`cors`,validateStatus:e=>e>=200&&e<300},e),this.interceptors={request:new GYt,response:new GYt}}onError(e,t){this.globalErrorHandler=e,t?.ignoreErrors&&(this.ignoreErrorPatterns=t.ignoreErrors)}shouldIgnoreError(e){let t=e.config?.url||``,n=e.config?.baseURL||``,r=n&&!t.startsWith(`http`)?n+t:t;return this.ignoreErrorPatterns.some(e=>typeof e==`string`?t.includes(e)||r.includes(e):e.test(t)||e.test(r))}dispatchError(e){this.globalErrorHandler&&!this.shouldIgnoreError(e)&&this.globalErrorHandler(e)}applyResponseErrorInterceptors(e){let t=e;return this.interceptors.response.forEach(e=>{e.rejected&&(t=e.rejected(t))}),t}create(t){return new e(H9(this.defaults,t||{}))}delete(e,t,n){return this.request({...n,url:e,method:`DELETE`,params:t})}get(e,t,n){return this.request({...n,url:e,method:`GET`,params:t})}head(e,t,n){return this.request({...n,url:e,method:`HEAD`,params:t})}options(e,t,n){return this.request({...n,url:e,method:`OPTIONS`,params:t})}patch(e,t,n){return this.request({...n,url:e,method:`PATCH`,data:t})}post(e,t,n){return this.request({...n,url:e,method:`POST`,data:t})}prepareRequest(e,t=!1){let n=H9(this.defaults,e);this.interceptors.request.forEach(e=>{if(e.fulfilled)try{n=e.fulfilled(n)}catch(t){throw e.rejected?e.rejected(t):t}});let r=n.url||``;n.baseURL&&!r.startsWith(`http`)&&(r=n.baseURL+r),r=qYt(r,n.params);let i=XYt(n.data),a=new Headers(XYt(n.headers));t&&!a.has(`Accept`)&&a.set(`Accept`,`text/event-stream`),i!=null&&(n.transformRequest?i=n.transformRequest(i,XYt(n.headers)):a.get(`Content-Type`)?.includes(`application/json`)&&typeof i==`object`&&!(i instanceof FormData)&&!(i instanceof Blob)&&!(i instanceof ArrayBuffer)&&(i=JSON.stringify(i)));let o=n.controller??new AbortController,s={method:n.method,credentials:n.credentials,mode:n.mode,headers:a,body:i,signal:o.signal};return{url:r,requestConfig:n,fetchConfig:s,controller:o}}put(e,t,n){return this.request({...n,url:e,method:`PUT`,data:t})}async request(e){let{url:t,fetchConfig:n,requestConfig:r,controller:i}=this.prepareRequest(e),a=!1,o=r.timeout&&r.timeout>0?setTimeout(()=>{a=!0,i.abort()},r.timeout):void 0;try{let e=await fetch(t,n);o&&clearTimeout(o);let i,a=r.responseType||`json`;try{switch(a){case`json`:i=await e.json();break;case`text`:i=await e.text();break;case`blob`:i=await e.blob();break;case`arrayBuffer`:i=await e.arrayBuffer();break;case`formData`:i=await e.formData();break;default:i=await e.json()}}catch{i=null}r.transformResponse&&(i=r.transformResponse(i));let s={data:i,status:e.status,statusText:e.statusText,headers:e.headers,config:r};if(!(r.validateStatus||this.defaults.validateStatus)(e.status)){let{code:t,message:n}=JYt(s.data,`Request failed with status code ${e.status}`);throw V9(n,r,t,s)}let l=s;this.interceptors.response.forEach(e=>{if(e.fulfilled)try{l=e.fulfilled(l)}catch(t){throw e.rejected?e.rejected(t):t}}),l instanceof Promise&&(l=await l);let u=l.data;if(!u)return;if(![0,`success`].includes(u.code)){let{code:e,message:t}=JYt(u,`Request failed with code ${u.code}`);throw V9(t,r,e,l)}return u.data}catch(e){if(o&&clearTimeout(o),e instanceof Error&&e.name===`AbortError`&&!a){console.warn(`User canceled request`,e.message);return}let t=a?V9(`timeout of ${r.timeout}ms exceeded`,r,`ECONNABORTED`,void 0):e.isAxiosError===!0?e:V9(e.message,r,e.code,void 0);throw this.dispatchError(t),this.applyResponseErrorInterceptors(t)}}stream(e,t){return this.streamRequest({...t,url:e})}async streamRequest(e){let t=!1,n=e.onError,r=e=>{if(!t){let n=e;n.config||=s,this.dispatchError(n),t=!0}n?.(e)},i={...e,onError:r},{url:a,fetchConfig:o,requestConfig:s,controller:l}=this.prepareRequest(i,!0),u,d=()=>{u?.cancel().catch(()=>{})};try{let e=await fetch(a,o);if(!(s.validateStatus||this.defaults.validateStatus)(e.status)){let t=null;try{t=await e.json()}catch{t=null}let{code:n,message:i}=JYt(t,`Request failed with status code ${e.status}`);r(V9(i,s,n,void 0));return}if(i.onStart?.(),u=e.body?.pipeThrough(new window.TextDecoderStream).getReader(),!u){r(Error(`IResponse body is not readable`));return}if(l.signal.addEventListener(`abort`,d,{once:!0}),l.signal.aborted){d(),i.onDone?.();return}let t=``,n=e=>{try{return JSON.parse(e),!0}catch{return!1}};for(;;){let{value:e,done:r}=await u.read();if(r){i.onDone?.();break}(t+e.toString()).split(`
|
|
3498
|
+
`).forEach(e=>{let r=e.replace(`data:`,``).trim();if(n(r)){let e=JSON.parse(r);i.onMessage?.(e),t=``}else r&&(t=r)})}}catch(e){if(e instanceof Error){if(e.name===`AbortError`){i.onDone?.();return}r(e)}throw e}finally{l.signal.removeEventListener(`abort`,d)}}};function qYt(e,t){if(!t)return e;let n=new URLSearchParams;Object.keys(t).forEach(e=>{let r=t[e];r!=null&&(Array.isArray(r)?r.forEach(t=>n.append(e,String(t))):n.append(e,String(r)))});let r=n.toString();return r?`${e}${e.includes(`?`)?`&`:`?`}${r}`:e}function JYt(e,t){let n=`ERR_BAD_RESPONSE`;if(!e||typeof e!=`object`)return{code:n,message:t};let r=e;return r.error?.message?{code:r.error.code??n,data:r.error.data,message:YYt(r.error.message,t)}:r.message?{code:r.code??n,data:r.data,message:YYt(r.message,t)}:r.detail?{code:r.code??n,data:r.data,message:YYt(r.detail,t)}:{code:r.code??n,data:r.data,message:t}}function YYt(e,t){if(typeof e==`string`)return e||t;try{return JSON.stringify(e)||t}catch{return t}}function V9(e,t,n,r){let i=Error(e);return i.config=t,i.code=String(n),i.response=r,i.isAxiosError=!0,i}function XYt(e){return B9(e)}function ZYt(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function H9(e,t){let n={...e};for(let r in t){let i=t[r];if(ZYt(i)){let t=e[r];n[r]=H9(t||{},i)}else n[r]=i}return n}new KYt;var QYt=new Set([`POST`,`PUT`,`PATCH`,`DELETE`]),$Yt=new Set([`GET`,`HEAD`,`OPTIONS`]);function eXt(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function tXt(e,t){let{headers:n,data:r}=t.requestData;!n&&!r||e.interceptors.request.use(e=>{let t=e,i=(e.method??`GET`).toUpperCase();if(n){let r=B9(n);if(r&&Object.keys(r).length>0){let n=B9(e.headers)??{};t={...t,headers:{...n,...r}}}}if(r){let n=B9(r);if(n&&Object.keys(n).length>0){if(QYt.has(i)){let r=B9(e.data);r==null?t={...t,data:n}:eXt(r)?t={...t,data:{...n,...r}}:console.warn(`[chat-helper] requestData.data 无法注入:当前请求体不是普通对象(FormData/Blob/string 等),已跳过合并。`,{method:i,existingType:typeof r})}else if($Yt.has(i)){let r=e.params??{};t={...t,params:{...n,...r}}}}}return t})}var nXt=e=>{let t=new KYt({baseURL:e.requestData.urlPrefix});return tXt(t,e),e.interceptors?.request&&t.interceptors.request.use(e.interceptors.request),e.interceptors?.response&&t.interceptors.response.use(e.interceptors.response),{fetchClient:t,reset:e=>{t.defaults.baseURL=e.requestData.urlPrefix,t.interceptors.request.clear(),t.interceptors.response.clear(),tXt(t,e),e.interceptors?.request&&t.interceptors.request.use(e.interceptors.request),e.interceptors?.response&&t.interceptors.response.use(e.interceptors.response)}}},rXt=e=>({conversationSettings:{openingRemark:e?.conversation_settings?.opening_remark,predefinedQuestions:e?.conversation_settings?.predefined_questions,commands:e?.conversation_settings?.commands?.map(e=>({id:e.id,name:e.name,alias:e.alias,icon:e.icon,components:e.components.map(e=>({type:e.type,name:e.name,key:e.key,placeholder:e.placeholder,default:e.default,required:e.required,fillBack:e.fill_back,fillRegx:e.fill_regx,rows:e.rows,min:e.min,max:e.max,options:e.options})),content:e.content,agentId:e.agent_id,status:e.status,supportUpload:e.support_upload})),enableChatSession:e?.conversation_settings?.enable_chat_session},promptSetting:e?.prompt_setting?{content:e.prompt_setting.content,supportUpload:e.prompt_setting.support_upload}:void 0,agentName:e?.agent_name,relatedSkills:e?.related_skills?.map(e=>({id:e.id,skill_name:e.skill_name,skill_code:e.skill_code,description:e.description,icon:e.icon})),chatGroup:e?.chat_group?{enabled:e.chat_group.enabled,staff:e.chat_group.staff,username:e.chat_group.username}:void 0,saasUrl:e?.saas_url,resources:e?.resources}),iXt=e=>({id:e.id??0,llm_code:e.llm_code,llm_name:e.llm_name,llm_type:e.llm_type??`chat.completion`,icon:e.icon??``,description:e.description??``,base_model:e.base_model,max_token_size:e.max_token_size??0,property:e.property??{},space_auth_mode:e.space_auth_mode??``,user_auth_mode:e.user_auth_mode??``,tag_names:e.tag_names}),aXt=e=>Array.isArray(e)?e.map(iXt):[],oXt=e=>({getAgentInfo:t=>e.get(`agent/info/`,void 0,t).then(rXt),getLlms:(t,n)=>{let r={llm_type:t?.llm_type??`chat.completion`};return t?.fuzzy&&(r.fuzzy=t.fuzzy),t?.supports&&(r.supports=t.supports),e.get(`llms/`,r,n).then(aXt)}}),sXt=e=>{let t={id:e.id,messageId:e.message_id,name:e.name,role:e.role,sessionCode:e.session_code,status:e.status};switch(e.role){case P9.Activity:{let n=e,r=e=>e.map(e=>({name:e.name,originFileUrl:e.origin_file_url,url:e.url})),i;switch(n.activity_type){case N9.ReferenceDocument:i=r(n.content);break;case N9.KnowledgeRag:{let e=n.content;i={content:e.content,referenceDocument:r(e.reference_document)};break}case N9.FlowAgent:case N9.ArtifactsGenerated:default:i=n.content;break}return{...t,activityType:n.activity_type,content:i,property:n.property,role:n.role}}case P9.Assistant:{let n=e;return{...t,content:n.content,property:n.property,role:n.role,toolCalls:n.tool_calls?.map(e=>({function:{arguments:e.function.arguments,name:e.function.name,description:e.function.description,mcpName:e.function.mcp_name},id:e.id,type:e.type}))}}case P9.Developer:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Guide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Hidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Info:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Pause:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Placeholder:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Reasoning:{let n=e;return{...t,content:n.content,duration:n.duration,role:n.role}}case P9.System:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateHidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Tool:{let n=e;return{...t,content:n.content,duration:n.duration,error:n.error,role:n.role,toolCallId:n.tool_call_id}}case P9.User:{let n=e,r=n.content;return{...t,content:Array.isArray(r)?r.map(e=>{if(e.type===AYt.Binary){let t=e;return{data:t.data,filename:t.filename,id:t.id,mimeType:t.mime_type,type:t.type,url:t.url}}return e}):r,property:n.property,role:n.role}}case P9.Interrupt:return{...t,...e}}},cXt=e=>{let t={id:e.id,message_id:e.messageId,name:e.name,role:e.role,session_code:e.sessionCode,status:e.status};switch(e.role){case P9.Activity:{let n=e,r=e=>e.map(e=>({name:e.name,origin_file_url:e.originFileUrl,url:e.url})),i;switch(n.activityType){case N9.ReferenceDocument:i=r(n.content);break;case N9.KnowledgeRag:{let e=n.content;i={content:e.content,reference_document:r(e.referenceDocument)};break}case N9.FlowAgent:case N9.ArtifactsGenerated:default:i=n.content;break}return{...t,activity_type:n.activityType,content:i,property:n.property,role:n.role}}case P9.Assistant:{let n=e;return{...t,property:n.property,content:n.content,role:n.role,tool_calls:n.toolCalls?.map(e=>({function:{arguments:e.function.arguments,name:e.function.name,description:e.function.description,mcp_name:e.function.mcpName},id:e.id,type:e.type}))}}case P9.Developer:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Guide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Hidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.HiddenUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Info:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Pause:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Placeholder:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Reasoning:{let n=e;return{...t,content:n.content,duration:n.duration,role:n.role}}case P9.System:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateAssistant:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateGuide:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateHidden:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateSystem:{let n=e;return{...t,content:n.content,role:n.role}}case P9.TemplateUser:{let n=e;return{...t,content:n.content,role:n.role}}case P9.Tool:{let n=e;return{...t,content:n.content,duration:n.duration,error:n.error,role:n.role,tool_call_id:n.toolCallId}}case P9.User:{let n=e,r=n.content;return{...t,content:Array.isArray(r)?r.map(e=>{if(e.type===AYt.Binary){let t=e;return{data:t.data,filename:t.filename,id:t.id,mime_type:t.mimeType,type:t.type,url:t.url}}return e}):r,property:n.property,role:n.role}}case P9.Interrupt:return{...t,...e}}},lXt=e=>({getMessages:(t,n,r,i)=>e.get(`session_content/content/`,{session_code:t,limit:n,fuzzy:i},r).then(e=>e.map(sXt)),plusMessage:(t,n)=>e.post(`session_content/`,cXt(t),n).then(sXt),modifyMessage:(t,n)=>e.put(`session_content/${t.id}/`,cXt(t),n).then(sXt),deleteMessage:(t,n)=>e.delete(`session_content/${t}/`,void 0,n),batchDeleteMessages:(t,n)=>e.post(`session_content/batch_delete/`,{ids:t},n),shareMessages:(t,n,r,i)=>e.post(`share/`,{session_code:t,content_ids:n,...r?{expired_at:r}:{}},i),stopChat:(t,n)=>e.post(`session_content/stop/`,{session_code:t},n),getFlowAgentTaskInfo:(t,n)=>e.get(`flow_agent/${t}/task_info/`,void 0,n),getFlowAgentTaskNodeInfo:(t,n,r)=>e.get(`flow_agent/${t}/task_node_info/${n}/`,void 0,r),retryFlowAgentTaskNode:(t,n,r,i)=>e.post(`flow_agent/${t}/node/${n}/retry/`,{task_id:r},i),skipFlowAgentTaskNode:(t,n,r,i)=>e.post(`flow_agent/${t}/node/${n}/skip/`,{task_id:r},i),userOperation:(t,n,r,i)=>e.post(`user_operation/`,{session_code:t,operation:n,payload:r},i)}),U9=e=>({sessionCode:e.session_code,sessionContentCount:e.session_content_count,sessionName:e.session_name,isTemporary:e.is_temporary,model:e.model,comment:e.comment,rate:e.rate,updatedAt:e.updated_at,createdAt:e.created_at,status:e.status,roleInfo:e.role_info?{collectionId:e.role_info.collection_id,collectionName:e.role_info.collection_name,content:e.role_info.content,variables:e.role_info.variables}:void 0,sessionProperty:{isAutoClear:e.session_property?.is_auto_clear,isAutoCalcPrompt:e.session_property?.is_auto_clac_prompt,labels:e.session_property?.labels}}),uXt=e=>({session_code:e.sessionCode,session_content_count:e.sessionContentCount,session_name:e.sessionName,is_temporary:e.isTemporary,model:e.model,comment:e.comment,rate:e.rate,updated_at:e.updatedAt,created_at:e.createdAt,status:e.status,role_info:e.roleInfo?{collection_id:e.roleInfo.collectionId,collection_name:e.roleInfo.collectionName,content:e.roleInfo.content,variables:e.roleInfo.variables}:void 0,session_property:{is_auto_clear:e.sessionProperty?.isAutoClear,is_auto_clac_prompt:e.sessionProperty?.isAutoCalcPrompt,labels:e.sessionProperty?.labels}}),dXt=e=>({session_code:e.sessionCode,session_content_ids:e.sessionContentIds,rate:e.rate,comment:e.comment,labels:e.labels}),fXt=e=>({sessionCode:e.session_code,sessionContentIds:e.session_content_ids,rate:e.rate,comment:e.comment,labels:e.lables}),pXt=`upload_file`,mXt=20,hXt=600,gXt=2e4,_Xt=e=>{if(Array.isArray(e))return{page:1,numPages:1,count:e.length,results:e.map(U9)};let t=Array.isArray(e?.results)?e.results:[];return{page:e?.page??1,numPages:e?.num_pages??1,count:e?.count??t.length,results:t.map(U9)}},vXt=e=>{let t=e.split(`.`).pop();if(!t||t===e)return``;let n=t.replace(/[^A-Za-z0-9]/g,``).slice(0,20).toLowerCase();return n?`.${n}`:``},yXt=e=>`${pXt}_${`${Date.now()}_${Math.random().toString(36).slice(2,8)}`}${vXt(e.name)}`,bXt=e=>`attachment; filename="${e}"`,xXt=e=>({clearSession:(t,n)=>e.post(`chat_completion/${t}/clear/`,void 0,n),getSessions:(t,n)=>e.get(`session/`,{page:t?.page??1,page_size:t?.page_size??mXt},n).then(_Xt),plusSession:(t,n)=>e.post(`session/`,uXt(t),n).then(e=>U9(e)),modifySession:(t,n)=>e.put(`session/${t.sessionCode}/`,uXt(t),n).then(e=>U9(e)),deleteSession:(t,n)=>e.delete(`session/${t}/`,void 0,n),batchDeleteSessions:(t,n)=>e.post(`session/batch_delete/`,{session_codes:t},n),getSession:(t,n)=>e.get(`session/${t}/`,void 0,n).then(e=>U9(e)),postSessionFeedback:(t,n)=>e.post(`session_feedback/`,dXt(t),n).then(e=>fXt(e)),getSessionFeedbackReasons:(t,n)=>e.get(`session_feedback/reasons/`,{rate:t},n),renameSession:(t,n)=>e.post(`session/${t}/ai_rename/`,void 0,n).then(e=>U9(e)),uploadFile:(t,n,r)=>{let i=yXt(n),a=encodeURIComponent(i),o=B9(r?.headers)??{};return n.arrayBuffer().then(n=>e.post(`session/${t}/upload/${a}/`,n,{...r,headers:{...o,"Content-Disposition":bXt(i)}}))},getPvFileDownloadUrl:(t,n,r,i)=>{let a=r?.expiresIn??hXt,o=r?.timeout??gXt;return e.get(`session/${t}/pv_files/download_url/`,{expires_in:a,path:n},{...i,timeout:i?.timeout??o})},isResumeSession:(t,n)=>e.get(`session/${t}/is_resume/`,void 0,n)}),SXt=e=>({agent:oXt(e),session:xXt(e),message:lXt(e),fetchClient:e}),CXt=e=>{let{fetchClient:t,reset:n}=nXt(e);return{...SXt(t),reset:n,onError:t.onError.bind(t)}},wXt=()=>({agent:null,http:null,message:null,session:null,registerAgent(e){this.agent=e},registerHttp(e){this.http=e},registerMessage(e){this.message=e},registerSession(e){this.session=e}}),TXt=20,EXt=e=>{let t=sn([]),n=sn(null),r=sn(0),i=sn(0),a=sn(0),o=sn(!1),s=sn(!1),l=sn(!1),u=sn(!1),d=sn(!1),f=sn(!1),p=sn(!1),m=sn(!1),h=fi(()=>r.value>0&&r.value<i.value),g=e=>{t.value=t.value.map(t=>t.sessionCode===e.sessionCode?{...t,...e}:t),n.value?.sessionCode===e.sessionCode&&(n.value=t.value.find(t=>t.sessionCode===e.sessionCode)??{...n.value,...e})},_=n=>{s.value=!0;let o={page:n?.page??1,page_size:n?.page_size??TXt};return e.http?.session.getSessions(o).then(e=>{t.value=e.results,r.value=e.page,i.value=e.numPages,a.value=e.count}).finally(()=>{s.value=!1})},v=async(n=TXt)=>{if(!(!h.value||s.value||l.value)){l.value=!0;try{let o=await e.http?.session.getSessions({page:r.value+1,page_size:n});if(!o)return;let s=new Set(t.value.map(e=>e.sessionCode)),l=o.results.filter(e=>!s.has(e.sessionCode));t.value=[...t.value,...l],r.value=o.page,i.value=o.numPages,a.value=o.count}finally{l.value=!1}}},y=async(r,i)=>{e.agent?.abortChat();let a=i?.loadMessages!==!1,o=t.value.find(e=>e.sessionCode===r);!a&&o?n.value=o:await b(r),a?(await e.message?.getMessages(r),e.agent?.resumeStreamingChat(r),e.agent?.pollResumeSession(r)):e.message&&(e.message.list.value=[])},b=t=>(o.value=!0,e.http?.session.getSession(t).then(e=>{n.value=e}).finally(()=>{o.value=!1}));return{list:t,current:n,page:r,numPages:i,count:a,hasMore:h,isCurrentLoading:o,isListLoading:s,isLoadingMore:l,isCreateLoading:u,isUpdateLoading:d,isDeleteLoading:f,isBatchDeleteLoading:p,getSessions:_,loadMoreSessions:v,chooseSession:y,getSession:b,createSession:async(n,r)=>{u.value=!0;try{let i=await e.http?.session.plusSession(n);i&&(t.value.unshift(i),a.value+=1,await y(i.sessionCode,{loadMessages:r?.loadMessages??!1}))}finally{u.value=!1}},updateSession:t=>(d.value=!0,e.http?.session.modifySession(t).then(e=>{g(e)}).finally(()=>{d.value=!1})),deleteSession:async r=>{f.value=!0;try{await e.http?.session.deleteSession(r),t.value=t.value.filter(e=>e.sessionCode!==r),a.value=Math.max(0,a.value-1),n.value?.sessionCode===r&&t.value[0]?.sessionCode&&await y(t.value[0].sessionCode)}finally{f.value=!1}},batchDeleteSessions:async r=>{if(r.length!==0){p.value=!0;try{await e.http?.session.batchDeleteSessions(r);let i=new Set(r),o=t.value.length;t.value=t.value.filter(e=>!i.has(e.sessionCode));let s=o-t.value.length;a.value=Math.max(0,a.value-s),n.value&&i.has(n.value.sessionCode)&&(t.value.length>0?await y(t.value[0].sessionCode):(n.value=null,e.message&&(e.message.list.value=[])))}finally{p.value=!1}}},postSessionFeedback:t=>e.http?.session.postSessionFeedback(t),getSessionFeedbackReasons:t=>e.http?.session.getSessionFeedbackReasons(t),renameSession:t=>(m.value=!0,e.http?.session.renameSession(t).then(e=>(g({sessionCode:e.sessionCode,sessionName:e.sessionName}),e)).finally(()=>{m.value=!1})),uploadFile:(t,n)=>e.http?.session.uploadFile(t,n),getPvFileDownloadUrl:(t,n,r)=>e.http?.session.getPvFileDownloadUrl(t,n,r),reset:()=>{t.value=[],n.value=null,r.value=0,i.value=0,a.value=0,o.value=!1,s.value=!1,l.value=!1,u.value=!1,d.value=!1,f.value=!1,p.value=!1,m.value=!1}}},DXt=e=>{let t=wXt(),n=CXt(e),r=UYt(t,e.protocol),i=MYt(t),a=EXt(t);return t.registerHttp(n),t.registerMessage(i),t.registerAgent(r),t.registerSession(a),{agent:r,session:a,message:i,http:n,reset:e=>{n.reset(e),r.reset(e.protocol),i.reset(),a.reset()},onError:n.onError}},OXt=new Set([`context_type`,`__label`,`__key`,`__value`]);function kXt(e,t){return{urlPrefix:e,headers:()=>B9(un(t)?.headers),data:()=>B9(un(t)?.data)}}function AXt(e){return e?Array.isArray(e)?e.map(e=>{if(e.__key)return e;let t=Object.entries(e).filter(([e])=>!OXt.has(e));if(t.length===0)return e;let[n,r]=t[0];return{...e,[n]:r,context_type:e.context_type??`input`,__label:e.__label??n,__key:e.__key??n,__value:e.__value??r}}):Object.entries(e).map(([e,t])=>({[e]:t,context_type:`input`,__label:e,__key:e,__value:t})):[]}function jXt(e,t){if(!t)return e;let n=t()?.context;if(!n)return e;let r=AXt(n);return r.length===0?e:MXt(e,r)}function MXt(e,t){if(t.length===0)return e??{};let n=e??{},r=n.extra??{},i=r.context??[],a=new Set(t.map(e=>e.__key).filter(Boolean)),o=i.filter(e=>{let t=e.__key;return!t||!a.has(t)});return{...n,extra:{...r,context:[...o,...t]}}}function NXt(e){return e.some(e=>{if(!(`property`in e))return!0;let{property:t}=e;return!t?.extra?.pause})}function PXt(e,t){let n=null;for(let r of e)if(r.role===`user`&&r.id!==void 0&&(n=r),r===t)break;return n}function FXt(e,t){let n=PXt(e,t);if(n?.id!==void 0)return typeof n.id==`number`?n.id:Number(n.id)}function IXt(e){if(!e)return[];if(typeof e!=`string`)return[{type:`text`,content:e}];let t=[],n=/```custom-component\s*\n([\s\S]*?)\n```/g,r=0,i;for(;(i=n.exec(e))!==null;){if(i.index>r){let n=e.slice(r,i.index).trim();n&&t.push({type:`text`,content:n})}try{let e=JSON.parse(i[1]);t.push({type:`custom`,data:e,raw:i[1]})}catch{t.push({type:`text`,content:i[0]})}r=i.index+i[0].length}if(r<e.length){let n=e.slice(r).trim();n&&t.push({type:`text`,content:n})}return t}var LXt=e=>{if(e instanceof Error)return e;if(typeof e==`string`)return Error(e);if(e&&typeof e==`object`){let{message:t}=e;if(typeof t==`string`&&t)return Error(t);try{return Error(JSON.stringify(e)??String(e))}catch{return Error(String(e))}}return Error(String(e))},RXt=e=>{let t=document.cookie.match(RegExp(`(^| )${e}=([^;]*)(;|$)`));return t?t[2]:``},zXt=e=>e.endsWith(`/`)?e:`${e}/`,BXt=e=>{if(!e)return e;try{let t=new URL(e,window.location.origin);return t.protocol=window.location.protocol,zXt(t.toString())}catch(t){return console.warn(`Failed to normalize URL:`,t),zXt(e)}};async function VXt(e){if(typeof navigator<`u`&&`clipboard`in navigator)try{return await navigator.clipboard.writeText(e),!0}catch{}let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.left=`-9999px`,t.style.top=`-9999px`,t.style.opacity=`0`,document.body.appendChild(t),t.focus(),t.select();try{return document.execCommand(`copy`)}catch{return!1}finally{document.body.removeChild(t)}}function HXt(){let e=window.navigator.userAgent.toLowerCase(),t=window.navigator.platform.toLowerCase();return t.includes(`mac`)||e.includes(`mac`)?`mac`:t.includes(`win`)||e.includes(`win`)?`windows`:t.includes(`linux`)||e.includes(`linux`)?`linux`:`unknown`}function UXt(){return WXt()?`Cmd + I`:`Ctrl + I`}function WXt(){return HXt()===`mac`}function GXt(e){let t=WXt()?e.metaKey:e.ctrlKey,n=e.key.toLowerCase()===`i`;return t&&n&&!e.shiftKey&&!e.altKey}var KXt=RXt(`blueking_language`)||`zh-cn`,qXt={小鲸:`BK GPT`,关闭:`close`,发送:`Send`,请输入:`Please input`,昨天:`yesterday`,"3天前":`3 days ago`,"5天前":`5 days ago`,"1周前":`1 week ago`,更早:`Older`,删除:`Delete`,恢复默认大小:`Restore default size`,"AI 小鲸":`AI BK GPT`,新增会话:`New chat`,历史会话:`History session`,停止生成:`Stop generating`,复制:`Copy`,编辑:`Edit`,今天:`Today`,搜索会话名称:`Search session name`,重命名:`Rename`,自动生成命名:`Auto generate name`,分享会话:`Share session`,无智能体使用权限:`No permission to use this agent`,暂无使用权限:`No permission`,请输入新的会话名称:`Please enter new session name`,"确认删除会话 ?":`Confirm delete session?`,搜索为空:`No search results`,暂无对话:`No conversations`,"加载中...":`Loading...`,转人工:`Transfer to human`,缩小高度:`Shrink height`,全选:`Select all`,取消:`Cancel`,确定:`Confirm`,分享链接已复制到剪贴板:`Share link copied to clipboard`,请求失败:`Request failed`,当前已是新会话:`Already in a new session`,"正在创建会话...":`Creating session...`},JXt={重命名:`重命名`,自动生成命名:`自动生成命名`,分享会话:`分享会话`,全选:`全选`,取消:`取消`,确定:`确定`,分享链接已复制到剪贴板:`分享链接已复制到剪贴板`,请求失败:`请求失败`},W9=e=>KXt===`en`?qXt[e]||e:JXt[e]||e;function YXt(e){let{triggerRef:t,panelComponent:n,panelProps:r={},tippyOptions:i={}}=e,a=sn(null),o=null,s=()=>(o||=document.createElement(`div`),Ni(U(n,{...r,onClose:f}),o),o),l=e=>{let n=e.target,r=t.value;if(r&&r.contains(n))return;let i=document.querySelector(`.tippy-box[data-theme~="history-panel"]`);if(i&&i.contains(n))return;let o=document.querySelector(`.tippy-box[data-theme~="more-menu-light"]`);o&&o.contains(n)||a.value?.state.isVisible&&a.value.hide()},u=()=>{if(!t.value||a.value)return;let e={placement:`bottom-end`,offset:[0,8],appendTo:document.querySelector(`.ai-blueking-container-wrapper`)||document.body};a.value=jp(t.value,{content:s(),interactive:!0,trigger:`manual`,theme:`light history-panel`,arrow:!1,hideOnClick:!1,animation:`scale`,duration:200,delay:[0,0],...e,...i,onShow:()=>{a.value&&o&&a.value.setContent(s()),setTimeout(()=>{document.addEventListener(`click`,l,!1)},0)},onHidden:()=>{document.removeEventListener(`click`,l,!1)}})},d=()=>{a.value||u(),a.value?.show()},f=()=>{a.value?.hide()},p=()=>{a.value||u(),a.value?.state.isVisible?f():d()},m=e=>{e.stopPropagation(),p()},h=()=>{a.value&&=(a.value.destroy(),null),o&&=(Ni(null,o),null),document.removeEventListener(`click`,l,!1)};return cr(()=>{h()}),{show:d,hide:f,toggle:p,handleTriggerClick:m,destroy:h,isVisible:()=>a.value?.state.isVisible??!1}}var XXt={class:`history-group`},ZXt={class:`history-group-title`},QXt={class:`history-group-list`},$Xt=$n({__name:`history-group`,props:{currentSessionCode:{},sessions:{},title:{}},setup(e){let t=e;return(e,n)=>(B(),V(`div`,XXt,[H(`div`,ZXt,[H(`span`,null,ke(t.title),1)]),H(`div`,QXt,[mr(e.$slots,`default`,{},void 0,!0)])]))}}),G9=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},eZt=G9($Xt,[[`__scopeId`,`data-v-3b603cb6`]]),tZt={class:`history-item-actions`},nZt=G9($n({__name:`history-item`,props:{isActive:{type:Boolean},isEditing:{type:Boolean},session:{}},emits:[`click`,`delete`,`edit`,`rename-cancel`,`rename-confirm`],setup(e,{emit:t}){let n=e,r=t,i=$Se,a=sn(null),o=sn(``);Rn(()=>n.isEditing,e=>{e&&(o.value=n.session.sessionName,Dn(()=>{if(a.value)try{let e=a.value;e&&typeof e.focus==`function`&&e.focus();let t=e.$el?.querySelector(`input`);t&&typeof t.select==`function`&&t.select()}catch(e){console.warn(`Failed to focus edit input:`,e)}}))});let s=()=>{n.isEditing||r(`click`,n.session)},l=()=>{r(`edit`,n.session)},u=()=>{r(`delete`,n.session.sessionCode)},d=()=>{let e=o.value.trim();e&&e!==n.session.sessionName?r(`rename-confirm`,n.session.sessionCode,e):r(`rename-cancel`)},f=()=>{r(`rename-cancel`)},p=(e,t)=>{t.key===`Enter`?d():t.key===`Escape`&&f()};return(e,t)=>(B(),V(`div`,{class:xe([`history-item`,{active:n.isActive}]),onClick:s},[n.isEditing?(B(),Gr(z(Fu),{key:1,ref_key:`editInputRef`,ref:a,modelValue:o.value,"onUpdate:modelValue":t[1]||=e=>o.value=e,style:{width:`100%`,height:`28px`},onBlur:d,onKeyup:p,onClick:t[2]||=Mi(()=>{},[`stop`])},null,8,[`modelValue`])):(B(),V(Lr,{key:0},[Yr(z(Hve),{style:{width:`calc(100% - 42px)`}},{default:Mn(()=>[Qr(ke(n.session.sessionName),1)]),_:1}),H(`span`,tZt,[Nn(H(`i`,{class:`bkai-icon bkai-bianji`,onClick:Mi(l,[`stop`])},null,512),[[z(i),{content:z(W9)(`编辑`),boundary:`parent`}]]),Yr(z(sSe),{title:z(W9)(`确认删除会话 ?`),content:`删除操作无法撤回,请谨慎操作!`,"confirm-config":{theme:`danger`},trigger:`click`,boundary:`parent`,onConfirm:u},{default:Mn(()=>[Nn(H(`i`,{class:`bkai-icon bkai-shanchu`,onClick:t[0]||=Mi(()=>{},[`stop`])},null,512),[[z(i),{content:z(W9)(`删除`),boundary:`parent`}]])]),_:1},8,[`title`])])],64))],2))}}),[[`__scopeId`,`data-v-fea14d3a`]]),rZt={class:`history-search`},iZt={class:`input-icon`},aZt=G9($n({__name:`history-search`,props:{modelValue:{default:``},placeholder:{default:``}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,r=t,i=e=>{r(`update:modelValue`,e)};return(e,t)=>(B(),V(`div`,rZt,[Yr(z(Fu),{"model-value":n.modelValue,behavior:`simplicity`,placeholder:n.placeholder||z(W9)(`搜索会话名称`),style:{height:`22px`},"onUpdate:modelValue":i},{suffix:Mn(()=>[H(`span`,iZt,[Yr(z(kl))])]),_:1},8,[`model-value`,`placeholder`])]))}}),[[`__scopeId`,`data-v-e7ff40b2`]]),oZt={class:`history-dropdown-header`},sZt={class:`history-dropdown-header-title`},cZt={class:`history-dropdown-content`},lZt={key:0,class:`history-dropdown-loading`},uZt={class:`history-dropdown-loading-dots`},dZt=40,fZt=G9($n({__name:`index`,props:{sessionBusinessManager:{}},emits:[`close`,`session-delete`,`session-rename`,`session-switch`],setup(e,{emit:t}){let n=e,r=t,i=sn(``),a=sn(null),o=fi(()=>n.sessionBusinessManager.currentSession.value?.sessionCode),s=fi(()=>n.sessionBusinessManager.isLoadingMore.value),l=e=>{let t=e.target;t.scrollHeight-t.scrollTop-t.clientHeight>dZt||n.sessionBusinessManager.hasMoreSessions.value&&(n.sessionBusinessManager.isLoadingMore.value||n.sessionBusinessManager.loadMoreSessions())},u=fi(()=>{let e={today:{key:`today`,alias:W9(`今天`),sessionList:[]},yesterday:{key:`yesterday`,alias:W9(`昨天`),sessionList:[]},"3days":{key:`3days`,alias:W9(`3天前`),sessionList:[]},"5days":{key:`5days`,alias:W9(`5天前`),sessionList:[]},"1week":{key:`1week`,alias:W9(`1周前`),sessionList:[]},before:{key:`before`,alias:W9(`更早`),sessionList:[]}},t=n.sessionBusinessManager.sessionList.value.filter(e=>e.sessionName.toLowerCase().includes(i.value.toLowerCase())),r=new Date,a=new Date(r);a.setDate(a.getDate()-1);let o=new Date(r);o.setDate(r.getDate()-3);let s=new Date(r);s.setDate(r.getDate()-5);let l=new Date(r);l.setDate(r.getDate()-7);for(let n of t){let t=new Date(n.createdAt||``),i=t.toDateString();i===r.toDateString()?e.today.sessionList.push(n):i===a.toDateString()?e.yesterday.sessionList.push(n):t>=o&&t>s?e[`3days`].sessionList.push(n):t>=s&&t>l?e[`5days`].sessionList.push(n):t>=l?e[`1week`].sessionList.push(n):e.before.sessionList.push(n)}for(let t of Object.values(e))t.sessionList.sort((e,t)=>{let n=new Date(e.createdAt||0).getTime();return new Date(t.createdAt||0).getTime()-n});return Object.values(e).filter(e=>e.sessionList.length>0)}),d=e=>o.value===e,f=e=>{d(e.sessionCode)||(r(`session-switch`,e.sessionCode),r(`close`))},p=e=>{a.value=e.sessionCode},m=e=>{r(`session-delete`,e)},h=(e,t)=>{let i=n.sessionBusinessManager.sessionList.value.find(t=>t.sessionCode===e);i&&(i.sessionName=t),a.value=null,r(`session-rename`,e,t)},g=()=>{a.value=null};return(e,t)=>(B(),V(`div`,{class:`bkai-history-dropdown`,onScroll:l},[H(`div`,oZt,[H(`h1`,sZt,ke(z(W9)(`历史会话`)),1),Yr(aZt,{modelValue:i.value,"onUpdate:modelValue":t[0]||=e=>i.value=e,placeholder:z(W9)(`搜索会话名称`)},null,8,[`modelValue`,`placeholder`])]),H(`div`,cZt,[u.value.length>0?(B(),V(Lr,{key:0},[(B(!0),V(Lr,null,fr(u.value,e=>(B(),Gr(eZt,{key:e.key,"current-session-code":o.value,sessions:e.sessionList,title:e.alias},{default:Mn(()=>[(B(!0),V(Lr,null,fr(e.sessionList,e=>(B(),Gr(nZt,{key:e.sessionCode,"is-active":d(e.sessionCode),"is-editing":a.value===e.sessionCode,session:e,onClick:f,onDelete:m,onEdit:p,onRenameCancel:g,onRenameConfirm:h},null,8,[`is-active`,`is-editing`,`session`]))),128))]),_:2},1032,[`current-session-code`,`sessions`,`title`]))),128)),s.value?(B(),V(`div`,lZt,[H(`span`,uZt,[(B(),V(Lr,null,fr(3,e=>H(`i`,{key:e,class:`history-dropdown-loading-dot`,style:ge({"--dot-index":e-1})},null,4)),64))])])):$r(`v-if`,!0)],64)):(B(),Gr(z(Ed),{key:1,description:i.value?z(W9)(`搜索为空`):z(W9)(`暂无对话`),scene:`part`,style:{"margin-top":`100px`},type:i.value?`search-empty`:`empty`},null,8,[`description`,`type`]))])],32))}}),[[`__scopeId`,`data-v-bf2401b6`]]);function pZt(e){return e.sessionBusinessManager?YXt({triggerRef:e.triggerRef,panelComponent:fZt,panelProps:{sessionBusinessManager:e.sessionBusinessManager,onSessionSwitch:e.onSessionSwitch,onSessionDelete:e.onSessionDelete,onSessionRename:e.onSessionRename},tippyOptions:{placement:`bottom-end`,offset:[0,8],appendTo:()=>document.querySelector(`.ai-blueking-panel`)||document.body}}):{handleTriggerClick:()=>{},show:()=>{},hide:()=>{},toggle:()=>{},destroy:()=>{},isVisible:()=>!1}}var mZt={class:`left-section`},hZt={class:`logo`},gZt=[`src`],_Zt={key:0,class:`rename-tooltip`},vZt={class:`rename-content`},yZt={key:0,class:`tippy-dropdown-menu`},bZt={key:1,class:`bkai-icon bkai-auto-refresh-line`},xZt={class:`right-section`},SZt=G9($n({__name:`index`,props:{title:{default:``},agentName:{default:``},sessionName:{default:``},isCompressionHeight:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},showHistoryIcon:{type:Boolean,default:!0},showNewChatIcon:{type:Boolean,default:!0},showCompressionIcon:{type:Boolean,default:!0},showMoreIcon:{type:Boolean,default:!0},enableChatSession:{type:Boolean,default:!0},hasPermission:{type:Boolean,default:!0},chatGroup:{default:()=>({enabled:!1,staff:[],username:``})},hasSessionContents:{type:Boolean},autoGenerateLoading:{type:Boolean},dropdownMenuConfig:{default:()=>({showRename:!0,showAutoGenerate:!0,showShare:!1})},sessionBusinessManager:{default:void 0},selectedLlmCode:{default:void 0},renderMode:{default:Ji.Chat}},emits:[`close`,`toggle-compression`,`new-chat`,`history-click`,`auto-generate-name`,`help-click`,`rename`,`share`,`history-session-switch`,`history-session-delete`,`history-session-rename`,`new-chat-created`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=$Se,o=sn(null),s=sn(null),l=er(`moreMenuTippyRef`),u=sn(!1),d=sn(``),f=sn(null),p=sn(!1),m=()=>document.querySelector(`.ai-blueking-panel`)||document.body,h=null,g=()=>{!s.value||!r.sessionBusinessManager||(h=pZt({triggerRef:s,sessionBusinessManager:r.sessionBusinessManager,onSessionSwitch:e=>i(`history-session-switch`,e),onSessionDelete:e=>i(`history-session-delete`,e),onSessionRename:(e,t)=>i(`history-session-rename`,e,t)}))},_=fi(()=>r.hasPermission?r.enableChatSession?r.title||`${r.agentName||``}-${r.sessionName||``}`:r.agentName:W9(`无智能体使用权限`)),v=fi(()=>r.isCompressionHeight?`bkai-morenchicun`:`bkai-yasuo`),y=fi(()=>r.isCompressionHeight?W9(`恢复默认尺寸`):W9(`缩小高度`)),b=fi(()=>r.hasPermission),x=e=>b.value?e:W9(`暂无使用权限`),S=()=>({cursor:b.value?`pointer`:`not-allowed`}),C=sn(!1),w=async()=>{if(!C.value){C.value=!0;try{if(r.sessionBusinessManager)try{let e=await r.sessionBusinessManager.createNewSession({model:r.selectedLlmCode});e&&i(`new-chat-created`,{sessionCode:e.sessionCode,sessionName:e.sessionName,createdAt:e.createdAt})}catch(e){console.error(`Failed to create new session:`,e),jd({theme:`error`,message:W9(`创建会话失败`)})}i(`new-chat`)}finally{C.value=!1}}},T=e=>{e.stopPropagation(),r.sessionBusinessManager?(h||g(),h&&h.handleTriggerClick(e)):i(`history-click`,e)},E=()=>{i(`help-click`)},D=e=>{e.stopPropagation(),h&&h.isVisible()&&h.hide(),l.value&&(p.value?l.value.hide():l.value.show())},O=()=>{l.value?.hide(),j()},k=()=>{!r.hasSessionContents||r.autoGenerateLoading||i(`auto-generate-name`)},A=()=>{r.hasSessionContents&&(l.value?.hide(),i(`share`))},j=()=>{document.removeEventListener(`click`,F),d.value=r.sessionName||``,u.value=!0,setTimeout(()=>{document.addEventListener(`click`,F)},100),setTimeout(()=>{if(f.value)try{let e=f.value;e&&typeof e.focus==`function`&&e.focus();let t=e.$el?.querySelector(`input`);t&&typeof t.select==`function`&&t.select()}catch(e){console.warn(`Failed to focus rename input:`,e)}},100)},M=()=>{let e=d.value.trim();if(!e){N();return}i(`rename`,e),u.value=!1,d.value=``},N=()=>{u.value=!1,d.value=``},P=(e,t)=>{d.value=e,t.key===`Enter`?M():t.key===`Escape`&&N()},F=e=>{if(!u.value)return;let t=e.target,n=document.querySelector(`.rename-tooltip`);n&&!n.contains(t)&&N()};return Rn(()=>r.autoGenerateLoading,(e,t)=>{t&&!e&&p.value&&l.value?.hide()}),sr(()=>{r.sessionBusinessManager&&g(),document.addEventListener(`click`,F)}),cr(()=>{h&&=(h.destroy(),null),document.removeEventListener(`click`,F)}),t({headerRef:o,historyIconRef:s}),(t,n)=>(B(),V(`div`,{ref_key:`headerRef`,ref:o,class:xe([`ai-header drag-handle`,{draggable:r.draggable}])},[H(`div`,mZt,[H(`div`,hZt,[H(`img`,{alt:`logo`,src:z(kYt)},null,8,gZt)]),H(`div`,{class:xe([`title`,{"title-with-tooltip":u.value}])},[Qr(ke(_.value)+` `,1),$r(` 重命名 tooltip 直接绑定在 title 上 `),u.value?(B(),V(`div`,_Zt,[H(`div`,vZt,[Yr(z(Fu),{ref_key:`renameInputRef`,ref:f,modelValue:d.value,"onUpdate:modelValue":n[0]||=e=>d.value=e,class:`rename-input`,placeholder:z(W9)(`请输入新的会话名称`),onKeyup:P},null,8,[`modelValue`,`placeholder`]),H(`div`,{class:`rename-buttons`},[H(`i`,{class:`bkai-icon bkai-check-1 rename-btn confirm-btn`,onClick:M}),H(`i`,{class:`bkai-icon bkai-close rename-btn cancel-btn`,onClick:N})])])])):$r(`v-if`,!0)],2),$r(` 更多图标下拉菜单 - 使用 vue-tippy `),r.showMoreIcon&&b.value?(B(),Gr(z(sp),{key:0,ref_key:`moreMenuTippyRef`,ref:l,arrow:!1,"append-to":m,offset:[0,4],interactive:``,placement:`bottom-start`,theme:`ai-blueking-light more-menu-light light`,trigger:`manual`,onHidden:n[1]||=e=>p.value=!1,onShown:n[2]||=e=>p.value=!0},{content:Mn(()=>[p.value?(B(),V(`div`,yZt,[r.dropdownMenuConfig?.showRename?(B(),V(`div`,{key:0,class:`tippy-menu-item`,onClick:O},[n[7]||=H(`i`,{class:`bkai-icon bkai-bianji`},null,-1),H(`span`,null,ke(z(W9)(`重命名`)),1)])):$r(`v-if`,!0),r.dropdownMenuConfig?.showAutoGenerate?Nn((B(),V(`div`,{key:1,class:xe([`tippy-menu-item`,{disabled:!r.hasSessionContents||r.autoGenerateLoading}]),onClick:k},[r.autoGenerateLoading?(B(),Gr(z(gu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`i`,bZt)),H(`span`,null,ke(z(W9)(`自动生成命名`)),1)],2)),[[z(cp),{content:r.hasSessionContents?``:z(W9)(`请先发起会话`),theme:`ai-blueking-tooltip`,arrow:!0,delay:[300,0],appendTo:m}]]):$r(`v-if`,!0),r.dropdownMenuConfig?.showShare&&r.renderMode!==z(Ji).Test?Nn((B(),V(`div`,{key:2,class:xe([`tippy-menu-item`,{disabled:!r.hasSessionContents}]),onClick:A},[n[8]||=H(`i`,{class:`bkai-icon bkai-fenxiang`},null,-1),H(`span`,null,ke(z(W9)(`分享会话`)),1)],2)),[[z(cp),{content:r.hasSessionContents?``:z(W9)(`请先发起会话`),theme:`ai-blueking-tooltip`,arrow:!0,delay:[300,0],appendTo:m}]]):$r(`v-if`,!0)])):$r(`v-if`,!0)]),default:Mn(()=>[H(`span`,{class:`bkai-icon bkai-more`,onClick:D})]),_:1},512)):$r(`v-if`,!0)]),mr(t.$slots,`headerLeft`,{},void 0,!0),H(`div`,xZt,[$r(` 新增会话按钮 `),r.showNewChatIcon&&e.enableChatSession!==!1?Nn((B(),V(`i`,{key:0,class:xe([`bkai-icon`,`bkai-xinzengliaotian`,{disabled:!b.value||C.value||!e.hasSessionContents}]),style:ge(S()),onClick:n[3]||=t=>b.value&&!C.value&&e.hasSessionContents?w():void 0},null,6)),[[z(a),{content:C.value?z(W9)(`正在创建会话...`):e.hasSessionContents?x(z(W9)(`新增会话`)):z(W9)(`当前已是新会话`),boundary:`parent`}]]):$r(`v-if`,!0),$r(` 历史会话按钮 `),r.showHistoryIcon&&e.enableChatSession!==!1?Nn((B(),V(`i`,{key:1,ref_key:`historyIconRef`,ref:s,class:xe([`bkai-icon`,`bkai-history`,{disabled:!b.value}]),style:ge(S()),onClick:n[4]||=e=>b.value?T(e):void 0},null,6)),[[z(a),{content:x(z(W9)(`历史会话`)),boundary:`parent`}]]):$r(`v-if`,!0),e.chatGroup?.enabled?Nn((B(),V(`i`,{key:2,class:`bkai-icon bkai-zhushou`,onClick:E},null,512)),[[z(a),{content:z(W9)(`转人工`),boundary:`parent`}]]):$r(`v-if`,!0),r.showCompressionIcon?Nn((B(),V(`i`,{key:3,class:xe([`bkai-icon`,v.value]),onClick:n[5]||=e=>i(`toggle-compression`)},null,2)),[[z(a),{content:y.value,boundary:`parent`}]]):$r(`v-if`,!0),Nn(H(`i`,{class:`bkai-icon bkai-close-line-2`,onClick:n[6]||=e=>i(`close`)},null,512),[[z(a),{content:z(W9)(`关闭`),boundary:`parent`}]])])],2))}}),[[`__scopeId`,`data-v-6dcebb8e`]]);function CZt(e){let t=BXt(e);fetch(t,{method:`GET`,credentials:`include`}).catch(()=>{})}async function wZt(e,t={}){let{enableModelSelect:n=!0}=t,r=[e.agent.getAgentInfo(),e.session.getSessions()];n&&typeof e.agent.getLlms==`function`&&r.push(e.agent.getLlms().catch(e=>{console.error(`[runAgentBootstrap] Failed to load models:`,e)})),await Promise.all(r);let i=e.agent.info.value?.saasUrl;i&&CZt(i)}var TZt=class{_isGenerating;_isModelsLoading;_isStopLoading;_models;_selectedLlmCode;_selectedModelName;_selectedModelSupportsVision;agentModule;config;eventEmitter;messageModule;sessionModule;hasValidSelection(){let e=this._selectedLlmCode.value;return!!e&&this._models.value.some(t=>t.llm_code===e)}isSessionPending(){return this.sessionModule!=null&&this.sessionModule.current.value==null}applySessionModel(e){let t=this._models.value;if(t.length===0){this._selectedLlmCode.value=void 0;return}if(this.isSessionPending())return;if(e&&t.some(t=>t.llm_code===e)){this._selectedLlmCode.value=e;return}if(this.hasValidSelection())return;let n=t.find(e=>e.property?.default)??t[0];this._selectedLlmCode.value=n?.llm_code}async persistSessionModel(e){let t=this.sessionModule?.current.value;if(!(!t?.sessionCode||!e)&&t.model!==e)try{await this.sessionModule.updateSession({...t,model:e})}catch(e){console.error(`[ChatBusinessManager] Failed to persist session model:`,e),this.emit(`chat-error`,{action:`persistSessionModel`,error:e})}}resolveChatModel(e){return(e??this._selectedLlmCode.value)||void 0}autoRenameSessionIfNeeded(e){let t=this.sessionModule;if(!t||this.messageModule.list.value.length!==1)return;let n=t.renameSession(e);n&&n.then(n=>{let r=t.list.value.find(t=>t.sessionCode===e)??(t.current?.value?.sessionCode===e?t.current.value:null),i=n?.sessionName??r?.sessionName;i&&this.config.onSessionRenamed?.(i,e)}).catch(e=>{console.error(`[ChatBusinessManager] Auto rename session failed:`,e)})}emit(e,t){this.eventEmitter?.emit(e,t)}constructor(e,t,n=null,r=null,i={}){this.agentModule=e,this.messageModule=t,this.sessionModule=n,this.eventEmitter=r,this.config=i,this._isGenerating=sn(!1),this._isStopLoading=sn(!1),this._isModelsLoading=sn(!1),this._models=sn([]),this._selectedLlmCode=sn(void 0),this._selectedModelName=fi(()=>{let e=this._selectedLlmCode.value;return e?this._models.value.find(t=>t.llm_code===e)?.llm_name??``:``}),this._selectedModelSupportsVision=fi(()=>{let e=this._selectedLlmCode.value;return e?!!this._models.value.find(t=>t.llm_code===e)?.property?.support_vision:!1}),this.sessionModule&&Rn(()=>this.sessionModule.current.value?.sessionCode,()=>{this.applySessionModel(this.sessionModule.current.value?.model)})}get isGenerating(){return this._isGenerating}get isStopLoading(){return this._isStopLoading}get isMessagesLoading(){return this.messageModule.isListLoading}get models(){return this._models}get isModelsLoading(){return this._isModelsLoading}get selectedLlmCode(){return this._selectedLlmCode}get selectedModelName(){return this._selectedModelName}get selectedModelSupportsVision(){return this._selectedModelSupportsVision}get messages(){return this.messageModule.list}async loadModels(e={}){this._isModelsLoading.value=!0;try{let t=this.agentModule.models?.value;if(!e.force&&Array.isArray(t)&&t.length>0)this._models.value=[...t];else if(typeof this.agentModule.getLlms==`function`){let e=await this.agentModule.getLlms();this._models.value=Array.isArray(e)?e:[]}else this._models.value=[];this.applySessionModel(this.sessionModule?.current.value?.model)}catch(e){console.error(`[ChatBusinessManager] Failed to load models:`,e),this._models.value=[],this._selectedLlmCode.value=void 0}finally{this._isModelsLoading.value=!1}}setModels(e){this._models.value=e,this.applySessionModel(this.sessionModule?.current.value?.model)}setSelectedModelByName(e){if(!e){this._selectedLlmCode.value=void 0;return}let t=this._models.value.find(t=>t.llm_name===e);this._selectedLlmCode.value=t?.llm_code,this.persistSessionModel(t?.llm_code)}setSelectedModel(e){this._selectedLlmCode.value=e?.llm_code,this.persistSessionModel(e?.llm_code)}get openingRemark(){return this.config.openingRemark||``}get predefinedQuestions(){return this.config.predefinedQuestions||[]}async batchDeleteMessages(e){try{await this.messageModule.deleteMessages(e);let t=e.map(e=>e.id).filter(Boolean);this.emit(`messages-batch-deleted`,{messageIds:t})}catch(e){throw console.error(`Failed to batch delete messages:`,e),this.emit(`chat-error`,{action:`batch-delete-messages`,error:e}),e}}async deleteMessage(e){try{await this.messageModule.deleteMessages([e]),this.emit(`message-deleted`,{messageId:e.id})}catch(e){throw console.error(`Failed to delete message:`,e),this.emit(`chat-error`,{action:`delete-message`,error:e}),e}}handleStreamEnd(){this._isGenerating.value=!1,this.emit(`receive-end`,{})}handleStreamError(e){this._isGenerating.value=!1,this.emit(`receive-error`,{error:e})}handleStreamStart(){this._isGenerating.value=!0,this.emit(`receive-start`,{})}async regenerateFromAIMessages(e,t){try{if(!e||e.length===0)throw Error(`No AI messages provided`);let n=this.messages.value,r=PXt(n,e[0]);if(!r)throw Error(`No user message found before AI messages`);let i=r.id;if(i===void 0)throw Error(`User message has no id`);await this.regenerateMessage(String(i),t)}catch(e){throw console.error(`Failed to regenerate from AI messages:`,e),this.emit(`chat-error`,{action:`regenerate`,error:e}),e}}async regenerateMessage(e,t){try{let n=this.messages.value,r=n.findIndex(t=>String(t.id)===e);if(r===-1)throw Error(`Message not found: ${e}`);let i=n[r];if(i.role!==P9.User)throw Error(`Can only regenerate from user messages`);let a=n.slice(r),o=typeof i.content==`string`?i.content:JSON.stringify(i.content),s=i.property;this._isGenerating.value=!0;let l=this.messageModule.deleteMessages(a);this.agentModule.chat(o,t,void 0,void 0,s,this.resolveChatModel()),this.emit(`chat-regenerate`,{messageId:e}),l.catch(e=>{console.error(`[regenerateMessage] Delete API error:`,e)})}catch(e){throw console.error(`Failed to regenerate message:`,e),this._isGenerating.value=!1,this.emit(`chat-error`,{action:`regenerate`,error:e}),e}}async resendMessageWithProperty(e,t,n,r){try{let i=this.messages.value,a=i.findIndex(t=>String(t.id)===e);if(a===-1)throw Error(`Message not found: ${e}`);if(i[a].role!==P9.User)throw Error(`Can only resend user messages`);let o=i.slice(a);this._isGenerating.value=!0;let s=this.messageModule.deleteMessages(o);this.agentModule.chat(n,t,void 0,void 0,r,this.resolveChatModel()),this.emit(`chat-resend`,{messageId:e}),s.catch(e=>{console.error(`[resendMessageWithProperty] Delete API error:`,e)})}catch(e){throw console.error(`Failed to resend message with property:`,e),this._isGenerating.value=!1,this.emit(`chat-error`,{action:`resend`,error:e}),e}}async retryMessage(e){try{console.warn(`retryMessage not implemented yet`),this.emit(`chat-retry`,{messageId:e})}catch(e){throw console.error(`Failed to retry message:`,e),this.emit(`chat-error`,{action:`retry`,error:e}),e}}async sendMessage(e,t,n={}){try{if(!t)throw Error(`No active session. Please create or select a session first.`);this._isGenerating.value=!0,this.emit(`send-message`,{content:e}),await this.agentModule.chat(e,t,void 0,void 0,n.property,this.resolveChatModel(n.model)),this.autoRenameSessionIfNeeded(t)}catch(e){throw console.error(`Failed to send message:`,e),this._isGenerating.value=!1,this.emit(`chat-error`,{action:`send`,error:e}),e}}async stopGeneration(){let e=this.sessionModule?.current?.value?.sessionCode??``;this._isStopLoading.value=!0;try{await this.agentModule.stopChat(e),this._isGenerating.value=!1,this.emit(`stop`,{})}catch(e){throw console.error(`Failed to stop generation:`,e),this.emit(`chat-error`,{action:`stop`,error:e}),e}finally{this._isStopLoading.value=!1}}},EZt=class{agentModule;config;eventEmitter;messageModule;sessionModule;emit(e,t){this.eventEmitter?.emit(e,t)}constructor(e,t=null,n=null,r={},i=null){this.sessionModule=e,this.agentModule=t,this.eventEmitter=n,this.config=r,this.messageModule=i}get currentSession(){return this.sessionModule.current}get isCreateLoading(){return this.sessionModule.isCreateLoading}get isCurrentLoading(){return this.sessionModule.isCurrentLoading}get isDeleteLoading(){return this.sessionModule.isDeleteLoading}get isListLoading(){return this.sessionModule.isListLoading}get isLoadingMore(){return this.sessionModule.isLoadingMore}get isUpdateLoading(){return this.sessionModule.isUpdateLoading}get hasMoreSessions(){return this.sessionModule.hasMore}get sessionCount(){return this.sessionModule.count}get sessionList(){return this.sessionModule.list}async createNewSession(e){let t=this.currentSession.value;if(t?.sessionCode&&this.isCurrentSessionEmpty(t))return null;await this.loadSessions();let n=this.sessionList.value;if(n.length>0){let r=n[0];if(r.sessionCode===t?.sessionCode?this.isCurrentSessionEmpty(r):this.isSessionEmpty(r))return await this.syncSessionModelIfNeeded(e?.model,r),await this.switchSession(r.sessionCode,{loadMessages:!1}),null}return await this.createSession({name:`新会话`,sessionCode:this.generateSessionCode(),model:e?.model}),this.sessionModule.current.value}generateSessionCode(){return`new_session_${Date.now()}`}async syncSessionModelIfNeeded(e,t){if(!e)return;let n=t??this.sessionModule.current.value;!n?.sessionCode||n.model===e||await this.sessionModule.updateSession({...n,model:e})}async createSession(e={}){if(this.config.enableChatSession===!1)throw Error(`Chat session is disabled`);try{let t={sessionName:e.name||`新会话`,sessionCode:e.sessionCode||`session_${Date.now()}`,isTemporary:e.isTemporary||!1,...e.model?{model:e.model}:{},sessionProperty:{labels:e.labels}};await this.sessionModule.createSession(t);let n=this.agentModule?.info.value;n&&this.agentModule?.handleRole(n,t.sessionCode),this.emit(`session-created`,{session:this.sessionModule.current.value})}catch(e){throw console.error(`Failed to create session:`,e),this.emit(`session-error`,{action:`create`,error:e}),e}}async deleteSession(e){try{await this.sessionModule.deleteSession(e),this.emit(`session-deleted`,{sessionCode:e})}catch(e){throw console.error(`Failed to delete session:`,e),this.emit(`session-error`,{action:`delete`,error:e}),e}}async getSession(e){try{await this.sessionModule.getSession(e)}catch(e){throw console.error(`Failed to get session:`,e),this.emit(`session-error`,{action:`get`,error:e}),e}}isSessionEmpty(e){let t=this.findSession(e.sessionCode)?.sessionContentCount??e.sessionContentCount;return t==null?!1:t===0}isCurrentSessionEmpty(e){return this.messageModule&&NXt(this.messageModule.list.value)?!1:this.isSessionEmpty(e)}findSession(e){return this.sessionList.value.find(t=>t.sessionCode===e)}async loadRecentSession(e){try{if(this.currentSession.value?.sessionCode)return;e?.skipLoadSessions||await this.loadSessions();let t=this.sessionList.value;if(this.config.initialSessionCode){let e=this.findSession(this.config.initialSessionCode);await this.switchSession(this.config.initialSessionCode,{loadMessages:e?!this.isSessionEmpty(e):!0});return}if(t.length>0){let n=t[0],r=(n.sessionContentCount??0)>0,i=e?.alwaysCreateNewSession??this.config.alwaysCreateNewSession??!1;r||i?await this.createSession({name:`新会话`,sessionCode:this.generateSessionCode()}):await this.switchSession(n.sessionCode,{loadMessages:!1});return}await this.createSession({name:`新会话`,sessionCode:this.generateSessionCode()})}catch(e){throw console.error(`Failed to load recent session:`,e),e}}async loadSessions(){try{await this.sessionModule.getSessions(),this.emit(`sessions-loaded`,{sessions:this.sessionList.value})}catch(e){throw console.error(`Failed to load sessions:`,e),this.emit(`session-error`,{action:`load`,error:e}),e}}async loadMoreSessions(){try{await this.sessionModule.loadMoreSessions()}catch(e){throw console.error(`Failed to load more sessions:`,e),this.emit(`session-error`,{action:`loadMore`,error:e}),e}}async switchSession(e,t){try{await this.sessionModule.chooseSession(e,t),this.emit(`session-switched`,{session:this.sessionModule.current.value})}catch(e){throw console.error(`Failed to switch session:`,e),this.emit(`session-error`,{action:`switch`,error:e}),e}}async updateSessionName(e,t){try{let n=this.sessionList.value.find(t=>t.sessionCode===e);if(!n)throw Error(`Session not found: ${e}`);await this.sessionModule.updateSession({...n,sessionName:t}),this.emit(`session-updated`,{session:this.sessionModule.current.value})}catch(e){throw console.error(`Failed to update session name:`,e),this.emit(`session-error`,{action:`update`,error:e}),e}}},DZt=class{messageModule;sessionModule;constructor(e,t){this.messageModule=e,this.sessionModule=t}async shareMessages(e){if(e.length===0)throw Error(`No messages to share`);let t=this.sessionModule.current?.value?.sessionCode;if(!t)throw Error(`No active session`);let n=await this.messageModule.shareMessages(t,e);if(!n)throw Error(`Share failed: no result returned`);return{shareUrl:`${n.share_page}share-page/${n.share_token}`,userMessageIds:e.map(e=>String(e.id))}}},OZt=class{_agentShortcuts;_effectiveShortcuts;_propsShortcuts;eventEmitter;emit(e,t){this.eventEmitter?.emit(e,t)}constructor(e=null,t=[]){this._propsShortcuts=sn(t),this._agentShortcuts=sn([]),this.eventEmitter=e,this._effectiveShortcuts=fi(()=>this._propsShortcuts.value.length>0?this._propsShortcuts.value:this._agentShortcuts.value.length>0?this._agentShortcuts.value:[])}get count(){return this._effectiveShortcuts.value.length}get effectiveShortcuts(){return this._effectiveShortcuts}get hasShortcuts(){return this._effectiveShortcuts.value.length>0}get shortcuts(){return this._effectiveShortcuts}addShortcut(e){this._propsShortcuts.value.push(e)}clear(){this._propsShortcuts.value=[],this._agentShortcuts.value=[]}filterByTextLength(e,t){return!e||e.length>t?[]:this._effectiveShortcuts.value}filterShortcuts(e,t){return t?this._effectiveShortcuts.value.filter(n=>t(n,e)):this._effectiveShortcuts.value}getShortcutById(e){return this._effectiveShortcuts.value.find(t=>t.id===e)}handleShortcutClick(e,t,n=`main`){this.emit(`shortcut-click`,{shortcut:e,selectedText:t,source:n})}limitShortcuts(e){return this._effectiveShortcuts.value.slice(0,e)}removeShortcut(e){this._propsShortcuts.value=this._propsShortcuts.value.filter(t=>t.id!==e)}setAgentShortcuts(e){this._agentShortcuts.value=e}setShortcuts(e){this._propsShortcuts.value=e}},kZt=class{_isCompressed;_isDraggingOrResizing;_nimbusMinimized;_panelVisible;_positionAndSize;cleanupFunctions;config;containerRef=null;debugMode;listeners;onceListeners;constructor(e={}){this.config=e,this.listeners=new Map,this.onceListeners=new Map,this.debugMode=e.debug??!1,this.cleanupFunctions=[],this._panelVisible=sn(e.initialPanelVisible??!1),this._nimbusMinimized=sn(e.initialNimbusMinimized??!1),this._isDraggingOrResizing=sn(!1),this._isCompressed=sn(!1),this._positionAndSize=sn({x:0,y:0,width:400,height:window.innerHeight})}get container(){return{updatePosition:this.updatePosition.bind(this),updateSize:this.updateSize.bind(this),updatePositionAndSize:this.updatePositionAndSize.bind(this),toggleCompression:this.toggleCompression.bind(this),expandForSidePanel:this.expandForSidePanel.bind(this),collapseSidePanel:this.collapseSidePanel.bind(this),positionAndSize:fi(()=>this.containerRef?.positionAndSize?.value??this._positionAndSize.value),isCompressed:fi(()=>this._isCompressed.value),isSidePanelExpanded:fi(()=>this.containerRef?.isSidePanelExpanded?.value??!1)}}get isCompressed(){return this._isCompressed}get isDraggingOrResizing(){return this._isDraggingOrResizing}get nimbus(){return{minimize:this.minimizeNimbus.bind(this),restore:this.restoreNimbus.bind(this),toggle:this.toggleNimbus.bind(this),isMinimized:fi(()=>this._nimbusMinimized.value)}}get nimbusMinimized(){return this._nimbusMinimized}get panel(){return{show:this.showPanel.bind(this),hide:this.hidePanel.bind(this),toggle:this.togglePanel.bind(this),isVisible:fi(()=>this._panelVisible.value)}}get panelVisible(){return this._panelVisible}get state(){return{panelVisible:this._panelVisible,nimbusMinimized:this._nimbusMinimized,isDraggingOrResizing:this._isDraggingOrResizing,positionAndSize:this._positionAndSize}}collapseSidePanel(){this.containerRef?.collapseSidePanel&&this.containerRef.collapseSidePanel()}destroy(){this.listeners.clear(),this.onceListeners.clear(),this.cleanupFunctions.forEach(e=>e()),this.cleanupFunctions=[],this.debugMode&&console.debug(`[ComponentManager] Destroyed`)}emit(e,t){this.debugMode&&console.debug(`[ComponentManager] Emitting "${e}"`,t);let n=this.listeners.get(e);n&&n.forEach(n=>{try{n(t)}catch(t){console.error(`[ComponentManager] Error in listener for "${e}":`,t)}});let r=this.onceListeners.get(e);if(r&&r.size>0){let n=Array.from(r);this.onceListeners.delete(e),n.forEach(n=>{try{n(t)}catch(t){console.error(`[ComponentManager] Error in once listener for "${e}":`,t)}})}}emitInternal(e,t){this.emit(e,t)}expandForSidePanel(e){this.containerRef?.expandForSidePanel&&this.containerRef.expandForSidePanel(e)}getConfig(){return this.config}getRegisteredEvents(){let e=new Set;return this.listeners.forEach((t,n)=>e.add(n)),this.onceListeners.forEach((t,n)=>e.add(n)),Array.from(e)}handleDragging(e){this._isDraggingOrResizing.value=!0,this._positionAndSize.value=e,this.emit(`dragging`,e)}handleDragStop(e){this._isDraggingOrResizing.value=!1,this._positionAndSize.value=e,this.emit(`drag-stop`,e)}handleNimbusClick(){this.emit(`nimbus-click`,{}),this.showPanel()}handlePopupClick(){this.emit(`popup-click`,{}),this.showPanel()}handlePopupShortcutClick(e){this.emit(`popup-shortcut-click`,{shortcut:e}),this.emit(`shortcut-click`,{shortcut:e,source:`popup`})}handleResizeStop(e){this._isDraggingOrResizing.value=!1,this._positionAndSize.value=e,this.emit(`resize-stop`,e)}handleResizing(e){this._isDraggingOrResizing.value=!0,this._positionAndSize.value=e,this.emit(`resizing`,e)}handleShortcutClick(e,t){this.emit(`shortcut-click`,{shortcut:e,source:t})}hasListeners(e){return this.listenerCount(e)>0}hidePanel(){this._panelVisible.value=!1,this.emit(`panel-hide`,{})}listenerCount(e){return(this.listeners.get(e)?.size??0)+(this.onceListeners.get(e)?.size??0)}minimizeNimbus(){this._nimbusMinimized.value=!0,this.emit(`nimbus-minimize`,{})}off(e,t){t?(this.listeners.get(e)?.delete(t),this.onceListeners.get(e)?.delete(t),this.debugMode&&console.debug(`[ComponentManager] Unsubscribed from "${e}", remaining: ${this.listenerCount(e)}`)):(this.listeners.delete(e),this.onceListeners.delete(e),this.debugMode&&console.debug(`[ComponentManager] Removed all listeners for "${e}"`))}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this.debugMode&&console.debug(`[ComponentManager] Subscribed to "${e}", total: ${this.listenerCount(e)}`),()=>{this.off(e,t)}}once(e,t){return this.onceListeners.has(e)||this.onceListeners.set(e,new Set),this.onceListeners.get(e).add(t),this.debugMode&&console.debug(`[ComponentManager] Subscribed once to "${e}"`),()=>{this.onceListeners.get(e)?.delete(t)}}restoreNimbus(){this._nimbusMinimized.value=!1,this.emit(`nimbus-restore`,{})}setCompressed(e){this._isCompressed.value=e}setContainerRef(e){this.containerRef=e,e?.isCompressed&&(this._isCompressed.value=e.isCompressed.value)}setDebugMode(e){this.debugMode=e}setDraggingOrResizing(e){this._isDraggingOrResizing.value=e}showPanel(e){this._panelVisible.value=!0,this.emit(`panel-show`,{sessionCode:e})}toggleCompression(){this.containerRef?this.containerRef.toggleCompression():this._isCompressed.value=!this._isCompressed.value}toggleNimbus(){this._nimbusMinimized.value?this.restoreNimbus():this.minimizeNimbus()}togglePanel(){this._panelVisible.value?this.hidePanel():this.showPanel()}updatePosition(e,t){this._positionAndSize.value={...this._positionAndSize.value,x:e,y:t}}updatePositionAndSize(e,t,n,r){this._positionAndSize.value={x:e,y:t,width:n,height:r}}updateSize(e,t){this._positionAndSize.value={...this._positionAndSize.value,width:e,height:t}}};function AZt(e){return new kZt(e)}var jZt={"panel-show":`show`,"panel-hide":`close`,"panel-toggle":null,"nimbus-click":null,"nimbus-minimize":null,"nimbus-restore":null,"popup-click":null,"popup-shortcut-click":null,dragging:`dragging`,resizing:`resizing`,"drag-stop":`drag-stop`,"resize-stop":`resize-stop`,"compression-toggle":null,"side-panel-expand":null,"side-panel-collapse":null,"send-message":`send-message`,"receive-start":`receive-start`,"receive-text":`receive-text`,"receive-end":`receive-end`,"receive-error":null,stop:`stop`,"chat-regenerate":null,"chat-retry":null,"message-deleted":null,"messages-batch-deleted":null,"session-created":null,"session-switched":null,"session-deleted":null,"session-updated":null,"sessions-loaded":null,"session-initialized":`session-initialized`,"session-error":null,"shortcut-click":`shortcut-click`,"chat-error":null,"sdk-error":`sdk-error`,"new-chat":`new-chat`,"new-chat-created":`new-chat-created`,"history-click":`history-click`,"auto-generate-name":`auto-generate-name`,"help-click":`help-click`,rename:`rename`,share:`share`,close:`close`,"toggle-compression":null,"transfer-messages":`transfer-messages`,"share-messages":`share-messages`,"agent-info-loaded":null,error:null};function MZt(e,t){switch(e){case`send-message`:return[t.content];case`rename`:return[t.newName,t.sessionCode];case`history-click`:return[t.event];case`dragging`:case`resizing`:case`drag-stop`:case`resize-stop`:case`shortcut-click`:case`session-initialized`:case`sdk-error`:case`transfer-messages`:case`share-messages`:case`new-chat-created`:return[t];case`panel-show`:case`panel-hide`:case`receive-start`:case`receive-text`:case`receive-end`:case`stop`:case`new-chat`:case`auto-generate-name`:case`help-click`:case`share`:case`close`:return[];default:return[t]}}var NZt=class{_selectedMessageIds;_isSelectionMode;_editingSessionCode;_loadingStates;constructor(){this._selectedMessageIds=sn(new Set),this._isSelectionMode=sn(!1),this._editingSessionCode=sn(null),this._loadingStates=Jt({})}get isSelectionMode(){return this._isSelectionMode}get editingSessionCode(){return this._editingSessionCode}toggleSelectionMode(){this._isSelectionMode.value=!this._isSelectionMode.value,this._isSelectionMode.value||this.clearSelection()}enableSelectionMode(){this._isSelectionMode.value=!0}disableSelectionMode(){this._isSelectionMode.value=!1,this.clearSelection()}toggleMessageSelection(e){this._selectedMessageIds.value.has(e)?this._selectedMessageIds.value.delete(e):this._selectedMessageIds.value.add(e),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}selectMessage(e){this._selectedMessageIds.value.add(e),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}deselectMessage(e){this._selectedMessageIds.value.delete(e),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}isMessageSelected(e){return this._selectedMessageIds.value.has(e)}clearSelection(){this._selectedMessageIds.value.clear(),this._selectedMessageIds.value=new Set(this._selectedMessageIds.value)}selectAllMessages(e){this._selectedMessageIds.value=new Set(e)}get selectedMessages(){return Array.from(this._selectedMessageIds.value)}get selectedCount(){return this._selectedMessageIds.value.size}get hasSelection(){return this._selectedMessageIds.value.size>0}startEditingSession(e){this._editingSessionCode.value=e}stopEditingSession(){this._editingSessionCode.value=null}isEditingSession(e){return e?this._editingSessionCode.value===e:this._editingSessionCode.value!==null}setLoading(e,t){this._loadingStates[e]=t}isLoading(e){return this._loadingStates[e]??!1}clearLoadingStates(){Object.keys(this._loadingStates).forEach(e=>{this._loadingStates[e]=!1})}reset(){this.clearSelection(),this.disableSelectionMode(),this.stopEditingSession(),this.clearLoadingStates()}},PZt=class extends Error{constructor(){super(`[ChatBot] Initialization was superseded by a newer init`),this.name=`ChatBotInitStaleError`}};function FZt(e){let{props:t,emit:n,reportError:r,managerErrorBridge:i}=e,a=cn(null),o=cn(null),s=cn(null),l=cn(null),u=sn(!1),d=sn(!t.chatHelper),f=sn(null),p=fi(()=>u.value),m=()=>t.chatHelper?!t.chatHelper.agent||!t.chatHelper.session||!t.chatHelper.message?{valid:!1,error:`[ChatBot] Invalid chatHelper: missing required modules (agent, session, message)`}:{valid:!0}:t.url?{valid:!0}:{valid:!1,error:`[ChatBot] Neither chatHelper nor url provided. Component requires at least one.`},h=()=>{let e=m();if(!e.valid)return console.error(e.error),f.value=Error(e.error),null;if(t.chatHelper)return t.chatHelper;let i=new z9({onStart:()=>{n(`receive-start`)},onMessage:e=>{n(`receive-text`)},onDone:()=>{n(`receive-end`)},onError:e=>{r(e,`Stream error`)}}),a=DXt({requestData:kXt(BXt(t.url),()=>un(t.requestOptions)),protocol:i});return i.injectMessageModule(a.message),a},g=e=>{if(e)try{e.agent.abortChat(),e.agent.clearLongPollTimer?.()}catch{}},_=0,v=null,y=null,b=null,x=e=>{b&&=(e?b.reject(e):b.resolve(),null),v=null},S=e=>{if(e!==_)throw new PZt},C=async e=>{let p=a.value;u.value=!1,f.value=null,d.value=!t.chatHelper,g(p),S(e),a.value=null,o.value=null,s.value=null,l.value=null;let m=h();if(!m)throw f.value??Error(`[ChatBot] Failed to create chatHelper`);let _=new EZt(m.session,m.agent,i,{enableChatSession:!0,autoSwitchToInitialSession:!!t.sessionCode,loadRecentSessionOnMount:t.autoLoad,initialSessionCode:t.sessionCode,alwaysCreateNewSession:t.alwaysCreateNewSession},m.message),v=new TZt(m.agent,m.message,m.session,i,{openingRemark:t.helloText,predefinedQuestions:t.prompts,placeholder:t.placeholder,onSessionRenamed:(e,t)=>n(`rename`,e,t)}),y=new OZt(null,t.shortcuts||[]);a.value=m,o.value=_,s.value=v,l.value=y;try{d.value&&(await wZt(m,{enableModelSelect:t.enableModelSelect!==!1&&!t.models?.length}),S(e),await _.loadRecentSession({skipLoadSessions:!0}),S(e)),t.enableModelSelect!==!1&&(t.models?.length?v.setModels(t.models):await v.loadModels(),S(e)),S(e),u.value=!0,n(`agent-info-loaded`,m)}catch(t){throw S(e),f.value=r(t,`Failed to initialize ChatBot`),t}},w=()=>{x(new PZt),y=null;let e=++_;v=new Promise((t,n)=>{b={resolve:t,reject:n},C(e).then(()=>{b&&=(y=Promise.resolve(),b.resolve(),null)}).catch(e=>{b&&=(b.reject(LXt(e)),null)}).finally(()=>{e===_&&(v=null)})}),v.catch(()=>{})};return Rn([()=>t.url,()=>t.chatHelper],()=>w(),{immediate:!0}),cr(()=>{x(),g(a.value)}),{chatHelper:a,isStandaloneMode:d,isInitialized:u,isReady:p,initError:f,whenReady:()=>u.value?(y||=Promise.resolve(),y):f.value?Promise.reject(f.value):v||Promise.resolve(),chatBusinessManager:s,sessionBusinessManager:o,shortcutManager:l}}function IZt(e){let{props:t,chatHelper:n,chatBusinessManager:r,sessionBusinessManager:i,shortcutManager:a,isStandaloneMode:o,isInitialized:s,selectedShortcut:l}=e,u=fi(()=>r.value?.isStopLoading.value?Gi.StopLoading:((t.chatHelper||n.value)?.agent)?.isChatting?.value?Gi.Streaming:Gi.Complete),d=fi(()=>u.value===Gi.Streaming?D9.Disabled:void 0),f=fi(()=>r.value?.messages.value??[]),p=fi(()=>r.value?.isMessagesLoading.value??!1);return{messageStatus:u,messageToolsStatus:d,messages:f,isMessagesLoading:p,isGenerating:fi(()=>r.value?.isGenerating.value??!1),currentSession:fi(()=>i.value?.currentSession.value??null),isWelcomeState:fi(()=>o.value&&!s.value?!1:!p.value&&f.value.length===0),openingRemark:fi(()=>n.value?.agent.info.value?.conversationSettings?.openingRemark||``),effectiveResources:fi(()=>t.resources?.length?t.resources:n.value?.agent.info.value?.resources??[]),effectivePrompts:fi(()=>t.prompts?.length?t.prompts:n.value?.agent.info.value?.conversationSettings?.predefinedQuestions??[]),effectiveSkills:fi(()=>t.skills?.length?t.skills:(n.value?.agent.info.value?.relatedSkills??[]).map(e=>({skill_name:e.skill_name,skill_code:e.skill_code,description:e.description,icon:e.icon}))),effectiveSupportUpload:fi(()=>l.value?.supportUpload?l.value.supportUpload.vision===!0:r.value?.selectedModelSupportsVision.value??!1),chatbotStyle:fi(()=>({height:typeof t.height==`number`?`${t.height}px`:t.height,maxWidth:typeof t.maxWidth==`number`?`${t.maxWidth}px`:t.maxWidth})),filteredShortcuts:fi(()=>a.value?.shortcuts.value??[])}}var LZt=new Set([`chat-error`,`receive-error`,`session-error`]);function RZt(e,t={}){let n=new WeakSet,r=(r,i)=>{let a=LXt(r);return n.has(a)?a:(n.add(a),console.error(i?`[ChatBot] ${i}:`:`[ChatBot] error:`,r),e(`error`,a),un(t.errorToast)!==!1&&jd({message:a.message||W9(`请求失败`),theme:`error`}),a)};return{managerErrorBridge:{emit:(e,t)=>{LZt.has(e)&&r(t?.error)}},reportError:r}}var zZt={[qi.ApprovalCancel]:I9.ApprovalCancel,[qi.FlowNodeRetry]:I9.FlowNodeRetry,[qi.FlowNodeSkip]:I9.FlowNodeSkip};function BZt(e){return`operation`in e}function VZt(e){return`interruptId`in e&&`reason`in e&&e.reason===Hi.UserQuestion}function HZt(e){return e===`cancelled`?IYt.Cancelled:IYt.Resolved}function UZt(e){let t=e?.session.current?.value?.sessionCode;if(!t)throw Error(`[ChatBot] Cannot resume interrupt: no active session`);return t}function WZt(e){return{interruptId:e.interruptId,status:HZt(e.status),payload:e.payload}}function GZt(e){let{chatHelper:t,reportError:n}=e,r=async e=>{let n=t.value;if(!n)throw Error(`[ChatBot] Cannot resume interrupt: chatHelper not initialized`);if(!BZt(e))throw Error(`[ChatBot] Unsupported interrupt resume payload`);let r=UZt(n);if(e.operation===qi.ApprovalRefresh){n.agent.pollResumeSession(r);return}let i=zZt[e.operation];if(!i)throw Error(`[ChatBot] Unsupported interrupt resume operation: ${e.operation}`);let a=n.agent;if(e.operation===qi.ApprovalCancel){await a.userOperationStreamRequest(r,i,{interrupt_id:e.payload.interrupt_id});return}(e.operation===qi.FlowNodeRetry||e.operation===qi.FlowNodeSkip)&&await a.userOperationStreamRequest(r,i,{node_id:e.payload.node_id,task_id:String(e.payload.task_id)})},i=async(e,n)=>{let r=t.value;if(!r)throw Error(`[ChatBot] Cannot resume interrupt: chatHelper not initialized`);let i=UZt(r);await r.agent.streamRequest({sessionCode:i,resume:WZt(e),...n?{input:n}:{}})};return{handleInterruptResume:async(e,t)=>{try{if(BZt(e)){await r(e);return}if(VZt(e)){await i(e);return}throw Error(`[ChatBot] Unsupported interrupt resume payload`)}catch(e){n(e,`Failed to handle interrupt resume`)}},resumeUserQuestionWithInput:async(e,t)=>{try{if(!t.payload||!VZt(t.payload))throw Error(`[ChatBot] Invalid user question resume options`);let n=typeof e==`string`?e.trim():``;if(!n)throw Error(`[ChatBot] User question free text input is empty`);await i(t.payload,n)}catch(e){n(e,`Failed to resume user question with input`)}}}}function KZt(e){let{emit:t,chatHelper:n,chatBusinessManager:r,getRequestOptions:i,reportError:a,resumeUserQuestionWithInput:o,selectedShortcut:s,selectedResources:l}=e,u=cn([[]]),d=cn(``),f=(e,t)=>{u.value=e,l.value=t},p=async(e,a={})=>{if(!r.value||!n.value)throw Error(`[ChatBot] Cannot send message: chatBusinessManager not initialized`);let o=n.value.session.current?.value?.sessionCode;if(!o)throw Error(`[ChatBot] Cannot send message: no active session`);u.value=[[]],d.value=``,l.value=[],t(`send-message`,typeof e==`string`?e:``);let s=jXt(a.property,i);await r.value.sendMessage(e,o,{...a,...s?{property:s}:{}})},m=async e=>{let t=n.value?.session.current?.value?.sessionCode;if(!t)throw Error(`[ChatBot] Cannot upload: no active session`);let r=await n.value.session.uploadFile(t,e);if(!r?.download_url)throw Error(`[ChatBot] Upload failed: no download URL returned`);return r},h=async e=>{let t=n.value?.session.current?.value?.sessionCode;if(!t)throw Error(`[ChatBot] Cannot resolve artifact URL: no active session`);let r=await n.value.session.getPvFileDownloadUrl(t,e.outputId);return{download_url:r?.download_url,preview_url:r?.preview_url}},g=async(e,t,n)=>{try{if(n?.payload&&o){u.value=[[]],d.value=``,l.value=[],await o(e,n);return}let t={};d.value&&(t.cite=d.value),s.value&&(t.command=s.value.id),l.value.length&&(t.resources=l.value),await p(e,Object.keys(t).length?{property:{extra:t}}:{})}catch(e){a(e,`Failed to send message`)}},_=async()=>{await v()},v=async()=>{if(!r.value){console.error(`[ChatBot] Cannot stop generation: chatBusinessManager not initialized`);return}try{await r.value.stopGeneration(),t(`stop`)}catch(e){a(e,`Failed to stop generation`)}};return{userInput:u,cite:d,handleUpdateModelValue:f,doSendMessage:p,handleSendMessage:g,handleArtifactClick:h,handleUpload:m,handleStopSending:_,stopGeneration:v}}var qZt=e=>!e||e.id===`share`;function JZt(e){let{emit:t,chatHelper:n,isStandaloneMode:r}=e,i=async e=>{if(!(!n.value||e.length===0))try{await VXt((await new DZt(n.value.message,n.value.session).shareMessages(e)).shareUrl),jd({message:`分享链接已复制到剪贴板`,theme:`success`})}catch(e){console.error(`[ChatBot] Failed to share messages:`,e),jd({message:`分享失败,请重试`,theme:`error`})}};return{handleConfirmShare:async(e,n)=>{r.value&&qZt(n)&&await i(e),t(`confirm-share`,e,n)}}}function YZt(e){let{props:t,emit:n,shortcutManager:r,doSendMessage:i,reportError:a,selectedShortcut:o}=e,s=fi(()=>r.value?.effectiveShortcuts.value??[]),l=(e,t)=>{let n=e,r;if(r=n.enable_fill_back&&n.fill_back_component_key?n.fill_back_component_key:n.components?.find(e=>e.fillBack)?.key,r&&t){let e=n.components?.map(e=>e.key===r?{...e,default:t}:{...e,default:e.default??void 0});o.value={...n,components:e,formModel:{...n.formModel,[r]:t}}}else o.value={...n,formModel:{...n.formModel}}},u=(e,t)=>{let n=e.components||[];return{extra:{cite:{type:`structured`,title:e.alias||e.name,data:n.map(e=>({key:e.name||e.key,value:String(t[e.key]??``)}))},command:e.id,context:n.map(e=>({[e.key]:t[e.key],context_type:e.type,__label:e.name||e.key,__key:e.key,__value:t[e.key]}))}}},d=e=>{let t=e.property?.extra;return t?.shortcut?t.shortcut:t?.command?s.value.find(e=>e.id===t.command)??null:null},f=(e,t)=>{l(e,t),n(`shortcut-click`,{shortcut:e,source:`main`})},p=()=>{o.value=null};return Rn(()=>t.shortcuts,e=>{r.value?.setShortcuts(e||[])},{immediate:!0}),Rn(()=>e.chatHelper.value?.agent.info.value?.conversationSettings?.commands,e=>{e&&r.value?.setAgentShortcuts(e)},{immediate:!0}),{effectiveShortcuts:s,selectShortcutWithText:l,buildShortcutProperty:u,getShortcutFromMessage:d,handleSelectShortcut:f,handleCloseShortcut:p,handleShortcutSubmit:async e=>{if(!o.value){console.error(`[ChatBot] No selected shortcut`);return}let t=u(o.value,e),n=o.value.name,r=o.value;p();try{await i(n,{property:t})}catch(e){o.value=r,a(e,`Failed to submit shortcut`)}},sendShortcutDirectly:async(e,t)=>{let n=e,r={...n.formModel},o=n.components||[];for(let e of o)e.key in r||(r[e.key]=e.default??``);let s;s=n.enable_fill_back&&n.fill_back_component_key?n.fill_back_component_key:o.find(e=>e.fillBack)?.key,s&&t&&(r[s]=t);let l=u(n,r),d=n.name;try{await i(d,{property:l})}catch(e){a(e,`Failed to send shortcut directly`)}}}}function XZt(e){let{emit:t,chatHelper:n,chatBusinessManager:r,cite:i,focusInput:a,getShortcutFromMessage:o,buildShortcutProperty:s,getRequestOptions:l,reportError:u,stopGeneration:d}=e,f=async e=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot delete messages: chatBusinessManager not initialized`);return}try{let t=r.value.messages.value,i=PXt(t,e[0]);if(!i){console.error(`[ChatBot] No user message found before AI messages`);return}let a=[i,...e];await n.value.message.deleteMessages(a)}catch(e){u(e,`Failed to delete messages`)}},p=async e=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot regenerate: chatBusinessManager not initialized`);return}let t=n.value.session.current?.value?.sessionCode;if(!t){console.error(`[ChatBot] Cannot regenerate: no active session`);return}try{await r.value.regenerateFromAIMessages(e,t)}catch(e){u(e,`Failed to regenerate`)}},m=async e=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot delete message: chatHelper not initialized`);return}try{let t=r.value.messages.value,i=t.findIndex(t=>t===e);if(i===-1){console.error(`[ChatBot] User message not found in messages list`);return}let a=[];for(let e=i+1;e<t.length;e++){let n=t[e];if(n.role===Wi.User)break;a.push(n)}let o=[e,...a];await n.value.message.deleteMessages(o)}catch(e){u(e,`Failed to delete user message`)}};return{handleAgentAction:async(e,r)=>{if(e.id===`cite`){i.value=r.filter(e=>e.role!==Wi.Reasoning).map(e=>typeof e.content==`string`?e.content:JSON.stringify(e.content||``)).join(`
|
|
3499
3499
|
`),a();return}if(e.id===`rebuild`){await p(r);return}if(e.id===`delete`){await f(r);return}if(e.id===`like`||e.id===`unlike`){let t=e.id===`like`?5:0;try{return await n.value?.session.getSessionFeedbackReasons(t)||[]}catch(e){return console.error(`[ChatBot] Failed to get feedback reasons:`,e),[]}}t(`agent-action`,e,r)},handleAgentFeedback:async(e,i,a,o)=>{if(!n.value){console.error(`[ChatBot] Cannot submit feedback: chatHelper not initialized`);return}let s=n.value.session.current?.value?.sessionCode;if(!s){console.error(`[ChatBot] Cannot submit feedback: no active session`);return}let l=FXt(r.value?.messages.value||[],i[0]);if(l===void 0){console.error(`[ChatBot] Cannot submit feedback: no user message found`);return}let d=e.id===`like`?5:0;try{await n.value.session.postSessionFeedback({sessionCode:s,sessionContentIds:[l],rate:d,labels:a,comment:o}),t(`feedback`,e,i[0],a,o)}catch(e){u(e,`Failed to submit feedback`)}},handleUserAction:async(e,t)=>{if(e.id===`delete`){await m(t);return}if(e.id===`cite`){i.value=typeof t.content==`string`?t.content:JSON.stringify(t.content||``),a();return}console.log(`handleUserAction`,e,t)},handleUserInputConfirm:async(e,t,i)=>{if(!n.value){console.error(`[ChatBot] Cannot edit message: chatHelper not initialized`);return}let a=n.value.session.current?.value?.sessionCode;if(!a){console.error(`[ChatBot] Cannot edit message: no active session`);return}let o=e.id;if(o===void 0){console.error(`[ChatBot] Cannot edit message: message has no id`);return}try{let n=e.property,i=jXt(n,l);await r.value?.resendMessageWithProperty(String(o),a,typeof t==`string`?t:``,i)}catch(e){u(e,`Failed to edit and resend message`)}},handleUserShortcutConfirm:async(e,t)=>{if(!r.value||!n.value){console.error(`[ChatBot] Cannot edit shortcut message: chatHelper not initialized`);return}let i=n.value.session.current?.value?.sessionCode;if(!i){console.error(`[ChatBot] Cannot edit shortcut message: no active session`);return}let a=e.id;if(a===void 0){console.error(`[ChatBot] Cannot edit shortcut message: message has no id`);return}try{let n=o(e);if(!n){console.error(`[ChatBot] Cannot edit shortcut message: shortcut not found`);return}let u=jXt(s(n,t),l),d=String(t.input??``);await r.value.resendMessageWithProperty(String(a),i,d,u)}catch(e){u(e,`Failed to edit shortcut message`)}},handleStopStreaming:d}}var ZZt=$n({__name:`chat-bot`,props:{autoLoad:{type:Boolean,default:!0},alwaysCreateNewSession:{type:Boolean},chatHelper:{default:void 0},enableSelection:{type:Boolean,default:!1},enableModelSelect:{type:Boolean,default:!0},errorToast:{type:Boolean,default:!0},models:{default:void 0},executionTabVisible:{type:Boolean},renderMode:{default:Ji.Chat},extCls:{},height:{},helloText:{},useAgentName:{type:Boolean,default:!1},maxWidth:{},messageToolsTippyOptions:{},messageTools:{},updateTools:{},placeholder:{},prompts:{},requestOptions:{},resources:{default:()=>[]},sessionCode:{},shareLoading:{type:Boolean,default:!1},shortcuts:{default:()=>[]},skills:{},url:{default:``},placement:{default:`left`},resizeProps:{},size:{},getSideRenderComponent:{},getSideTabRenderComponent:{},onCustomTabChange:{}},emits:[`agent-action`,`agent-info-loaded`,`cancel-share`,`confirm-share`,`error`,`execution-panel-change`,`feedback`,`receive-end`,`receive-start`,`receive-text`,`rename`,`request-share`,`send-message`,`session-switched`,`shortcut-click`,`stop`],setup(e,{expose:t,emit:n}){let r=e,i={initialDivide:560,min:400},a=fi(()=>({...i,...r.resizeProps})),o=n,s=_r(),l=sn(),u=sn(),d=cn([]),f=sn(null),p=fi({get:()=>r.renderMode??Ji.Chat,set:()=>{}}),m=fi(()=>w.value?.selectedLlmCode.value),h=()=>{u.value?.focus?.()},{reportError:g,managerErrorBridge:_}=RZt(o,{errorToast:()=>r.errorToast}),{chatHelper:v,isStandaloneMode:y,isInitialized:b,isReady:x,initError:S,whenReady:C,chatBusinessManager:w,sessionBusinessManager:T,shortcutManager:E}=FZt({props:r,emit:o,reportError:g,managerErrorBridge:_}),{handleInterruptResume:D,resumeUserQuestionWithInput:O}=GZt({chatHelper:v,reportError:g}),{userInput:k,cite:A,handleUpdateModelValue:j,doSendMessage:M,handleSendMessage:N,handleUpload:P,handleArtifactClick:F,handleStopSending:I,stopGeneration:L}=KZt({emit:o,chatHelper:v,chatBusinessManager:w,getRequestOptions:()=>r.requestOptions,reportError:g,resumeUserQuestionWithInput:O,selectedShortcut:f,selectedResources:d}),{handleSelectShortcut:R,handleCloseShortcut:ee,handleShortcutSubmit:te,selectShortcutWithText:ne,getShortcutFromMessage:re,buildShortcutProperty:ie,sendShortcutDirectly:ae}=YZt({props:r,emit:o,chatHelper:v,shortcutManager:E,doSendMessage:M,reportError:g,selectedShortcut:f}),{messageStatus:oe,messageToolsStatus:se,messages:ce,isMessagesLoading:le,isGenerating:ue,currentSession:de,isWelcomeState:fe,openingRemark:pe,effectiveResources:me,effectivePrompts:he,effectiveSkills:_e,effectiveSupportUpload:ve,chatbotStyle:ye,filteredShortcuts:be}=IZt({props:r,chatHelper:v,chatBusinessManager:w,sessionBusinessManager:T,shortcutManager:E,isStandaloneMode:y,isInitialized:b,selectedShortcut:f}),{handleAgentAction:Ce,handleAgentFeedback:we,handleUserAction:Te,handleUserInputConfirm:Ee,handleUserShortcutConfirm:De,handleStopStreaming:Oe}=XZt({emit:o,chatHelper:v,chatBusinessManager:w,cite:A,focusInput:h,getShortcutFromMessage:re,buildShortcutProperty:ie,getRequestOptions:()=>r.requestOptions,reportError:g,stopGeneration:L}),ke=fi(()=>!b.value||le.value),Ae=fi(()=>{if(r.useAgentName)return v.value?.agent.info.value?.agentName||void 0}),je=fi(()=>{if(r.enableModelSelect===!1)return;let e=w.value?.models.value??[];return e.length>0?e:void 0}),Me=fi({get:()=>w.value?.selectedModelName.value??``,set:e=>{w.value?.setSelectedModelByName(e)}}),Ne=e=>{w.value?.setSelectedModel(e)};Rn(()=>r.models,e=>{r.enableModelSelect===!1||!w.value||e?.length&&w.value.setModels(e)});let{handleConfirmShare:Pe}=JZt({emit:o,chatHelper:v,isStandaloneMode:y}),Fe=(e,t)=>{o(`execution-panel-change`,e,t)},Ie=async e=>{if(r.onCustomTabChange)return r.onCustomTabChange(e);let t=e.data?.props;if(t?.task_id!=null&&t?.node_id)return v.value?.message.getFlowAgentTaskNodeInfo(t.task_id,t.node_id)};return t({sendMessage:e=>N(e,[[]]),stopGeneration:L,switchSession:async e=>{if(!T.value){console.error(`[ChatBot] Cannot switch session: sessionBusinessManager not initialized`);return}try{await T.value.switchSession(e),o(`session-switched`,T.value.currentSession.value)}catch(e){g(e,`Failed to switch session`)}},messages:ce,currentSession:de,isGenerating:ue,get isReady(){return x.value},whenReady:C,getChatHelper:()=>v.value,setCiteText:e=>{A.value=e},focusInput:h,enterShareMode:()=>l.value?.enterShareMode(),exitShareMode:()=>l.value?.exitShareMode(),selectShortcut:(e,t)=>{ne(e,t)},sendShortcut:(e,t)=>ae(e,t),updateAgentInfo:async()=>{let e=v.value;if(!e)return null;try{await e.agent.getAgentInfo();let t=e.agent.info.value??null;return t?.conversationSettings?.commands&&E.value?.setAgentShortcuts(t.conversationSettings.commands),t}catch(e){return g(e,`Failed to update agentInfo`),null}},selectedLlmCode:m}),(t,n)=>(B(),V(`div`,{class:xe([`ai-chatbot`,r.extCls,{"welcome-state":z(fe)}]),style:ge(z(ye))},[Yr(z(OYt),{ref_key:`chatContainerRef`,ref:l,cite:z(A),"onUpdate:cite":n[0]||=e=>on(A)?A.value=e:null,"selected-shortcut":f.value,"onUpdate:selectedShortcut":n[1]||=e=>f.value=e,"selected-model":Me.value,"onUpdate:selectedModel":n[2]||=e=>Me.value=e,"render-mode":p.value,"onUpdate:renderMode":n[3]||=e=>p.value=e,"chat-loading":ke.value,"common-tippy-options":e.messageToolsTippyOptions,"execution-tab-visible":r.executionTabVisible,"message-status":z(oe),"message-tools":r.messageTools,"message-tools-status":z(se),messages:z(ce),"model-value":z(k),models:je.value,"on-agent-action":z(Ce),"on-agent-feedback":z(we),"on-interrupt-resume":z(D),"get-side-render-component":r.getSideRenderComponent,"get-side-tab-render-component":r.getSideTabRenderComponent,"on-custom-tab-change":Ie,"on-send-message":z(N),"on-stop-sending":z(I),"on-artifact-click":z(F),"on-upload":z(P),"on-user-action":z(Te),"on-user-input-confirm":z(Ee),"on-user-shortcut-confirm":z(De),"opening-remark":z(pe),placeholder:r.placeholder,placement:r.placement,"welcome-title":Ae.value,prompts:z(he),"resize-props":a.value,size:r.size,resources:z(me),"shortcut-id":f.value?.id,shortcuts:z(be),skills:z(_e),"support-upload":z(ve),"update-tools":r.updateTools,onCollapseChange:Fe,onConfirmShare:z(Pe),onDeleteShortcut:z(ee),onModelChange:Ne,onSelectShortcut:z(R),onShortcutClose:z(ee),onShortcutSubmit:z(te),onStopStreaming:z(Oe),"onUpdate:modelValue":z(j)},pr({message:Mn(({message:n,messageToolsStatus:r,onInterruptResume:i})=>[$r(` 消费方提供了 #message slot 时,优先使用消费方的渲染 `),z(s).message?mr(t.$slots,`message`,{key:0,message:n,messageToolsStatus:r,onInterruptResume:i}):(B(),V(Lr,{key:1},[$r(` 否则使用默认的 MessageRender `),Yr(z(tYt),{message:n,"message-tools-status":r,"on-action":e=>z(Te)(e,n),"on-input-confirm":(e,t)=>z(Ee)(n,e,t),"on-interrupt-resume":i,"on-shortcut-confirm":e=>z(De)(n,e),"tippy-options":e.messageToolsTippyOptions},pr({_:2},[t.$slots.codeHeader?{name:`codeHeader`,fn:Mn(e=>[mr(t.$slots,`codeHeader`,Se(Xr(e)))]),key:`0`}:void 0]),1032,[`message`,`message-tools-status`,`on-action`,`on-input-confirm`,`on-interrupt-resume`,`on-shortcut-confirm`,`tippy-options`])],2112))]),_:2},[t.$slots.welcome?{name:`welcome`,fn:Mn(e=>[mr(t.$slots,`welcome`,Se(Xr(e)))]),key:`0`}:void 0]),1032,`cite.selected-shortcut.selected-model.render-mode.chat-loading.common-tippy-options.execution-tab-visible.message-status.message-tools.message-tools-status.messages.model-value.models.on-agent-action.on-agent-feedback.on-interrupt-resume.get-side-render-component.get-side-tab-render-component.on-send-message.on-stop-sending.on-artifact-click.on-upload.on-user-action.on-user-input-confirm.on-user-shortcut-confirm.opening-remark.placeholder.placement.welcome-title.prompts.resize-props.size.resources.shortcut-id.shortcuts.skills.support-upload.update-tools.onConfirmShare.onDeleteShortcut.onSelectShortcut.onShortcutClose.onShortcutSubmit.onStopStreaming.onUpdate:modelValue`.split(`.`))],6))}}),K9=function(e){return e.ERROR=`error`,e.IDLE=`idle`,e.LOADING_AGENT=`loading_agent`,e.READY=`ready`,e}({});function QZt(e){let{url:t,requestOptions:n,autoInit:r=!0,protocolCallbacks:i,enableModelSelect:a=!0}=e,o=un(t);if(!o)throw Error(`[useChatBootstrap] url is required`);let s=sn(K9.IDLE),l=sn(null),u=sn(!1),d=new Map,f=new z9({onStart:()=>{i?.onStart?.()},onMessage:e=>{i?.onMessage?.(e)},onDone:()=>{i?.onDone?.()},onError:e=>{i?.onError?.(e)}}),p=DXt({requestData:kXt(o,n),protocol:f});f.injectMessageModule(p.message);let m=fi(()=>s.value===K9.LOADING_AGENT),h=fi(()=>s.value===K9.READY),g=fi(()=>p.agent.info.value??null),_=fi(()=>g.value?.agentName??``),v=fi(()=>p.session.current.value??null),y=fi(()=>p.session.list.value??[]),b=null,x=0,S=async e=>{l.value=null;try{if(s.value=K9.LOADING_AGENT,await wZt(p,{enableModelSelect:a}),e!==x)return;s.value=K9.READY,u.value=!0}catch(t){if(e!==x)return;throw console.error(`[useChatBootstrap] Initialization failed:`,t),l.value=t,s.value=K9.ERROR,t}},C=async()=>{if(u.value)return;if(b)return b;let e=x;return b=S(e).finally(()=>{e===x&&(b=null)}),b},w=()=>{x+=1,s.value=K9.IDLE,l.value=null,u.value=!1,b=null},T=async()=>{w(),await C()},E=async e=>{w();let t=p.http;t?.updateConfig?t.updateConfig({urlPrefix:e}):console.warn(`[useChatBootstrap] chatHelper.http.updateConfig is not implemented yet, URL change may not take effect`),await C()};return Rn(()=>un(t),(e,t)=>{e&&e!==t&&t&&E(e).catch(()=>{})}),r&&Promise.resolve().then(()=>{C().catch(()=>{})}),{chatHelper:p,protocol:f,phase:s,isInitializing:m,isReady:h,error:l,agentInfo:g,agentName:_,currentSession:v,sessionList:y,initialize:C,retry:T,updateConfig:E,registerExtension:(e,t)=>{d.set(e,t)},getExtension:e=>d.get(e)}}function $Zt(e){return{sendMessage:t=>e(`send-message`,{content:t}),receiveStart:()=>e(`receive-start`,{}),receiveText:()=>e(`receive-text`,{}),receiveEnd:()=>e(`receive-end`,{}),stop:()=>e(`stop`,{}),newChat:()=>e(`new-chat`,{}),newChatCreated:t=>e(`new-chat-created`,{session:t}),historyClick:t=>e(`history-click`,{event:t}),autoGenerateName:()=>e(`auto-generate-name`,{}),helpClick:()=>e(`help-click`,{}),rename:(t,n)=>e(`rename`,{newName:t,sessionCode:n}),share:()=>e(`share`,{}),transferMessages:t=>e(`transfer-messages`,{messageIds:t}),shareMessages:t=>e(`share-messages`,{messageIds:t})}}function eQt(e){let{componentManager:t,emit:n,debug:r=!1}=e,i=[],a=()=>{for(let[e,a]of Object.entries(jZt)){if(a===null)continue;let o=t.on(e,t=>{let i=MZt(e,t);r&&console.debug(`[useEventBridge] ${e} -> ${a}`,i),n(a,...i)});i.push(o)}},o=(e,n)=>{r&&console.debug(`[useEventBridge] Forwarding to manager: ${e}`,n),t.emit(e,n)},s=(e,...t)=>{r&&console.debug(`[useEventBridge] Direct emit: ${e}`,t),n(e,...t)},l=()=>{i.forEach(e=>e()),i.length=0};return a(),lr(()=>{l()}),{forwardToManager:o,emitDirect:s,cleanup:l}}function tQt(e){let{props:t,emit:n}=e,r=sn(),i=sn(),a=fi(()=>BXt(t.url??``)),o=AZt({initialPanelVisible:!1,initialNimbusMinimized:t.defaultMinimize,enablePopup:t.enablePopup,enableNimbus:!t.hideNimbus,enableDraggable:t.draggable}),s=o.panelVisible,l=o.nimbusMinimized,{forwardToManager:u}=eQt({componentManager:o,emit:n}),d=$Zt(u),f=new WeakSet,p=null,m=null,h=()=>{p&&=(clearTimeout(p.timer),null)},g=e=>{let{apiName:n,error:r,action:i,source:a,shouldToast:s=!0}=e,l=r instanceof Error?r.message:String(r),u=r instanceof Error?r:null;u&&f.has(u)||(u&&f.add(u),a!==`http`&&u&&p?.error===u&&h(),console.error(`[AIBlueking] ${n} error:`,r),s&&t.errorToast!==!1&&jd({message:l||W9(`请求失败`),theme:`error`}),o.emitInternal(`sdk-error`,{apiName:n,action:i,source:a,code:-1,message:l,data:r}))},_=e=>{h();let t=m??(x.value?`chat`:`init`);p={error:e,timer:setTimeout(()=>{p=null,g({apiName:t,error:e,source:`http`})},0)}},v=async(e,t)=>{let n=m;m=e;try{return await t()}finally{m=n}},y=e=>{g({apiName:`chat`,error:e,source:`business`})},{chatHelper:b,isReady:x,error:S,agentInfo:C,agentName:w,currentSession:T,initialize:E}=QZt({url:a,requestOptions:()=>un(t.requestOptions),autoInit:!0,enableModelSelect:t.enableModelSelect!==!1,protocolCallbacks:{onStart:()=>{d.receiveStart()},onMessage:()=>{d.receiveText()},onDone:()=>{d.receiveEnd()},onError:e=>{g({apiName:`chat`,error:e,source:`protocol`})}}}),D=b;D.onError?.(e=>{_(e)},{ignoreErrors:t.ignoreErrors});let O=new EZt(D.session,D.agent,null,{enableChatSession:t.enableChatSession,initialSessionCode:t.initialSessionCode,alwaysCreateNewSession:t.alwaysCreateNewSession},D.message),k=new DZt(D.message,D.session),A=new OZt(null,t.shortcuts||[]),j=null,M=()=>t.loadRecentSessionOnMount?(j||=O.loadRecentSession({skipLoadSessions:!0}).finally(()=>{j=null}),j):Promise.resolve(),N=async()=>{await v(`init`,async()=>{await E(),await M()})},P={appendTo:e=>{let t=e.closest(`.draggable-container-content`);return console.log(`[ai-blueking] appendTo called, ref:`,e),console.log(`[ai-blueking] appendTo closest result:`,t),t??document.body}},F=fi(()=>o.isCompressed.value),I=fi(()=>w.value),L=fi(()=>D.message.list.value.length===0),R=fi(()=>t.resources?.length?t.resources:C.value?.resources??[]),ee=fi(()=>t.prompts?.length?t.prompts:C.value?.conversationSettings?.predefinedQuestions??[]),te=fi(()=>(C.value?.relatedSkills??[]).map(e=>({skill_name:e.skill_name,skill_code:e.skill_code,description:e.description,icon:e.icon})));Rn(()=>S.value,e=>{e&&(h(),g({apiName:`init`,error:e,source:`http`}))});let ne=e=>{e.conversationSettings?.commands&&A.setAgentShortcuts(e.conversationSettings.commands)},re=async()=>{try{await D.agent.getAgentInfo();let e=C.value;return e&&ne(e),e}catch(e){return g({apiName:`getAgentInfo`,error:e,source:`http`}),null}};Rn(()=>x.value,async e=>{if(e&&C.value&&(ne(C.value),C.value.conversationSettings&&u(`session-initialized`,{openingRemark:C.value.conversationSettings.openingRemark||``,predefinedQuestions:C.value.conversationSettings.predefinedQuestions||[]}),t.loadRecentSessionOnMount))try{await M()}catch(e){console.error(`[AIBlueking] Failed to load recent session:`,e)}},{immediate:!0}),Rn(()=>t.shortcuts,e=>{A.setShortcuts(e||[])},{immediate:!0});let ie=e=>{GXt(e)&&(e.preventDefault(),s.value?o.hidePanel():o.showPanel())};return sr(async()=>{r.value&&o.setContainerRef(r.value),window.addEventListener(`keydown`,ie)}),cr(()=>{h(),window.removeEventListener(`keydown`,ie),o.destroy()}),{chatHelper:D,componentManager:o,sessionBusinessManager:O,shareBusinessManager:k,shortcutManager:A,forwarders:d,forwardToManager:u,chatBotRef:i,draggableContainerRef:r,panelVisible:s,nimbusMinimized:l,normalizedUrl:a,agentInfo:C,agentName:I,currentSession:T,isCompressed:F,isWelcomeState:L,messageToolsTippyOptions:P,agentResources:R,agentPrompts:ee,agentSkills:te,handleError:y,reportSdkError:g,ensureSessionReady:N,updateAgentInfo:re}}function nQt(e){let{shortcutManager:t,chatBotRef:n,forwardToManager:r,show:i,props:a}=e,o=sn(!1),s=sn(``);return{aiSelectionVisible:o,selectedText:s,filteredPopupShortcuts:fi(()=>{let e=t.effectiveShortcuts.value;return typeof a.shortcutFilter==`function`&&s.value?e.filter(e=>a.shortcutFilter?.(e,s.value)):e}),handleSelectionChange:e=>{s.value=e},handleAiSelectionShortcut:async(e,t)=>{o.value=!1,await i(),n.value&&(e.components?.length?n.value.selectShortcut(e,t):(n.value.selectShortcut(e),n.value.setCiteText(t),n.value.focusInput())),r(`shortcut-click`,{shortcut:e,source:`popup`})}}}function rQt(e,t=!1){let n=window.innerHeight-48-40,r=window.innerWidth-48-16,i=sn(r),a=sn(n),o=sn(0),s=sn(t),l=sn(!1),u=sn(!1),d=0,f=e=>{e?i.value=window.innerWidth-12:i.value=r},p=(e,t)=>{a.value=t,o.value=t-n},m=()=>{Dn(()=>{a.value=window.innerHeight-48-40+o.value,s.value?i.value=window.innerWidth-12:i.value=window.innerWidth-48-16})};return sr(()=>{window.addEventListener(`resize`,m),m()}),lr(()=>{window.removeEventListener(`resize`,m)}),{nimbusWidth:48,nimbusHeight:48,nimbusLeft:i,nimbusTop:a,isMinimize:s,isHovering:l,isDragging:u,handleNimbusDragging:p,handleNimbusMinimize:f,handleClick:()=>{if(u.value){u.value=!1;return}e(`click`)},handleMinimize:()=>{s.value=!s.value,e(`minimize`,s.value),s.value?i.value=window.innerWidth-12:i.value=window.innerWidth-60},handleDragging:(e,t)=>{i.value=e,a.value=t},handleMouseEnter:()=>{l.value=!0},handleMouseLeave:()=>{l.value=!1},handleMouseDown:()=>{d=Date.now(),u.value=!1},handleMouseUp:()=>{Date.now()-d>200&&(u.value=!0)}}}var iQt=560;function aQt(e){let{componentManager:t,chatBotRef:n,forwarders:r,forwardToManager:i,beforeNimbusClick:a,ensureSessionReady:o}=e,s=async e=>{t.showPanel(e),o&&await o(),e&&n.value&&await n.value.switchSession(e)},l=async e=>{await s(e)},u=()=>{t.hidePanel()};return{show:s,handleShow:l,hide:u,handleClose:()=>{u()},handleNimbusClick:async()=>{if(a&&await a()===!1){t.emit(`nimbus-click`,{});return}t.handleNimbusClick()},handleDragging:e=>{t.handleDragging(e)},handleResizing:e=>{t.handleResizing(e)},handleDragStop:e=>{t.handleDragStop(e)},handleResizeStop:e=>{t.handleResizeStop(e)},handleToggleCompression:()=>{t.container.toggleCompression()},handleCompressionChange:e=>{t.setCompressed(e)},handleExecutionPanelChange:(e,n)=>{if(e)t.collapseSidePanel();else{let e=Math.max(iQt,n??0);t.expandForSidePanel(e)}},sendMessage:async e=>{n.value&&await n.value.sendMessage(e)},handleReceiveStart:()=>{r.receiveStart()},handleReceiveText:()=>{r.receiveText()},handleReceiveEnd:()=>{r.receiveEnd()},handleStop:()=>{r.stop()},stopGeneration:()=>{n.value&&n.value.stopGeneration()},updatePosition:(e,n)=>{t.container.updatePosition(e,n)},updateSize:(e,n)=>{t.container.updateSize(e,n)},updatePositionAndSize:(e,n,r,i)=>{t.container.updatePositionAndSize(e,n,r,i)},setCiteText:e=>{n.value&&n.value.setCiteText(e)},focusInput:()=>{n.value&&n.value.focusInput()},selectShortcut:(e,t)=>{n.value&&n.value.selectShortcut(e,t)},sendShortcut:(e,t)=>n.value?n.value.sendShortcut(e,t):Promise.resolve(),getChatHelper:()=>n.value?n.value.getChatHelper():null,handleShortcutClick:e=>{i(`shortcut-click`,e)}}}function oQt(e){let{chatHelper:t,sessionBusinessManager:n,chatBotRef:r,forwarders:i,reportSdkError:a,currentSession:o}=e,s=sn(``),l=sn(!0),u=sn(!1),d=sn(!1),f=()=>NXt(t.message.list.value);Rn(()=>o.value,e=>{e&&(s.value=e.sessionName||``,u.value=(e.sessionContentCount??0)>0||f())},{immediate:!0}),Rn(()=>t.message.list.value.length,()=>{u.value=f()});let p=async()=>{r.value?.exitShareMode(),i.newChat()},m=e=>{i.newChatCreated(e)},h=e=>{i.historyClick(e)},g=async e=>{try{r.value?.exitShareMode(),await n.switchSession(e)}catch(e){console.error(`[AIBlueking] Failed to switch history session:`,e),a({apiName:`session`,action:`historySwitch`,error:e,source:`business`})}},_=async e=>{try{await n.deleteSession(e)}catch(e){console.error(`[AIBlueking] Failed to delete history session:`,e),a({apiName:`session`,action:`historyDelete`,error:e,source:`business`})}},v=async(e,t)=>{try{await n.updateSessionName(e,t)}catch(e){console.error(`[AIBlueking] Failed to rename history session:`,e),a({apiName:`session`,action:`historyRename`,error:e,source:`business`})}},y=async()=>{let e=t.session.current?.value?.sessionCode;if(!e){console.error(`[AIBlueking] Cannot auto-generate name: no active session`);return}d.value=!0;try{await t.session.renameSession(e);let n=t.session.list.value.find(t=>t.sessionCode===e);n&&(s.value=n.sessionName||``)}catch(e){console.error(`[AIBlueking] Failed to auto-generate session name:`,e),a({apiName:`session`,action:`autoGenerateName`,error:e,source:`business`})}finally{d.value=!1}i.autoGenerateName()},b=()=>{i.helpClick()},x=async e=>{let n=t.session.current?.value;if(!n){console.error(`[AIBlueking] Cannot rename: no active session`);return}try{await t.session.updateSession({...n,sessionName:e}),s.value=e}catch(e){console.error(`[AIBlueking] Failed to rename session:`,e),a({apiName:`session`,action:`rename`,error:e,source:`business`})}i.rename(e,n.sessionCode)},S=(e,t)=>{o.value?.sessionCode===t&&(s.value=e),i.rename(e,t)},C=e=>{e&&(s.value=e.sessionName||``,u.value=(e.sessionContentCount??0)>0||f())},w=()=>r.value?.selectedLlmCode;return{sessionName:s,hasPermission:l,hasSessionContents:u,autoGenerateLoading:d,handleNewChat:p,handleNewChatCreated:m,handleHistoryClick:h,handleHistorySessionSwitch:g,handleHistorySessionDelete:_,handleHistorySessionRename:v,handleAutoGenerateName:y,handleHelpClick:b,handleRename:x,handleSessionRenamed:S,handleSessionSwitched:C,addNewSession:async e=>{e?await n.createSession({...e,model:e.model??w()}):await n.createNewSession({model:w()})},switchToSession:async e=>{r.value&&await r.value.switchSession(e)},updateSessionName:async(e,t)=>{try{await n.updateSessionName(e,t),s.value=t}catch(e){console.error(`[AIBlueking] Failed to update session name:`,e),a({apiName:`session`,action:`updateSessionName`,error:e,source:`business`})}}}}function sQt(e){let{shareBusinessManager:t,chatBotRef:n,emit:r,forwarders:i,reportSdkError:a}=e,o=sn(!1);return{isShareLoading:o,handleShare:()=>{n.value?.enterShareMode(),i.share()},handleCancelShare:()=>{n.value?.exitShareMode()},handleConfirmShare:async(e,s)=>{if(!qZt(s)){n.value?.exitShareMode(),r(`confirm-share`,e,s);return}o.value=!0;try{let{shareUrl:a,userMessageIds:o}=await t.shareMessages(e);await VXt(a),jd({message:W9(`分享链接已复制到剪贴板`),theme:`success`}),n.value?.exitShareMode(),i.shareMessages(o),r(`confirm-share`,e,s)}catch(e){console.error(`[AIBlueking] Failed to share messages:`,e),a({apiName:`share`,action:`confirmShare`,error:e,source:`business`})}finally{o.value=!1}}}}function cQt(e={}){let t=sn([]),n=(n,r,i={})=>{try{let a=typeof n==`string`?document.querySelector(n):n;if(!a)return console.warn(`Tooltip target not found: ${n}`),null;let o=jp(a,{content:r,placement:`top`,arrow:!0,delay:[300,0],theme:`ai-blueking-tooltip`,...e,...i});return t.value.push(o),o}catch(e){return console.error(`Failed to create tooltip:`,e),null}},r=(e,t,r={})=>{let i=document.querySelectorAll(e),a=[];return i.forEach(e=>{let i=n(e,t,r);i&&a.push(i)}),a},i=e=>{let t=[];return e.forEach(({element:e,content:r,options:i})=>{let a=n(e,r,i);a&&t.push(a)}),t},a=()=>{t.value.forEach(e=>{e.destroy()}),t.value=[]};return cr(()=>{a()}),{instances:t,createTooltip:n,createTooltipsForSelector:r,createMultipleTooltips:i,destroyAll:a,updateContent:(e,t)=>{e.setContent(t)},destroyInstance:e=>{e.destroy()}}}var lQt={url:``,title:``,extCls:``,hideNimbus:!1,hideHeader:!1,enablePopup:!0,draggable:!0,enableChatSession:!0,enableModelSelect:!0,renderMode:Ji.Chat,defaultWidth:400,defaultHeight:void 0,defaultTop:0,defaultLeft:void 0,maxWidth:1e3,miniPadding:0,nimbusSize:`normal`,defaultMinimize:!1,shortcuts:()=>[],shortcutLimit:3,shortcutFilter:void 0,hideDefaultTrigger:!1,requestOptions:()=>({}),teleportTo:`body`,placeholder:void 0,helloText:W9(`你好,我是小鲸`),useAgentName:!1,disabledInput:!1,showHistoryIcon:!0,showNewChatIcon:!0,showCompressionIcon:!0,showMoreIcon:!0,initialSessionCode:``,autoSwitchToInitialSession:!1,alwaysCreateNewSession:!1,loadRecentSessionOnMount:!0,prompts:()=>[],dropdownMenuConfig:()=>({showRename:!0,showAutoGenerate:!0,showShare:!0}),defaultChatInputPosition:void 0,errorToast:!0,ignoreErrors:()=>[]},uQt=class extends z9{eventEmitter;constructor(e={}){super({onStart:e.onStart,onMessage:e.onMessage,onDone:e.onDone,onError:e.onError}),this.eventEmitter=e.eventEmitter}handleRunErrorEvent(e){super.handleRunErrorEvent(e),this.eventEmitter?.emit(`run-error`,{event:e})}handleTextMessageChunkEvent(e){super.handleTextMessageChunkEvent(e),this.eventEmitter?.emit(`text-chunk`,{event:e})}handleThinkingEndEvent(e){super.handleThinkingEndEvent(e),this.eventEmitter?.emit(`thinking-end`,{event:e})}handleThinkingStartEvent(e){super.handleThinkingStartEvent(e),this.eventEmitter?.emit(`thinking-start`,{event:e})}handleToolCallEndEvent(e){super.handleToolCallEndEvent(e),this.eventEmitter?.emit(`tool-call-end`,{event:e})}handleToolCallStartEvent(e){super.handleToolCallStartEvent(e),this.eventEmitter?.emit(`tool-call-start`,{event:e})}};function dQt(e={}){let{eventEmitter:t,onStart:n,onMessage:r,onDone:i,onError:a,onTextChunk:o}=e;return new z9({onStart:()=>{t?.emit(`receive-start`,{}),n?.()},onMessage:e=>{t?.emit(`receive-message`,{event:e}),e.type===`TextMessageChunk`&&o&&o(e),r?.(e)},onDone:()=>{t?.emit(`receive-end`,{}),i?.()},onError:e=>{t?.emit(`receive-error`,{error:e}),a?.(e)}})}function fQt(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Function]`}function q9(e,t,n,r=1){let[i,a]=typeof r==`number`?[r,r]:r;return[Math.round(t/i/e[0])*e[0],Math.round(n/a/e[1])*e[1]]}function pQt(e,t,n){return e-t-n}function mQt(e,t,n){return e-t-n}function J9(e,t,n){return t!==null&&e<t?t:n!==null&&n<e?n:e}function hQt(e,t,n){let r=e,i=[`matches`,`webkitMatchesSelector`,`mozMatchesSelector`,`msMatchesSelector`,`oMatchesSelector`].find(e=>fQt(r[e]));if(!fQt(r[i]))return!1;do{if(r[i](t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1}function gQt(e){let t=window.getComputedStyle(e);return[parseFloat(t.getPropertyValue(`width`),10),parseFloat(t.getPropertyValue(`height`),10)]}function Y9(e,t,n){e&&(e.attachEvent?e.attachEvent(`on`+t,n):e.addEventListener?e.addEventListener(t,n,!0):e[`on`+t]=n)}function X9(e,t,n){e&&(e.detachEvent?e.detachEvent(`on`+t,n):e.removeEventListener?e.removeEventListener(t,n,!0):e[`on`+t]=null)}var _Qt=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Z9={mouse:{start:`mousedown`,move:`mousemove`,stop:`mouseup`},touch:{start:`touchstart`,move:`touchmove`,stop:`touchend`}},vQt={userSelect:`none`,MozUserSelect:`none`,WebkitUserSelect:`none`,MsUserSelect:`none`},yQt={userSelect:`auto`,MozUserSelect:`auto`,WebkitUserSelect:`auto`,MsUserSelect:`auto`},Q9=Z9.mouse,bQt={replace:!0,name:`vue-draggable-resizable`,props:{className:{type:String,default:`vdr`},classNameDraggable:{type:String,default:`draggable`},classNameResizable:{type:String,default:`resizable`},classNameDragging:{type:String,default:`dragging`},classNameResizing:{type:String,default:`resizing`},classNameActive:{type:String,default:`active`},classNameHandle:{type:String,default:`handle`},disableUserSelect:{type:Boolean,default:!0},enableNativeDrag:{type:Boolean,default:!1},preventDeactivation:{type:Boolean,default:!1},active:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},resizable:{type:Boolean,default:!0},lockAspectRatio:{type:Boolean,default:!1},w:{type:[Number,String],default:200,validator:e=>typeof e==`number`?e>0:e===`auto`},h:{type:[Number,String],default:200,validator:e=>typeof e==`number`?e>0:e===`auto`},minWidth:{type:Number,default:0,validator:e=>e>=0},minHeight:{type:Number,default:0,validator:e=>e>=0},maxWidth:{type:Number,default:null,validator:e=>e>=0},maxHeight:{type:Number,default:null,validator:e=>e>=0},x:{type:Number,default:0},y:{type:Number,default:0},z:{type:[String,Number],default:`auto`,validator:e=>typeof e==`string`?e===`auto`:e>=0},handles:{type:Array,default:()=>[`tl`,`tm`,`tr`,`mr`,`br`,`bm`,`bl`,`ml`],validator:e=>{let t=new Set([`tl`,`tm`,`tr`,`mr`,`br`,`bm`,`bl`,`ml`]);return new Set(e.filter(e=>t.has(e))).size===e.length}},dragHandle:{type:String,default:null},dragCancel:{type:String,default:null},axis:{type:String,default:`both`,validator:e=>[`x`,`y`,`both`].includes(e)},grid:{type:Array,default:()=>[1,1]},parent:{type:Boolean,default:!1},scale:{type:[Number,Array],default:1,validator:e=>typeof e==`number`?e>0:e.length===2&&e[0]>0&&e[1]>0},onDragStart:{type:Function,default:()=>!0},onDrag:{type:Function,default:()=>!0},onResizeStart:{type:Function,default:()=>!0},onResize:{type:Function,default:()=>!0}},data:function(){return{left:this.x,top:this.y,right:null,bottom:null,width:null,height:null,widthTouched:!1,heightTouched:!1,aspectFactor:null,parentWidth:null,parentHeight:null,handle:null,enabled:this.active,resizing:!1,dragging:!1,dragEnable:!1,resizeEnable:!1,zIndex:this.z}},created:function(){this.maxWidth&&this.minWidth>this.maxWidth&&console.warn(`[Vdr warn]: Invalid prop: minWidth cannot be greater than maxWidth`),this.maxHeight&&this.minHeight>this.maxHeight&&console.warn(`[Vdr warn]: Invalid prop: minHeight cannot be greater than maxHeight`),this.resetBoundsAndMouseState()},mounted:function(){this.enableNativeDrag||(this.$el.ondragstart=()=>!1);let[e,t]=this.getParentSize();this.parentWidth=e,this.parentHeight=t;let[n,r]=gQt(this.$el);this.aspectFactor=(this.w===`auto`?n:this.w)/(this.h===`auto`?r:this.h),this.width=this.w===`auto`?n:this.w,this.height=this.h===`auto`?r:this.h,this.right=this.parentWidth-this.width-this.left,this.bottom=this.parentHeight-this.height-this.top,this.active&&this.$emit(`activated`),Y9(document.documentElement,`mousedown`,this.deselect),Y9(document.documentElement,`touchend touchcancel`,this.deselect),Y9(window,`resize`,this.checkParentSize)},beforeUnmount:function(){X9(document.documentElement,`mousedown`,this.deselect),X9(document.documentElement,`touchstart`,this.handleUp),X9(document.documentElement,`mousemove`,this.move),X9(document.documentElement,`touchmove`,this.move),X9(document.documentElement,`mouseup`,this.handleUp),X9(document.documentElement,`touchend touchcancel`,this.deselect),X9(window,`resize`,this.checkParentSize)},methods:{resetBoundsAndMouseState(){this.mouseClickPosition={mouseX:0,mouseY:0,x:0,y:0,w:0,h:0},this.bounds={minLeft:null,maxLeft:null,minRight:null,maxRight:null,minTop:null,maxTop:null,minBottom:null,maxBottom:null}},checkParentSize(){if(this.parent){let[e,t]=this.getParentSize();this.parentWidth=e,this.parentHeight=t,this.right=this.parentWidth-this.width-this.left,this.bottom=this.parentHeight-this.height-this.top}},getParentSize(){if(this.parent){let e=window.getComputedStyle(this.$el.parentNode,null);return[parseInt(e.getPropertyValue(`width`),10),parseInt(e.getPropertyValue(`height`),10)]}return[null,null]},elementTouchDown(e){Q9=Z9.touch,this.elementDown(e)},elementMouseDown(e){Q9=Z9.mouse,this.elementDown(e)},elementDown(e){if(e instanceof MouseEvent&&e.button!==0)return;let t=e.target||e.srcElement;if(this.$el.contains(t)){if(this.onDragStart(e)===!1)return;if(this.dragHandle&&!hQt(t,this.dragHandle,this.$el)||this.dragCancel&&hQt(t,this.dragCancel,this.$el)){this.dragging=!1;return}this.enabled||(this.enabled=!0,this.$emit(`activated`),this.$emit(`update:active`,!0)),this.draggable&&(this.dragEnable=!0),this.mouseClickPosition.mouseX=e.touches?e.touches[0].pageX:e.pageX,this.mouseClickPosition.mouseY=e.touches?e.touches[0].pageY:e.pageY,this.mouseClickPosition.left=this.left,this.mouseClickPosition.right=this.right,this.mouseClickPosition.top=this.top,this.mouseClickPosition.bottom=this.bottom,this.parent&&(this.bounds=this.calcDragLimits()),Y9(document.documentElement,Q9.move,this.move),Y9(document.documentElement,Q9.stop,this.handleUp)}},calcDragLimits(){return{minLeft:this.left%this.grid[0],maxLeft:Math.floor((this.parentWidth-this.width-this.left)/this.grid[0])*this.grid[0]+this.left,minRight:this.right%this.grid[0],maxRight:Math.floor((this.parentWidth-this.width-this.right)/this.grid[0])*this.grid[0]+this.right,minTop:this.top%this.grid[1],maxTop:Math.floor((this.parentHeight-this.height-this.top)/this.grid[1])*this.grid[1]+this.top,minBottom:this.bottom%this.grid[1],maxBottom:Math.floor((this.parentHeight-this.height-this.bottom)/this.grid[1])*this.grid[1]+this.bottom}},deselect(e){let t=e.target||e.srcElement,n=RegExp(this.className+`-([trmbl]{2})`,``);!this.$el.contains(t)&&!n.test(t.className)&&(this.enabled&&!this.preventDeactivation&&(this.enabled=!1,this.$emit(`deactivated`),this.$emit(`update:active`,!1)),X9(document.documentElement,Q9.move,this.handleResize)),this.resetBoundsAndMouseState()},handleTouchDown(e,t){Q9=Z9.touch,this.handleDown(e,t)},handleDown(e,t){t instanceof MouseEvent&&t.which!==1||this.onResizeStart(e,t)!==!1&&(t.stopPropagation&&t.stopPropagation(),this.lockAspectRatio&&!e.includes(`m`)?this.handle=`m`+e.substring(1):this.handle=e,this.resizeEnable=!0,this.mouseClickPosition.mouseX=t.touches?t.touches[0].pageX:t.pageX,this.mouseClickPosition.mouseY=t.touches?t.touches[0].pageY:t.pageY,this.mouseClickPosition.left=this.left,this.mouseClickPosition.right=this.right,this.mouseClickPosition.top=this.top,this.mouseClickPosition.bottom=this.bottom,this.bounds=this.calcResizeLimits(),Y9(document.documentElement,Q9.move,this.handleResize),Y9(document.documentElement,Q9.stop,this.handleUp))},calcResizeLimits(){let e=this.minW,t=this.minH,n=this.maxW,r=this.maxH,i=this.aspectFactor,[a,o]=this.grid,s=this.width,l=this.height,u=this.left,d=this.top,f=this.right,p=this.bottom;this.lockAspectRatio&&(e/t>i?t=e/i:e=i*t,n&&r?(n=Math.min(n,i*r),r=Math.min(r,n/i)):n?r=n/i:r&&(n=i*r)),n-=n%a,r-=r%o;let m={minLeft:null,maxLeft:null,minTop:null,maxTop:null,minRight:null,maxRight:null,minBottom:null,maxBottom:null};return this.parent?(m.minLeft=u%a,m.maxLeft=u+Math.floor((s-e)/a)*a,m.minTop=d%o,m.maxTop=d+Math.floor((l-t)/o)*o,m.minRight=f%a,m.maxRight=f+Math.floor((s-e)/a)*a,m.minBottom=p%o,m.maxBottom=p+Math.floor((l-t)/o)*o,n&&(m.minLeft=Math.max(m.minLeft,this.parentWidth-f-n),m.minRight=Math.max(m.minRight,this.parentWidth-u-n)),r&&(m.minTop=Math.max(m.minTop,this.parentHeight-p-r),m.minBottom=Math.max(m.minBottom,this.parentHeight-d-r)),this.lockAspectRatio&&(m.minLeft=Math.max(m.minLeft,u-d*i),m.minTop=Math.max(m.minTop,d-u/i),m.minRight=Math.max(m.minRight,f-p*i),m.minBottom=Math.max(m.minBottom,p-f/i))):(m.minLeft=null,m.maxLeft=u+Math.floor((s-e)/a)*a,m.minTop=null,m.maxTop=d+Math.floor((l-t)/o)*o,m.minRight=null,m.maxRight=f+Math.floor((s-e)/a)*a,m.minBottom=null,m.maxBottom=p+Math.floor((l-t)/o)*o,n&&(m.minLeft=-(f+n),m.minRight=-(u+n)),r&&(m.minTop=-(p+r),m.minBottom=-(d+r)),this.lockAspectRatio&&n&&r&&(m.minLeft=Math.min(m.minLeft,-(f+n)),m.minTop=Math.min(m.minTop,-(r+p)),m.minRight=Math.min(m.minRight,-u-n),m.minBottom=Math.min(m.minBottom,-d-r))),m},move(e){this.resizing?this.handleResize(e):this.dragEnable&&this.handleDrag(e)},handleDrag(e){let t=this.axis,n=this.grid,r=this.bounds,i=this.mouseClickPosition,[a,o]=q9(n,t&&t!==`y`?i.mouseX-(e.touches?e.touches[0].pageX:e.pageX):0,t&&t!==`x`?i.mouseY-(e.touches?e.touches[0].pageY:e.pageY):0,this.scale),s=J9(i.left-a,r.minLeft,r.maxLeft),l=J9(i.top-o,r.minTop,r.maxTop);if(this.onDrag(s,l)===!1)return;let u=J9(i.right+a,r.minRight,r.maxRight),d=J9(i.bottom+o,r.minBottom,r.maxBottom);this.left=s,this.top=l,this.right=u,this.bottom=d,this.$emit(`dragging`,this.left,this.top),this.dragging=!0},moveHorizontally(e){let[t,n]=q9(this.grid,e,this.top,1),r=J9(t,this.bounds.minLeft,this.bounds.maxLeft);this.left=r,this.right=this.parentWidth-this.width-r},moveVertically(e){let[t,n]=q9(this.grid,this.left,e,1),r=J9(n,this.bounds.minTop,this.bounds.maxTop);this.top=r,this.bottom=this.parentHeight-this.height-r},handleResize(e){let t=this.left,n=this.top,r=this.right,i=this.bottom,a=this.mouseClickPosition,o=this.aspectFactor,s=a.mouseX-(e.touches?e.touches[0].pageX:e.pageX),l=a.mouseY-(e.touches?e.touches[0].pageY:e.pageY);!this.widthTouched&&s&&(this.widthTouched=!0),!this.heightTouched&&l&&(this.heightTouched=!0);let[u,d]=q9(this.grid,s,l,this.scale);this.handle.includes(`b`)?(i=J9(a.bottom+d,this.bounds.minBottom,this.bounds.maxBottom),this.lockAspectRatio&&this.resizingOnY&&(r=this.right-(this.bottom-i)*o)):this.handle.includes(`t`)&&(n=J9(a.top-d,this.bounds.minTop,this.bounds.maxTop),this.lockAspectRatio&&this.resizingOnY&&(t=this.left-(this.top-n)*o)),this.handle.includes(`r`)?(r=J9(a.right+u,this.bounds.minRight,this.bounds.maxRight),this.lockAspectRatio&&this.resizingOnX&&(i=this.bottom-(this.right-r)/o)):this.handle.includes(`l`)&&(t=J9(a.left-u,this.bounds.minLeft,this.bounds.maxLeft),this.lockAspectRatio&&this.resizingOnX&&(n=this.top-(this.left-t)/o));let f=pQt(this.parentWidth,t,r),p=mQt(this.parentHeight,n,i);this.onResize(this.handle,t,n,f,p)!==!1&&(this.left=t,this.top=n,this.right=r,this.bottom=i,this.width=f,this.height=p,this.$emit(`resizing`,this.left,this.top,this.width,this.height),this.resizing=!0)},changeWidth(e){let[t,n]=q9(this.grid,e,0,1),r=J9(this.parentWidth-t-this.left,this.bounds.minRight,this.bounds.maxRight),i=this.bottom;this.lockAspectRatio&&(i=this.bottom-(this.right-r)/this.aspectFactor);let a=pQt(this.parentWidth,this.left,r),o=mQt(this.parentHeight,this.top,i);this.right=r,this.bottom=i,this.width=a,this.height=o},changeHeight(e){let[t,n]=q9(this.grid,0,e,1),r=J9(this.parentHeight-n-this.top,this.bounds.minBottom,this.bounds.maxBottom),i=this.right;this.lockAspectRatio&&(i=this.right-(this.bottom-r)*this.aspectFactor);let a=pQt(this.parentWidth,this.left,i),o=mQt(this.parentHeight,this.top,r);this.right=i,this.bottom=r,this.width=a,this.height=o},handleUp(e){this.handle=null,this.resetBoundsAndMouseState(),this.dragEnable=!1,this.resizeEnable=!1,this.resizing&&(this.resizing=!1,this.$emit(`resizeStop`,this.left,this.top,this.width,this.height)),this.dragging&&(this.dragging=!1,this.$emit(`dragStop`,this.left,this.top)),X9(document.documentElement,Q9.move,this.handleResize)}},computed:{style(){return{transform:`translate(${this.left}px, ${this.top}px)`,width:this.computedWidth,height:this.computedHeight,zIndex:this.zIndex,...this.dragging&&this.disableUserSelect?vQt:yQt}},actualHandles(){return this.resizable?this.handles:[]},computedWidth(){return this.w===`auto`&&!this.widthTouched?`auto`:this.width+`px`},computedHeight(){return this.h===`auto`&&!this.heightTouched?`auto`:this.height+`px`},minW(){return this.minWidth},minH(){return this.minHeight},maxW(){return this.maxWidth},maxH(){return this.maxHeight},resizingOnX(){return!!this.handle&&(this.handle.includes(`l`)||this.handle.includes(`r`))},resizingOnY(){return!!this.handle&&(this.handle.includes(`t`)||this.handle.includes(`b`))},isCornerHandle(){return!!this.handle&&[`tl`,`tr`,`br`,`bl`].includes(this.handle)}},watch:{active(e){this.enabled=e,e?this.$emit(`activated`):this.$emit(`deactivated`)},z(e){(e>=0||e===`auto`)&&(this.zIndex=e)},x(e){this.resizing||this.dragging||(this.parent&&(this.bounds=this.calcDragLimits()),this.moveHorizontally(e))},y(e){this.resizing||this.dragging||(this.parent&&(this.bounds=this.calcDragLimits()),this.moveVertically(e))},lockAspectRatio(e){e?this.aspectFactor=this.width/this.height:this.aspectFactor=void 0},w(e){this.resizing||this.dragging||(this.parent&&(this.bounds=this.calcResizeLimits()),this.changeWidth(e))},h(e){this.resizing||this.dragging||(this.parent&&(this.bounds=this.calcResizeLimits()),this.changeHeight(e))}}},xQt=[`onMousedown`,`onTouchstart`];function SQt(e,t,n,r,i,a){return B(),V(`div`,{style:ge(a.style),class:xe([{[n.classNameActive]:e.enabled,[n.classNameDragging]:e.dragging,[n.classNameResizing]:e.resizing,[n.classNameDraggable]:n.draggable,[n.classNameResizable]:n.resizable},n.className]),onMousedown:t[0]||=(...e)=>a.elementMouseDown&&a.elementMouseDown(...e),onTouchstart:t[1]||=(...e)=>a.elementTouchDown&&a.elementTouchDown(...e)},[(B(!0),V(Lr,null,fr(a.actualHandles,t=>(B(),V(`div`,{key:t,class:xe([n.classNameHandle,n.classNameHandle+`-`+t]),style:ge({display:e.enabled?`block`:`none`}),onMousedown:Mi(e=>a.handleDown(t,e),[`stop`,`prevent`]),onTouchstart:Mi(e=>a.handleTouchDown(t,e),[`stop`,`prevent`])},[mr(e.$slots,t)],46,xQt))),128)),mr(e.$slots,`default`)],38)}var CQt=_Qt(bQt,[[`render`,SQt]]);function wQt(e){wQt.installed||(wQt.installed=!0,e.component(`VueDraggableResizable`,CQt))}var TQt={install:wQt},$9=null;typeof window<`u`?$9=window.Vue:typeof global<`u`&&($9=global.Vue),$9&&$9.use(TQt);function EQt(e={},t){let n=e.initWidth||400,r=e.minWidth||400,i=e.minHeight||400,a=e.maxWidthPercent||40,o=e.compressedHeight||800,s=e.compressedPadding===void 0?0:e.compressedPadding,l=sn(e.defaultLeft===void 0?window.innerWidth-n:e.defaultLeft),u=sn(e.defaultTop===void 0?0:e.defaultTop),d=sn(e.defaultHeight===void 0?window.innerHeight-(e.defaultTop===void 0?0:e.defaultTop):e.defaultHeight),f=sn(n),p=sn(u.value),m=sn(l.value),h=sn(f.value),g=sn(d.value),_=sn(Math.max(window.innerWidth*(a/100),h.value)),v=sn(!1),y=sn(0),b=null,x=null,S=sn(!1),C=e=>{let t=window.innerWidth,n={...e};return n.width>t&&(n.width=t),n.x+n.width>t&&(n.x=t-n.width),n.x<0&&(n.x=0),n},w=()=>({x:m.value,y:p.value,width:h.value,height:g.value}),T=(e,n)=>{m.value=e,p.value=n,y.value=e-(window.innerWidth-h.value),t?.onDragging?.(w())},E=(e,n,r,i)=>{m.value=e,p.value=n,h.value=Math.min(r,_.value),g.value=i,t?.onResizing?.(w())},D=(e,n)=>{m.value=e,p.value=n,y.value=e-(window.innerWidth-h.value),S.value&&(x=w()),t?.onDragStop?.(w())},O=(e,n,r,i)=>{m.value=e,p.value=n,h.value=Math.min(r,_.value),g.value=i,S.value&&(x=w()),t?.onResizeStop?.(w())},k=()=>{_.value=Math.max(window.innerWidth*(a/100),h.value),Dn(()=>{if(v.value)m.value=window.innerWidth-h.value-s,p.value=window.innerHeight-o-s;else{let e=window.innerWidth-h.value-y.value;m.value=Math.max(0,e),setTimeout(()=>{g.value=window.innerHeight-p.value},0)}h.value>_.value&&(h.value=_.value)})},A=()=>{v.value?(p.value=u.value,Dn(()=>{g.value=d.value,m.value=l.value,h.value=f.value})):(p.value=window.innerHeight-o-s,m.value=l.value-s,h.value=n,g.value=o),v.value=!v.value},j=(e,t)=>{m.value=e,p.value=t,y.value=e-(window.innerWidth-h.value)},M=(e,t)=>{h.value=Math.max(r,Math.min(e,_.value)),g.value=Math.max(i,t)};return sr(()=>{window.addEventListener(`resize`,k)}),cr(()=>{window.removeEventListener(`resize`,k)}),{minWidth:r,minHeight:i,maxWidth:_,top:p,left:m,width:h,height:g,isCompressed:v,isSidePanelExpanded:S,handleDragging:T,handleResizing:E,handleDragStop:D,handleResizeStop:O,toggleCompression:A,updatePosition:j,updateSize:M,updatePositionAndSize:(e,t,n,r)=>{j(e,t),M(n,r)},expandForSidePanel:e=>{if(S.value)return;let t=w();b={...t},S.value=!0;let n=t.x+t.width,r=x?.width??t.width+e,i=C({x:n-r,y:t.y,width:r,height:t.height});j(i.x,i.y),Dn(()=>{M(i.width,i.height)})},collapseSidePanel:()=>{if(!S.value)return;let e=w();x={...e},S.value=!1;let t=e.x+e.width,n=b?.width??e.width,r=C({x:t-n,y:e.y,width:n,height:e.height});M(r.width,r.height),Dn(()=>{j(r.x,r.y)})}}}var DQt={class:`draggable-container-content`},OQt=G9($n({__name:`draggable-container`,props:{className:{default:``},compressedHeight:{default:800},compressedPadding:{default:0},defaultHeight:{default:void 0},defaultWidth:{default:400},defaultX:{default:void 0},defaultY:{default:0},draggable:{type:Boolean,default:!0},dragHandle:{default:`.drag-handle`},maxWidth:{default:void 0},maxWidthPercent:{default:80},minHeight:{default:400},minWidth:{default:400},resizable:{type:Boolean,default:!0},teleportTo:{default:`body`},visible:{type:Boolean,default:!1}},emits:[`dragging`,`resizing`,`drag-stop`,`resize-stop`,`compression-change`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=sn(!1),{minWidth:o,minHeight:s,maxWidth:l,top:u,left:d,width:f,height:p,isCompressed:m,isSidePanelExpanded:h,handleDragging:g,handleResizing:_,handleDragStop:v,handleResizeStop:y,toggleCompression:b,updatePosition:x,updateSize:S,updatePositionAndSize:C,expandForSidePanel:w,collapseSidePanel:T}=EQt({initWidth:r.defaultWidth,minWidth:r.minWidth,minHeight:r.minHeight,maxWidthPercent:r.maxWidthPercent,compressedHeight:r.compressedHeight,defaultHeight:r.defaultHeight,defaultTop:r.defaultY,defaultLeft:r.defaultX,compressedPadding:r.compressedPadding},{onDragStop:e=>i(`drag-stop`,e),onResizeStop:e=>i(`resize-stop`,e),onDragging:e=>i(`dragging`,e),onResizing:e=>i(`resizing`,e)}),E=fi(()=>({"--draggable-max-width":typeof r.maxWidth==`number`?`${r.maxWidth}px`:r.maxWidth??`${l.value}px`})),D=fi(()=>({x:d.value,y:u.value,width:f.value,height:p.value})),O=()=>{document.querySelectorAll(`iframe`).forEach(e=>{e.style.pointerEvents=`none`})},k=()=>{document.querySelectorAll(`iframe`).forEach(e=>{e.style.pointerEvents=``})},A=(e,t)=>{a.value||(a.value=!0,O()),g(e,t)},j=(e,t,n,r)=>{a.value||(a.value=!0,O()),_(e,t,n,r)},M=(e,t)=>{v(e,t),a.value=!1,k()},N=(e,t,n,r)=>{y(e,t,n,r),a.value=!1,k()};return Rn(m,e=>{i(`compression-change`,e)}),t({updatePosition:x,updateSize:S,updatePositionAndSize:C,toggleCompression:b,expandForSidePanel:w,collapseSidePanel:T,positionAndSize:D,isCompressed:m,isSidePanelExpanded:h}),(e,t)=>Nn((B(),Gr(z(CQt),{ref:`draggableRef`,active:r.visible,class:xe([`draggable-container-wrapper`,r.className]),"class-name":`draggable-container-inner`,"drag-handle":r.dragHandle,draggable:r.draggable,h:z(p),"max-width":z(l),"min-height":z(s),"min-width":z(o),parent:!0,"prevent-deactivation":!0,resizable:r.resizable,style:ge(E.value),w:z(f),x:z(d),y:z(u),onDragStop:M,onDragging:A,onResizeStop:N,onResizing:j},{default:Mn(()=>[H(`div`,DQt,[mr(e.$slots,`default`,{},void 0,!0)])]),_:3},8,[`active`,`class`,`drag-handle`,`draggable`,`h`,`max-width`,`min-height`,`min-width`,`resizable`,`style`,`w`,`x`,`y`])),[[wi,r.visible]])}}),[[`__scopeId`,`data-v-1118456b`]]),kQt={class:`nimbus-bkai-wrapper`},AQt=[`width`,`height`,`src`],jQt=G9($n({name:`NimbusButton`,__name:`nimbus`,props:{isPanelShow:{type:Boolean},isMinimize:{type:Boolean},size:{default:`normal`}},emits:[`click`,`minimize`,`update:isMinimize`],setup(e,{emit:t}){qne(e=>({v05a8b16e:`${a.value.container}px`,v4e1cf4ca:`${a.value.wrapper}px`,v5ab0c513:`${a.value.mini.right}px`,v40c13a80:`${a.value.mini.size}px`,v0d35a9ef:`${a.value.mini.fontSize}px`}));let n=e,r=t,i={small:{container:40,wrapper:32,img:24,mini:{size:14,fontSize:10,right:-4}},normal:{container:48,wrapper:40,img:32,mini:{size:16,fontSize:12,right:-6}},large:{container:56,wrapper:48,img:40,mini:{size:18,fontSize:14,right:-6}}},a=fi(()=>i[n.size]),o=sn(null),s=sn(null),{nimbusLeft:l,nimbusTop:u,isMinimize:d,handleClick:f,handleMinimize:p,handleDragging:m,handleMouseEnter:h,handleMouseLeave:g,handleMouseDown:_,handleMouseUp:v}=rQt(r,n.isMinimize);Rn(d,e=>{r(`update:isMinimize`,e)});let y=fi(()=>d.value?W9(`恢复默认大小`):W9(`最小化,将缩成锚点`)),{createTooltip:b,destroyAll:x}=cQt({theme:`ai-blueking`,delay:[0,0]}),S=()=>{Dn(()=>{C()})},C=()=>{x(),o.value&&!d.value&&b(o.value,UXt(),{placement:`left`}),s.value&&b(s.value,y.value,{placement:`top`})};return Rn(()=>d.value,()=>{Dn(()=>{C()})}),sr(()=>{Dn(()=>{C()}),window.addEventListener(`resize`,S)}),cr(()=>{window.removeEventListener(`resize`,S)}),(t,n)=>(B(),Gr(z(CQt),{active:!e.isPanelShow,axis:`y`,draggable:!0,h:a.value.container,parent:!0,"prevent-deactivation":!0,resizable:!1,w:a.value.container,x:z(l),y:z(u),onDragging:z(m)},{default:Mn(()=>[H(`div`,{ref_key:`nimbusContainerRef`,ref:o,class:xe([`nimbus-container`,{"is-minimize":z(d)}]),onClick:n[1]||=(...e)=>z(f)&&z(f)(...e),onMousedown:n[2]||=(...e)=>z(_)&&z(_)(...e),onMouseenter:n[3]||=(...e)=>z(h)&&z(h)(...e),onMouseleave:n[4]||=(...e)=>z(g)&&z(g)(...e),onMouseup:n[5]||=(...e)=>z(v)&&z(v)(...e)},[H(`div`,kQt,[H(`img`,{width:a.value.img,height:a.value.img,src:z(kYt),alt:`nimbus`},null,8,AQt)]),H(`i`,{ref_key:`minimizeButtonRef`,ref:s,class:xe([`nimbus-mini bkai-icon`,z(d)?`bkai-yinyong`:`bkai-minus-line`]),onClick:n[0]||=Mi((...e)=>z(p)&&z(p)(...e),[`stop`])},null,2)],34)]),_:1},8,[`active`,`h`,`w`,`x`,`y`,`onDragging`]))}}),[[`__scopeId`,`data-v-26b6f3ea`]]),MQt=G9($n({inheritAttrs:!1,__name:`ai-blueking`,props:pte({alwaysCreateNewSession:{type:Boolean},autoSwitchToInitialSession:{type:Boolean},defaultChatInputPosition:{},defaultHeight:{},defaultLeft:{},defaultMinimize:{type:Boolean},defaultTop:{},defaultWidth:{},disabledInput:{type:Boolean},draggable:{type:Boolean},dropdownMenuConfig:{},enableChatSession:{type:Boolean},enableModelSelect:{type:Boolean},models:{},enablePopup:{type:Boolean},errorToast:{type:Boolean},executionTabVisible:{type:Boolean},extCls:{},getSideRenderComponent:{type:Function},getSideTabRenderComponent:{type:Function},helloText:{},messageTools:{},updateTools:{},hideDefaultTrigger:{type:Boolean},hideHeader:{type:Boolean},hideNimbus:{type:Boolean},ignoreErrors:{},initialSessionCode:{},loadRecentSessionOnMount:{type:Boolean},maxWidth:{},miniPadding:{},nimbusSize:{},onCustomTabChange:{type:Function},placeholder:{},prompts:{},renderMode:{},requestOptions:{},resources:{},shortcutLimit:{},shortcuts:{},showCompressionIcon:{type:Boolean},showHistoryIcon:{type:Boolean},showMoreIcon:{type:Boolean},showNewChatIcon:{type:Boolean},teleportTo:{},title:{},url:{},useAgentName:{type:Boolean},beforeNimbusClick:{type:Function},shortcutFilter:{type:Function},resizeProps:{},size:{}},lQt),emits:[`show`,`close`,`dragging`,`resizing`,`drag-stop`,`resize-stop`,`send-message`,`receive-start`,`receive-text`,`receive-end`,`stop`,`shortcut-click`,`session-initialized`,`sdk-error`,`transfer-messages`,`share-messages`,`confirm-share`,`agent-action`,`new-chat`,`new-chat-created`,`history-click`,`auto-generate-name`,`help-click`,`rename`,`share`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=dte(),{chatHelper:o,componentManager:s,sessionBusinessManager:l,shareBusinessManager:u,shortcutManager:d,forwarders:f,forwardToManager:p,chatBotRef:m,draggableContainerRef:h,panelVisible:g,nimbusMinimized:_,normalizedUrl:v,agentName:y,currentSession:b,isCompressed:x,isWelcomeState:S,messageToolsTippyOptions:C,agentResources:w,agentPrompts:T,agentSkills:E,handleError:D,reportSdkError:O,ensureSessionReady:k,updateAgentInfo:A}=tQt({props:r,emit:i}),j=fi(()=>m.value?.selectedLlmCode),{show:M,hide:N,handleShow:P,handleClose:F,handleNimbusClick:I,handleDragging:L,handleResizing:R,handleDragStop:ee,handleResizeStop:te,handleToggleCompression:ne,handleCompressionChange:re,handleExecutionPanelChange:ie,sendMessage:ae,handleReceiveStart:oe,handleReceiveText:se,handleReceiveEnd:ce,handleStop:le,stopGeneration:ue,setCiteText:de,focusInput:fe,selectShortcut:pe,sendShortcut:me,getChatHelper:he,updatePosition:_e,updateSize:ve,updatePositionAndSize:ye,handleShortcutClick:be}=aQt({componentManager:s,chatBotRef:m,forwarders:f,forwardToManager:p,beforeNimbusClick:r.beforeNimbusClick,ensureSessionReady:k}),{sessionName:Ce,hasPermission:we,hasSessionContents:Te,autoGenerateLoading:Ee,handleNewChat:De,handleNewChatCreated:Oe,handleHistoryClick:ke,handleHistorySessionSwitch:Ae,handleHistorySessionDelete:je,handleHistorySessionRename:Me,handleAutoGenerateName:Ne,handleHelpClick:Pe,handleRename:Fe,handleSessionRenamed:Ie,handleSessionSwitched:Le,addNewSession:Re,switchToSession:ze,updateSessionName:Be}=oQt({chatHelper:o,sessionBusinessManager:l,chatBotRef:m,forwarders:f,reportSdkError:O,currentSession:b}),{isShareLoading:Ve,handleShare:He,handleCancelShare:Ue,handleConfirmShare:We}=sQt({shareBusinessManager:u,chatBotRef:m,emit:(e,t,n)=>i(e,t,n),forwarders:f,reportSdkError:O}),{aiSelectionVisible:Ge,filteredPopupShortcuts:Ke,handleSelectionChange:qe,handleAiSelectionShortcut:Je}=nQt({shortcutManager:d,chatBotRef:m,forwardToManager:p,show:M,props:r}),Ye=e=>{Te.value=!0,f.sendMessage(e)};return t({show:M,handleShow:P,handleClose:F,hide:N,sendMessage:ae,selectShortcut:pe,sendShortcut:me,getChatHelper:he,stopGeneration:ue,addNewSession:Re,switchToSession:ze,updateSessionName:Be,updatePosition:_e,updateSize:ve,updatePositionAndSize:ye,setCiteText:de,focusInput:fe,updateAgentInfo:A}),(e,t)=>(B(),Gr(Wn,{to:r.teleportTo},[H(`div`,{class:xe([`ai-blueking-v2`,r.extCls,z(a).class])},[$r(` 可拖拽容器 `),Yr(z(OQt),{ref_key:`draggableContainerRef`,ref:h,"compressed-padding":r.miniPadding,"default-height":r.defaultHeight,"default-width":r.defaultWidth,"default-x":r.defaultLeft,"default-y":r.defaultTop,"drag-handle":`.drag-handle`,draggable:r.draggable,"max-width":r.maxWidth,"max-width-percent":80,visible:z(g),onCompressionChange:z(re),onDragStop:z(ee),onDragging:z(L),onResizeStop:z(te),onResizing:z(R)},{default:Mn(()=>[H(`div`,{class:xe([`ai-blueking-panel`,{"has-messages":!z(S)}])},[$r(` 独立的 Header 组件 `),r.hideHeader?$r(`v-if`,!0):(B(),Gr(SZt,{key:0,"agent-name":z(y),"chat-helper":z(o),draggable:r.draggable,"dropdown-menu-config":r.dropdownMenuConfig,"enable-chat-session":r.enableChatSession,"has-permission":z(we),"has-session-contents":z(Te),"auto-generate-loading":z(Ee),"is-compression-height":z(x),"render-mode":r.renderMode,"session-business-manager":z(l),"selected-llm-code":j.value,"session-name":z(Ce),"show-compression-icon":r.showCompressionIcon,"show-history-icon":r.showHistoryIcon,"show-more-icon":r.showMoreIcon,"show-new-chat-icon":r.showNewChatIcon,title:r.title,onAutoGenerateName:z(Ne),onClose:z(F),onHelpClick:z(Pe),onHistoryClick:z(ke),onHistorySessionDelete:z(je),onHistorySessionRename:z(Me),onHistorySessionSwitch:z(Ae),onNewChat:z(De),onNewChatCreated:z(Oe),onRename:z(Fe),onShare:z(He),onToggleCompression:z(ne)},pr({_:2},[e.$slots.headerLeft?{name:`headerLeft`,fn:Mn(()=>[mr(e.$slots,`headerLeft`,{},void 0,!0)]),key:`0`}:void 0]),1032,`agent-name.chat-helper.draggable.dropdown-menu-config.enable-chat-session.has-permission.has-session-contents.auto-generate-loading.is-compression-height.render-mode.session-business-manager.selected-llm-code.session-name.show-compression-icon.show-history-icon.show-more-icon.show-new-chat-icon.title.onAutoGenerateName.onClose.onHelpClick.onHistoryClick.onHistorySessionDelete.onHistorySessionRename.onHistorySessionSwitch.onNewChat.onNewChatCreated.onRename.onShare.onToggleCompression`.split(`.`))),$r(` ChatBot 核心组件(仅聊天区域) `),Yr(ZZt,{ref_key:`chatBotRef`,ref:m,"always-create-new-session":r.alwaysCreateNewSession,"auto-load":r.loadRecentSessionOnMount,"chat-helper":z(o),"enable-model-select":r.enableModelSelect,"error-toast":!1,"execution-tab-visible":r.executionTabVisible,"hello-text":r.helloText,"message-tools":r.messageTools,"message-tools-tippy-options":z(C),models:r.models,placeholder:r.placeholder,prompts:z(T),"render-mode":r.renderMode,"request-options":r.requestOptions,"use-agent-name":r.useAgentName,"get-side-render-component":r.getSideRenderComponent,"get-side-tab-render-component":r.getSideTabRenderComponent,"on-custom-tab-change":r.onCustomTabChange,"resize-props":r.resizeProps,size:r.size,resources:z(w),"session-code":r.initialSessionCode,"share-loading":z(Ve),shortcuts:r.shortcuts,skills:z(E),style:ge({height:r.hideHeader?`100%`:`calc(100% - 48px)`}),"update-tools":r.updateTools,url:z(v),onAgentAction:t[0]||=(e,t)=>i(`agent-action`,e,t),onCancelShare:z(Ue),onConfirmShare:t[1]||=(e,t)=>z(We)(e,t),onError:t[2]||=e=>z(D)(e),onExecutionPanelChange:z(ie),onReceiveEnd:z(ce),onReceiveStart:z(oe),onReceiveText:z(se),onRename:z(Ie),onRequestShare:z(He),onSendMessage:t[3]||=e=>Ye(e),onSessionSwitched:t[4]||=e=>z(Le)(e),onShortcutClick:z(be),onStop:z(le)},pr({_:2},[e.$slots.welcome?{name:`welcome`,fn:Mn(t=>[mr(e.$slots,`welcome`,Se(Xr(t)),void 0,!0)]),key:`0`}:void 0,e.$slots.codeHeader?{name:`codeHeader`,fn:Mn(t=>[mr(e.$slots,`codeHeader`,Se(Xr(t)),void 0,!0)]),key:`1`}:void 0,e.$slots.message?{name:`message`,fn:Mn(({message:t,messageToolsStatus:n,onInterruptResume:r})=>[mr(e.$slots,`message`,{message:t,messageToolsStatus:n,onInterruptResume:r},void 0,!0)]),key:`2`}:void 0]),1032,`always-create-new-session.auto-load.chat-helper.enable-model-select.execution-tab-visible.hello-text.message-tools.message-tools-tippy-options.models.placeholder.prompts.render-mode.request-options.use-agent-name.get-side-render-component.get-side-tab-render-component.on-custom-tab-change.resize-props.size.resources.session-code.share-loading.shortcuts.skills.style.update-tools.url.onCancelShare.onExecutionPanelChange.onReceiveEnd.onReceiveStart.onReceiveText.onRename.onRequestShare.onShortcutClick.onStop`.split(`.`))],2)]),_:3},8,[`compressed-padding`,`default-height`,`default-width`,`default-x`,`default-y`,`draggable`,`max-width`,`visible`,`onCompressionChange`,`onDragStop`,`onDragging`,`onResizeStop`,`onResizing`]),$r(` Nimbus 悬浮球 `),r.hideNimbus?$r(`v-if`,!0):(B(),Gr(jQt,{key:0,"is-minimize":z(_),"onUpdate:isMinimize":t[5]||=e=>on(_)?_.value=e:null,"is-panel-show":z(g),"onUpdate:isPanelShow":t[6]||=e=>on(g)?g.value=e:null,"default-minimize":r.defaultMinimize,size:r.nimbusSize,onClick:z(I)},null,8,[`is-minimize`,`is-panel-show`,`default-minimize`,`size`,`onClick`])),$r(` 划词选择弹窗(使用 chat-x 的 AiSelection 组件) `),r.enablePopup?(B(),Gr(z(wTe),{key:1,visible:z(Ge),"onUpdate:visible":t[7]||=e=>on(Ge)?Ge.value=e:null,"exclude-selectors":[`.draggable-container-wrapper`],"max-shortcut-count":r.shortcutLimit,shortcuts:z(Ke),onSelectShortcut:z(Je),onSelectionChange:z(qe)},null,8,[`visible`,`max-shortcut-count`,`shortcuts`,`onSelectShortcut`,`onSelectionChange`])):$r(`v-if`,!0)],2)],8,[`to`]))}}),[[`__scopeId`,`data-v-2d3264be`]]);function NQt(e){return`on`+e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function PQt(){return`bk`}function FQt(e){if(typeof e!=`string`)return e;let t=document.querySelector(e);if(!t)throw Error(`[ai-blueking] mount container not found: ${e}`);return t}function IQt(e){if(!e)return{};let t={};for(let[n,r]of Object.entries(e)){if(!r)continue;let e=n.startsWith(`on`)&&n.length>2?n:NQt(n);t[e]=r}return t}function LQt(e,t,n){let r=FQt(e),i=Yt({...n?.props??{}}),a=null,o=Pi({setup(){return()=>U(cde,{prefix:PQt()},{default:()=>U(t,{...i,...IQt(n?.on),ref:e=>{a=e}})})}});return o.mount(r),{app:o,getExpose:()=>a,get expose(){return a},updateProps(e){Object.assign(i,e)},unmount(){o.unmount(),a=null}}}function RQt(e,t){return LQt(e,MQt,t)}function zQt(e,t){return LQt(e,ZZt,t)}return e.AGUIProtocol=z9,e.AIBlueking=MQt,e.BluekingProtocol=uQt,e.BootstrapPhase=K9,e.ChatBot=ZZt,e.ChatBusinessManager=TZt,e.ComponentManager=kZt,e.DraggableContainer=OQt,e.MessageContentType=Ui,e.RenderMode=Ji,e.SessionBusinessManager=EZt,e.ShortcutManager=OZt,e.UIStateManager=NZt,e.buildStandaloneListeners=IQt,e.createApp=Pi,e.createBluekingProtocol=dQt,e.createComponentManager=AZt,e.defaultProps=lQt,e.h=U,e.mountAIBlueking=RQt,e.mountChatBot=zQt,e.mountStandaloneComponent=LQt,e.parseCustomBlocks=IXt,e.render=Ni,e.resolveMountContainer=FQt,e.useChatBootstrap=QZt,e.useChatHelper=DXt,e.useDraggable=EQt,e})({});
|