@deep-eye/core 1.2.34 → 1.2.35

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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  `@deep-eye/core` 的用户可见变更(语义化版本)。
4
4
 
5
+ ## [1.2.35] - 2026-08-06
6
+
7
+ ### Fixed
8
+
9
+ - 识别 agent 工具名 `ask_user`(与 `ask_form` 等同):工具链只展示 `desc`,并从 `mdoc` 自动 dock 表单。
10
+
5
11
  ## [1.2.34] - 2026-08-06
6
12
 
7
13
  ### Changed
@@ -1 +1 @@
1
- {"version":3,"file":"toolLabels.d.ts","sourceRoot":"","sources":["../../../src/components/chat/toolLabels.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiBvD,CAAA;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"toolLabels.d.ts","sourceRoot":"","sources":["../../../src/components/chat/toolLabels.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkBvD,CAAA;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
package/dist/index.cjs CHANGED
@@ -689,7 +689,7 @@ ${r}`:`${e}: ${r}`;if(Array.isArray(r)||zS(r)){const i=JSON.stringify(r,null,2);
689
689
  ${i}`}return`${e}: ${String(r)}`}).join(`
690
690
 
691
691
  `)}return String(t)}function _R(t){let A="",e=!1,r=!1;for(let i=0;i<t.length;i+=1){const n=t[i];if(!e){n==='"'&&(e=!0),A+=n;continue}if(r){if(n==="n")A+=`
692
- `;else if(n==="t")A+=" ";else if(n==="r")A+="\r";else if(n==='"'||n==="\\"||n==="/")A+=n;else if(n==="u"&&i+4<t.length){const a=t.slice(i+1,i+5);/^[0-9a-fA-F]{4}$/.test(a)?(A+=String.fromCharCode(Number.parseInt(a,16)),i+=4):A+="\\u"}else A+=`\\${n}`;r=!1;continue}if(n==="\\"){r=!0;continue}if(n==='"'){e=!1,A+=n;continue}A+=n}return r&&(A+="\\"),A}function zS(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}const CuA={search:"检索资料",render_chart:"生成趋势图",render_mind_map:"生成思维导图",execute_code:"执行代码",get_deployment:"查询发布状态",read_private_document:"读取受限文档",calculate_retention:"计算留存率","open-generative-ui":"生成式界面",toggleTheme:"切换主题",pieChart:"生成饼图",barChart:"生成柱状图",plan_visualization:"生成执行计划",scheduleTime:"安排会议时间",ask_form:"询问用户","ask-form":"询问用户",ask_user_form:"询问用户"};function huA(t){return CuA[t]??t}function IuA(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function fuA(t){if(t)try{return JSON.parse(t)}catch{return t}}function duA({toolState:t,toolMessage:A,streaming:e}){if(t)return t.status;const r=fuA(A==null?void 0:A.content);return IuA(r)&&typeof r.error=="string"?"error":A?"success":e?"running":"pending"}function eu(t,A={}){if(!t)return[];const e=new __({registry:Nl});return e.push(t),A.isStreaming||e.finalize(),e.getNodes().filter(r=>r.kind==="component"&&r.tag==="ask-form"&&r.complete)}const BuA=new Set(["ask_form","ask-form","ask_user_form"]);function $u(t){return BuA.has(t)}function MR(t){var e;if(!$u(t.function.name))return null;const A=(e=t.function.arguments)==null?void 0:e.trim();if(!A)return null;try{const i=JSON.parse(A).mdoc;if(typeof i=="string"&&i.trim())return i}catch{return null}return null}function UE(t){if(!(t!=null&&t.length))return null;for(let A=t.length-1;A>=0;A-=1){const e=t[A],r=MR(e);if(r)return{mdoc:r,toolCallId:e.id}}return null}function QuA(t){return t!=null&&t.length?t.filter(A=>!$u(A.function.name)):[]}const puA=["data-tool-call-id","aria-label","aria-busy"],EuA={class:"tool-call-part__track"},vuA={class:"tool-call-part__icon-wrap"},muA={class:"tool-call-part__content"},yuA=["aria-expanded"],wuA={class:"tool-call-part__name"},DuA={key:0,class:"tool-call-part__running-label"},kuA={key:1,class:"tool-call-part__summary"},buA=["inert","aria-hidden"],SuA={key:0,class:"tool-call-part__section"},NuA={key:0,class:"tool-call-part__validation",role:"alert"},FuA={key:1,class:"tool-call-part__section"},xuA=["aria-expanded"],_uA={key:2,class:"tool-call-part__section"},MuA={key:3,class:"tool-call-part__section"},RuA={class:"tool-call-part__result-text"},GuA={key:4,class:"tool-call-part__error",role:"alert"},LuA={key:5,class:"tool-call-part__actions"},TuA=["disabled"],YuA=["disabled"],UuA={key:6,class:"tool-call-part__actions"},JuA=["disabled"],OuA=["disabled"],HuA=160,VuA=h.defineComponent({name:"ToolCallPart",__name:"ToolCallPart",props:{toolCall:{},toolMessage:{},isStreaming:{type:Boolean},toolState:{},renderer:{},isFirst:{type:Boolean},isLast:{type:Boolean}},emits:["tool-action"],setup(t,{emit:A}){var jA;const e=t,r=A,i=Pl(),n=h.ref(((jA=e.toolState)==null?void 0:jA.arguments)??e.toolCall.function.arguments),a=h.computed(()=>{var lA;return CA((lA=e.toolMessage)==null?void 0:lA.content)}),o=h.computed(()=>{var xA;if((xA=e.toolState)!=null&&xA.error)return e.toolState.error;const lA=a.value;return SA(lA)&&typeof lA.error=="string"?lA.error:void 0}),s=h.computed(()=>duA({toolState:e.toolState,toolMessage:e.toolMessage,streaming:e.isStreaming})),g=h.computed(()=>e.renderer??i.toolRenderers.value[e.toolCall.function.name]??SR(e.toolCall.function.name)),l=h.computed(()=>n.value),c=h.computed(()=>nA(a.value)),C=h.computed(()=>g.value!==void 0&&a.value!==void 0),u=h.computed(()=>{var lA;return((lA=e.toolState)==null?void 0:lA.isArgumentsEditable)===!0&&(s.value==="requires-approval"||s.value==="requires-action")}),I=h.computed(()=>{try{return JSON.parse(l.value),!0}catch{return!1}}),f=I,d=h.computed(()=>$u(e.toolCall.function.name)?WS(l.value):luA(l.value)),B=h.computed(()=>!u.value&&d.value.trim().length>0),Q=h.computed(()=>huA(e.toolCall.function.name)),p=h.computed(()=>({pending:"等待中","requires-approval":"等待审批",running:"执行中",success:"完成",error:"失败",denied:"已拒绝",cancelled:"已取消","requires-action":"需要操作"})[s.value]),E=h.computed(()=>({search:L7,render_chart:W7,render_mind_map:k7,execute_code:Z7,get_deployment:Y7,read_private_document:p7,calculate_retention:my,"open-generative-ui":F7,toggleTheme:S7,pieChart:$8,barChart:my,plan_visualization:v7,scheduleTime:z8})[e.toolCall.function.name]??X7),v=h.computed(()=>{if($u(e.toolCall.function.name))return WS(e.toolCall.function.arguments);try{const lA=JSON.parse(e.toolCall.function.arguments);return SA(lA)?Object.entries(lA).map(([xA,mA])=>`${xA}: ${typeof mA=="string"?mA:JSON.stringify(mA)}`).join(" · "):""}catch{return e.toolCall.function.arguments}}),y=h.computed(()=>u.value||f.value||s.value!=="running"&&s.value!=="pending"?!1:l.value.trim().length>0),w=h.computed(()=>s.value!=="running"?"":y.value?"生成参数中":"执行中");function b(lA){return["pending","running","requires-approval","requires-action"].includes(lA)}const k=h.ref(b(s.value)),S=h.ref(!1),N=h.ref(!1),_=h.ref(null),x=h.ref(),G=h.ref(0);let L;function J(){const lA=x.value;lA&&(G.value=lA.scrollHeight)}h.watch(x,lA=>{L==null||L.disconnect(),L=void 0,lA&&(J(),typeof ResizeObserver<"u"&&(L=new ResizeObserver(J),L.observe(lA)))},{immediate:!0,flush:"post"}),h.onBeforeUnmount(()=>L==null?void 0:L.disconnect());const z=h.computed(()=>({height:k.value?`${G.value}px`:"0px"})),U=h.ref();let K;function $(){const lA=U.value;if(!lA){N.value=!1;return}S.value||(N.value=lA.scrollHeight>HuA+1)}h.watch(U,lA=>{K==null||K.disconnect(),K=void 0,lA&&($(),typeof ResizeObserver<"u"&&(K=new ResizeObserver($),K.observe(lA)))},{immediate:!0,flush:"post"}),h.onBeforeUnmount(()=>K==null?void 0:K.disconnect());function j(){k.value=!k.value}function tA(){S.value=!S.value,S.value||$()}function rA(lA){(lA==="approve"||lA==="submit-action")&&!I.value||(_.value=lA,r("tool-action",{action:lA,toolCall:e.toolCall,arguments:l.value}))}function nA(lA){if(lA===void 0||lA==="")return"";if(typeof lA=="string")try{return JSON.stringify(JSON.parse(lA),null,2)}catch{return lA}try{return JSON.stringify(lA,null,2)}catch{return String(lA)}}function CA(lA){if(lA)try{return JSON.parse(lA)}catch{return lA}}function SA(lA){return typeof lA=="object"&&lA!==null&&!Array.isArray(lA)}return h.watch(s,lA=>{k.value=b(lA),_.value=null,b(lA)||(S.value=!1)}),h.watch(()=>{var lA;return[(lA=e.toolState)==null?void 0:lA.arguments,e.toolCall.function.arguments]},([lA,xA])=>{n.value=lA??xA}),(lA,xA)=>(h.openBlock(),h.createElementBlock("div",{class:h.normalizeClass(["tool-call-part",`tool-call-part--${s.value}`]),"data-tool-call-id":t.toolCall.id,"aria-label":`${Q.value}:${p.value}`,"aria-busy":s.value==="pending"||s.value==="running"?"true":"false"},[h.createElementVNode("div",EuA,[h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__line tool-call-part__line--top",{"tool-call-part__line--visible":!t.isFirst}])},null,2),h.createElementVNode("div",vuA,[(h.openBlock(),h.createBlock(h.resolveDynamicComponent(E.value),{class:h.normalizeClass(["tool-call-part__indicator",{"tool-call-part__indicator--running":s.value==="running"}]),size:16,"stroke-width":1.75,"aria-hidden":"true"},null,8,["class"]))]),h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__line tool-call-part__line--bottom",{"tool-call-part__line--visible":!t.isLast||k.value}])},null,2)]),h.createElementVNode("div",muA,[h.createElementVNode("button",{type:"button",class:"tool-call-part__header","aria-expanded":k.value,"data-testid":"tool-call-header",onClick:j},[h.createElementVNode("span",wuA,h.toDisplayString(Q.value),1),w.value?(h.openBlock(),h.createElementBlock("span",DuA,h.toDisplayString(w.value),1)):v.value&&!k.value?(h.openBlock(),h.createElementBlock("span",kuA,h.toDisplayString(v.value),1)):h.createCommentVNode("",!0),h.createVNode(h.unref(qE),{class:h.normalizeClass(["tool-call-part__chevron",{"tool-call-part__chevron--open":k.value}]),size:13,"stroke-width":1.75,"aria-hidden":"true"},null,8,["class"])],8,yuA),h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__body-wrapper",{"tool-call-part__body-wrapper--open":k.value}]),style:h.normalizeStyle(z.value),inert:!k.value,"aria-hidden":!k.value},[h.createElementVNode("div",{ref_key:"bodyContentRef",ref:x,class:"tool-call-part__body"},[u.value?(h.openBlock(),h.createElementBlock("div",SuA,[h.withDirectives(h.createElementVNode("textarea",{"onUpdate:modelValue":xA[0]||(xA[0]=mA=>n.value=mA),class:"tool-call-part__editor","aria-label":"工具参数 JSON",rows:"5"},null,512),[[h.vModelText,n.value]]),I.value?h.createCommentVNode("",!0):(h.openBlock(),h.createElementBlock("p",NuA," 参数必须是有效的 JSON "))])):B.value?(h.openBlock(),h.createElementBlock("div",FuA,[h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__details-clamp",{"tool-call-part__details-clamp--expanded":S.value}])},[h.createElementVNode("pre",{ref_key:"detailsPreRef",ref:U,class:h.normalizeClass(["tool-call-part__streaming-arguments",{"tool-call-part__streaming-arguments--streaming":y.value}])},h.toDisplayString(d.value),3)],2),N.value||S.value?(h.openBlock(),h.createElementBlock("button",{key:0,type:"button",class:"tool-call-part__more","aria-expanded":S.value,onClick:h.withModifiers(tA,["stop"])},h.toDisplayString(S.value?"收起":"展开更多"),9,xuA)):h.createCommentVNode("",!0)])):h.createCommentVNode("",!0),C.value?(h.openBlock(),h.createElementBlock("section",_uA,[(h.openBlock(),h.createBlock(h.resolveDynamicComponent(g.value),{"tool-call":t.toolCall,status:s.value,result:a.value,error:o.value,message:t.toolMessage,"is-streaming":t.isStreaming===!0},null,8,["tool-call","status","result","error","message","is-streaming"]))])):c.value?(h.openBlock(),h.createElementBlock("div",MuA,[h.createElementVNode("pre",RuA,h.toDisplayString(c.value),1)])):h.createCommentVNode("",!0),o.value?(h.openBlock(),h.createElementBlock("p",GuA,h.toDisplayString(o.value),1)):h.createCommentVNode("",!0),s.value==="requires-approval"?(h.openBlock(),h.createElementBlock("div",LuA,[h.createElementVNode("button",{type:"button","data-testid":"tool-deny",disabled:_.value!==null,onClick:xA[1]||(xA[1]=mA=>rA("deny"))},h.toDisplayString(_.value==="deny"?"处理中…":"拒绝"),9,TuA),h.createElementVNode("button",{type:"button","data-testid":"tool-approve",disabled:_.value!==null||u.value&&!I.value,onClick:xA[2]||(xA[2]=mA=>rA("approve"))},h.toDisplayString(_.value==="approve"?"处理中…":"允许"),9,YuA)])):s.value==="requires-action"?(h.openBlock(),h.createElementBlock("div",UuA,[h.createElementVNode("button",{type:"button",disabled:_.value!==null,onClick:xA[3]||(xA[3]=mA=>rA("cancel"))},h.toDisplayString(_.value==="cancel"?"处理中…":"取消"),9,JuA),h.createElementVNode("button",{type:"button",disabled:_.value!==null||u.value&&!I.value,onClick:xA[4]||(xA[4]=mA=>rA("submit-action"))},h.toDisplayString(_.value==="submit-action"?"处理中…":"继续"),9,OuA)])):h.createCommentVNode("",!0)],512)],14,buA)])],10,puA))}}),RR=de(VuA,[["__scopeId","data-v-5f447e92"]]),ZuA=h.defineComponent({__name:"ChatToolGroup",props:{toolCalls:{},toolMessages:{},toolStates:{},streaming:{type:Boolean}},emits:["tool-action"],setup(t,{emit:A}){const e=t,r=A,i=h.ref();function n(s,g){return s==null?void 0:s.find(l=>l.tool_call_id===g)}function a(){const s=i.value;if(!s)return;const g=Array.from(s.querySelectorAll(".tool-call-part__name"));if(!g.length)return;g.forEach(c=>c.style.removeProperty("min-width"));const l=Math.max(...g.map(c=>c.getBoundingClientRect().width));s.style.setProperty("--tool-name-col-width",`${Math.ceil(l)}px`)}function o(){h.nextTick(a)}return h.watch(()=>e.toolCalls.map(s=>s.function.name),o,{flush:"post"}),h.onMounted(()=>{o(),window.addEventListener("resize",o)}),h.onBeforeUnmount(()=>window.removeEventListener("resize",o)),(s,g)=>(h.openBlock(),h.createElementBlock("div",{ref_key:"groupRef",ref:i,class:"chat-tool-group",role:"group","aria-label":"工具调用"},[(h.openBlock(!0),h.createElementBlock(h.Fragment,null,h.renderList(t.toolCalls,(l,c)=>h.renderSlot(s.$slots,"default",{key:l.id,toolCall:l,toolMessage:n(t.toolMessages,l.id),streaming:t.streaming===!0},()=>{var C;return[h.createVNode(RR,{"tool-call":l,"tool-message":n(t.toolMessages,l.id),"tool-state":(C=t.toolStates)==null?void 0:C[l.id],"is-streaming":t.streaming,"is-first":c===0,"is-last":c===t.toolCalls.length-1,onToolAction:g[0]||(g[0]=u=>r("tool-action",u))},null,8,["tool-call","tool-message","tool-state","is-streaming","is-first","is-last"])]},!0)),128))],512))}}),JE=de(ZuA,[["__scopeId","data-v-a0cba0c3"]]),quA={key:0,class:"input-content__text"},KuA={key:1,class:"input-content"},PuA={key:0,class:"input-content__text"},WuA=["href","aria-label"],zuA=["src","alt"],XuA={key:2,class:"input-content__reference"},juA=["src"],$uA={key:4,class:"input-content__reference"},A0A=["src"],e0A={key:6,class:"input-content__reference"},t0A=["href"],r0A={key:8,class:"input-content__reference"},i0A=576,n0A=h.defineComponent({name:"InputContentParts",__name:"InputContentParts",props:{content:{}},setup(t){function A(o){const s=o.image_url.url??"";return Fs(s,{width:i0A})}function e(o){return o.image_url.url??""}function r(o){return o.video_url.url??""}function i(o){return o.input_audio.url?o.input_audio.url:o.input_audio.data?`data:audio/${o.input_audio.format||"mpeg"};base64,${o.input_audio.data}`:""}function n(o){return o.file.file_url??""}function a(o){return o.type==="image_url"?o.image_url.file_id||"图片":o.type==="video_url"?o.video_url.file_id||"视频":o.type==="input_audio"?o.input_audio.file_id||"音频":o.type==="file"?o.file.filename||o.file.file_id||"文件":""}return(o,s)=>typeof t.content=="string"?(h.openBlock(),h.createElementBlock("span",quA,h.toDisplayString(t.content),1)):(h.openBlock(),h.createElementBlock("span",KuA,[(h.openBlock(!0),h.createElementBlock(h.Fragment,null,h.renderList(t.content,(g,l)=>(h.openBlock(),h.createElementBlock(h.Fragment,{key:l},[g.type==="text"?(h.openBlock(),h.createElementBlock("span",PuA,h.toDisplayString(g.text),1)):g.type==="image_url"&&e(g)?(h.openBlock(),h.createElementBlock("a",{key:1,class:"input-content__media-link",href:e(g),target:"_blank",rel:"noreferrer","aria-label":`打开${a(g)}`},[h.createElementVNode("img",{class:"input-content__image",src:A(g),alt:a(g)},null,8,zuA)],8,WuA)):g.type==="image_url"?(h.openBlock(),h.createElementBlock("span",XuA,h.toDisplayString(a(g)),1)):g.type==="video_url"&&r(g)?(h.openBlock(),h.createElementBlock("video",{key:3,class:"input-content__video",src:r(g),controls:"",preload:"metadata"},null,8,juA)):g.type==="video_url"?(h.openBlock(),h.createElementBlock("span",$uA,h.toDisplayString(a(g)),1)):g.type==="input_audio"&&i(g)?(h.openBlock(),h.createElementBlock("audio",{key:5,class:"input-content__audio",src:i(g),controls:"",preload:"metadata"},null,8,A0A)):g.type==="input_audio"?(h.openBlock(),h.createElementBlock("span",e0A,h.toDisplayString(a(g)),1)):g.type==="file"&&n(g)?(h.openBlock(),h.createElementBlock("a",{key:7,class:"input-content__file",href:n(g),target:"_blank",rel:"noreferrer"},h.toDisplayString(a(g)),9,t0A)):g.type==="file"?(h.openBlock(),h.createElementBlock("span",r0A,h.toDisplayString(a(g)),1)):h.createCommentVNode("",!0)],64))),128))]))}}),a0A=de(n0A,[["__scopeId","data-v-4ed892a8"]]),o0A=["aria-label","aria-busy"],s0A={class:"conversation-message__inner"},g0A={key:0,class:"conversation-message__mark conversation-message__mark--assistant","aria-hidden":"true"},l0A=["src"],c0A={class:"conversation-message__content"},u0A={key:1,class:"conversation-message__bubble"},C0A={key:2,class:"conversation-message__text"},h0A={key:1,class:"conversation-message__plain"},I0A={key:1,class:"conversation-message__mark conversation-message__mark--user","aria-hidden":"true"},f0A=["src"],d0A=h.defineComponent({name:"MessageBubble",__name:"MessageBubble",props:{message:{type:Object,required:!0},streaming:{type:Boolean,default:!1},toolMessages:{type:Array,default:()=>[]},theme:{type:Object,default:void 0},userAvatar:{type:String,default:void 0},assistantAvatar:{type:String,default:void 0},toolStates:{type:Object,default:()=>({})},followUps:{type:Array,default:void 0},showFollowUps:{type:Boolean,default:!0}},emits:["copy","action","attachment-preview","tool-action"],setup(t,{emit:A}){const e=t,r=A,i=h.useSlots(),n=h.computed(()=>e.message),a=h.computed(()=>e.message.role==="user"),o=h.computed(()=>e.message.role==="system"),s=h.computed(()=>e.message.role==="tool"),g=h.computed(()=>e.message.role==="assistant"),l=h.computed(()=>e.message.role==="assistant"?e.message:null),c=h.computed(()=>a.value?"用户消息":o.value?"系统消息":s.value?"工具消息":"AI 助手消息"),C=h.computed(()=>{var K;if(g.value)return FM((K=l.value)==null?void 0:K.content);const U=e.message.content;return typeof U=="string"?U:Array.isArray(U)?U.filter($=>$.type==="text").map($=>$.text).join(""):""}),u=h.computed(()=>{var U,K;return((K=(U=l.value)==null?void 0:U.reasoning_content)==null?void 0:K.trim())??""}),I=h.computed(()=>C.value),f=h.computed(()=>g.value&&!!u.value),d=h.computed(()=>{var U;return((U=l.value)==null?void 0:U.steps)??[]}),B=h.computed(()=>{if(e.message.role!=="user"&&e.message.role!=="system")return!1;const U=e.message.content;return typeof U=="string"?U.trim().length>0:U.some(K=>K.type==="text"?K.text.trim().length>0:!0)}),Q=h.computed(()=>a.value||o.value?B.value:!!I.value.trim()),p=h.computed(()=>I.value),E=h.computed(()=>{var U,K;return g.value&&e.streaming&&!Q.value&&!f.value&&!((K=(U=l.value)==null?void 0:U.tool_calls)!=null&&K.length)}),v=h.computed(()=>f.value||E.value),y=h.computed(()=>g.value&&!e.streaming&&p.value.trim().length>0),w=h.computed(()=>!g.value||!e.showFollowUps||e.streaming?[]:e.followUps??[]),b=h.computed(()=>w.value.length>0);function k(U){r("action",{type:"submit",value:U,label:U,source:"follow-up"})}const S=h.computed(()=>g.value&&(!!e.assistantAvatar||!!i["assistant-avatar"])),N=h.computed(()=>a.value&&(!!e.userAvatar||!!i["user-avatar"])),_=h.computed(()=>{var U;return((U=l.value)==null?void 0:U.tool_calls)??[]}),x=h.computed(()=>{const U=[];for(const K of d.value){if(K.type==="reasoning"){U.push(K);continue}K.tool_calls.length>0&&U.push(K)}return U}),G=h.computed(()=>x.value.length>0),L=h.computed(()=>e.message.role==="user"||e.message.role==="system"?e.message.content:""),J=h.computed(()=>e.message.role==="user"?e.message.resource_files??[]:[]),z=h.computed(()=>!a.value||Q.value);return(U,K)=>(h.openBlock(),h.createElementBlock("article",{class:h.normalizeClass(["conversation-message",{"conversation-message--user":a.value,"conversation-message--system":o.value,"conversation-message--assistant":g.value,"conversation-message--tool":s.value,"conversation-message--text-only":Q.value||v.value,"conversation-message--streaming":t.streaming,"conversation-message--loading":E.value,"conversation-message--with-avatar":S.value||N.value}]),"aria-label":c.value,"aria-busy":t.streaming?"true":void 0},[h.createElementVNode("div",s0A,[S.value?(h.openBlock(),h.createElementBlock("span",g0A,[h.renderSlot(U.$slots,"assistant-avatar",{},()=>[t.assistantAvatar?(h.openBlock(),h.createElementBlock("img",{key:0,class:"conversation-message__mark-img",src:t.assistantAvatar,alt:""},null,8,l0A)):h.createCommentVNode("",!0)],!0)])):h.createCommentVNode("",!0),h.createElementVNode("div",c0A,[J.value.length?(h.openBlock(),h.createBlock(x4,{key:0,class:"conversation-message__attachments",resources:J.value,onPreview:K[0]||(K[0]=$=>r("attachment-preview",$))},null,8,["resources"])):h.createCommentVNode("",!0),z.value?(h.openBlock(),h.createElementBlock("div",u0A,[G.value?(h.openBlock(!0),h.createElementBlock(h.Fragment,{key:0},h.renderList(x.value,($,j)=>(h.openBlock(),h.createElementBlock(h.Fragment,{key:`step-${j}`},[$.type==="reasoning"?(h.openBlock(),h.createBlock(NE,{key:0,class:"conversation-message__reasoning",content:$.content,streaming:t.streaming&&j===x.value.length-1},null,8,["content","streaming"])):(h.openBlock(),h.createBlock(JE,{key:1,class:"conversation-message__tools","tool-calls":$.tool_calls,"tool-messages":t.toolMessages,"tool-states":t.toolStates,streaming:t.streaming&&j===x.value.length-1,onToolAction:K[1]||(K[1]=tA=>r("tool-action",tA))},h.createSlots({_:2},[U.$slots.tool?{name:"default",fn:h.withCtx(tA=>[h.renderSlot(U.$slots,"tool",h.mergeProps({ref_for:!0},tA),void 0,!0)]),key:"0"}:void 0]),1032,["tool-calls","tool-messages","tool-states","streaming"]))],64))),128)):(h.openBlock(),h.createElementBlock(h.Fragment,{key:1},[v.value?(h.openBlock(),h.createBlock(NE,{key:0,class:"conversation-message__reasoning",content:u.value,streaming:t.streaming,"data-testid":E.value?"conversation-streaming-indicator":void 0},null,8,["content","streaming","data-testid"])):h.createCommentVNode("",!0),_.value.length?(h.openBlock(),h.createBlock(JE,{key:1,class:"conversation-message__tools","tool-calls":_.value,"tool-messages":t.toolMessages,"tool-states":t.toolStates,streaming:t.streaming,onToolAction:K[2]||(K[2]=$=>r("tool-action",$))},h.createSlots({_:2},[U.$slots.tool?{name:"default",fn:h.withCtx($=>[h.renderSlot(U.$slots,"tool",h.normalizeProps(h.guardReactiveProps($)),void 0,!0)]),key:"0"}:void 0]),1032,["tool-calls","tool-messages","tool-states","streaming"])):h.createCommentVNode("",!0)],64)),Q.value||!a.value&&U.$slots.content?(h.openBlock(),h.createElementBlock("div",C0A,[h.renderSlot(U.$slots,"content",{message:n.value,content:I.value,isStreaming:t.streaming},()=>[a.value||o.value?(h.openBlock(),h.createBlock(a0A,{key:0,content:L.value},null,8,["content"])):s.value?(h.openBlock(),h.createElementBlock("span",h0A,h.toDisplayString(I.value),1)):(h.openBlock(),h.createBlock(qm,{key:2,content:I.value,"is-streaming":t.streaming,"highlight-stream-tail":t.streaming&&!f.value,onAction:K[3]||(K[3]=$=>r("action",$))},null,8,["content","is-streaming","highlight-stream-tail"]))],!0)])):h.createCommentVNode("",!0)])):h.createCommentVNode("",!0),y.value&&l.value?(h.openBlock(),h.createBlock(m4,{key:2,message:l.value,text:p.value,onCopy:K[4]||(K[4]=$=>r("copy",$))},h.createSlots({_:2},[U.$slots.actionbar?{name:"default",fn:h.withCtx($=>[h.renderSlot(U.$slots,"actionbar",h.normalizeProps(h.guardReactiveProps($)),void 0,!0)]),key:"0"}:void 0]),1032,["message","text"])):h.createCommentVNode("",!0),b.value?(h.openBlock(),h.createBlock(_4,{key:3,questions:w.value,onSelect:k},null,8,["questions"])):h.createCommentVNode("",!0)]),N.value?(h.openBlock(),h.createElementBlock("span",I0A,[h.renderSlot(U.$slots,"user-avatar",{},()=>[t.userAvatar?(h.openBlock(),h.createElementBlock("img",{key:0,class:"conversation-message__mark-img",src:t.userAvatar,alt:""},null,8,f0A)):h.createCommentVNode("",!0)],!0)])):h.createCommentVNode("",!0)])],10,o0A))}}),GR=de(d0A,[["__scopeId","data-v-0c2b4fe3"]]),LR=h.defineComponent({name:"ChatMessage",__name:"ChatMessage",props:{message:{type:Object,required:!0},streaming:{type:Boolean,default:!1},toolMessages:{type:Array,default:()=>[]},theme:{type:Object,default:void 0},userAvatar:{type:String,default:void 0},assistantAvatar:{type:String,default:void 0},toolStates:{type:Object,default:()=>({})},followUps:{type:Array,default:void 0},showFollowUps:{type:Boolean,default:!0}},emits:["copy","action","attachment-preview","tool-action"],setup(t,{emit:A}){const e=t,r=A;return(i,n)=>(h.openBlock(),h.createBlock(GR,h.mergeProps(e,{onCopy:n[0]||(n[0]=a=>r("copy",a)),onAction:n[1]||(n[1]=a=>r("action",a)),onAttachmentPreview:n[2]||(n[2]=a=>r("attachment-preview",a)),onToolAction:n[3]||(n[3]=a=>r("tool-action",a))}),h.createSlots({_:2},[i.$slots["user-avatar"]?{name:"user-avatar",fn:h.withCtx(()=>[h.renderSlot(i.$slots,"user-avatar")]),key:"0"}:void 0,i.$slots["assistant-avatar"]?{name:"assistant-avatar",fn:h.withCtx(()=>[h.renderSlot(i.$slots,"assistant-avatar")]),key:"1"}:void 0,i.$slots.content?{name:"content",fn:h.withCtx(a=>[h.renderSlot(i.$slots,"content",h.normalizeProps(h.guardReactiveProps(a)))]),key:"2"}:void 0,i.$slots.actionbar?{name:"actionbar",fn:h.withCtx(a=>[h.renderSlot(i.$slots,"actionbar",h.normalizeProps(h.guardReactiveProps(a)))]),key:"3"}:void 0,i.$slots.tool?{name:"tool",fn:h.withCtx(a=>[h.renderSlot(i.$slots,"tool",h.normalizeProps(h.guardReactiveProps(a)))]),key:"4"}:void 0]),1040))}}),B0A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEkUlEQVR4AeycAW6cQAxFQ0/WnCzJyZKebGtHuKrQJrBhzPj7/wo0u0AH+78HykYbfj3pH3UCEoAa/9OTBJAA5AmQt687gAQgT4C8fd0BJAB5AqTtR9u6A0QSpKMEIAUfbUuASIJ0lACk4KNtCRBJkI4SgBR8tC0BIgnSUQKQgd+2KwG2iZC9lwBkwLftSoBtImTvJQAZ8G27EmCbCNl7CUAGfNuuBNgmQvaeWoDb7fbb1ldbf3fn/lV/lAIYcId+s1DebX2x9d22+fJqr6kWOgGMckC/B/rF9lNJQCWAwXX4e7d7KgloBDgIP+4KNBJQCPAgfCoJ2gvwQ/g0ErQW4CR8CgnaCjAIPrwE0cBXY0sBBsOP7Fr+YNhOgCT4bSVoJUAy/JYStBHgIvjtJGghwMXwW0kAL8Ak+G0kgBZgMvwWEsAKUAR+WQmisL0RUoBi8CNjyN8TwAlQFD6sBFACnIT/FpQOjB92zCPH2+H/Fqg7AYwAZ+Evy/LQN33W49tLACHA1fDjWmaQoLwAs+CzSFBagNnwGSQoK0AV+GgSRL1Hx5ICVIMfYXb8maCcAFXhd5WglADV4XeUoIwAKPC7SVBCADT4nSSYLgAq/C4STBUAHX4HCaYJ0AV+FQmijkfHKQJ0gx+hI/6e4HIBusJHleBSAbrDR5TgMgFY4KNJcIkAbPCRJEgXgBU+igSpArDDR5AgTQCD79/B23sgU2S0Hd/Wj1Tb7bDv137OfMfwbpZnA0kRwOB7sf78vZ/U1w5+hHBSAn/CWUw1bEwRwKpzAWx4eGkLP5I4I8F6YcVUQ8YsAX5SXHv4EcoZCWKOUWMVAWjgB7gqEmQJ4H9ZE73ujXTwI5BHJbDjH8k1TvPtmCLAWuiRYmnhBxXLyj8tHfl0cOSYmPbwmCKAn90ae7bxu6Kf7Rhv3g7jXtYcvssq7UJJE8CR/tdYNOd3BW/Gdi3+2g/TaglYIH4xxEXj2cR690Kx/zJkSRXAK/TG1tWGJbUZPx/yuizLh62vtnpOsboIaW2lC5BWuSYekoAEGBIj7iQSAJfdkMolwJAYcSeRALjshlQuAYbEiDuJBABjN7pcCTA6UbD5JAAYsNHlSoDRiYLNJwHAgI0uVwKMThRsPgkABmx0uRJgdKJg80kAEGBZZUqArGRB5pUAIKCyypQAWcmCzCsBQEBllSkBspIFmVcCgIDKKlMCZCULMq8EKA4quzwJkJ1w8fklQHFA2eVJgOyEi88vAYoDyi5PAmQnXHx+CVAcUHZ5EiA74eLzS4CigK4qSwJclXTR80iAomCuKksC3E/6z/3N/bayCZD6uBVEPdgEOMqIRhQqAfzhSwcM8KeYSYADQaEeEo+su1f/51O67u3ouo3qDuAQ7S7gj2Fb7LWL4Fd6rJ+PZbPtU5erT04nQAS8ivAJ3V776CLEbpqRVgAawjuNSoCdgLrvlgDdCe/0JwF2Auq+WwJ0J7zTnwTYCaj7bglQhPCsMiTArOSLnFcCFAExqwwJMCv5IueVAEVAzCpDAsxKvsh5JUARELPKkACzki9yXgkwGcTs0/8FAAD//wp1l3UAAAAGSURBVAMAxMyyEBy8oUUAAAAASUVORK5CYII=";async function gy(t,A,e){var C,u;const r=Zs(t.name);if(!r)throw new Error("文件缺少扩展名");const i=new URLSearchParams({bucketType:vu(t)==="video"?"52":"51",fileType:r});(C=A.dir)!=null&&C.trim()&&i.set("dir",A.dir.trim());const n=await((u=A.credentialHeaders)==null?void 0:u.call(A)),a=A.cloudBaseUrl.replace(/\/+$/,""),o=await fetch(`${a}/common/file/getToken?${i.toString()}`,{method:"GET",credentials:"include",headers:n,signal:e});if(!o.ok)throw new Error(`获取上传凭证失败:HTTP ${o.status}`);const s=await o.json();if(!SQ(s)||s.status!==1||!SQ(s.result)){const I=SQ(s)&&typeof s.message=="string"?s.message:"";throw new Error(I||"获取上传凭证失败")}const{uptoken:g,fileKey:l,uploadUrl:c}=s.result;if(![g,l,c].every(I=>typeof I=="string"&&I.trim()))throw new Error("上传凭证响应不完整");return{uptoken:g,fileKey:l,uploadUrl:c}}function ly(t,A,e={}){return new Promise((r,i)=>{var l,c;if((l=e.signal)!=null&&l.aborted){i(XS());return}const n=new XMLHttpRequest,a=()=>{var C;return(C=e.signal)==null?void 0:C.removeEventListener("abort",s)},o=C=>{a(),i(C)},s=()=>n.abort();n.open("POST",A.uploadUrl),n.upload.onprogress=C=>{var u;!C.lengthComputable||C.total<=0||(u=e.onProgress)==null||u.call(e,Math.round(C.loaded/C.total*100))},n.onload=()=>{if(n.status<200||n.status>=300){o(new Error(`文件上传失败:HTTP ${n.status}`));return}try{const C=JSON.parse(n.responseText),u=KE(C);a(),r(u)}catch(C){o(C instanceof Error?C:new Error("上传响应无法解析"))}},n.onerror=()=>o(new Error("文件上传失败,请检查网络后重试")),n.onabort=()=>o(XS()),(c=e.signal)==null||c.addEventListener("abort",s,{once:!0});const g=new FormData;g.append("token",A.uptoken),g.append("key",A.fileKey),g.append("file",t,t.name),n.send(g)})}async function Q0A(t,A,e={}){const r=await gy(t,A,e.signal);return ly(t,r,e)}function XS(){if(typeof DOMException=="function")return new DOMException("上传已取消","AbortError");const t=new Error("上传已取消");return t.name="AbortError",t}function SQ(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}let jS=0;function TR(t){const A=new Map,e=new Map,r=t.upload??p0A;function i(c,C){const u=t.getAttachments(),I=u.findIndex(d=>d.id===c);if(I<0)return;const f=[...u];f[I]=C,t.setAttachments(f)}async function n(c,C,u){var d,B;const I=t.getUploadConfig();if(!(I!=null&&I.cloudBaseUrl)){const Q={code:"missing_config",message:"未配置文件上传服务"};i(c,{id:c,status:"error",file:C,progress:0,previewUrl:u,error:Q}),(d=t.onError)==null||d.call(t,Q,C);return}const f=new AbortController;A.set(c,f),i(c,{id:c,status:"uploading",file:C,progress:0,previewUrl:u});try{const Q=await r(C,{config:I,signal:f.signal,onProgress(E){const v=t.getAttachments().find(y=>y.id===c);!v||v.status!=="uploading"||i(c,{...v,progress:E})}});if(f.signal.aborted)return;const p=KE(Q);i(c,{id:c,status:"uploaded",previewUrl:u??p.url,uploadResult:p,resource:b4(p)})}catch(Q){if(f.signal.aborted||m0A(Q))return;const p={code:Q instanceof Error&&Q.message.includes("元数据")?"invalid_response":"upload_error",message:Q instanceof Error?Q.message:"文件上传失败"};i(c,{id:c,status:"error",file:C,progress:0,previewUrl:u,error:p}),(B=t.onError)==null||B.call(t,p,C)}finally{A.delete(c)}}async function a(c){var B,Q,p,E;const C=t.getAttachments(),u=((B=t.getLimits)==null?void 0:B.call(t))??e0,I=new Set;for(const v of C)v.status!=="uploaded"&&I.add(TQ(v.file));for(const v of e.values())I.add(v);const f=Math.max(0,u.maxFiles-C.length),d=[];for(const v of c){if(d.length>=f){(Q=t.onError)==null||Q.call(t,{code:"too_many_files",message:`每条消息最多上传 ${u.maxFiles} 个文件`},v);continue}const y=k4(v,u);if(y){(p=t.onError)==null||p.call(t,y,v);continue}const w=TQ(v);if(I.has(w)){(E=t.onError)==null||E.call(t,{code:"duplicate_file",message:"请勿重复添加同一文件"},v);continue}I.add(w);const b=E0A();e.set(b,w),d.push({id:b,file:v,previewUrl:v0A(v)})}d.length!==0&&(t.setAttachments([...C,...d.map(({id:v,file:y,previewUrl:w})=>({id:v,status:"uploading",file:y,progress:0,previewUrl:w}))]),await Promise.all(d.map(({id:v,file:y,previewUrl:w})=>n(v,y,w))))}async function o(c){const C=t.getAttachments().find(u=>u.id===c);!C||C.status!=="error"||await n(c,C.file,C.previewUrl)}function s(c){var I;(I=A.get(c))==null||I.abort(),A.delete(c);const C=t.getAttachments(),u=C.find(f=>f.id===c);NQ(u==null?void 0:u.previewUrl),e.delete(c),t.setAttachments(C.filter(f=>f.id!==c))}function g(){for(const c of A.values())c.abort();A.clear();for(const c of t.getAttachments())NQ(c.previewUrl);e.clear()}function l(){for(const c of A.values())c.abort();A.clear();for(const c of t.getAttachments())NQ(c.previewUrl);e.clear(),t.setAttachments([])}return{addFiles:a,retry:o,remove:s,clear:l,dispose:g}}async function p0A(t,{config:A,signal:e,onProgress:r}){const i=await gy(t,A,e);return ly(t,i,{signal:e,onProgress:r})}function E0A(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(jS+=1,`chat-attachment-${jS}`)}function v0A(t){if(!(!t.type.startsWith("image/")||typeof URL.createObjectURL!="function"))return URL.createObjectURL(t)}function NQ(t){t!=null&&t.startsWith("blob:")&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(t)}function m0A(t){return t instanceof DOMException&&t.name==="AbortError"}function y0A(){if(typeof window>"u")return!1;const t=window;return!!(t.SpeechRecognition??t.webkitSpeechRecognition)}function FQ(t){if(!t||typeof t!="object")return!1;const A="name"in t?String(t.name):"";return A==="NotAllowedError"||A==="PermissionDeniedError"}function w0A(t){var mA,UA;const A=h.ref(!1),e=((mA=Gc())==null?void 0:mA.getItem("chat-sender-hold-to-record"))??null,r=h.ref(e==="true"),i=h.ref(!1),n=h.ref(!1),a=h.ref(0),o=h.ref(!1),s=h.ref(null),g=h.ref([]),l=((UA=Gc())==null?void 0:UA.getItem("chat-sender-device-id"))??null,c=h.ref(l||""),C=h.ref(y0A()),u=h.ref(!1);let I=null,f=null,d=null,B=null,Q=null,p=null,E=null;function v(){return typeof navigator>"u"?void 0:navigator.mediaDevices}function y(){g.value=[{deviceId:"default",label:"默认麦克风",active:!0}]}function w(){u.value=!0,s.value=null,A.value&&x()}function b(){u.value=!1}function k(cA){cA==="denied"?w():b()}async function S(){try{const cA=typeof navigator>"u"?void 0:navigator.permissions;if(!(cA!=null&&cA.query))return;E=await cA.query({name:"microphone"}),k(E.state),E.onchange=()=>{E&&k(E.state)}}catch{}}function N(){return!C.value||u.value||t.isDisabled()}async function _(){var cA,YA;if(!N()){if(A.value)x();else{if(A.value=!0,(cA=t.onMenuOpen)==null||cA.call(t),await G(),u.value)return;await L()}(YA=t.onVoiceClick)==null||YA.call(t)}}function x(){A.value=!1,n.value||z()}async function G(){var YA;const cA=v();if(!(cA!=null&&cA.getUserMedia)||!cA.enumerateDevices){y();return}try{const NA=await cA.getUserMedia({audio:!0}),Ce=(await cA.enumerateDevices()).filter(ge=>ge.kind==="audioinput");if(g.value=Ce.map((ge,Je)=>({deviceId:ge.deviceId,label:ge.label||`麦克风 ${Je+1}`,active:!1})),g.value.length>0){const ge=g.value.find(Je=>Je.deviceId===c.value);ge?ge.active=!0:(g.value[0].active=!0,c.value=g.value[0].deviceId,(YA=Gc())==null||YA.setItem("chat-sender-device-id",c.value))}n.value?xA(NA):(Q=NA,J(NA)),b(),s.value=null}catch(NA){if(console.error("无法获取音频设备列表:",NA),y(),FQ(NA)){w();return}s.value="无法获取麦克风列表,请检查浏览器权限"}}async function L(){if(Q||n.value||u.value)return;const cA=v();if(cA!=null&&cA.getUserMedia)try{const YA=await cA.getUserMedia({audio:c.value?{deviceId:{exact:c.value}}:!0});Q=YA,J(YA),b(),s.value=null}catch(YA){if(console.error("无法开启音频监测:",YA),FQ(YA)){w();return}s.value="无法访问麦克风,请检查浏览器权限"}}function J(cA){f||(f=new AudioContext),d||(d=f.createAnalyser(),d.fftSize=256),f.createMediaStreamSource(cA).connect(d),CA()}function z(){Q&&(xA(Q),Q=null),lA(),f&&!n.value&&(f.close(),f=null,d=null),a.value=0}async function U(){var cA;N()||r.value||(n.value?await nA(!1):await tA(),(cA=t.onVoiceRecord)==null||cA.call(t))}async function K(){N()||!r.value||(o.value=!0,await tA())}async function $(){!r.value||!o.value||(o.value=!1,await nA(!1))}function j(){r.value&&o.value&&$()}async function tA(){var YA;if(!C.value||u.value)return;const cA=v();if(!(cA!=null&&cA.getUserMedia)){s.value="当前浏览器不支持麦克风录音";return}try{Q&&(xA(Q),Q=null);const NA=await cA.getUserMedia({audio:c.value?{deviceId:{exact:c.value}}:!0});Q=NA,J(NA),rA(),typeof MediaRecorder<"u"&&(I=new MediaRecorder(NA),I.start()),n.value=!0,b(),s.value=null,(YA=t.onVoiceStart)==null||YA.call(t)}catch(NA){if(console.error("无法访问麦克风:",NA),FQ(NA)){w();return}s.value="无法访问麦克风,请检查浏览器权限"}}function rA(){const cA=window,YA=cA.SpeechRecognition??cA.webkitSpeechRecognition;if(!YA)return;const NA=new YA;p=NA,NA.lang="zh-CN",NA.continuous=!0,NA.interimResults=!0;let ue=t.draft.value;NA.onresult=Ce=>{let ge="",Je="";for(let aA=Ce.resultIndex;aA<Ce.results.length;aA+=1){const gA=Ce.results[aA][0].transcript;Ce.results[aA].isFinal?Je+=gA:ge+=gA}Je?(ue+=Je,t.draft.value=ue):ge&&(t.draft.value=ue+ge)},NA.onerror=Ce=>{if(console.error("语音识别错误:",Ce.error),Ce.error==="not-allowed"){w(),nA(!1,!0);return}Ce.error!=="no-speech"&&Ce.error!=="aborted"&&(s.value=`语音识别失败:${Ce.error}`)},NA.onend=()=>{if(n.value)try{NA.start()}catch{}},NA.start()}async function nA(cA=!1,YA=!1){var NA,ue,Ce;if(n.value){if(n.value=!1,p==null||p.stop(),p=null,I==null||I.stop(),I=null,Q&&(xA(Q),Q=null),lA(),a.value=0,cA&&!YA)t.draft.value="",(NA=t.onVoiceCancel)==null||NA.call(t);else if(!YA){const ge=t.draft.value.trim();ge&&((ue=t.onAudioTranscript)==null||ue.call(t,ge))}YA||(Ce=t.onVoiceStop)==null||Ce.call(t),A.value&&!u.value&&await L()}}function CA(){if(!d)return;const cA=new Uint8Array(d.frequencyBinCount);d.getByteFrequencyData(cA);const YA=cA.reduce((NA,ue)=>NA+ue,0)/cA.length;a.value=Math.min(100,YA/128*100),B=requestAnimationFrame(CA)}async function SA(cA){var NA,ue;const YA=g.value[cA];YA&&(g.value.forEach((Ce,ge)=>{Ce.active=ge===cA}),c.value=YA.deviceId,(NA=Gc())==null||NA.setItem("chat-sender-device-id",c.value),(ue=t.onAudioDeviceChange)==null||ue.call(t,cA),A.value&&!n.value&&(z(),await L()))}function jA(){var cA;r.value=!r.value,(cA=Gc())==null||cA.setItem("chat-sender-hold-to-record",String(r.value))}function lA(){B!==null&&(cancelAnimationFrame(B),B=null)}function xA(cA){cA.getTracks().forEach(YA=>YA.stop())}return h.onMounted(()=>{S()}),h.onUnmounted(()=>{E&&(E.onchange=null),E=null,A.value=!1,n.value&&nA(!1,!0),p==null||p.stop(),p=null,lA(),Q&&xA(Q),Q=null,f&&f.close(),f=null,d=null}),{showVoiceMenu:A,holdToRecord:r,isVoiceHovered:i,isRecording:n,audioLevel:a,isHoldingMic:o,voiceError:s,audioDevices:g,isSpeechSupported:C,isMicPermissionDenied:u,toggleVoiceMenu:_,closeVoiceMenu:x,handleVoiceRecord:U,handleMouseDown:K,handleMouseUp:$,handleMouseLeave:j,selectAudioDevice:SA,toggleHoldToRecord:jA}}function Gc(){return typeof localStorage>"u"?void 0:localStorage}const vh="data-mention-trigger-id",OE="data-mention-id",KI="data-mention-label",cy="data-mention-char",YR="data-mention-custom",mh="data-mention-mount-id",rd="chat-sender__mention";function Co(t){return!!t&&t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(rd)}function ho(t){if(!t||t.nodeType!==Node.TEXT_NODE)return!1;const A=t.textContent??"";return A.length===0||A==="​"}function PI(t){if(!t||t.nodeType!==Node.TEXT_NODE)return!1;const A=t.textContent??"";return A.length>0&&/^\s+$/.test(A)}function D0A(t,A){const e=A.cloneRange();e.collapse(!0);const{startContainer:r,startOffset:i}=e;if(r===t){if(i<=0)return!1;let n=i-1;for(;n>=0&&ho(t.childNodes[n]);)n-=1;if(n<0)return!1;const a=t.childNodes[n];if(Co(a))return!0;if(a.nodeType===Node.TEXT_NODE){const o=a.textContent??"";return o.length?!/\s/.test(o[o.length-1]):!0}return!0}if(r.nodeType===Node.TEXT_NODE&&t.contains(r)){if(i>0){const a=(r.textContent??"")[i-1];return a!==void 0&&!/\s/.test(a)}let n=r.previousSibling;for(;ho(n);)n=n.previousSibling;if(!n)return!1;if(Co(n))return!0;if(n.nodeType===Node.TEXT_NODE){const a=n.textContent??"";return a.length?!/\s/.test(a[a.length-1]):!0}return!0}return!1}function k0A(t,A){if(!A.collapsed)return null;const{startContainer:e,startOffset:r}=A;if(e===t){let i=r-1;for(;i>=0&&ho(t.childNodes[i]);)i-=1;for(;i>=0&&PI(t.childNodes[i]);)i-=1;const n=t.childNodes[i];return Co(n)?n:null}if(e.nodeType===Node.TEXT_NODE&&t.contains(e)){const i=e.textContent??"";if(r>0){if(r===i.length&&/^\s+$/.test(i)){let a=e.previousSibling;for(;ho(a);)a=a.previousSibling;return Co(a)?a:null}return null}let n=e.previousSibling;for(;ho(n)||PI(n);)n=n.previousSibling;return Co(n)?n:null}return null}function b0A(t,A){if(!A.collapsed)return null;const{startContainer:e,startOffset:r}=A;if(e===t){let i=r;for(;i<t.childNodes.length&&ho(t.childNodes[i]);)i+=1;for(;i<t.childNodes.length&&PI(t.childNodes[i]);)i+=1;const n=t.childNodes[i];return Co(n)?n:null}if(e.nodeType===Node.TEXT_NODE&&t.contains(e)){const i=e.textContent??"";if(r<i.length){if(r===0&&/^\s+$/.test(i)){let a=e.nextSibling;for(;ho(a);)a=a.nextSibling;return Co(a)?a:null}return null}let n=e.nextSibling;for(;ho(n)||PI(n);)n=n.nextSibling;return Co(n)?n:null}return null}function S0A(t){return/\s/.test(t)}function N0A(t,A,e){const r=[];let i;if(A===t)i=e-1;else if(A.nodeType===Node.TEXT_NODE&&A.parentNode===t){const n=A;for(let a=e-1;a>=0;a-=1)r.push({node:n,offset:a});i=Array.prototype.indexOf.call(t.childNodes,n)-1}else return r;for(let n=i;n>=0;n-=1){const a=t.childNodes[n];if(a.nodeType!==Node.TEXT_NODE)break;const o=a;for(let s=o.length-1;s>=0;s-=1)r.push({node:o,offset:s})}return r}function F0A(t,A,e,r){if(t.length===0)return null;const i=N0A(A,e,r);for(const{node:n,offset:a}of i){const o=n.data[a];if(S0A(o))return null;const s=t.find(g=>g.char===o);if(s){const g=document.createRange();return g.setStart(n,a),g.setEnd(e,r),{trigger:s,range:g}}}return null}function x0A(t){let A="";return t.childNodes.forEach(e=>{if(e.nodeType===Node.TEXT_NODE)A+=e.textContent??"";else if(e.nodeType===Node.ELEMENT_NODE){const r=e;r.tagName==="BR"?A+=`
692
+ `;else if(n==="t")A+=" ";else if(n==="r")A+="\r";else if(n==='"'||n==="\\"||n==="/")A+=n;else if(n==="u"&&i+4<t.length){const a=t.slice(i+1,i+5);/^[0-9a-fA-F]{4}$/.test(a)?(A+=String.fromCharCode(Number.parseInt(a,16)),i+=4):A+="\\u"}else A+=`\\${n}`;r=!1;continue}if(n==="\\"){r=!0;continue}if(n==='"'){e=!1,A+=n;continue}A+=n}return r&&(A+="\\"),A}function zS(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}const CuA={search:"检索资料",render_chart:"生成趋势图",render_mind_map:"生成思维导图",execute_code:"执行代码",get_deployment:"查询发布状态",read_private_document:"读取受限文档",calculate_retention:"计算留存率","open-generative-ui":"生成式界面",toggleTheme:"切换主题",pieChart:"生成饼图",barChart:"生成柱状图",plan_visualization:"生成执行计划",scheduleTime:"安排会议时间",ask_form:"询问用户","ask-form":"询问用户",ask_user_form:"询问用户",ask_user:"询问用户"};function huA(t){return CuA[t]??t}function IuA(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function fuA(t){if(t)try{return JSON.parse(t)}catch{return t}}function duA({toolState:t,toolMessage:A,streaming:e}){if(t)return t.status;const r=fuA(A==null?void 0:A.content);return IuA(r)&&typeof r.error=="string"?"error":A?"success":e?"running":"pending"}function eu(t,A={}){if(!t)return[];const e=new __({registry:Nl});return e.push(t),A.isStreaming||e.finalize(),e.getNodes().filter(r=>r.kind==="component"&&r.tag==="ask-form"&&r.complete)}const BuA=new Set(["ask_form","ask-form","ask_user_form","ask_user"]);function $u(t){return BuA.has(t)}function MR(t){var e;if(!$u(t.function.name))return null;const A=(e=t.function.arguments)==null?void 0:e.trim();if(!A)return null;try{const i=JSON.parse(A).mdoc;if(typeof i=="string"&&i.trim())return i}catch{return null}return null}function UE(t){if(!(t!=null&&t.length))return null;for(let A=t.length-1;A>=0;A-=1){const e=t[A],r=MR(e);if(r)return{mdoc:r,toolCallId:e.id}}return null}function QuA(t){return t!=null&&t.length?t.filter(A=>!$u(A.function.name)):[]}const puA=["data-tool-call-id","aria-label","aria-busy"],EuA={class:"tool-call-part__track"},vuA={class:"tool-call-part__icon-wrap"},muA={class:"tool-call-part__content"},yuA=["aria-expanded"],wuA={class:"tool-call-part__name"},DuA={key:0,class:"tool-call-part__running-label"},kuA={key:1,class:"tool-call-part__summary"},buA=["inert","aria-hidden"],SuA={key:0,class:"tool-call-part__section"},NuA={key:0,class:"tool-call-part__validation",role:"alert"},FuA={key:1,class:"tool-call-part__section"},xuA=["aria-expanded"],_uA={key:2,class:"tool-call-part__section"},MuA={key:3,class:"tool-call-part__section"},RuA={class:"tool-call-part__result-text"},GuA={key:4,class:"tool-call-part__error",role:"alert"},LuA={key:5,class:"tool-call-part__actions"},TuA=["disabled"],YuA=["disabled"],UuA={key:6,class:"tool-call-part__actions"},JuA=["disabled"],OuA=["disabled"],HuA=160,VuA=h.defineComponent({name:"ToolCallPart",__name:"ToolCallPart",props:{toolCall:{},toolMessage:{},isStreaming:{type:Boolean},toolState:{},renderer:{},isFirst:{type:Boolean},isLast:{type:Boolean}},emits:["tool-action"],setup(t,{emit:A}){var jA;const e=t,r=A,i=Pl(),n=h.ref(((jA=e.toolState)==null?void 0:jA.arguments)??e.toolCall.function.arguments),a=h.computed(()=>{var lA;return CA((lA=e.toolMessage)==null?void 0:lA.content)}),o=h.computed(()=>{var xA;if((xA=e.toolState)!=null&&xA.error)return e.toolState.error;const lA=a.value;return SA(lA)&&typeof lA.error=="string"?lA.error:void 0}),s=h.computed(()=>duA({toolState:e.toolState,toolMessage:e.toolMessage,streaming:e.isStreaming})),g=h.computed(()=>e.renderer??i.toolRenderers.value[e.toolCall.function.name]??SR(e.toolCall.function.name)),l=h.computed(()=>n.value),c=h.computed(()=>nA(a.value)),C=h.computed(()=>g.value!==void 0&&a.value!==void 0),u=h.computed(()=>{var lA;return((lA=e.toolState)==null?void 0:lA.isArgumentsEditable)===!0&&(s.value==="requires-approval"||s.value==="requires-action")}),I=h.computed(()=>{try{return JSON.parse(l.value),!0}catch{return!1}}),f=I,d=h.computed(()=>$u(e.toolCall.function.name)?WS(l.value):luA(l.value)),B=h.computed(()=>!u.value&&d.value.trim().length>0),Q=h.computed(()=>huA(e.toolCall.function.name)),p=h.computed(()=>({pending:"等待中","requires-approval":"等待审批",running:"执行中",success:"完成",error:"失败",denied:"已拒绝",cancelled:"已取消","requires-action":"需要操作"})[s.value]),E=h.computed(()=>({search:L7,render_chart:W7,render_mind_map:k7,execute_code:Z7,get_deployment:Y7,read_private_document:p7,calculate_retention:my,"open-generative-ui":F7,toggleTheme:S7,pieChart:$8,barChart:my,plan_visualization:v7,scheduleTime:z8})[e.toolCall.function.name]??X7),v=h.computed(()=>{if($u(e.toolCall.function.name))return WS(e.toolCall.function.arguments);try{const lA=JSON.parse(e.toolCall.function.arguments);return SA(lA)?Object.entries(lA).map(([xA,mA])=>`${xA}: ${typeof mA=="string"?mA:JSON.stringify(mA)}`).join(" · "):""}catch{return e.toolCall.function.arguments}}),y=h.computed(()=>u.value||f.value||s.value!=="running"&&s.value!=="pending"?!1:l.value.trim().length>0),w=h.computed(()=>s.value!=="running"?"":y.value?"生成参数中":"执行中");function b(lA){return["pending","running","requires-approval","requires-action"].includes(lA)}const k=h.ref(b(s.value)),S=h.ref(!1),N=h.ref(!1),_=h.ref(null),x=h.ref(),G=h.ref(0);let L;function J(){const lA=x.value;lA&&(G.value=lA.scrollHeight)}h.watch(x,lA=>{L==null||L.disconnect(),L=void 0,lA&&(J(),typeof ResizeObserver<"u"&&(L=new ResizeObserver(J),L.observe(lA)))},{immediate:!0,flush:"post"}),h.onBeforeUnmount(()=>L==null?void 0:L.disconnect());const z=h.computed(()=>({height:k.value?`${G.value}px`:"0px"})),U=h.ref();let K;function $(){const lA=U.value;if(!lA){N.value=!1;return}S.value||(N.value=lA.scrollHeight>HuA+1)}h.watch(U,lA=>{K==null||K.disconnect(),K=void 0,lA&&($(),typeof ResizeObserver<"u"&&(K=new ResizeObserver($),K.observe(lA)))},{immediate:!0,flush:"post"}),h.onBeforeUnmount(()=>K==null?void 0:K.disconnect());function j(){k.value=!k.value}function tA(){S.value=!S.value,S.value||$()}function rA(lA){(lA==="approve"||lA==="submit-action")&&!I.value||(_.value=lA,r("tool-action",{action:lA,toolCall:e.toolCall,arguments:l.value}))}function nA(lA){if(lA===void 0||lA==="")return"";if(typeof lA=="string")try{return JSON.stringify(JSON.parse(lA),null,2)}catch{return lA}try{return JSON.stringify(lA,null,2)}catch{return String(lA)}}function CA(lA){if(lA)try{return JSON.parse(lA)}catch{return lA}}function SA(lA){return typeof lA=="object"&&lA!==null&&!Array.isArray(lA)}return h.watch(s,lA=>{k.value=b(lA),_.value=null,b(lA)||(S.value=!1)}),h.watch(()=>{var lA;return[(lA=e.toolState)==null?void 0:lA.arguments,e.toolCall.function.arguments]},([lA,xA])=>{n.value=lA??xA}),(lA,xA)=>(h.openBlock(),h.createElementBlock("div",{class:h.normalizeClass(["tool-call-part",`tool-call-part--${s.value}`]),"data-tool-call-id":t.toolCall.id,"aria-label":`${Q.value}:${p.value}`,"aria-busy":s.value==="pending"||s.value==="running"?"true":"false"},[h.createElementVNode("div",EuA,[h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__line tool-call-part__line--top",{"tool-call-part__line--visible":!t.isFirst}])},null,2),h.createElementVNode("div",vuA,[(h.openBlock(),h.createBlock(h.resolveDynamicComponent(E.value),{class:h.normalizeClass(["tool-call-part__indicator",{"tool-call-part__indicator--running":s.value==="running"}]),size:16,"stroke-width":1.75,"aria-hidden":"true"},null,8,["class"]))]),h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__line tool-call-part__line--bottom",{"tool-call-part__line--visible":!t.isLast||k.value}])},null,2)]),h.createElementVNode("div",muA,[h.createElementVNode("button",{type:"button",class:"tool-call-part__header","aria-expanded":k.value,"data-testid":"tool-call-header",onClick:j},[h.createElementVNode("span",wuA,h.toDisplayString(Q.value),1),w.value?(h.openBlock(),h.createElementBlock("span",DuA,h.toDisplayString(w.value),1)):v.value&&!k.value?(h.openBlock(),h.createElementBlock("span",kuA,h.toDisplayString(v.value),1)):h.createCommentVNode("",!0),h.createVNode(h.unref(qE),{class:h.normalizeClass(["tool-call-part__chevron",{"tool-call-part__chevron--open":k.value}]),size:13,"stroke-width":1.75,"aria-hidden":"true"},null,8,["class"])],8,yuA),h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__body-wrapper",{"tool-call-part__body-wrapper--open":k.value}]),style:h.normalizeStyle(z.value),inert:!k.value,"aria-hidden":!k.value},[h.createElementVNode("div",{ref_key:"bodyContentRef",ref:x,class:"tool-call-part__body"},[u.value?(h.openBlock(),h.createElementBlock("div",SuA,[h.withDirectives(h.createElementVNode("textarea",{"onUpdate:modelValue":xA[0]||(xA[0]=mA=>n.value=mA),class:"tool-call-part__editor","aria-label":"工具参数 JSON",rows:"5"},null,512),[[h.vModelText,n.value]]),I.value?h.createCommentVNode("",!0):(h.openBlock(),h.createElementBlock("p",NuA," 参数必须是有效的 JSON "))])):B.value?(h.openBlock(),h.createElementBlock("div",FuA,[h.createElementVNode("div",{class:h.normalizeClass(["tool-call-part__details-clamp",{"tool-call-part__details-clamp--expanded":S.value}])},[h.createElementVNode("pre",{ref_key:"detailsPreRef",ref:U,class:h.normalizeClass(["tool-call-part__streaming-arguments",{"tool-call-part__streaming-arguments--streaming":y.value}])},h.toDisplayString(d.value),3)],2),N.value||S.value?(h.openBlock(),h.createElementBlock("button",{key:0,type:"button",class:"tool-call-part__more","aria-expanded":S.value,onClick:h.withModifiers(tA,["stop"])},h.toDisplayString(S.value?"收起":"展开更多"),9,xuA)):h.createCommentVNode("",!0)])):h.createCommentVNode("",!0),C.value?(h.openBlock(),h.createElementBlock("section",_uA,[(h.openBlock(),h.createBlock(h.resolveDynamicComponent(g.value),{"tool-call":t.toolCall,status:s.value,result:a.value,error:o.value,message:t.toolMessage,"is-streaming":t.isStreaming===!0},null,8,["tool-call","status","result","error","message","is-streaming"]))])):c.value?(h.openBlock(),h.createElementBlock("div",MuA,[h.createElementVNode("pre",RuA,h.toDisplayString(c.value),1)])):h.createCommentVNode("",!0),o.value?(h.openBlock(),h.createElementBlock("p",GuA,h.toDisplayString(o.value),1)):h.createCommentVNode("",!0),s.value==="requires-approval"?(h.openBlock(),h.createElementBlock("div",LuA,[h.createElementVNode("button",{type:"button","data-testid":"tool-deny",disabled:_.value!==null,onClick:xA[1]||(xA[1]=mA=>rA("deny"))},h.toDisplayString(_.value==="deny"?"处理中…":"拒绝"),9,TuA),h.createElementVNode("button",{type:"button","data-testid":"tool-approve",disabled:_.value!==null||u.value&&!I.value,onClick:xA[2]||(xA[2]=mA=>rA("approve"))},h.toDisplayString(_.value==="approve"?"处理中…":"允许"),9,YuA)])):s.value==="requires-action"?(h.openBlock(),h.createElementBlock("div",UuA,[h.createElementVNode("button",{type:"button",disabled:_.value!==null,onClick:xA[3]||(xA[3]=mA=>rA("cancel"))},h.toDisplayString(_.value==="cancel"?"处理中…":"取消"),9,JuA),h.createElementVNode("button",{type:"button",disabled:_.value!==null||u.value&&!I.value,onClick:xA[4]||(xA[4]=mA=>rA("submit-action"))},h.toDisplayString(_.value==="submit-action"?"处理中…":"继续"),9,OuA)])):h.createCommentVNode("",!0)],512)],14,buA)])],10,puA))}}),RR=de(VuA,[["__scopeId","data-v-5f447e92"]]),ZuA=h.defineComponent({__name:"ChatToolGroup",props:{toolCalls:{},toolMessages:{},toolStates:{},streaming:{type:Boolean}},emits:["tool-action"],setup(t,{emit:A}){const e=t,r=A,i=h.ref();function n(s,g){return s==null?void 0:s.find(l=>l.tool_call_id===g)}function a(){const s=i.value;if(!s)return;const g=Array.from(s.querySelectorAll(".tool-call-part__name"));if(!g.length)return;g.forEach(c=>c.style.removeProperty("min-width"));const l=Math.max(...g.map(c=>c.getBoundingClientRect().width));s.style.setProperty("--tool-name-col-width",`${Math.ceil(l)}px`)}function o(){h.nextTick(a)}return h.watch(()=>e.toolCalls.map(s=>s.function.name),o,{flush:"post"}),h.onMounted(()=>{o(),window.addEventListener("resize",o)}),h.onBeforeUnmount(()=>window.removeEventListener("resize",o)),(s,g)=>(h.openBlock(),h.createElementBlock("div",{ref_key:"groupRef",ref:i,class:"chat-tool-group",role:"group","aria-label":"工具调用"},[(h.openBlock(!0),h.createElementBlock(h.Fragment,null,h.renderList(t.toolCalls,(l,c)=>h.renderSlot(s.$slots,"default",{key:l.id,toolCall:l,toolMessage:n(t.toolMessages,l.id),streaming:t.streaming===!0},()=>{var C;return[h.createVNode(RR,{"tool-call":l,"tool-message":n(t.toolMessages,l.id),"tool-state":(C=t.toolStates)==null?void 0:C[l.id],"is-streaming":t.streaming,"is-first":c===0,"is-last":c===t.toolCalls.length-1,onToolAction:g[0]||(g[0]=u=>r("tool-action",u))},null,8,["tool-call","tool-message","tool-state","is-streaming","is-first","is-last"])]},!0)),128))],512))}}),JE=de(ZuA,[["__scopeId","data-v-a0cba0c3"]]),quA={key:0,class:"input-content__text"},KuA={key:1,class:"input-content"},PuA={key:0,class:"input-content__text"},WuA=["href","aria-label"],zuA=["src","alt"],XuA={key:2,class:"input-content__reference"},juA=["src"],$uA={key:4,class:"input-content__reference"},A0A=["src"],e0A={key:6,class:"input-content__reference"},t0A=["href"],r0A={key:8,class:"input-content__reference"},i0A=576,n0A=h.defineComponent({name:"InputContentParts",__name:"InputContentParts",props:{content:{}},setup(t){function A(o){const s=o.image_url.url??"";return Fs(s,{width:i0A})}function e(o){return o.image_url.url??""}function r(o){return o.video_url.url??""}function i(o){return o.input_audio.url?o.input_audio.url:o.input_audio.data?`data:audio/${o.input_audio.format||"mpeg"};base64,${o.input_audio.data}`:""}function n(o){return o.file.file_url??""}function a(o){return o.type==="image_url"?o.image_url.file_id||"图片":o.type==="video_url"?o.video_url.file_id||"视频":o.type==="input_audio"?o.input_audio.file_id||"音频":o.type==="file"?o.file.filename||o.file.file_id||"文件":""}return(o,s)=>typeof t.content=="string"?(h.openBlock(),h.createElementBlock("span",quA,h.toDisplayString(t.content),1)):(h.openBlock(),h.createElementBlock("span",KuA,[(h.openBlock(!0),h.createElementBlock(h.Fragment,null,h.renderList(t.content,(g,l)=>(h.openBlock(),h.createElementBlock(h.Fragment,{key:l},[g.type==="text"?(h.openBlock(),h.createElementBlock("span",PuA,h.toDisplayString(g.text),1)):g.type==="image_url"&&e(g)?(h.openBlock(),h.createElementBlock("a",{key:1,class:"input-content__media-link",href:e(g),target:"_blank",rel:"noreferrer","aria-label":`打开${a(g)}`},[h.createElementVNode("img",{class:"input-content__image",src:A(g),alt:a(g)},null,8,zuA)],8,WuA)):g.type==="image_url"?(h.openBlock(),h.createElementBlock("span",XuA,h.toDisplayString(a(g)),1)):g.type==="video_url"&&r(g)?(h.openBlock(),h.createElementBlock("video",{key:3,class:"input-content__video",src:r(g),controls:"",preload:"metadata"},null,8,juA)):g.type==="video_url"?(h.openBlock(),h.createElementBlock("span",$uA,h.toDisplayString(a(g)),1)):g.type==="input_audio"&&i(g)?(h.openBlock(),h.createElementBlock("audio",{key:5,class:"input-content__audio",src:i(g),controls:"",preload:"metadata"},null,8,A0A)):g.type==="input_audio"?(h.openBlock(),h.createElementBlock("span",e0A,h.toDisplayString(a(g)),1)):g.type==="file"&&n(g)?(h.openBlock(),h.createElementBlock("a",{key:7,class:"input-content__file",href:n(g),target:"_blank",rel:"noreferrer"},h.toDisplayString(a(g)),9,t0A)):g.type==="file"?(h.openBlock(),h.createElementBlock("span",r0A,h.toDisplayString(a(g)),1)):h.createCommentVNode("",!0)],64))),128))]))}}),a0A=de(n0A,[["__scopeId","data-v-4ed892a8"]]),o0A=["aria-label","aria-busy"],s0A={class:"conversation-message__inner"},g0A={key:0,class:"conversation-message__mark conversation-message__mark--assistant","aria-hidden":"true"},l0A=["src"],c0A={class:"conversation-message__content"},u0A={key:1,class:"conversation-message__bubble"},C0A={key:2,class:"conversation-message__text"},h0A={key:1,class:"conversation-message__plain"},I0A={key:1,class:"conversation-message__mark conversation-message__mark--user","aria-hidden":"true"},f0A=["src"],d0A=h.defineComponent({name:"MessageBubble",__name:"MessageBubble",props:{message:{type:Object,required:!0},streaming:{type:Boolean,default:!1},toolMessages:{type:Array,default:()=>[]},theme:{type:Object,default:void 0},userAvatar:{type:String,default:void 0},assistantAvatar:{type:String,default:void 0},toolStates:{type:Object,default:()=>({})},followUps:{type:Array,default:void 0},showFollowUps:{type:Boolean,default:!0}},emits:["copy","action","attachment-preview","tool-action"],setup(t,{emit:A}){const e=t,r=A,i=h.useSlots(),n=h.computed(()=>e.message),a=h.computed(()=>e.message.role==="user"),o=h.computed(()=>e.message.role==="system"),s=h.computed(()=>e.message.role==="tool"),g=h.computed(()=>e.message.role==="assistant"),l=h.computed(()=>e.message.role==="assistant"?e.message:null),c=h.computed(()=>a.value?"用户消息":o.value?"系统消息":s.value?"工具消息":"AI 助手消息"),C=h.computed(()=>{var K;if(g.value)return FM((K=l.value)==null?void 0:K.content);const U=e.message.content;return typeof U=="string"?U:Array.isArray(U)?U.filter($=>$.type==="text").map($=>$.text).join(""):""}),u=h.computed(()=>{var U,K;return((K=(U=l.value)==null?void 0:U.reasoning_content)==null?void 0:K.trim())??""}),I=h.computed(()=>C.value),f=h.computed(()=>g.value&&!!u.value),d=h.computed(()=>{var U;return((U=l.value)==null?void 0:U.steps)??[]}),B=h.computed(()=>{if(e.message.role!=="user"&&e.message.role!=="system")return!1;const U=e.message.content;return typeof U=="string"?U.trim().length>0:U.some(K=>K.type==="text"?K.text.trim().length>0:!0)}),Q=h.computed(()=>a.value||o.value?B.value:!!I.value.trim()),p=h.computed(()=>I.value),E=h.computed(()=>{var U,K;return g.value&&e.streaming&&!Q.value&&!f.value&&!((K=(U=l.value)==null?void 0:U.tool_calls)!=null&&K.length)}),v=h.computed(()=>f.value||E.value),y=h.computed(()=>g.value&&!e.streaming&&p.value.trim().length>0),w=h.computed(()=>!g.value||!e.showFollowUps||e.streaming?[]:e.followUps??[]),b=h.computed(()=>w.value.length>0);function k(U){r("action",{type:"submit",value:U,label:U,source:"follow-up"})}const S=h.computed(()=>g.value&&(!!e.assistantAvatar||!!i["assistant-avatar"])),N=h.computed(()=>a.value&&(!!e.userAvatar||!!i["user-avatar"])),_=h.computed(()=>{var U;return((U=l.value)==null?void 0:U.tool_calls)??[]}),x=h.computed(()=>{const U=[];for(const K of d.value){if(K.type==="reasoning"){U.push(K);continue}K.tool_calls.length>0&&U.push(K)}return U}),G=h.computed(()=>x.value.length>0),L=h.computed(()=>e.message.role==="user"||e.message.role==="system"?e.message.content:""),J=h.computed(()=>e.message.role==="user"?e.message.resource_files??[]:[]),z=h.computed(()=>!a.value||Q.value);return(U,K)=>(h.openBlock(),h.createElementBlock("article",{class:h.normalizeClass(["conversation-message",{"conversation-message--user":a.value,"conversation-message--system":o.value,"conversation-message--assistant":g.value,"conversation-message--tool":s.value,"conversation-message--text-only":Q.value||v.value,"conversation-message--streaming":t.streaming,"conversation-message--loading":E.value,"conversation-message--with-avatar":S.value||N.value}]),"aria-label":c.value,"aria-busy":t.streaming?"true":void 0},[h.createElementVNode("div",s0A,[S.value?(h.openBlock(),h.createElementBlock("span",g0A,[h.renderSlot(U.$slots,"assistant-avatar",{},()=>[t.assistantAvatar?(h.openBlock(),h.createElementBlock("img",{key:0,class:"conversation-message__mark-img",src:t.assistantAvatar,alt:""},null,8,l0A)):h.createCommentVNode("",!0)],!0)])):h.createCommentVNode("",!0),h.createElementVNode("div",c0A,[J.value.length?(h.openBlock(),h.createBlock(x4,{key:0,class:"conversation-message__attachments",resources:J.value,onPreview:K[0]||(K[0]=$=>r("attachment-preview",$))},null,8,["resources"])):h.createCommentVNode("",!0),z.value?(h.openBlock(),h.createElementBlock("div",u0A,[G.value?(h.openBlock(!0),h.createElementBlock(h.Fragment,{key:0},h.renderList(x.value,($,j)=>(h.openBlock(),h.createElementBlock(h.Fragment,{key:`step-${j}`},[$.type==="reasoning"?(h.openBlock(),h.createBlock(NE,{key:0,class:"conversation-message__reasoning",content:$.content,streaming:t.streaming&&j===x.value.length-1},null,8,["content","streaming"])):(h.openBlock(),h.createBlock(JE,{key:1,class:"conversation-message__tools","tool-calls":$.tool_calls,"tool-messages":t.toolMessages,"tool-states":t.toolStates,streaming:t.streaming&&j===x.value.length-1,onToolAction:K[1]||(K[1]=tA=>r("tool-action",tA))},h.createSlots({_:2},[U.$slots.tool?{name:"default",fn:h.withCtx(tA=>[h.renderSlot(U.$slots,"tool",h.mergeProps({ref_for:!0},tA),void 0,!0)]),key:"0"}:void 0]),1032,["tool-calls","tool-messages","tool-states","streaming"]))],64))),128)):(h.openBlock(),h.createElementBlock(h.Fragment,{key:1},[v.value?(h.openBlock(),h.createBlock(NE,{key:0,class:"conversation-message__reasoning",content:u.value,streaming:t.streaming,"data-testid":E.value?"conversation-streaming-indicator":void 0},null,8,["content","streaming","data-testid"])):h.createCommentVNode("",!0),_.value.length?(h.openBlock(),h.createBlock(JE,{key:1,class:"conversation-message__tools","tool-calls":_.value,"tool-messages":t.toolMessages,"tool-states":t.toolStates,streaming:t.streaming,onToolAction:K[2]||(K[2]=$=>r("tool-action",$))},h.createSlots({_:2},[U.$slots.tool?{name:"default",fn:h.withCtx($=>[h.renderSlot(U.$slots,"tool",h.normalizeProps(h.guardReactiveProps($)),void 0,!0)]),key:"0"}:void 0]),1032,["tool-calls","tool-messages","tool-states","streaming"])):h.createCommentVNode("",!0)],64)),Q.value||!a.value&&U.$slots.content?(h.openBlock(),h.createElementBlock("div",C0A,[h.renderSlot(U.$slots,"content",{message:n.value,content:I.value,isStreaming:t.streaming},()=>[a.value||o.value?(h.openBlock(),h.createBlock(a0A,{key:0,content:L.value},null,8,["content"])):s.value?(h.openBlock(),h.createElementBlock("span",h0A,h.toDisplayString(I.value),1)):(h.openBlock(),h.createBlock(qm,{key:2,content:I.value,"is-streaming":t.streaming,"highlight-stream-tail":t.streaming&&!f.value,onAction:K[3]||(K[3]=$=>r("action",$))},null,8,["content","is-streaming","highlight-stream-tail"]))],!0)])):h.createCommentVNode("",!0)])):h.createCommentVNode("",!0),y.value&&l.value?(h.openBlock(),h.createBlock(m4,{key:2,message:l.value,text:p.value,onCopy:K[4]||(K[4]=$=>r("copy",$))},h.createSlots({_:2},[U.$slots.actionbar?{name:"default",fn:h.withCtx($=>[h.renderSlot(U.$slots,"actionbar",h.normalizeProps(h.guardReactiveProps($)),void 0,!0)]),key:"0"}:void 0]),1032,["message","text"])):h.createCommentVNode("",!0),b.value?(h.openBlock(),h.createBlock(_4,{key:3,questions:w.value,onSelect:k},null,8,["questions"])):h.createCommentVNode("",!0)]),N.value?(h.openBlock(),h.createElementBlock("span",I0A,[h.renderSlot(U.$slots,"user-avatar",{},()=>[t.userAvatar?(h.openBlock(),h.createElementBlock("img",{key:0,class:"conversation-message__mark-img",src:t.userAvatar,alt:""},null,8,f0A)):h.createCommentVNode("",!0)],!0)])):h.createCommentVNode("",!0)])],10,o0A))}}),GR=de(d0A,[["__scopeId","data-v-0c2b4fe3"]]),LR=h.defineComponent({name:"ChatMessage",__name:"ChatMessage",props:{message:{type:Object,required:!0},streaming:{type:Boolean,default:!1},toolMessages:{type:Array,default:()=>[]},theme:{type:Object,default:void 0},userAvatar:{type:String,default:void 0},assistantAvatar:{type:String,default:void 0},toolStates:{type:Object,default:()=>({})},followUps:{type:Array,default:void 0},showFollowUps:{type:Boolean,default:!0}},emits:["copy","action","attachment-preview","tool-action"],setup(t,{emit:A}){const e=t,r=A;return(i,n)=>(h.openBlock(),h.createBlock(GR,h.mergeProps(e,{onCopy:n[0]||(n[0]=a=>r("copy",a)),onAction:n[1]||(n[1]=a=>r("action",a)),onAttachmentPreview:n[2]||(n[2]=a=>r("attachment-preview",a)),onToolAction:n[3]||(n[3]=a=>r("tool-action",a))}),h.createSlots({_:2},[i.$slots["user-avatar"]?{name:"user-avatar",fn:h.withCtx(()=>[h.renderSlot(i.$slots,"user-avatar")]),key:"0"}:void 0,i.$slots["assistant-avatar"]?{name:"assistant-avatar",fn:h.withCtx(()=>[h.renderSlot(i.$slots,"assistant-avatar")]),key:"1"}:void 0,i.$slots.content?{name:"content",fn:h.withCtx(a=>[h.renderSlot(i.$slots,"content",h.normalizeProps(h.guardReactiveProps(a)))]),key:"2"}:void 0,i.$slots.actionbar?{name:"actionbar",fn:h.withCtx(a=>[h.renderSlot(i.$slots,"actionbar",h.normalizeProps(h.guardReactiveProps(a)))]),key:"3"}:void 0,i.$slots.tool?{name:"tool",fn:h.withCtx(a=>[h.renderSlot(i.$slots,"tool",h.normalizeProps(h.guardReactiveProps(a)))]),key:"4"}:void 0]),1040))}}),B0A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEkUlEQVR4AeycAW6cQAxFQ0/WnCzJyZKebGtHuKrQJrBhzPj7/wo0u0AH+78HykYbfj3pH3UCEoAa/9OTBJAA5AmQt687gAQgT4C8fd0BJAB5AqTtR9u6A0QSpKMEIAUfbUuASIJ0lACk4KNtCRBJkI4SgBR8tC0BIgnSUQKQgd+2KwG2iZC9lwBkwLftSoBtImTvJQAZ8G27EmCbCNl7CUAGfNuuBNgmQvaeWoDb7fbb1ldbf3fn/lV/lAIYcId+s1DebX2x9d22+fJqr6kWOgGMckC/B/rF9lNJQCWAwXX4e7d7KgloBDgIP+4KNBJQCPAgfCoJ2gvwQ/g0ErQW4CR8CgnaCjAIPrwE0cBXY0sBBsOP7Fr+YNhOgCT4bSVoJUAy/JYStBHgIvjtJGghwMXwW0kAL8Ak+G0kgBZgMvwWEsAKUAR+WQmisL0RUoBi8CNjyN8TwAlQFD6sBFACnIT/FpQOjB92zCPH2+H/Fqg7AYwAZ+Evy/LQN33W49tLACHA1fDjWmaQoLwAs+CzSFBagNnwGSQoK0AV+GgSRL1Hx5ICVIMfYXb8maCcAFXhd5WglADV4XeUoIwAKPC7SVBCADT4nSSYLgAq/C4STBUAHX4HCaYJ0AV+FQmijkfHKQJ0gx+hI/6e4HIBusJHleBSAbrDR5TgMgFY4KNJcIkAbPCRJEgXgBU+igSpArDDR5AgTQCD79/B23sgU2S0Hd/Wj1Tb7bDv137OfMfwbpZnA0kRwOB7sf78vZ/U1w5+hHBSAn/CWUw1bEwRwKpzAWx4eGkLP5I4I8F6YcVUQ8YsAX5SXHv4EcoZCWKOUWMVAWjgB7gqEmQJ4H9ZE73ujXTwI5BHJbDjH8k1TvPtmCLAWuiRYmnhBxXLyj8tHfl0cOSYmPbwmCKAn90ae7bxu6Kf7Rhv3g7jXtYcvssq7UJJE8CR/tdYNOd3BW/Gdi3+2g/TaglYIH4xxEXj2cR690Kx/zJkSRXAK/TG1tWGJbUZPx/yuizLh62vtnpOsboIaW2lC5BWuSYekoAEGBIj7iQSAJfdkMolwJAYcSeRALjshlQuAYbEiDuJBABjN7pcCTA6UbD5JAAYsNHlSoDRiYLNJwHAgI0uVwKMThRsPgkABmx0uRJgdKJg80kAEGBZZUqArGRB5pUAIKCyypQAWcmCzCsBQEBllSkBspIFmVcCgIDKKlMCZCULMq8EKA4quzwJkJ1w8fklQHFA2eVJgOyEi88vAYoDyi5PAmQnXHx+CVAcUHZ5EiA74eLzS4CigK4qSwJclXTR80iAomCuKksC3E/6z/3N/bayCZD6uBVEPdgEOMqIRhQqAfzhSwcM8KeYSYADQaEeEo+su1f/51O67u3ouo3qDuAQ7S7gj2Fb7LWL4Fd6rJ+PZbPtU5erT04nQAS8ivAJ3V776CLEbpqRVgAawjuNSoCdgLrvlgDdCe/0JwF2Auq+WwJ0J7zTnwTYCaj7bglQhPCsMiTArOSLnFcCFAExqwwJMCv5IueVAEVAzCpDAsxKvsh5JUARELPKkACzki9yXgkwGcTs0/8FAAD//wp1l3UAAAAGSURBVAMAxMyyEBy8oUUAAAAASUVORK5CYII=";async function gy(t,A,e){var C,u;const r=Zs(t.name);if(!r)throw new Error("文件缺少扩展名");const i=new URLSearchParams({bucketType:vu(t)==="video"?"52":"51",fileType:r});(C=A.dir)!=null&&C.trim()&&i.set("dir",A.dir.trim());const n=await((u=A.credentialHeaders)==null?void 0:u.call(A)),a=A.cloudBaseUrl.replace(/\/+$/,""),o=await fetch(`${a}/common/file/getToken?${i.toString()}`,{method:"GET",credentials:"include",headers:n,signal:e});if(!o.ok)throw new Error(`获取上传凭证失败:HTTP ${o.status}`);const s=await o.json();if(!SQ(s)||s.status!==1||!SQ(s.result)){const I=SQ(s)&&typeof s.message=="string"?s.message:"";throw new Error(I||"获取上传凭证失败")}const{uptoken:g,fileKey:l,uploadUrl:c}=s.result;if(![g,l,c].every(I=>typeof I=="string"&&I.trim()))throw new Error("上传凭证响应不完整");return{uptoken:g,fileKey:l,uploadUrl:c}}function ly(t,A,e={}){return new Promise((r,i)=>{var l,c;if((l=e.signal)!=null&&l.aborted){i(XS());return}const n=new XMLHttpRequest,a=()=>{var C;return(C=e.signal)==null?void 0:C.removeEventListener("abort",s)},o=C=>{a(),i(C)},s=()=>n.abort();n.open("POST",A.uploadUrl),n.upload.onprogress=C=>{var u;!C.lengthComputable||C.total<=0||(u=e.onProgress)==null||u.call(e,Math.round(C.loaded/C.total*100))},n.onload=()=>{if(n.status<200||n.status>=300){o(new Error(`文件上传失败:HTTP ${n.status}`));return}try{const C=JSON.parse(n.responseText),u=KE(C);a(),r(u)}catch(C){o(C instanceof Error?C:new Error("上传响应无法解析"))}},n.onerror=()=>o(new Error("文件上传失败,请检查网络后重试")),n.onabort=()=>o(XS()),(c=e.signal)==null||c.addEventListener("abort",s,{once:!0});const g=new FormData;g.append("token",A.uptoken),g.append("key",A.fileKey),g.append("file",t,t.name),n.send(g)})}async function Q0A(t,A,e={}){const r=await gy(t,A,e.signal);return ly(t,r,e)}function XS(){if(typeof DOMException=="function")return new DOMException("上传已取消","AbortError");const t=new Error("上传已取消");return t.name="AbortError",t}function SQ(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}let jS=0;function TR(t){const A=new Map,e=new Map,r=t.upload??p0A;function i(c,C){const u=t.getAttachments(),I=u.findIndex(d=>d.id===c);if(I<0)return;const f=[...u];f[I]=C,t.setAttachments(f)}async function n(c,C,u){var d,B;const I=t.getUploadConfig();if(!(I!=null&&I.cloudBaseUrl)){const Q={code:"missing_config",message:"未配置文件上传服务"};i(c,{id:c,status:"error",file:C,progress:0,previewUrl:u,error:Q}),(d=t.onError)==null||d.call(t,Q,C);return}const f=new AbortController;A.set(c,f),i(c,{id:c,status:"uploading",file:C,progress:0,previewUrl:u});try{const Q=await r(C,{config:I,signal:f.signal,onProgress(E){const v=t.getAttachments().find(y=>y.id===c);!v||v.status!=="uploading"||i(c,{...v,progress:E})}});if(f.signal.aborted)return;const p=KE(Q);i(c,{id:c,status:"uploaded",previewUrl:u??p.url,uploadResult:p,resource:b4(p)})}catch(Q){if(f.signal.aborted||m0A(Q))return;const p={code:Q instanceof Error&&Q.message.includes("元数据")?"invalid_response":"upload_error",message:Q instanceof Error?Q.message:"文件上传失败"};i(c,{id:c,status:"error",file:C,progress:0,previewUrl:u,error:p}),(B=t.onError)==null||B.call(t,p,C)}finally{A.delete(c)}}async function a(c){var B,Q,p,E;const C=t.getAttachments(),u=((B=t.getLimits)==null?void 0:B.call(t))??e0,I=new Set;for(const v of C)v.status!=="uploaded"&&I.add(TQ(v.file));for(const v of e.values())I.add(v);const f=Math.max(0,u.maxFiles-C.length),d=[];for(const v of c){if(d.length>=f){(Q=t.onError)==null||Q.call(t,{code:"too_many_files",message:`每条消息最多上传 ${u.maxFiles} 个文件`},v);continue}const y=k4(v,u);if(y){(p=t.onError)==null||p.call(t,y,v);continue}const w=TQ(v);if(I.has(w)){(E=t.onError)==null||E.call(t,{code:"duplicate_file",message:"请勿重复添加同一文件"},v);continue}I.add(w);const b=E0A();e.set(b,w),d.push({id:b,file:v,previewUrl:v0A(v)})}d.length!==0&&(t.setAttachments([...C,...d.map(({id:v,file:y,previewUrl:w})=>({id:v,status:"uploading",file:y,progress:0,previewUrl:w}))]),await Promise.all(d.map(({id:v,file:y,previewUrl:w})=>n(v,y,w))))}async function o(c){const C=t.getAttachments().find(u=>u.id===c);!C||C.status!=="error"||await n(c,C.file,C.previewUrl)}function s(c){var I;(I=A.get(c))==null||I.abort(),A.delete(c);const C=t.getAttachments(),u=C.find(f=>f.id===c);NQ(u==null?void 0:u.previewUrl),e.delete(c),t.setAttachments(C.filter(f=>f.id!==c))}function g(){for(const c of A.values())c.abort();A.clear();for(const c of t.getAttachments())NQ(c.previewUrl);e.clear()}function l(){for(const c of A.values())c.abort();A.clear();for(const c of t.getAttachments())NQ(c.previewUrl);e.clear(),t.setAttachments([])}return{addFiles:a,retry:o,remove:s,clear:l,dispose:g}}async function p0A(t,{config:A,signal:e,onProgress:r}){const i=await gy(t,A,e);return ly(t,i,{signal:e,onProgress:r})}function E0A(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():(jS+=1,`chat-attachment-${jS}`)}function v0A(t){if(!(!t.type.startsWith("image/")||typeof URL.createObjectURL!="function"))return URL.createObjectURL(t)}function NQ(t){t!=null&&t.startsWith("blob:")&&typeof URL.revokeObjectURL=="function"&&URL.revokeObjectURL(t)}function m0A(t){return t instanceof DOMException&&t.name==="AbortError"}function y0A(){if(typeof window>"u")return!1;const t=window;return!!(t.SpeechRecognition??t.webkitSpeechRecognition)}function FQ(t){if(!t||typeof t!="object")return!1;const A="name"in t?String(t.name):"";return A==="NotAllowedError"||A==="PermissionDeniedError"}function w0A(t){var mA,UA;const A=h.ref(!1),e=((mA=Gc())==null?void 0:mA.getItem("chat-sender-hold-to-record"))??null,r=h.ref(e==="true"),i=h.ref(!1),n=h.ref(!1),a=h.ref(0),o=h.ref(!1),s=h.ref(null),g=h.ref([]),l=((UA=Gc())==null?void 0:UA.getItem("chat-sender-device-id"))??null,c=h.ref(l||""),C=h.ref(y0A()),u=h.ref(!1);let I=null,f=null,d=null,B=null,Q=null,p=null,E=null;function v(){return typeof navigator>"u"?void 0:navigator.mediaDevices}function y(){g.value=[{deviceId:"default",label:"默认麦克风",active:!0}]}function w(){u.value=!0,s.value=null,A.value&&x()}function b(){u.value=!1}function k(cA){cA==="denied"?w():b()}async function S(){try{const cA=typeof navigator>"u"?void 0:navigator.permissions;if(!(cA!=null&&cA.query))return;E=await cA.query({name:"microphone"}),k(E.state),E.onchange=()=>{E&&k(E.state)}}catch{}}function N(){return!C.value||u.value||t.isDisabled()}async function _(){var cA,YA;if(!N()){if(A.value)x();else{if(A.value=!0,(cA=t.onMenuOpen)==null||cA.call(t),await G(),u.value)return;await L()}(YA=t.onVoiceClick)==null||YA.call(t)}}function x(){A.value=!1,n.value||z()}async function G(){var YA;const cA=v();if(!(cA!=null&&cA.getUserMedia)||!cA.enumerateDevices){y();return}try{const NA=await cA.getUserMedia({audio:!0}),Ce=(await cA.enumerateDevices()).filter(ge=>ge.kind==="audioinput");if(g.value=Ce.map((ge,Je)=>({deviceId:ge.deviceId,label:ge.label||`麦克风 ${Je+1}`,active:!1})),g.value.length>0){const ge=g.value.find(Je=>Je.deviceId===c.value);ge?ge.active=!0:(g.value[0].active=!0,c.value=g.value[0].deviceId,(YA=Gc())==null||YA.setItem("chat-sender-device-id",c.value))}n.value?xA(NA):(Q=NA,J(NA)),b(),s.value=null}catch(NA){if(console.error("无法获取音频设备列表:",NA),y(),FQ(NA)){w();return}s.value="无法获取麦克风列表,请检查浏览器权限"}}async function L(){if(Q||n.value||u.value)return;const cA=v();if(cA!=null&&cA.getUserMedia)try{const YA=await cA.getUserMedia({audio:c.value?{deviceId:{exact:c.value}}:!0});Q=YA,J(YA),b(),s.value=null}catch(YA){if(console.error("无法开启音频监测:",YA),FQ(YA)){w();return}s.value="无法访问麦克风,请检查浏览器权限"}}function J(cA){f||(f=new AudioContext),d||(d=f.createAnalyser(),d.fftSize=256),f.createMediaStreamSource(cA).connect(d),CA()}function z(){Q&&(xA(Q),Q=null),lA(),f&&!n.value&&(f.close(),f=null,d=null),a.value=0}async function U(){var cA;N()||r.value||(n.value?await nA(!1):await tA(),(cA=t.onVoiceRecord)==null||cA.call(t))}async function K(){N()||!r.value||(o.value=!0,await tA())}async function $(){!r.value||!o.value||(o.value=!1,await nA(!1))}function j(){r.value&&o.value&&$()}async function tA(){var YA;if(!C.value||u.value)return;const cA=v();if(!(cA!=null&&cA.getUserMedia)){s.value="当前浏览器不支持麦克风录音";return}try{Q&&(xA(Q),Q=null);const NA=await cA.getUserMedia({audio:c.value?{deviceId:{exact:c.value}}:!0});Q=NA,J(NA),rA(),typeof MediaRecorder<"u"&&(I=new MediaRecorder(NA),I.start()),n.value=!0,b(),s.value=null,(YA=t.onVoiceStart)==null||YA.call(t)}catch(NA){if(console.error("无法访问麦克风:",NA),FQ(NA)){w();return}s.value="无法访问麦克风,请检查浏览器权限"}}function rA(){const cA=window,YA=cA.SpeechRecognition??cA.webkitSpeechRecognition;if(!YA)return;const NA=new YA;p=NA,NA.lang="zh-CN",NA.continuous=!0,NA.interimResults=!0;let ue=t.draft.value;NA.onresult=Ce=>{let ge="",Je="";for(let aA=Ce.resultIndex;aA<Ce.results.length;aA+=1){const gA=Ce.results[aA][0].transcript;Ce.results[aA].isFinal?Je+=gA:ge+=gA}Je?(ue+=Je,t.draft.value=ue):ge&&(t.draft.value=ue+ge)},NA.onerror=Ce=>{if(console.error("语音识别错误:",Ce.error),Ce.error==="not-allowed"){w(),nA(!1,!0);return}Ce.error!=="no-speech"&&Ce.error!=="aborted"&&(s.value=`语音识别失败:${Ce.error}`)},NA.onend=()=>{if(n.value)try{NA.start()}catch{}},NA.start()}async function nA(cA=!1,YA=!1){var NA,ue,Ce;if(n.value){if(n.value=!1,p==null||p.stop(),p=null,I==null||I.stop(),I=null,Q&&(xA(Q),Q=null),lA(),a.value=0,cA&&!YA)t.draft.value="",(NA=t.onVoiceCancel)==null||NA.call(t);else if(!YA){const ge=t.draft.value.trim();ge&&((ue=t.onAudioTranscript)==null||ue.call(t,ge))}YA||(Ce=t.onVoiceStop)==null||Ce.call(t),A.value&&!u.value&&await L()}}function CA(){if(!d)return;const cA=new Uint8Array(d.frequencyBinCount);d.getByteFrequencyData(cA);const YA=cA.reduce((NA,ue)=>NA+ue,0)/cA.length;a.value=Math.min(100,YA/128*100),B=requestAnimationFrame(CA)}async function SA(cA){var NA,ue;const YA=g.value[cA];YA&&(g.value.forEach((Ce,ge)=>{Ce.active=ge===cA}),c.value=YA.deviceId,(NA=Gc())==null||NA.setItem("chat-sender-device-id",c.value),(ue=t.onAudioDeviceChange)==null||ue.call(t,cA),A.value&&!n.value&&(z(),await L()))}function jA(){var cA;r.value=!r.value,(cA=Gc())==null||cA.setItem("chat-sender-hold-to-record",String(r.value))}function lA(){B!==null&&(cancelAnimationFrame(B),B=null)}function xA(cA){cA.getTracks().forEach(YA=>YA.stop())}return h.onMounted(()=>{S()}),h.onUnmounted(()=>{E&&(E.onchange=null),E=null,A.value=!1,n.value&&nA(!1,!0),p==null||p.stop(),p=null,lA(),Q&&xA(Q),Q=null,f&&f.close(),f=null,d=null}),{showVoiceMenu:A,holdToRecord:r,isVoiceHovered:i,isRecording:n,audioLevel:a,isHoldingMic:o,voiceError:s,audioDevices:g,isSpeechSupported:C,isMicPermissionDenied:u,toggleVoiceMenu:_,closeVoiceMenu:x,handleVoiceRecord:U,handleMouseDown:K,handleMouseUp:$,handleMouseLeave:j,selectAudioDevice:SA,toggleHoldToRecord:jA}}function Gc(){return typeof localStorage>"u"?void 0:localStorage}const vh="data-mention-trigger-id",OE="data-mention-id",KI="data-mention-label",cy="data-mention-char",YR="data-mention-custom",mh="data-mention-mount-id",rd="chat-sender__mention";function Co(t){return!!t&&t.nodeType===Node.ELEMENT_NODE&&t.classList.contains(rd)}function ho(t){if(!t||t.nodeType!==Node.TEXT_NODE)return!1;const A=t.textContent??"";return A.length===0||A==="​"}function PI(t){if(!t||t.nodeType!==Node.TEXT_NODE)return!1;const A=t.textContent??"";return A.length>0&&/^\s+$/.test(A)}function D0A(t,A){const e=A.cloneRange();e.collapse(!0);const{startContainer:r,startOffset:i}=e;if(r===t){if(i<=0)return!1;let n=i-1;for(;n>=0&&ho(t.childNodes[n]);)n-=1;if(n<0)return!1;const a=t.childNodes[n];if(Co(a))return!0;if(a.nodeType===Node.TEXT_NODE){const o=a.textContent??"";return o.length?!/\s/.test(o[o.length-1]):!0}return!0}if(r.nodeType===Node.TEXT_NODE&&t.contains(r)){if(i>0){const a=(r.textContent??"")[i-1];return a!==void 0&&!/\s/.test(a)}let n=r.previousSibling;for(;ho(n);)n=n.previousSibling;if(!n)return!1;if(Co(n))return!0;if(n.nodeType===Node.TEXT_NODE){const a=n.textContent??"";return a.length?!/\s/.test(a[a.length-1]):!0}return!0}return!1}function k0A(t,A){if(!A.collapsed)return null;const{startContainer:e,startOffset:r}=A;if(e===t){let i=r-1;for(;i>=0&&ho(t.childNodes[i]);)i-=1;for(;i>=0&&PI(t.childNodes[i]);)i-=1;const n=t.childNodes[i];return Co(n)?n:null}if(e.nodeType===Node.TEXT_NODE&&t.contains(e)){const i=e.textContent??"";if(r>0){if(r===i.length&&/^\s+$/.test(i)){let a=e.previousSibling;for(;ho(a);)a=a.previousSibling;return Co(a)?a:null}return null}let n=e.previousSibling;for(;ho(n)||PI(n);)n=n.previousSibling;return Co(n)?n:null}return null}function b0A(t,A){if(!A.collapsed)return null;const{startContainer:e,startOffset:r}=A;if(e===t){let i=r;for(;i<t.childNodes.length&&ho(t.childNodes[i]);)i+=1;for(;i<t.childNodes.length&&PI(t.childNodes[i]);)i+=1;const n=t.childNodes[i];return Co(n)?n:null}if(e.nodeType===Node.TEXT_NODE&&t.contains(e)){const i=e.textContent??"";if(r<i.length){if(r===0&&/^\s+$/.test(i)){let a=e.nextSibling;for(;ho(a);)a=a.nextSibling;return Co(a)?a:null}return null}let n=e.nextSibling;for(;ho(n)||PI(n);)n=n.nextSibling;return Co(n)?n:null}return null}function S0A(t){return/\s/.test(t)}function N0A(t,A,e){const r=[];let i;if(A===t)i=e-1;else if(A.nodeType===Node.TEXT_NODE&&A.parentNode===t){const n=A;for(let a=e-1;a>=0;a-=1)r.push({node:n,offset:a});i=Array.prototype.indexOf.call(t.childNodes,n)-1}else return r;for(let n=i;n>=0;n-=1){const a=t.childNodes[n];if(a.nodeType!==Node.TEXT_NODE)break;const o=a;for(let s=o.length-1;s>=0;s-=1)r.push({node:o,offset:s})}return r}function F0A(t,A,e,r){if(t.length===0)return null;const i=N0A(A,e,r);for(const{node:n,offset:a}of i){const o=n.data[a];if(S0A(o))return null;const s=t.find(g=>g.char===o);if(s){const g=document.createRange();return g.setStart(n,a),g.setEnd(e,r),{trigger:s,range:g}}}return null}function x0A(t){let A="";return t.childNodes.forEach(e=>{if(e.nodeType===Node.TEXT_NODE)A+=e.textContent??"";else if(e.nodeType===Node.ELEMENT_NODE){const r=e;r.tagName==="BR"?A+=`
693
693
  `:r.classList.contains(rd)?A+=_0A(r):A+=r.textContent??""}}),A}function _0A(t){const A=t.getAttribute(cy),e=t.getAttribute(KI);return A!==null&&e!==null?`${A}${e}`:t.textContent??""}function HE(t,A,e,r={}){const i=document.createElement("span");return i.className=rd,i.setAttribute("contenteditable","false"),i.setAttribute(vh,t.id),i.setAttribute(OE,A),i.setAttribute(KI,e),i.setAttribute(cy,t.char),r.custom&&i.setAttribute(YR,"true"),r.mountId&&i.setAttribute(mh,r.mountId),i}function M0A(t,A,e){const r=HE(t,A,e),i=document.createElement("button");i.type="button",i.className="chat-sender__mention-remove",i.setAttribute("aria-label",`移除 ${e}`),i.tabIndex=-1;const n=document.createElement("span");n.className="chat-sender__mention-glyph",n.setAttribute("aria-hidden","true"),n.textContent=t.char,i.appendChild(n);const a=document.createElement("span");return a.className="chat-sender__mention-label",a.textContent=e,r.append(i,a),r}function $S(t,A){t.innerHTML="";const e=A.split(`
694
694
  `);e.forEach((r,i)=>{r&&t.appendChild(document.createTextNode(r)),i<e.length-1&&t.appendChild(document.createElement("br"))})}function R0A(t,A){t.deleteContents();const e=document.createDocumentFragment(),r=A.split(`
695
695
  `);r.forEach((n,a)=>{n&&e.appendChild(document.createTextNode(n)),a<r.length-1&&e.appendChild(document.createElement("br"))});const i=e.lastChild;return t.insertNode(e),i}function G0A(t){return Array.from(t.childNodes).some(A=>A.nodeType===Node.TEXT_NODE?(A.textContent??"").length>0:A.nodeType===Node.ELEMENT_NODE?A.tagName!=="BR":!0)}function UR(){const t=window.getSelection();if(!t||t.rangeCount===0)return null;const A=t.getRangeAt(0).cloneRange();if(A.collapse(!0),typeof A.getBoundingClientRect!="function")return null;const e=A.getBoundingClientRect();return e.width===0&&e.height===0?Y0A(A):e}function L0A(t){const A=UR();if(A&&(A.width>0||A.height>0)||A&&(A.left!==0||A.top!==0))return A;const e=t.getBoundingClientRect();if(e.width===0&&e.height===0)return A;const r=24;return new DOMRect(e.left,e.top+8,0,r)}function T0A(t){const A=t.gap??6,e=t.margin??8,{anchor:r,menuWidth:i,menuHeight:n,viewportWidth:a,viewportHeight:o}=t,s=o-r.bottom-A-e,g=r.top-A-e,l=n>s&&g>s;let c,C;l?(C="above",c=Math.max(e,r.top-A-n)):(C="below",c=r.bottom+A,c+n>o-e&&(c=Math.max(e,o-e-n)));let u=r.left;return u+i>a-e&&(u=Math.max(e,a-e-i)),u<e&&(u=e),{left:u,top:c,placement:C}}function Y0A(t){var n;const A=document.createTextNode("​");t.cloneRange().insertNode(A);const r=document.createRange();r.selectNode(A);const i=typeof r.getBoundingClientRect=="function"?r.getBoundingClientRect():null;return(n=A.parentNode)==null||n.removeChild(A),i}const U0A={key:0,class:"chat-sender__files","aria-label":"待发送附件"},J0A=["aria-label"],O0A=["src","alt"],H0A=["aria-label"],V0A=["src"],Z0A={class:"chat-sender__file-content"},q0A={class:"chat-sender__file-name"},K0A={class:"chat-sender__file-meta"},P0A={class:"chat-sender__file-footer"},W0A={class:"chat-sender__file-badge"},z0A={class:"chat-sender__file-ext"},X0A=["aria-label","aria-valuenow"],j0A=["aria-label","onClick"],$0A=["aria-label","onClick"],ACA={key:1,class:"chat-sender__attachment-error",role:"alert"},eCA={class:"chat-sender__content"},tCA={class:"chat-sender__input-wrapper"},rCA=["contenteditable","data-placeholder","aria-expanded"],iCA={class:"chat-sender__toolbar"},nCA={class:"chat-sender__toolbar-left"},aCA={key:0,class:"chat-sender__attachment-wrapper"},oCA=["disabled","aria-expanded"],sCA={key:1,class:"chat-sender__attachment-menu-divider"},gCA=["disabled","onClick"],lCA=["disabled","aria-label","onClick"],cCA={key:1,"aria-hidden":"true"},uCA={key:0,class:"chat-sender__quick-actions",role:"group","aria-label":"快捷功能"},CCA=["disabled","onClick"],hCA={key:1,class:"chat-sender__quick-action-chip"},ICA={class:"chat-sender__toolbar-right"},fCA={class:"chat-sender__button-group"},dCA={key:0,class:"chat-sender__toolbar-before-voice"},BCA=["title"],QCA={class:"chat-sender__voice-group"},pCA=["disabled"],ECA=["disabled","aria-label"],vCA={key:1,width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},mCA={key:2,class:"chat-sender__voice-waveform"},yCA={class:"chat-sender__mic-permission-popover-header"},wCA={class:"chat-sender__mic-permission-popover-desc"},DCA=["href"],kCA={class:"chat-sender__mic-permission-popover-hero","aria-hidden":"true"},bCA={class:"chat-sender__voice-menu-section"},SCA={class:"chat-sender__voice-menu-header"},NCA={class:"chat-sender__voice-level"},FCA={class:"chat-sender__voice-menu-devices"},xCA=["onClick"],_CA={class:"chat-sender__voice-menu-device-name"},MCA={key:0,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",class:"chat-sender__voice-menu-check"},RCA={class:"chat-sender__voice-menu-section"},GCA=["checked"],LCA=["disabled","aria-label"],TCA={class:"chat-sender__action-icons","aria-hidden":"true"},YCA=["src"],UCA=240,JCA=h.defineComponent({__name:"ChatSender",props:{placeholder:{default:"输入消息..."},disabled:{type:Boolean,default:!1},showAttachment:{type:Boolean,default:!0},maxRows:{default:6},draft:{default:void 0},attachments:{default:void 0},uploadConfig:{default:void 0},attachmentLimits:{default:void 0},streaming:{type:Boolean},theme:{default:void 0},showScreenshot:{type:Boolean,default:!1},customMenuItems:{default:()=>[]},quickActions:{default:()=>[]},activeQuickAction:{default:void 0},triggers:{default:()=>[]},triggerMenuPlacement:{default:"caret"},micPermissionGuideUrl:{}},emits:["send","stop","update:draft","update:attachments","attachment-error","voice-click","voice-record","voice-start","voice-stop","voice-cancel","audio-device-change","audio-transcript","screenshot","menu-item-click","attachment-menu-open","attachment-menu-close","update:activeQuickAction","quick-action-select","quick-action-clear","trigger-open","trigger-query","trigger-close","mention-insert","mention-remove","mic-permission-guide-click"],setup(t,{emit:A}){const e=t,r=A,i=h.useSlots(),n=new Map;function a(){return typeof i.mention=="function"}function o(){return`mm-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}const s=h.ref(),g=h.ref(),l=h.ref(),c=h.ref(),C=Pl(),u=h.ref(""),I=h.ref([...e.attachments??[]]),f=h.ref(!1),d=h.shallowRef(null),B=h.shallowRef(null),Q=h.ref(void 0),p=new Map;let E=new Set;const v=h.computed({get:()=>e.draft??u.value,set:R=>{e.draft===void 0&&(u.value=R),r("update:draft",R)}}),y=h.computed(()=>e.triggers??[]),w=h.computed(()=>y.value.filter(R=>R.button)),b=h.computed(()=>e.maxRows*24+24),k=h.computed(()=>{const R=s.value;return!R||!d.value?null:B.value??L0A(R)}),S=h.computed(()=>{if(e.triggerMenuPlacement==="custom")return;if(!d.value)return{position:"fixed",left:"0px",top:"0px",visibility:"hidden"};if(l.value)return l.value;const R=k.value;return R?{position:"fixed",left:`${R.left}px`,top:`${R.bottom+6}px`,visibility:"hidden"}:{position:"fixed",left:"0px",top:"0px",visibility:"hidden"}});function N(){if(e.triggerMenuPlacement==="custom"){l.value=void 0;return}const R=k.value,T=g.value;if(!R||!T||!d.value){l.value=void 0;return}const{left:V,top:eA}=T0A({anchor:R,menuWidth:T.offsetWidth,menuHeight:T.offsetHeight,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight});l.value={position:"fixed",left:`${V}px`,top:`${eA}px`,visibility:"visible"}}function _(){if(!d.value||e.triggerMenuPlacement==="custom"){l.value=void 0;return}h.nextTick(()=>{requestAnimationFrame(()=>N())})}const x=h.computed(()=>e.uploadConfig?{...C.uploadConfig.value,...e.uploadConfig}:C.uploadConfig.value),G=h.computed(()=>{var R,T;return td(C.limits.value,(R=C.uploadConfig.value)==null?void 0:R.limits,(T=e.uploadConfig)==null?void 0:T.limits,e.attachmentLimits)}),L=h.computed(()=>({...C.theme.value,...e.theme})),J=h.computed(()=>{const R=L.value;return{"--chat-sender-bg":R.inputBg,"--chat-sender-border":R.inputBorder,"--chat-sender-focus-border":R.inputFocusBorder,"--chat-sender-send-active-bg":R.buttonPrimaryBg,"--chat-sender-send-active-color":R.buttonPrimaryColor,"--chat-sender-btn-hover-bg":R.buttonSecondaryBg,"--chat-sender-icon-color":R.buttonSecondaryColor}}),z=h.ref(!1),U=h.ref(!1),K=h.ref(null),$=h.computed({get:()=>e.activeQuickAction===void 0?K.value:e.activeQuickAction,set:R=>{e.activeQuickAction===void 0&&(K.value=R),r("update:activeQuickAction",R)}}),j=h.computed(()=>e.quickActions.find(R=>R.id===$.value)),tA=h.computed(()=>{var R;return((R=j.value)==null?void 0:R.placeholder)??e.placeholder}),{showVoiceMenu:rA,holdToRecord:nA,isVoiceHovered:CA,isRecording:SA,audioLevel:jA,isHoldingMic:lA,voiceError:xA,audioDevices:mA,isSpeechSupported:UA,isMicPermissionDenied:cA,toggleVoiceMenu:YA,closeVoiceMenu:NA,handleVoiceRecord:ue,handleMouseDown:Ce,handleMouseUp:ge,handleMouseLeave:Je,selectAudioDevice:aA,toggleHoldToRecord:gA}=w0A({draft:v,isDisabled:()=>e.disabled,onMenuOpen:()=>{U.value=!1},onVoiceClick:()=>r("voice-click"),onVoiceRecord:()=>r("voice-record"),onVoiceStart:()=>r("voice-start"),onVoiceStop:()=>r("voice-stop"),onVoiceCancel:()=>r("voice-cancel"),onAudioDeviceChange:R=>r("audio-device-change",R),onAudioTranscript:R=>r("audio-transcript",R)}),DA=h.computed(()=>!UA.value||cA.value),De=h.computed(()=>{if(!UA.value)return"当前浏览器不支持语音输入";if(cA.value)return"浏览器未开启麦克风权限"}),it=h.computed(()=>De.value?De.value:SA.value?"停止录音":"录音"),Gt=h.ref(!1);let Le=!1;function jt(){if(cA.value){Le||(Gt.value=!0);return}DA.value||(CA.value=!0)}function Te(){CA.value=!1,Gt.value=!1,Le=!1}function xt(){Gt.value=!1,Le=!0}const ze=h.computed(()=>(v.value.trim().length>0||I.value.length>0)&&I.value.every(T=>T.status==="uploaded")),sr=h.ref(!1),wt=h.computed(()=>e.streaming||sr.value),Kn=h.computed(()=>wt.value||ze.value);h.watch(()=>e.streaming,R=>{R&&(sr.value=!1)}),h.watch(ze,R=>{R&&(sr.value=!1)}),h.watch(()=>e.attachments,R=>{R&&(I.value=[...R])},{deep:!0});function Ci(R){I.value=[...R],r("update:attachments",I.value)}const Wr=TR({getAttachments:()=>I.value,setAttachments:Ci,getUploadConfig:()=>x.value,getLimits:()=>G.value,onError(R,T){r("attachment-error",R,T)}});h.onMounted(()=>{v.value&&s.value&&$S(s.value,v.value),Q.value=v.value}),h.watch(v,R=>{R!==Q.value&&s.value&&($S(s.value,R),Q.value=R,d.value=null,document.activeElement===s.value&&Bt(s.value))});function Bt(R){const T=window.getSelection();if(!T)return;const V=document.createRange();V.selectNodeContents(R),V.collapse(!1),T.removeAllRanges(),T.addRange(V)}function Dt(){if(!s.value)return;const R=x0A(s.value);Q.value=R,v.value=R}function hi(){if(!s.value)return;const R=new Set;s.value.querySelectorAll(`[${vh}]`).forEach(T=>{const V=T.getAttribute(vh),eA=T.getAttribute(OE);if(!V||!eA)return;const QA=dn(V,eA);if(R.add(QA),!p.has(QA)){const IA=T.getAttribute(KI)??"",JA={triggerId:V,id:eA,label:IA};p.set(QA,JA),r("mention-insert",JA)}}),E.forEach(T=>{if(R.has(T))return;const V=p.get(T);V&&(p.delete(T),r("mention-remove",V))}),E=R,Pn()}function Pn(){if(!a()||!s.value){Ii();return}const R=new Set;s.value.querySelectorAll(`[${YR}]`).forEach(T=>{let V=T.getAttribute(mh);V||(V=o(),T.setAttribute(mh,V)),R.add(V),n.has(V)||Sr(T)}),n.forEach((T,V)=>{var eA;R.has(V)&&((eA=s.value)!=null&&eA.contains(T.el))||An(V)})}function Sr(R){const T=R.getAttribute(mh);if(!T||!a()||n.has(T))return;const V=R.getAttribute(vh)??"",eA=R.getAttribute(OE)??"",QA=R.getAttribute(KI)??"",IA=R.getAttribute(cy)??"",JA=()=>$t(R),VA=h.defineComponent({name:"ChatSenderMentionSlotHost",setup(){return()=>{var At;return((At=i.mention)==null?void 0:At.call(i,{triggerId:V,id:eA,label:QA,char:IA,remove:JA}))??null}}});h.render(h.h(VA),R),n.set(T,{el:R,cleanup:()=>h.render(null,R)})}function An(R){const T=n.get(R);T&&(T.cleanup(),n.delete(R))}function Ii(){n.forEach((R,T)=>An(T))}function dn(R,T){return`${R}:${T}`}function $t(R){var eA;if(!((eA=s.value)!=null&&eA.contains(R)))return;s.value.focus();const V=window.getSelection();if(V){const QA=document.createRange();QA.selectNode(R),V.removeAllRanges(),V.addRange(QA),typeof document.execCommand=="function"&&document.execCommand("delete")||R.remove()}else R.remove();Qr(),MA()}function Qr(){s.value&&(!G0A(s.value)&&s.value.childNodes.length>0&&(s.value.innerHTML=""),hi(),Dt(),ke())}function _o(){f.value=!0}function W(){f.value=!1}function iA(R){var V;R.preventDefault();const T=((V=R.clipboardData)==null?void 0:V.getData("text/plain"))??"";T&&(pe(T),Qr())}function uA(R){var QA,IA;const T=R.target,V=(QA=T==null?void 0:T.closest)==null?void 0:QA.call(T,".chat-sender__mention-remove");if(!V||!((IA=s.value)!=null&&IA.contains(V)))return;R.preventDefault(),R.stopPropagation();const eA=V.closest(`.${rd}`);!eA||!s.value||$t(eA)}function MA(){const R=s.value;if(!R)return;R.focus();const T=window.getSelection();T&&(T.rangeCount>0&&R.contains(T.getRangeAt(0).startContainer)||Bt(R))}function HA(R){if(e.disabled||SA.value)return;const T=R.target;T&&(T.closest('button, a, input, textarea, select, label, [role="button"], [role="menuitem"], [role="switch"], [contenteditable="true"]')||MA())}function pe(R){const T=window.getSelection(),V=s.value;if(!T||T.rangeCount===0||!V)return;const eA=T.getRangeAt(0);if(!V.contains(eA.startContainer))return;const QA=R0A(eA,R);if(!QA)return;const IA=document.createRange();IA.setStartAfter(QA),IA.collapse(!0),T.removeAllRanges(),T.addRange(IA)}function Zt(){B.value=UR()}function ut(){const R=d.value;R&&(d.value=null,B.value=null,l.value=void 0,r("trigger-close",{triggerId:R.triggerId}))}function ke(){const R=window.getSelection(),T=s.value;if(!R||R.rangeCount===0||!R.isCollapsed||!T){ut();return}const V=R.getRangeAt(0);if(!T.contains(V.startContainer)){ut();return}const eA=F0A(y.value,T,V.startContainer,V.startOffset);if(!eA){ut();return}const QA=eA.range.toString().slice(eA.trigger.char.length),IA=d.value;if(!IA||IA.triggerId!==eA.trigger.id)d.value={triggerId:eA.trigger.id,query:QA,range:eA.range},r("trigger-open",{triggerId:eA.trigger.id});else{const JA=IA.query!==QA;d.value={triggerId:IA.triggerId,query:QA,range:eA.range},JA&&r("trigger-query",{triggerId:eA.trigger.id,query:QA})}h.nextTick(()=>{Zt(),_()})}function qt(R){e.disabled||(MA(),pe(R.char),Qr())}function Nr(){ut()}function Ra(R){const T=d.value;if(!T)return;const V=y.value.find(eA=>eA.id===T.triggerId);if(V){if(f.value){Promise.resolve().then(()=>en(V,T,R));return}en(V,T,R)}}function en(R,T,V){var ZA;const eA=s.value;if(!eA)return;const QA=a(),IA=!QA&&typeof R.renderChip=="function",JA=QA?o():void 0,VA=QA?HE(R,V.id,V.label,{custom:!0,mountId:JA}):IA?HE(R,V.id,V.label,{custom:!0}):M0A(R,V.id,V.label);if(IA&&R.renderChip){const he=R.renderChip({triggerId:R.id,id:V.id,label:V.label,char:R.char});typeof he=="string"?VA.innerHTML=he:VA.appendChild(he)}const ve=`m-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`;VA.setAttribute("data-mention-token",ve);const At=D0A(eA,T.range)?" ":"",_r=`${At}${VA.outerHTML} `;eA.focus();const at=window.getSelection();if(!at)return;at.removeAllRanges(),at.addRange(T.range),T.range.deleteContents();const zr=T.range.cloneRange();zr.collapse(!0),at.removeAllRanges(),at.addRange(zr);let Ve=null;if(typeof document.execCommand=="function"&&document.execCommand("insertHTML",!1,_r)&&(Ve=eA.querySelector(`[data-mention-token="${ve}"]`)),!Ve){const he=document.createDocumentFragment();At&&he.appendChild(document.createTextNode(At)),he.appendChild(VA),he.appendChild(document.createTextNode(" ")),zr.insertNode(he),Ve=VA}Ve.removeAttribute("data-mention-token"),QA&&Sr(Ve);const me=Ve.nextSibling,q=document.createRange();me&&me.nodeType===Node.TEXT_NODE?q.setStart(me,Math.min(1,((ZA=me.textContent)==null?void 0:ZA.length)??0)):q.setStartAfter(Ve),q.collapse(!0),at.removeAllRanges(),at.addRange(q);const wA=dn(R.id,V.id);p.set(wA,{triggerId:R.id,id:V.id,label:V.label}),E.add(wA),Dt(),r("mention-insert",{triggerId:R.id,id:V.id,label:V.label}),ut()}function Wn(R){const T=s.value,V=window.getSelection();if(!T||!V||!V.isCollapsed||V.rangeCount===0)return!1;const eA=V.getRangeAt(0),QA=R==="Backspace"?k0A(T,eA):b0A(T,eA);if(!QA)return!1;const IA=R==="Backspace"&&eA.startContainer.nodeType===Node.TEXT_NODE&&/^\s+$/.test(eA.startContainer.textContent??"")&&eA.startContainer.previousSibling===QA?eA.startContainer:null;T.focus();const JA=document.createRange();return JA.setStartBefore(QA),IA?JA.setEndAfter(IA):JA.setEndAfter(QA),V.removeAllRanges(),V.addRange(JA),typeof document.execCommand=="function"&&document.execCommand("delete")||(QA.remove(),IA!=null&&IA.parentNode&&IA.parentNode.removeChild(IA)),!0}function Fr(R){if((R.key==="Backspace"||R.key==="Delete")&&!R.isComposing&&!f.value&&Wn(R.key)){R.preventDefault(),Qr();return}if(R.key==="Enter"){if(R.shiftKey){R.preventDefault(),pe(`
package/dist/index.js CHANGED
@@ -57265,7 +57265,8 @@ const YuA = {
57265
57265
  scheduleTime: "安排会议时间",
57266
57266
  ask_form: "询问用户",
57267
57267
  "ask-form": "询问用户",
57268
- ask_user_form: "询问用户"
57268
+ ask_user_form: "询问用户",
57269
+ ask_user: "询问用户"
57269
57270
  };
57270
57271
  function TuA(t) {
57271
57272
  return YuA[t] ?? t;
@@ -57297,7 +57298,7 @@ function EI(t, A = {}) {
57297
57298
  (i) => i.kind === "component" && i.tag === "ask-form" && i.complete
57298
57299
  );
57299
57300
  }
57300
- const HuA = /* @__PURE__ */ new Set(["ask_form", "ask-form", "ask_user_form"]);
57301
+ const HuA = /* @__PURE__ */ new Set(["ask_form", "ask-form", "ask_user_form", "ask_user"]);
57301
57302
  function mf(t) {
57302
57303
  return HuA.has(t);
57303
57304
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deep-eye/core",
3
- "version": "1.2.34",
3
+ "version": "1.2.35",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"