@blueking/ai-blueking 2.2.0-beta.1 → 2.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/standalone/index.es.min.js +8312 -8301
- package/dist/standalone/index.iife.min.js +2 -2
- package/dist/standalone/index.umd.min.js +2 -2
- package/dist/vue2/index.es.min.js +53 -42
- package/dist/vue2/index.iife.min.js +2 -2
- package/dist/vue2/index.umd.min.js +2 -2
- package/dist/vue3/index.iife.min.js +1 -1
- package/package.json +4 -4
|
@@ -3484,12 +3484,12 @@ Input "@" to trigger tool and MCP
|
|
|
3484
3484
|
Use Shift + Enter to enter a new line`:`输入 "/" 唤出 Skill
|
|
3485
3485
|
输入 "\\" 唤出 Prompt
|
|
3486
3486
|
输入 "@" 唤出 工具和 MCP
|
|
3487
|
-
通过 Shift + Enter 进行换行输入`},prompts:{default:()=>[]},resources:{default:()=>[]},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{default:()=>[]},supportUpload:{type:Boolean,default:!0},tippyOptions:{}},{cite:{required:!1,default:``},citeModifiers:{}}),emits:br([`selectShortcut`,`deleteShortcut`,`update:modelValue`],[`update:cite`]),setup(e,{expose:t,emit:n}){let r=er(`aiSlashInputRef`),i=er(`filesRef`),a=Dr(e,`cite`),o=cn(200),s=e,l=n,u=sn(s.defaultUploadFiles||[]),d=fi(()=>s.shortcuts?.find(e=>e.id===s.shortcutId)),f=fi(()=>s.messageStatus&&[Wi.Pending,Wi.Streaming,Wi.Fetching].includes(s.messageStatus)?s.messageStatus:s.modelValue?.length<1||Array.isArray(s.modelValue)&&!c9(s.modelValue).trim()?Wi.Disabled:s.messageStatus);Cee(()=>{let e=s.inputMaxHeight||200;if(u.value.length<1||!i.value){o.value=e;return}o.value=e+(i.value?.clientHeight||0)});let p=async()=>{try{if(s.sendDisabledTip)return;r.value?.cleanup?.();let e;u.value?.length?(e=u.value?.slice().map(e=>({type:Hi.Binary,url:e.url,mimeType:e.file?.type||``,filename:e.file?.name||``})),s.modelValue&&e.push({type:Hi.Text,text:c9(s.modelValue)})):e=typeof s.modelValue==`string`?s.modelValue:c9(s.modelValue),s.onSendMessage?.(e,s.modelValue),u.value=[]}catch(e){console.error(e)}},m=e=>{if(e.key===`Enter`||e.key===`NumpadEnter`){if(e.shiftKey||f.value===Wi.Disabled||s.sendDisabledTip||f.value===Wi.Fetching||f.value===Wi.Streaming||f.value===Wi.Pending)return;p()}},h=async()=>{try{s.onStopSending?.()}catch(e){console.error(e)}},g=()=>{a.value=``},_=e=>{l(`selectShortcut`,e)},v=()=>{l(`deleteShortcut`)},y=e=>`${e.name}_${e.size}_${e.lastModified}`,b=(uie/(1024*1024)).toFixed(1),x=async e=>{if(!s.supportUpload)return;if(u.value.length>=3){e.length>0&&Ed({message:Pi(e.length,b,Ri),theme:`error`});return}let t=new Set(u.value.map(e=>e.file?y(e.file):``)),n=0;for(let r=0;r<e.length;r++){let i=e[r];if(u.value.length>=3){n+=e.length-r;break}let a=y(i);if(t.has(a)){n+=1;continue}if(i.size<=0||i.size>=2516582.4){n+=1;continue}t.add(a);let o={file:i,status:C9.Pending};u.value.push(o),s.onUpload?.(i).then(e=>{if(e&&typeof e==`object`&&`download_url`in e){o.url=e.download_url,o.status=C9.Success;return}o.status=C9.Error}).catch(()=>{o.status=C9.Error})}n>0&&Ed({message:Pi(n,b,Ri),theme:`error`})},S=e=>{u.value=u.value.filter(t=>t.file?t.file!==e.file:t.url?t.url!==e.url:t.filename?t.filename!==e.filename:!0)},C=(e,t)=>{l(`update:modelValue`,e,t)};return t({focus:()=>{r.value?.focus?.()},triggerSendMessage:p}),(t,n)=>(B(),V(`div`,{class:`chat-input-container`,style:ge({"--chat-z-index":z(rie)})},[mr(t.$slots,`top`),mr(t.$slots,`interrupt`),H(`div`,{class:`chat-input`,style:ge({maxHeight:o.value+`px`})},[mr(t.$slots,`input-header`,{},()=>[a.value?(B(),Gr(sUt,{key:0,class:`chat-input-cite`,content:a.value,onClose:g},null,8,[`content`])):$r(`v-if`,!0)]),mr(t.$slots,`files`,Se(Xr({files:u.value})),()=>[u.value.length?(B(),V(`div`,{key:0,ref_key:`filesRef`,ref:i,class:`chat-input-files`},[Yr(RUt,{files:u.value,onDeleteFile:S},null,8,[`files`])],512)):$r(`v-if`,!0)]),Yr(cWt,{ref_key:`aiSlashInputRef`,ref:r,"model-value":e.modelValue,placeholder:e.placeholder,prompts:e.prompts,resources:e.resources,skills:e.skills,onKeydown:m,"onUpdate:modelValue":C,onUpload:x},null,8,[`model-value`,`placeholder`,`prompts`,`resources`,`skills`]),Yr(uWt,{"message-state":f.value,"send-disabled-tip":e.sendDisabledTip,"tippy-options":e.tippyOptions,onSendMessage:p,onStopSending:h},{default:Mn(()=>[e.supportUpload?(B(),Gr(iUt,{key:0,"tippy-options":e.tippyOptions,onUpload:x},null,8,[`tippy-options`])):$r(`v-if`,!0),e.supportUpload&&(e.shortcuts?.length||d.value)?(B(),V(`span`,dWt)):$r(`v-if`,!0),mr(t.$slots,`attachment`,{},()=>[e.shortcuts&&!d.value?(B(),Gr(STe,{key:0,shortcuts:e.shortcuts,onSelectShortcut:_},null,8,[`shortcuts`])):$r(`v-if`,!0),d.value?(B(),Gr(ip,{key:1,class:`selected-shortcut-btn`,shortcut:d.value},{append:Mn(()=>[Yr(z(Qi),{onClick:v})]),_:1},8,[`shortcut`])):$r(`v-if`,!0)])]),"send-icon":Mn(()=>[mr(t.$slots,`send-icon`)]),_:3},8,[`message-state`,`send-disabled-tip`,`tippy-options`])],4)],4))}}),pWt={class:`chat-input-info-alert`},mWt={class:`chat-input-info-alert__text`},hWt=$n({__name:`input-info-alert`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,pWt,[Yr(z(Jie),{class:`chat-input-info-alert__icon`}),H(`span`,mWt,ke(e.content),1)]))}}),gWt=`others`,_Wt=e=>e<26?String.fromCharCode(65+e):String(e+1),vWt=e=>{let t=fi(()=>e()?.metadata?.questions??[]),n=cn({}),r=e=>n.value[e],i=(e,t)=>{n.value={...n.value,[e]:t}},a=fi(()=>t.value.length),o=fi(()=>t.value.reduce((e,t,r)=>e+ +!!n.value[r],0)),s=fi(()=>a.value>0&&o.value===a.value),l=()=>t.value.map((e,t)=>n.value[t]??{question:e.question,answer:[]});return{questions:t,answeredCount:o,totalCount:a,completed:s,getAnswer:r,setAnswer:i,buildResolvePayload:()=>({interruptId:e()?.id??``,reason:Vi.UserQuestion,status:`resolved`,payload:{answers:l()}}),buildSkipPayload:()=>yWt(e())}},yWt=e=>({interruptId:e?.id??``,reason:Vi.UserQuestion,status:`cancelled`,payload:{answers:[]}}),bWt={class:`ai-user-question-answered`},xWt={class:`ai-user-question-answered__header`},SWt={class:`ai-user-question-answered__title-wrap`},CWt={class:`ai-user-question-answered__title`},wWt={class:`ai-user-question-answered__status`},TWt={class:`ai-user-question-answered__body`},EWt={class:`ai-user-question-answered__question`},DWt={class:`ai-user-question-answered__question-text`},OWt={key:0,class:`ai-user-question-answered__tag`},kWt=$n({__name:`user-question-answered-card`,props:{answers:{},status:{default:`resolved`}},setup(e){let t=e,n=fi(()=>t.status===`cancelled`?zi(`已取消`):zi(`已回复`));return(t,r)=>(B(),V(`section`,bWt,[H(`header`,xWt,[H(`div`,SWt,[Yr(z(qie),{class:`ai-user-question-answered__help-icon`}),H(`span`,CWt,ke(z(zi)(`回答内容`)),1)]),H(`span`,wWt,ke(n.value),1)]),H(`div`,TWt,[(B(!0),V(Lr,null,fr(e.answers,(n,r)=>(B(),V(`div`,{key:r,class:`ai-user-question-answered__item`},[H(`div`,EWt,[H(`span`,DWt,ke(r+1)+`. `+ke(n.question),1),n.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,OWt,ke(n.multiSelect?z(zi)(`多选`):z(zi)(`单选`)),1))]),$r(` 默认逐条回显选择题答案;业务方可覆盖此 slot 渲染自定义表单的回显 `),mr(t.$slots,`answer`,ri({ref_for:!0},{item:n,index:r,status:e.status}),()=>[(B(!0),V(Lr,null,fr(n.answer,(e,t)=>(B(),V(`p`,{key:t,class:`ai-user-question-answered__answer`},ke(e.description||e.label),1))),128))])]))),128))])]))}}),AWt={class:`ai-user-question-option__badge`},jWt=[`placeholder`,`value`],MWt={key:1,class:`ai-user-question-option__text`},NWt=$n({__name:`user-question-option`,props:{option:{},othersText:{},selected:{type:Boolean}},emits:[`confirm`,`select`,`update:othersText`],setup(e,{emit:t}){let n=e,r=t,i=()=>{r(`select`)},a=()=>{n.selected||r(`select`)},o=e=>{let t=e.target.value;r(`update:othersText`,t),n.selected||r(`select`)};return(t,n)=>(B(),V(`div`,{class:xe([`ai-user-question-option`,{"ai-user-question-option--selected":e.selected,"ai-user-question-option--others":e.option.isOthers}]),onClick:i},[H(`span`,AWt,ke(e.option.letter),1),$r(` Others:自定义输入 `),e.option.isOthers?(B(),V(`input`,{key:0,class:`ai-user-question-option__input`,placeholder:z(zi)(`请输入...`),value:e.othersText,onClick:n[0]||=ji(()=>{},[`stop`]),onFocus:a,onInput:o,onKeydown:n[1]||=Tre(ji(e=>r(`confirm`),[`stop`]),[`enter`])},null,40,jWt)):(B(),V(`span`,MWt,ke(e.option.description),1))],2))}}),PWt={class:`ai-user-question-choice`},FWt=$n({__name:`user-question-choice`,props:{question:{}},emits:[`answer`,`confirm`],setup(e,{emit:t}){let n=e,r=t,i=cn([]),a=cn(``),o=fi(()=>{let e=(n.question.options??[]).filter(e=>e.label!==gWt).map((e,t)=>({...e,isOthers:!1,letter:_Wt(t)}));return e.push({label:gWt,description:``,isOthers:!0,letter:_Wt(e.length)}),e}),s=fi(()=>o.value.findIndex(e=>e.isOthers)),l=e=>i.value.includes(e),u=fi(()=>i.value.length?s.value>=0&&i.value.includes(s.value)?a.value.trim().length>0:!0:!1),d=()=>({question:n.question.question,multiSelect:n.question.multiSelect,answer:i.value.map(e=>{let t=o.value[e];return t?.isOthers?{label:gWt,description:a.value.trim()}:{label:t?.label??``,description:t?.description??``}})}),f=()=>r(`answer`,u.value?d():void 0),p=e=>{let t=i.value;i.value=n.question.multiSelect?t.includes(e)?t.filter(t=>t!==e):[...t,e]:[e],f()},m=e=>{a.value=e,f()};return Rn(()=>n.question,()=>{i.value=[],a.value=``,f()}),(e,t)=>(B(),V(`div`,PWt,[(B(!0),V(Lr,null,fr(o.value,(e,n)=>(B(),Gr(NWt,{key:n,option:e,"others-text":a.value,selected:l(n),onConfirm:t[0]||=e=>r(`confirm`),onSelect:e=>p(n),"onUpdate:othersText":m},null,8,[`option`,`others-text`,`selected`,`onSelect`]))),128))]))}}),IWt={class:`ai-user-question-card__title-wrap`},LWt={class:`ai-user-question-card__title`},RWt={class:`ai-user-question-card__counter-wrap`},zWt={class:`ai-user-question-card__counter`},BWt={class:`ai-user-question-card__body`},VWt={class:`ai-user-question-card__question-title`},HWt={class:`ai-user-question-card__question-text`},UWt={key:0,class:`ai-user-question-card__tag`},WWt={class:`ai-user-question-card__options`},GWt={class:`ai-user-question-card__footer`},KWt=$n({__name:`user-question-card`,props:{interrupt:{},onResume:{type:Function}},setup(e){let t=e,n=cp(),r=cn(!1),{questions:i,answeredCount:a,totalCount:o,completed:s,getAnswer:l,setAnswer:u,buildResolvePayload:d,buildSkipPayload:f}=vWt(()=>t.interrupt),p=fi(()=>t.interrupt.metadata?.questions?.[0]?.header||t.interrupt.message||``),m=()=>{r.value=!r.value},h=()=>{r.value&&=!1},g=()=>{s.value
|
|
3487
|
+
通过 Shift + Enter 进行换行输入`},prompts:{default:()=>[]},resources:{default:()=>[]},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{default:()=>[]},supportUpload:{type:Boolean,default:!0},tippyOptions:{}},{cite:{required:!1,default:``},citeModifiers:{}}),emits:br([`selectShortcut`,`deleteShortcut`,`update:modelValue`],[`update:cite`]),setup(e,{expose:t,emit:n}){let r=er(`aiSlashInputRef`),i=er(`filesRef`),a=Dr(e,`cite`),o=cn(200),s=e,l=n,u=sn(s.defaultUploadFiles||[]),d=fi(()=>s.shortcuts?.find(e=>e.id===s.shortcutId)),f=fi(()=>s.messageStatus&&[Wi.Pending,Wi.Streaming,Wi.Fetching].includes(s.messageStatus)?s.messageStatus:s.modelValue?.length<1||Array.isArray(s.modelValue)&&!c9(s.modelValue).trim()?Wi.Disabled:s.messageStatus);Cee(()=>{let e=s.inputMaxHeight||200;if(u.value.length<1||!i.value){o.value=e;return}o.value=e+(i.value?.clientHeight||0)});let p=async()=>{try{if(s.sendDisabledTip)return;r.value?.cleanup?.();let e;u.value?.length?(e=u.value?.slice().map(e=>({type:Hi.Binary,url:e.url,mimeType:e.file?.type||``,filename:e.file?.name||``})),s.modelValue&&e.push({type:Hi.Text,text:c9(s.modelValue)})):e=typeof s.modelValue==`string`?s.modelValue:c9(s.modelValue),s.onSendMessage?.(e,s.modelValue),u.value=[]}catch(e){console.error(e)}},m=e=>{if(e.key===`Enter`||e.key===`NumpadEnter`){if(e.shiftKey||f.value===Wi.Disabled||s.sendDisabledTip||f.value===Wi.Fetching||f.value===Wi.Streaming||f.value===Wi.Pending)return;p()}},h=async()=>{try{s.onStopSending?.()}catch(e){console.error(e)}},g=()=>{a.value=``},_=e=>{l(`selectShortcut`,e)},v=()=>{l(`deleteShortcut`)},y=e=>`${e.name}_${e.size}_${e.lastModified}`,b=(uie/(1024*1024)).toFixed(1),x=async e=>{if(!s.supportUpload)return;if(u.value.length>=3){e.length>0&&Ed({message:Pi(e.length,b,Ri),theme:`error`});return}let t=new Set(u.value.map(e=>e.file?y(e.file):``)),n=0;for(let r=0;r<e.length;r++){let i=e[r];if(u.value.length>=3){n+=e.length-r;break}let a=y(i);if(t.has(a)){n+=1;continue}if(i.size<=0||i.size>=2516582.4){n+=1;continue}t.add(a);let o={file:i,status:C9.Pending};u.value.push(o),s.onUpload?.(i).then(e=>{if(e&&typeof e==`object`&&`download_url`in e){o.url=e.download_url,o.status=C9.Success;return}o.status=C9.Error}).catch(()=>{o.status=C9.Error})}n>0&&Ed({message:Pi(n,b,Ri),theme:`error`})},S=e=>{u.value=u.value.filter(t=>t.file?t.file!==e.file:t.url?t.url!==e.url:t.filename?t.filename!==e.filename:!0)},C=(e,t)=>{l(`update:modelValue`,e,t)};return t({focus:()=>{r.value?.focus?.()},triggerSendMessage:p}),(t,n)=>(B(),V(`div`,{class:`chat-input-container`,style:ge({"--chat-z-index":z(rie)})},[mr(t.$slots,`top`),mr(t.$slots,`interrupt`),H(`div`,{class:`chat-input`,style:ge({maxHeight:o.value+`px`})},[mr(t.$slots,`input-header`,{},()=>[a.value?(B(),Gr(sUt,{key:0,class:`chat-input-cite`,content:a.value,onClose:g},null,8,[`content`])):$r(`v-if`,!0)]),mr(t.$slots,`files`,Se(Xr({files:u.value})),()=>[u.value.length?(B(),V(`div`,{key:0,ref_key:`filesRef`,ref:i,class:`chat-input-files`},[Yr(RUt,{files:u.value,onDeleteFile:S},null,8,[`files`])],512)):$r(`v-if`,!0)]),Yr(cWt,{ref_key:`aiSlashInputRef`,ref:r,"model-value":e.modelValue,placeholder:e.placeholder,prompts:e.prompts,resources:e.resources,skills:e.skills,onKeydown:m,"onUpdate:modelValue":C,onUpload:x},null,8,[`model-value`,`placeholder`,`prompts`,`resources`,`skills`]),Yr(uWt,{"message-state":f.value,"send-disabled-tip":e.sendDisabledTip,"tippy-options":e.tippyOptions,onSendMessage:p,onStopSending:h},{default:Mn(()=>[e.supportUpload?(B(),Gr(iUt,{key:0,"tippy-options":e.tippyOptions,onUpload:x},null,8,[`tippy-options`])):$r(`v-if`,!0),e.supportUpload&&(e.shortcuts?.length||d.value)?(B(),V(`span`,dWt)):$r(`v-if`,!0),mr(t.$slots,`attachment`,{},()=>[e.shortcuts&&!d.value?(B(),Gr(STe,{key:0,shortcuts:e.shortcuts,onSelectShortcut:_},null,8,[`shortcuts`])):$r(`v-if`,!0),d.value?(B(),Gr(ip,{key:1,class:`selected-shortcut-btn`,shortcut:d.value},{append:Mn(()=>[Yr(z(Qi),{onClick:v})]),_:1},8,[`shortcut`])):$r(`v-if`,!0)])]),"send-icon":Mn(()=>[mr(t.$slots,`send-icon`)]),_:3},8,[`message-state`,`send-disabled-tip`,`tippy-options`])],4)],4))}}),pWt={class:`chat-input-info-alert`},mWt={class:`chat-input-info-alert__text`},hWt=$n({__name:`input-info-alert`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,pWt,[Yr(z(Jie),{class:`chat-input-info-alert__icon`}),H(`span`,mWt,ke(e.content),1)]))}}),gWt=`others`,_Wt=e=>e<26?String.fromCharCode(65+e):String(e+1),vWt=e=>{let t=fi(()=>e()?.metadata?.questions??[]),n=cn({}),r=e=>n.value[e],i=(e,t)=>{n.value={...n.value,[e]:t}},a=fi(()=>t.value.length),o=fi(()=>t.value.reduce((e,t,r)=>e+ +!!n.value[r],0)),s=fi(()=>a.value>0&&o.value===a.value),l=()=>t.value.map((e,t)=>n.value[t]??{question:e.question,answer:[]});return{questions:t,answeredCount:o,totalCount:a,completed:s,getAnswer:r,setAnswer:i,buildResolvePayload:()=>({interruptId:e()?.id??``,reason:Vi.UserQuestion,status:`resolved`,payload:{answers:l()}}),buildSkipPayload:()=>yWt(e())}},yWt=e=>({interruptId:e?.id??``,reason:Vi.UserQuestion,status:`cancelled`,payload:{answers:[]}}),bWt={class:`ai-user-question-answered`},xWt={class:`ai-user-question-answered__header`},SWt={class:`ai-user-question-answered__title-wrap`},CWt={class:`ai-user-question-answered__title`},wWt={class:`ai-user-question-answered__status`},TWt={class:`ai-user-question-answered__body`},EWt={class:`ai-user-question-answered__question`},DWt={class:`ai-user-question-answered__question-text`},OWt={key:0,class:`ai-user-question-answered__tag`},kWt=$n({__name:`user-question-answered-card`,props:{answers:{},status:{default:`resolved`}},setup(e){let t=e,n=fi(()=>t.status===`cancelled`?zi(`已取消`):zi(`已回复`));return(t,r)=>(B(),V(`section`,bWt,[H(`header`,xWt,[H(`div`,SWt,[Yr(z(qie),{class:`ai-user-question-answered__help-icon`}),H(`span`,CWt,ke(z(zi)(`回答内容`)),1)]),H(`span`,wWt,ke(n.value),1)]),H(`div`,TWt,[(B(!0),V(Lr,null,fr(e.answers,(n,r)=>(B(),V(`div`,{key:r,class:`ai-user-question-answered__item`},[H(`div`,EWt,[H(`span`,DWt,ke(r+1)+`. `+ke(n.question),1),n.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,OWt,ke(n.multiSelect?z(zi)(`多选`):z(zi)(`单选`)),1))]),$r(` 默认逐条回显选择题答案;业务方可覆盖此 slot 渲染自定义表单的回显 `),mr(t.$slots,`answer`,ri({ref_for:!0},{item:n,index:r,status:e.status}),()=>[(B(!0),V(Lr,null,fr(n.answer,(e,t)=>(B(),V(`p`,{key:t,class:`ai-user-question-answered__answer`},ke(e.description||e.label),1))),128))])]))),128))])]))}}),AWt={class:`ai-user-question-option__badge`},jWt=[`placeholder`,`value`],MWt={key:1,class:`ai-user-question-option__text`},NWt=$n({__name:`user-question-option`,props:{option:{},othersText:{},selected:{type:Boolean}},emits:[`confirm`,`select`,`update:othersText`],setup(e,{emit:t}){let n=e,r=t,i=()=>{r(`select`)},a=()=>{n.selected||r(`select`)},o=e=>{let t=e.target.value;r(`update:othersText`,t),n.selected||r(`select`)};return(t,n)=>(B(),V(`div`,{class:xe([`ai-user-question-option`,{"ai-user-question-option--selected":e.selected,"ai-user-question-option--others":e.option.isOthers}]),onClick:i},[H(`span`,AWt,ke(e.option.letter),1),$r(` Others:自定义输入 `),e.option.isOthers?(B(),V(`input`,{key:0,class:`ai-user-question-option__input`,placeholder:z(zi)(`请输入...`),value:e.othersText,onClick:n[0]||=ji(()=>{},[`stop`]),onFocus:a,onInput:o,onKeydown:n[1]||=Tre(ji(e=>r(`confirm`),[`stop`]),[`enter`])},null,40,jWt)):(B(),V(`span`,MWt,ke(e.option.description),1))],2))}}),PWt={class:`ai-user-question-choice`},FWt=$n({__name:`user-question-choice`,props:{question:{}},emits:[`answer`,`confirm`],setup(e,{emit:t}){let n=e,r=t,i=cn([]),a=cn(``),o=fi(()=>{let e=(n.question.options??[]).filter(e=>e.label!==gWt).map((e,t)=>({...e,isOthers:!1,letter:_Wt(t)}));return e.push({label:gWt,description:``,isOthers:!0,letter:_Wt(e.length)}),e}),s=fi(()=>o.value.findIndex(e=>e.isOthers)),l=e=>i.value.includes(e),u=fi(()=>i.value.length?s.value>=0&&i.value.includes(s.value)?a.value.trim().length>0:!0:!1),d=()=>({question:n.question.question,multiSelect:n.question.multiSelect,answer:i.value.map(e=>{let t=o.value[e];return t?.isOthers?{label:gWt,description:a.value.trim()}:{label:t?.label??``,description:t?.description??``}})}),f=()=>r(`answer`,u.value?d():void 0),p=e=>{let t=i.value;i.value=n.question.multiSelect?t.includes(e)?t.filter(t=>t!==e):[...t,e]:[e],f()},m=e=>{a.value=e,f()};return Rn(()=>n.question,()=>{i.value=[],a.value=``,f()}),(e,t)=>(B(),V(`div`,PWt,[(B(!0),V(Lr,null,fr(o.value,(e,n)=>(B(),Gr(NWt,{key:n,option:e,"others-text":a.value,selected:l(n),onConfirm:t[0]||=e=>r(`confirm`),onSelect:e=>p(n),"onUpdate:othersText":m},null,8,[`option`,`others-text`,`selected`,`onSelect`]))),128))]))}}),IWt={class:`ai-user-question-card__title-wrap`},LWt={class:`ai-user-question-card__title`},RWt={class:`ai-user-question-card__counter-wrap`},zWt={class:`ai-user-question-card__counter`},BWt={class:`ai-user-question-card__body`},VWt={class:`ai-user-question-card__question-title`},HWt={class:`ai-user-question-card__question-text`},UWt={key:0,class:`ai-user-question-card__tag`},WWt={class:`ai-user-question-card__options`},GWt={class:`ai-user-question-card__footer`},KWt=$n({__name:`user-question-card`,props:{interrupt:{},onResume:{type:Function}},setup(e){let t=e,n=cp(),r=cn(!1),{questions:i,answeredCount:a,totalCount:o,completed:s,getAnswer:l,setAnswer:u,buildResolvePayload:d,buildSkipPayload:f}=vWt(()=>t.interrupt),p=fi(()=>t.interrupt.metadata?.questions?.[0]?.header||t.interrupt.message||``),m=()=>{r.value=!r.value},h=()=>{r.value&&=!1},g=cn(null),_=()=>{!s.value||g.value!==null||(g.value=`complete`,t.onResume?.(d(),t.interrupt))},v=()=>{g.value===null&&(g.value=`skip`,t.onResume?.(f(),t.interrupt))};return(e,t)=>(B(),V(`section`,{class:xe([`ai-user-question-card`,{"ai-user-question-card--collapsed":r.value}])},[H(`header`,{class:`ai-user-question-card__header`,onClick:h},[H(`div`,IWt,[Yr(z(qie),{class:`ai-user-question-card__help-icon`}),Nn((B(),V(`span`,LWt,[Qr(ke(p.value),1)])),[[z(Tp),{...z(n)}]]),$r(` <span
|
|
3488
3488
|
v-if="isCollapsed"
|
|
3489
3489
|
class="ai-user-question-card__tag"
|
|
3490
3490
|
>
|
|
3491
3491
|
{{ headerSelectText }}
|
|
3492
|
-
</span> `)]),H(`div`,RWt,[H(`span`,zWt,ke(z(a))+` / `+ke(z(o)),1),Yr(z(Fie),{class:`ai-user-question-card__arrow`,style:ge({transform:r.value?`rotate(180deg)`:`rotate(-90deg)`}),onClick:ji(m,[`stop`])},null,8,[`style`])])]),$r(` 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 `),Nn(H(`div`,BWt,[(B(!0),V(Lr,null,fr(z(i),(t,n)=>(B(),V(`div`,{key:n,class:`ai-user-question-card__question`},[H(`div`,VWt,[H(`span`,HWt,ke(n+1)+`. `+ke(t.question),1),t.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,UWt,ke(t.multiSelect?z(zi)(`多选`):z(zi)(`单选`)),1))]),H(`div`,WWt,[$r(` 默认渲染选择题;业务方可覆盖此 slot 渲染任意表单,作答有效时通过 setAnswer 回传 `),mr(e.$slots,`question`,ri({ref_for:!0},{question:t,qIndex:n,answer:z(l)(n),setAnswer:e=>z(u)(n,e),confirm:g}),()=>[Yr(FWt,{question:t,onAnswer:e=>z(u)(n,e),onConfirm:g},null,8,[`question`,`onAnswer`])])])]))),128))],512),[[Ci,!r.value]]),Nn(H(`footer`,GWt,[Yr(z(xu),{class:`ai-user-question-card__complete`,disabled:!z(s),size:`small`,theme:`primary`,onClick:g},{default:Mn(()=>[Yr(z(Yie),{class:`ai-user-question-card__enter-icon`}),Qr(` `+ke(z(zi)(`完成`)),1)]),_:1},8,[`disabled`]),Yr(z(xu),{class:`ai-user-question-card__skip`,size:`small`,text:``,onClick:_},{default:Mn(()=>[Yr(z(Xie),{class:`ai-user-question-card__skip-icon`}),Qr(` `+ke(z(zi)(`跳过`)),1)]),_:1})],512),[[Ci,!r.value]])],2))}}),qWt={class:`ai-delete-confirm`},JWt={class:`ai-delete-confirm__title`},YWt={class:`ai-delete-confirm__desc`},XWt={class:`ai-delete-confirm__actions`},ZWt=$n({__name:`delete-tool`,props:{description:{},id:{},name:{},disabled:{type:Boolean},tippyOptions:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=e,r=t,i=er(`tippyRef`),a=fi(()=>({id:n.id,name:n.name,description:n.description,disabled:n.disabled,tippyOptions:n.tippyOptions})),o=fi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),s=()=>{if(n.disabled)return!1},l=()=>{i.value?.hide?.()},u=()=>{l(),r(`confirm`)},d=()=>{l(),r(`cancel`)};return lr(()=>{l()}),(e,t)=>(B(),Gr(z(np),ri({ref_key:`tippyRef`,ref:i},o.value,{onShow:s}),{content:Mn(()=>[H(`div`,qWt,[H(`div`,JWt,ke(z(zi)(`确认删除该回答?`)),1),H(`div`,YWt,ke(z(zi)(`删除操作无法撤回,请谨慎操作!`)),1),H(`div`,XWt,[Yr(z(xu),{size:`small`,theme:`danger`,onClick:u},{default:Mn(()=>[Qr(ke(z(zi)(`删除`)),1)]),_:1}),Yr(z(xu),{size:`small`,onClick:d},{default:Mn(()=>[Qr(ke(z(zi)(`取消`)),1)]),_:1})])])]),default:Mn(()=>[Yr(Ep,Se(Xr(a.value)),null,16)]),_:1},16))}}),QWt={class:`ai-feedback-title`},$Wt={class:`ai-feedback-reason-list`},eGt=[`onClick`],tGt={class:`ai-feedback-other`},nGt={class:`ai-feedback-footer`},rGt=$n({__name:`user-feedback`,props:{loading:{type:Boolean},reasonList:{},title:{}},emits:[`submit`,`cancel`],setup(e,{emit:t}){let n=t,r=cn(``),i=cn([]),a=e=>{i.value.includes(e)?i.value=i.value.filter(t=>t!==e):i.value=[...i.value,e]},o=()=>{n(`submit`,i.value,r.value)},s=()=>{i.value=[],r.value=``,n(`cancel`)};return(t,n)=>(B(),V(`div`,{class:`ai-user-feedback`,onMouseenter:n[1]||=ji(()=>{},[`stop`,`prevent`])},[H(`div`,QWt,ke(e.title),1),H(`div`,$Wt,[e.loading?(B(),V(Lr,{key:0},fr(8,e=>H(`div`,{key:e,class:`reason-item ai-skeleton-element`})),64)):(B(!0),V(Lr,{key:1},fr(e.reasonList,e=>(B(),V(`div`,{key:e,class:xe([`reason-item`,{"is-active":i.value.includes(e)}]),onClick:t=>a(e)},ke(e),11,eGt))),128))]),H(`div`,tGt,[Yr(z(Mu),{modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,placeholder:z(zi)(`说出您的想法`),rows:3,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),H(`div`,nGt,[Yr(z(xu),{class:`custom-btn`,disabled:!r.value&&i.value.length===0,size:`small`,theme:`primary`,onClick:o},{default:Mn(()=>[Qr(ke(z(zi)(`提交`)),1)]),_:1},8,[`disabled`]),Yr(z(xu),{class:`custom-btn`,size:`small`,width:`80px`,onClick:s},{default:Mn(()=>[Qr(ke(z(zi)(`取消`)),1)]),_:1})])],32))}}),iGt={ref:`messageToolsRef`,class:`message-tools-container`},aGt={class:`message-tools`,style:{"margin-right":`8px`}},oGt={key:0,class:`ai-divider`,style:{"margin-right":`8px`}},sGt={class:`message-tools`},cGt=$n({__name:`message-tools`,props:{messageTools:{default:()=>sie},messageToolsStatus:{},onAction:{},tippyOptions:{},updateTools:{default:()=>lie}},emits:[`feedback`],setup(e,{emit:t}){let n=e,r=t,i=er(`feedbackTippyRef`),a=cn(!1),o=cn([]),s=cn(null),l=fi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),u=async e=>{if(e.id===`like`||e.id===`unlike`){try{a.value=!0,o.value=[],o.value=await n.onAction?.(e)||[]}finally{a.value=!1}return}await n.onAction?.(e)},d=async e=>{await n.onAction?.(e)},f=()=>{i.value?.forEach(e=>e?.hide?.())},p=e=>s.value?s.value===`like`&&e===`like`?`activeLike`:s.value===`unlike`&&e===`unlike`?`activeUnLike`:e:e,m=e=>{let t=p(e);return t===`activeLike`?zi(`取消满意`):t===`activeUnLike`?zi(`取消不满意`):n.updateTools?.find(e=>e.id===t)?.description||``},h=(e,t,n)=>{f(),s.value===e.id?s.value=null:s.value=e.id,r(`feedback`,e,t,n)},g=e=>{if(n.messageToolsStatus===w9.Disabled)return!1;if(s.value&&s.value===e)return s.value=null,!1};return lr(()=>{f(),o.value=[]}),(t,n)=>(B(),V(`div`,iGt,[H(`div`,aGt,[(B(!0),V(Lr,null,fr(e.messageTools,t=>(B(),V(Lr,{key:t.id},[t.id===`delete`?(B(),Gr(ZWt,ri({key:0,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Ep,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))]),e.updateTools.length>0?(B(),V(`div`,oGt)):$r(`v-if`,!0),H(`div`,sGt,[(B(!0),V(Lr,null,fr(e.updateTools,t=>(B(),V(Lr,{key:t.id},[t.id===`like`||t.id===`unlike`?(B(),Gr(z(np),ri({key:0,ref_for:!0,ref_key:`feedbackTippyRef`,ref:i},{ref_for:!0},l.value,{onShow:e=>g(t.id)}),{content:Mn(()=>[Yr(rGt,{loading:a.value,"reason-list":o.value,title:t.id===`like`?z(zi)(`什么原因让你满意?`):z(zi)(`什么原因让你不满意?`),onCancel:f,onSubmit:(e,n)=>h(t,e,n)},null,8,[`loading`,`reason-list`,`title`,`onSubmit`])]),default:Mn(()=>[Yr(Ep,ri({ref_for:!0},t,{id:p(t.id),active:s.value===t.id,disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":{...e.tippyOptions,content:m(t.id)},onClick:e=>u(t)}),null,16,[`id`,`active`,`disabled`,`tippy-options`,`onClick`])]),_:2},1040,[`onShow`])):t.id===`delete`?(B(),Gr(ZWt,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Ep,ri({key:2,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))])],512))}}),T9=$n({name:`HighlightKeyword`,props:{text:{type:String,required:!0}},setup(e){let t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=aEe(),r=fi(()=>{if(!e.text||!n?.value)return e.text;let r=n.value.trim();if(!r)return e.text;let i=RegExp(`(${t(r)})`,`ig`),a=e.text?.toString().split(i);return a.length<=1?e.text:a.map(e=>i.test(e)?U(`span`,{class:die},e):e)});return()=>U(`span`,r.value)}}),lGt={class:`ai-activity-message`},uGt={class:`ai-activity-message-content`},dGt=$n({__name:`activity-layout`,props:br({activityType:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=Dr(e,`collapsed`);return(n,r)=>(B(),V(`div`,lGt,[H(`div`,{class:`ai-activity-message-title`,onClick:r[0]||=e=>t.value=!t.value},[mr(n.$slots,`title`,Se(Xr({collapsed:t.value}))),e.activityType===z(Hi).FlowAgent?$r(`v-if`,!0):(B(),V(`span`,{key:0,class:xe([`ai-activity-message-title-icon collapsed-icon`,{"is-collapsed":t.value}])},[Yr(z(Zi))],2))]),Nn(H(`div`,uGt,[mr(n.$slots,`default`)],512),[[Ci,!t.value]])]))}}),E9=[{color:`#3A84FF`,icon:null,key:`running`,label:zi(`执行中`),rawStates:[`CREATED`,`LOOP_READY`,`READY`,`RUNNING`,`BLOCKED`,`ROLLING_BACK`,`ROLL_BACK_SUCCESS`]},{color:`#65C389`,icon:Sie,key:`success`,label:zi(`成功`),rawStates:[`FINISHED`]},{color:`#EA3636`,icon:Cie,key:`failed`,label:zi(`失败`),rawStates:[`FAILED`,`REVOKED`,`ROLL_BACK_FAILED`]},{color:`#F59500`,icon:wie,key:`suspended`,label:zi(`挂起`),rawStates:[`SUSPENDED`]},{color:`#4D4F56`,dotColor:`#DCDEE5`,icon:Tie,key:`pending`,label:zi(`待执行`),rawStates:[`PENDING`]},{color:`#5B7290`,icon:Eie,key:`skipped`,label:zi(`跳过`),rawStates:[`SKIPPED`]}],fGt=Object.fromEntries(E9.map(e=>[e.key,e])),pGt=Object.fromEntries(E9.flatMap(e=>e.rawStates.map(t=>[t,e.key]))),mGt=e=>pGt[e]??`running`,hGt=e=>fGt[e].dotColor??fGt[e].color,gGt=e=>{let t=fGt[e].icon;return t?Zr(t):null},_Gt=e=>{let t=fi(()=>Array.isArray(e.value)?e.value:[e.value??{}]),n=cn({}),r=e=>n.value[e.task_id]!==!1;return{isTaskExpanded:r,taskList:t,toggleTaskExpanded:e=>{n.value={...n.value,[e.task_id]:!r(e)}},viewTasks:fi(()=>t.value.map(e=>{let t=Object.values(e.nodes??{}).map(e=>{let t=mGt(e.state);return{convergedState:t,dotColor:hGt(t),elapsedTimeText:eie(e.elapsed_time),id:e.id,name:e.name,raw:e,retryable:!!e.retryable,skippable:!!e.skippable}}),n=t.reduce((e,t)=>e+t.raw.elapsed_time,0),r=mGt(e.task_state??``);return{convergedState:r,hasConfidence:!!e.has_confidence,confidenceTitle:e.confidence_title,isActive:!!e.is_active,nodes:t,raw:e,stateIcon:gGt(r),taskId:e.task_id,taskName:e.task_name,totalTimeText:eie(n)}})),visibleStats:fi(()=>{let e={};for(let t of E9)e[t.key]=0;for(let n of t.value)for(let[t,r]of Object.entries(n.statistics?.state_counts??{}))e[mGt(t)]+=r;return E9.filter(t=>e[t.key]>0).map(t=>({color:t.color,display:e[t.key]>99?`99+`:String(e[t.key]),dotColor:hGt(t.key),key:t.key,label:t.label}))})}},vGt=[{icon:cae,id:Gi.FlowNodeRetry,label:()=>zi(`重试`),visible:e=>e.convergedState===`failed`&&e.retryable},{icon:Xie,id:Gi.FlowNodeSkip,label:()=>zi(`跳过`),visible:e=>e.convergedState===`failed`&&e.skippable}],yGt=e=>{let{onInterruptResume:t,openNodeDetail:n}=e,r=(e,n,r)=>{t.value?.({payload:{node_id:r.id,task_id:n.task_id},operation:e})};return{getNodeActions:(e,t)=>{let i=vGt.filter(e=>e.visible(t)).map(n=>({icon:n.icon,id:n.id,label:n.label(),run:()=>r(n.id,e.raw,t.raw)}));return i.push({icon:Xi,id:`detail`,label:zi(`详情`),run:()=>n(e.raw,t.raw)}),i}}},bGt={class:`ai-detail-section`},xGt={class:`section-heading`},SGt={class:`section-text`},D9=$n({__name:`detail-section`,props:{title:{}},setup(e){return(t,n)=>(B(),V(`div`,bGt,[H(`div`,xGt,[n[0]||=H(`span`,{class:`section-bar`},null,-1),H(`span`,SGt,ke(e.title),1)]),mr(t.$slots,`default`)]))}}),CGt={class:`ai-simple-table`},wGt={key:0},TGt=[`colspan`],O9=$n({__name:`simple-table`,props:{columns:{},data:{}},setup(e){return(t,n)=>(B(),V(`table`,CGt,[H(`thead`,null,[H(`tr`,null,[(B(!0),V(Lr,null,fr(e.columns,e=>(B(),V(`th`,{key:e.key},ke(e.label),1))),128))])]),H(`tbody`,null,[(B(!0),V(Lr,null,fr(e.data,(t,n)=>(B(),V(`tr`,{key:n},[(B(!0),V(Lr,null,fr(e.columns,e=>(B(),V(`td`,{key:e.key,class:xe({"is-break-all":e.breakAll})},ke(t[e.key]??`--`),3))),128))]))),128)),e.data.length?$r(`v-if`,!0):(B(),V(`tr`,wGt,[H(`td`,{class:`is-empty`,colspan:e.columns.length},` -- `,8,TGt)]))])]))}}),EGt={class:`flow-agent-node-detail`},DGt={class:`detail-title`},OGt={key:1,class:`detail-title-content`},kGt={class:`detail-tab-bar`},AGt=[`onClick`],jGt={class:`detail-body`},MGt={class:`skeleton-section`},NGt={class:`skeleton-section`},PGt={class:`info-form`},FGt={class:`info-label`},IGt={class:`info-value`},LGt={class:`info-row`},RGt={class:`info-label`},zGt={class:`info-value`},BGt={key:0,class:`failure-item`},VGt={key:1,class:`failure-item`},HGt={class:`info-row`},UGt={class:`info-label`},WGt={class:`info-value`},GGt={key:0,class:`skeleton-section`},k9=function(e){return e.Config=`config`,e.Output=`output`,e}(k9||{}),KGt=$n({__name:`flow-agent-node-detail`,props:{data:{},has_confidence:{type:Boolean},loading:{type:Boolean},node_id:{},node_name:{},task_id:{},task_name:{}},setup(e){let t=[{key:k9.Config,label:zi(`节点配置`)},{key:k9.Output,label:zi(`节点输出`)}],n=[{key:`key`,label:zi(`参数名`)},{breakAll:!0,key:`value`,label:zi(`参数值`)}],r=[{key:`name`,label:zi(`名称`)},{key:`description`,label:zi(`变量说明`)},{key:`key`,label:`KEY`}],i=[{key:`key`,label:zi(`参数名`)},{breakAll:!0,key:`value`,label:zi(`参数值`)}],a={forced_fail:Ri?`Force Fail`:`强制失败`},o=e,s=cn(k9.Config),l=fi(()=>o.data?.basic_info),u=fi(()=>{let e=l.value;return e?[{label:zi(`流程模板`),value:e.template_name||`--`},{label:zi(`节点名称`),value:e.node_name||`--`},{label:zi(`步骤名称`),value:e.stage_name||`--`},{label:zi(`是否可选`),value:e.optional?zi(`是`):zi(`否`)}]:[]}),d=fi(()=>{let e=l.value;return e?.skippable||e?.auto_retry?.enable}),f=fi(()=>{let e=l.value?.auto_retry;return e?.enable?Ri?`In ${e.interval} seconds, auto retry ${e.times} times`:`在 ${e.interval} 秒后,自动重试 ${e.times} 次`:``}),p=fi(()=>{let e=l.value?.timeout_config;if(!e?.enable)return`--`;let t=a[e.action]??e.action;return Ri?`Timeout ${e.seconds} seconds later, ${t}`:`超时 ${e.seconds} 秒后则${t}`}),m=fi(()=>Object.entries(o.data?.inputs??{}).map(([e,t])=>({key:e,value:_(t)}))),h=fi(()=>(o.data?.plugin_output??[]).map(e=>({description:e.schema?.description||`--`,name:e.name,key:e.key}))),g=fi(()=>(o.data?.outputs??[]).map(e=>({key:e.key,value:_(e.value)}))),_=e=>e==null?`--`:typeof e==`object`?JSON.stringify(e):String(e);return(a,o)=>(B(),V(`div`,EGt,[H(`h3`,DGt,[e.loading?(B(),V(Lr,{key:0},[H(`span`,null,ke(z(zi)(`节点`))+`:`,1),o[0]||=H(`span`,{class:`skeleton-title ai-skeleton-element`},null,-1)],64)):(B(),V(`div`,OGt,ke(z(zi)(`节点`))+`:`+ke(l.value?.node_name),1)),mr(a.$slots,`locateButton`)]),H(`div`,kGt,[(B(),V(Lr,null,fr(t,e=>H(`div`,{key:e.key,class:xe([`detail-tab`,{"is-active":s.value===e.key}]),onClick:t=>s.value=e.key},[(B(),Gr(ur(e.key===k9.Config?z(Oie):z(Xi)),{class:`detail-tab-icon`})),Qr(` `+ke(e.label),1)],10,AGt)),64))]),H(`div`,jGt,[s.value===k9.Config?(B(),V(Lr,{key:0},[e.loading?(B(),V(Lr,{key:0},[H(`div`,MGt,[o[1]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,fr(6,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))]),H(`div`,NGt,[o[2]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,fr(4,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])],64)):(B(),V(Lr,{key:1},[Yr(D9,{title:z(zi)(`基础信息`)},{default:Mn(()=>[H(`div`,PGt,[(B(!0),V(Lr,null,fr(u.value,e=>(B(),V(`div`,{key:e.label,class:`info-row`},[H(`div`,FGt,ke(e.label),1),H(`div`,IGt,ke(e.value),1)]))),128)),H(`div`,LGt,[H(`div`,RGt,ke(z(zi)(`失败处理`)),1),H(`div`,zGt,[d.value?(B(),V(Lr,{key:0},[l.value?.skippable?(B(),V(`span`,BGt,[o[3]||=H(`span`,{class:`tag-badge`},`MS`,-1),Qr(` `+ke(z(zi)(`手动跳过`))+ke(l.value?.auto_retry?.enable?`;`:``),1)])):$r(`v-if`,!0),l.value?.auto_retry?.enable?(B(),V(`span`,VGt,[o[4]||=H(`span`,{class:`tag-badge`},`AR`,-1),Qr(` `+ke(f.value),1)])):$r(`v-if`,!0)],64)):(B(),V(Lr,{key:1},[Qr(`--`)],64))])]),H(`div`,HGt,[H(`div`,UGt,ke(z(zi)(`超时控制`)),1),H(`div`,WGt,ke(p.value),1)])])]),_:1},8,[`title`]),Yr(D9,{title:z(zi)(`输入参数`)},{default:Mn(()=>[Yr(O9,{columns:n,data:m.value},null,8,[`data`])]),_:1},8,[`title`]),Yr(D9,{title:z(zi)(`输出参数`)},{default:Mn(()=>[Yr(O9,{columns:r,data:h.value},null,8,[`data`])]),_:1},8,[`title`])],64))],64)):(B(),V(Lr,{key:1},[e.loading?(B(),V(`div`,GGt,[o[5]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,fr(5,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])):(B(),Gr(D9,{key:1,title:z(zi)(`结构化输出`)},{default:Mn(()=>[Yr(O9,{columns:i,data:g.value},null,8,[`data`])]),_:1},8,[`title`]))],64))])]))}}),A9=e=>e.task_id==null?``:`${e.task_id}`,qGt=A9,JGt=(e,t)=>e.task_id==null?``:`${e.task_id}|${t.id}|${t.name}`,YGt=e=>{let{messageUid:t,taskList:n}=e,r=zTe(),i=FTe(),a=fi(()=>r.selectedTab.value?.name??``),o=cn(!1),s=()=>{o.value=!0},l=fi(()=>{if(o.value)return a.value;let e=n.value.find(e=>e.is_active);return e?.task_id==null?a.value:A9(e)}),u=e=>{let t=l.value;return t===A9(e)||t===qGt(e)},d=(e,t)=>l.value===JGt(e,t),f=(e,n)=>{let i=e.task_id;i!=null&&(s(),r.addCustomTab?.({label:n.name,name:JGt(e,n),data:{component:KGt,messageUid:t.value,props:{data:{},loading:!0,node_id:n.id,node_name:n.name,task_id:i,task_name:e.task_name}}}))},p=e=>{let n=e?.task_id;n&&(s(),r.addCustomTab?.({label:zi(`有效证据`),name:qGt(e),data:{component:KGt,messageUid:t.value,props:{data:{},has_confidence:e.has_confidence,loading:!0,task_id:n,task_name:e.task_name}}}))};return Rn(a,(e,t)=>{t!==void 0&&s()}),sr(()=>{i?.value&&p(n.value.find(e=>e.is_active&&e.has_confidence))}),lr(()=>{if(i?.value)for(let e of n.value){r.removeCustomTab?.(A9(e)),r.removeCustomTab?.(qGt(e));for(let t of Object.values(e.nodes??{}))r.removeCustomTab?.(JGt(e,t))}}),{displaySelectedTabName:l,isNodeSelected:d,isTaskSelected:u,markUserTabSelection:s,openConfidence:p,openNodeDetail:f}},XGt={class:`ai-activity-message-title-text`},ZGt={class:`flow-agent-title-label`},QGt={class:`flow-agent-stat-tooltip`},$Gt={class:`flow-agent-stat-tooltip-status`},eKt={class:`flow-agent-stat-tooltip-label`},tKt=[`onClick`],nKt={class:`flow-agent-task-state-icon`},rKt={class:`flow-agent-task-name`},iKt={key:0,class:`flow-agent-task-trailing`},aKt={class:`flow-agent-task-time`},oKt=[`onClick`],sKt={class:`flow-agent-task-nodes`},cKt={class:`flow-agent-node-status`},lKt=[`title`],uKt={key:0,class:`flow-agent-node-trailing`},dKt={class:`flow-agent-node-time`},fKt={class:`flow-agent-node-actions`},pKt=[`onClick`],mKt=$n({__name:`flow-agent-content`,props:br({content:{},messageUid:{},onInterruptResume:{type:Function},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=cp(),r=Dr(e,`collapsed`),i=rEe(),a=fi(()=>i.value!==Ki.Share),o=fi(()=>t.status===Wi.Pending||t.status===Wi.Streaming),{isTaskExpanded:s,taskList:l,toggleTaskExpanded:u,viewTasks:d,visibleStats:f}=_Gt(pn(t,`content`)),{isNodeSelected:p,isTaskSelected:m,openConfidence:h,openNodeDetail:g}=YGt({messageUid:pn(t,`messageUid`),taskList:l}),{getNodeActions:_}=yGt({onInterruptResume:pn(t,`onInterruptResume`),openNodeDetail:g});return(e,t)=>(B(),Gr(dGt,{collapsed:r.value,"onUpdate:collapsed":t[0]||=e=>r.value=e,"activity-type":z(Hi).FlowAgent,class:`flow-agent-activity`},{title:Mn(()=>[$r(` hover 整条执行情况栏展示统计 tooltip(设计稿 annotation) `),Yr(z(np),ri({class:`flow-agent-title-bar`,theme:`ai-chat-box-light light`},{...z(n),tag:`div`,arrow:!0,followCursor:!1,offset:[0,10]}),{content:Mn(()=>[H(`div`,QGt,[(B(!0),V(Lr,null,fr(z(f),e=>(B(),V(`div`,{key:e.key,class:`flow-agent-stat-tooltip-item`},[H(`span`,$Gt,[e.key===`running`?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:ge({borderColor:e.dotColor})},null,4))]),H(`span`,eKt,ke(e.label)+`:`,1),H(`span`,{class:`flow-agent-stat-tooltip-count`,style:ge({color:e.color})},ke(e.display),5)]))),128))])]),default:Mn(()=>[H(`span`,{class:xe([`ai-activity-message-title-icon`,{"icon-collapsed":r.value}])},[o.value?(B(),Gr(ef,{key:0,size:12})):(B(),Gr(z(Yi),{key:1}))],2),H(`span`,XGt,[H(`span`,ZGt,ke(z(zi)(`执行情况`))+`:`,1),(B(!0),V(Lr,null,fr(z(f),e=>(B(),V(`span`,{key:e.key,class:`flow-agent-stat-item`},[e.key===`running`?(B(),Gr(z(pu),{key:0,class:`flow-agent-stat-loading`,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:ge({borderColor:e.dotColor})},null,4)),H(`span`,{class:`flow-agent-stat-count`,style:ge({color:e.color})},ke(e.display),5)]))),128))])]),_:1},16)]),default:Mn(()=>[(B(!0),V(Lr,null,fr(z(d),e=>(B(),V(`div`,{key:e.taskId,class:`flow-agent-task-group`},[H(`div`,{class:xe([`flow-agent-task-header`,{"has-confidence":e.hasConfidence,"is-selected":z(m)(e.raw)}])},[H(`span`,{class:xe([`flow-agent-task-arrow`,{"is-expanded":z(s)(e.raw)}]),onClick:ji(t=>z(u)(e.raw),[`stop`])},[Yr(z(Yi))],10,tKt),H(`span`,nKt,[e.convergedState===`running`?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),Gr(ur(e.stateIcon),{key:1}))]),Nn((B(),V(`span`,rKt,[Yr(z(T9),{text:e.taskName},null,8,[`text`])])),[[z(Tp),{...z(n)}]]),a.value?(B(),V(`span`,iKt,[H(`span`,aKt,ke(e.totalTimeText),1),e.hasConfidence?(B(),V(`span`,{key:0,class:`flow-agent-task-action-btn flow-agent-task-confidence-btn`,onClick:ji(t=>z(h)(e.raw),[`stop`])},[Yr(z(Xi)),Qr(` `+ke(e.confidenceTitle??z(zi)(`有效证据`)),1)],8,oKt)):$r(`v-if`,!0)])):$r(`v-if`,!0)],2),Nn(H(`div`,sKt,[(B(!0),V(Lr,null,fr(e.nodes,t=>(B(),V(`div`,{key:t.id,class:xe([`flow-agent-node-item`,{"is-selected":z(p)(e.raw,t.raw)}])},[H(`span`,cKt,[t.convergedState===`running`?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-status-dot`,style:ge({borderColor:t.dotColor})},null,4))]),Nn((B(),V(`span`,{class:`flow-agent-node-name`,title:t.name},[Yr(z(T9),{text:t.name},null,8,[`text`])],8,lKt)),[[z(Tp),{...z(n)}]]),a.value?(B(),V(`span`,uKt,[H(`span`,dKt,ke(t.elapsedTimeText),1),H(`span`,fKt,[(B(!0),V(Lr,null,fr(z(_)(e,t),e=>(B(),V(`span`,{key:e.id,class:`flow-agent-node-action-btn`,onClick:ji(t=>e.run(),[`stop`])},[(B(),Gr(ur(e.icon))),Qr(` `+ke(e.label),1)],8,pKt))),128))])])):$r(`v-if`,!0)],2))),128))],512),[[Ci,z(s)(e.raw)]])]))),128))]),_:1},8,[`collapsed`,`activity-type`]))}}),hKt={class:`ai-activity-message-title-icon`},gKt={class:`ai-activity-message-title-text`},_Kt={class:`knowledge-rag-content`},vKt=$n({__name:`knowledge-rag-content`,props:br({content:{},messageUid:{},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Dr(e,`collapsed`),r=fi(()=>t.status===Wi.Pending||t.status===Wi.Streaming),i=fi(()=>r.value?zi(`检索中`):zi(`检索完成`));return(t,a)=>(B(),Gr(dGt,{collapsed:n.value,"onUpdate:collapsed":a[0]||=e=>n.value=e},{title:Mn(()=>[H(`span`,hKt,[r.value?(B(),Gr(ef,{key:0})):(B(),Gr(z(Ji),{key:1,style:{"font-size":`12px`}}))]),H(`span`,gKt,ke(i.value),1)]),default:Mn(()=>[H(`div`,_Kt,[Yr(n9,{content:e.content?.content||``},null,8,[`content`])]),Yr(r9,{content:e.content?.referenceDocument||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),yKt={class:`ai-activity-message-title-icon`},bKt={class:`ai-activity-message-title-text`},xKt=$n({__name:`reference-doc-content`,props:br({content:{},messageUid:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Dr(e,`collapsed`),r=fi(()=>{let e=t.content?.length??0;return Ri?`Reference ${e} documents as reference`:`引用 ${e} 篇资料作为参考`});return(t,i)=>(B(),Gr(dGt,{collapsed:n.value,"onUpdate:collapsed":i[0]||=e=>n.value=e},{title:Mn(()=>[H(`span`,yKt,[Yr(z(Ji),{style:{"font-size":`12px`}})]),H(`span`,bKt,ke(r.value),1)]),default:Mn(()=>[Yr(r9,{content:e.content||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),SKt=$n({__name:`activity-message`,props:br({activityType:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t={[Hi.FlowAgent]:mKt,[Hi.KnowledgeRag]:vKt,[Hi.ReferenceDocument]:xKt},n=e,r=Dr(e,`collapsed`),i=fi(()=>t[n.activityType??``]);return(t,n)=>i.value?(B(),Gr(ur(i.value),{key:0,collapsed:r.value,"onUpdate:collapsed":n[0]||=e=>r.value=e,content:e.content,"message-uid":e.uid,"on-interrupt-resume":e.onInterruptResume,status:e.status},null,40,[`collapsed`,`content`,`message-uid`,`on-interrupt-resume`,`status`])):$r(`v-if`,!0)}}),CKt={class:`toolcall-desc`},wKt={class:`desc-title`},TKt={class:`desc-panel`},EKt={class:`desc-label`},DKt={class:`desc-value`},OKt=$n({__name:`desc-panel`,props:{desc:{},title:{}},setup(e){let t=e,n=e=>e==null?``:typeof e==`object`?JSON.stringify(e):String(e),r=fi(()=>{try{return JSON.parse(t.desc||``)}catch{return t.desc}});return(t,i)=>(B(),V(`div`,CKt,[H(`div`,wKt,ke(e.title),1),H(`div`,TKt,[$r(` null 的 typeof 为 object,需排除,避免 v-for 异常;键/值统一转字符串以满足 HighlightKeyword `),r.value!==null&&typeof r.value==`object`?(B(!0),V(Lr,{key:0},fr(r.value,(e,t)=>(B(),V(`div`,{key:t,class:`desc-panel-item`},[H(`span`,EKt,[Yr(z(T9),{text:String(t)},null,8,[`text`]),i[0]||=Qr(`:`,-1)]),H(`span`,DKt,[Yr(z(T9),{style:{"word-break":`break-all`},text:n(e)},null,8,[`text`])])]))),128)):(B(),Gr(z(T9),{key:1,style:{wordBreak:`break-all`},text:n(r.value)},null,8,[`text`]))])]))}}),kKt={class:`tool-message`},AKt=$n({__name:`tool-message`,props:{duration:{},error:{type:[Boolean,String]},toolCallId:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,kKt,[Yr(OKt,{desc:e.content||(typeof e.error==`string`?e.error:void 0),title:z(zi)(`返回内容`)},null,8,[`desc`,`title`])]))}}),jKt={class:`ai-toolcall-render`},MKt={class:`toolcall-header-title`},NKt={class:`toolcall-status-title`},PKt={key:1,class:`toolcall-duration`},FKt={class:`ai-toolcall-render-content`},IKt=$n({__name:`toolcall-render`,props:{duration:{},status:{},toolCall:{}},setup(e){let t=e,n=cn(!0),r=cn(null),i=cp(),{keywordMatched:a,keyword:o}=oEe(()=>[t.toolCall?.function.name,t.toolCall?.function.mcpName,t.toolCall?.function.description,t.toolCall?.function.arguments,t.toolCall?.id]),s=fi(()=>r.value===null?o?.value?.trim()?!a.value:n.value:r.value);function l(){n.value=!s.value,r.value=n.value}let u=fi(()=>{let e=t.toolCall?.function.mcpName||``,n=t.toolCall?.function.name||t.toolCall?.id||``;return e?`${e} / ${n}`:n}),d=fi(()=>{switch(t.status){default:case Wi.Pending:return zi(`调用中`);case Wi.Complete:case Wi.Success:return zi(`调用成功`);case Wi.Error||t.toolCall?.toolMessage?.error:return zi(`调用失败`)}}),f=fi(()=>{let e=t.duration||t.toolCall?.toolMessage?.duration;return e?$re(e):``});return(t,n)=>(B(),V(`div`,jKt,[H(`div`,{class:xe([`ai-toolcall-render-header`,`toolcall-status-${e.status}`]),onClick:l},[Yr(z(Yi),{class:xe({"is-collapsed":s.value})},null,8,[`class`]),Qr(` `+ke(e.toolCall?.function.mcpName?z(zi)(`调用 MCP:`):z(zi)(`调用工具:`))+` `,1),Nn((B(),V(`span`,MKt,[Yr(z(T9),{text:u.value},null,8,[`text`])])),[[z(Tp),{...z(i),text:u.value,appendTo:`parent`}]]),H(`span`,NKt,[e.status===z(Wi).Pending||e.status===z(Wi).Streaming?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):$r(`v-if`,!0),Yr(z(T9),{text:d.value},null,8,[`text`]),f.value?(B(),V(`span`,PKt,` (`+ke(f.value)+`) `,1)):$r(`v-if`,!0)])],2),Nn(H(`div`,FKt,[Yr(OKt,{desc:e.toolCall?.function.description,title:z(zi)(`描述`)},null,8,[`desc`,`title`]),Yr(OKt,{desc:e.toolCall?.function.arguments,title:z(zi)(`参数`)},null,8,[`desc`,`title`]),e.toolCall?.toolMessage?(B(),Gr(AKt,Se(ri({key:0},e.toolCall.toolMessage)),null,16)):$r(`v-if`,!0)],512),[[Ci,!s.value]])]))}}),LKt={class:`ai-assistant-message`},RKt={class:`ai-assistant-message-content`},zKt=$n({__name:`assistant-message`,props:{toolCalls:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,LKt,[H(`div`,RKt,[mr(t.$slots,`default`,Se(Xr({content:e.content})),()=>[Yr(i9,{content:e.content||``,status:e.status,type:z(Hi).Text},null,8,[`content`,`status`,`type`])])]),e.toolCalls&&e.toolCalls.length>0?(B(!0),V(Lr,{key:0},fr(e.toolCalls,t=>(B(),Gr(IKt,{key:t.id,status:e.status,"tool-call":t},null,8,[`status`,`tool-call`]))),128)):$r(`v-if`,!0)]))}}),BKt={class:`info-message`},VKt=$n({__name:`info-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,BKt,[(B(!0),V(Lr,null,fr(Array.isArray(e.content)?e.content:[e.content],(e,t)=>(B(),V(`div`,{key:t,class:`info-message-content`},ke(e),1))),128))]))}}),HKt={class:`ai-tool-approval-card`},UKt={class:`ai-tool-approval-card__header`},WKt={class:`ai-tool-approval-card__title-wrap`},GKt={class:`ai-tool-approval-card__title`},KKt={class:`ai-tool-approval-card__fields`},qKt={class:`ai-tool-approval-card__field`},JKt={class:`ai-tool-approval-card__field`},YKt={class:`ai-tool-approval-card__processor`},XKt={class:`ai-tool-approval-card__processor-text`},ZKt={class:`ai-tool-approval-card__actions`},QKt=$n({__name:`tool-approval-card`,props:{interrupt:{},onInterruptResume:{type:Function},readonly:{type:Boolean}},setup(e){let t=e,n=cp(),{copy:r}=ap(),i=new Set([Bi.PENDING,Bi.DRAFT]),a=new Set([Bi.ABANDONED,Bi.CANCELLED,Bi.EXPIRED,Bi.REJECTED]),o=fi(()=>t.interrupt.metadata?.ticket??{approvers:[],sn:``,status:Bi.PENDING,submit_time:``,title:``,url:``}),s=fi(()=>i.has(o.value.status)),l=fi(()=>s.value?`pending`:o.value.status),u=fi(()=>s.value?zi(`评审中`):nie[o.value.status]??o.value.status),d=fi(()=>o.value.approvers.filter(Boolean).join(`、`)||zi(`无`)),f=fi(()=>o.value.url||o.value.sn),p=()=>{o.value.url&&window.open(o.value.url,`_blank`,`noopener`)},m=()=>{f.value&&r(f.value)},h=()=>{t.onInterruptResume?.({operation:Gi.ApprovalCancel,payload:{interrupt_id:t.interrupt.id}},t.interrupt)};return(t,r)=>(B(),V(`section`,HKt,[H(`header`,UKt,[H(`div`,WKt,[r[0]||=H(`span`,{class:`ai-tool-approval-card__title-bar`},null,-1),H(`span`,GKt,ke(o.value.title||z(zi)(`算法方案评审单`)),1),Nn(Yr(z(oae),{class:xe([`ai-tool-approval-card__copy-icon`,{"is-disabled":!f.value}]),onClick:m},null,8,[`class`]),[[z(rp),{...z(n),content:z(zi)(`复制单据链接`),theme:`ai-chat-box`,offset:[0,8]}]])]),H(`span`,{class:xe([`ai-tool-approval-card__status`,`ai-tool-approval-card__status--${l.value}`])},[o.value.status===z(Bi).APPROVED?(B(),Gr(z(Uie),{key:0,class:`ai-tool-approval-card__status-icon`})):z(a).has(o.value.status)?(B(),Gr(z(Gie),{key:1,class:`ai-tool-approval-card__status-icon`})):o.value.status===z(Bi).REVOKED?(B(),Gr(z(Kie),{key:2,class:xe([`ai-tool-approval-card__status-icon`,{"ai-tool-approval-card__status-icon--revoked":o.value.status===z(Bi).REVOKED}])},null,8,[`class`])):(B(),Gr(z(pu),{key:3,class:`ai-tool-approval-card__status-icon`,mode:`spin`,size:`mini`,theme:`primary`})),Qr(` `+ke(u.value),1)],2)]),H(`dl`,KKt,[H(`div`,qKt,[H(`dt`,null,ke(z(zi)(`单据编号`)),1),H(`dd`,null,ke(o.value.sn||`--`),1)]),H(`div`,JKt,[H(`dt`,null,ke(z(zi)(`提交时间`)),1),H(`dd`,null,ke(o.value.submit_time||`--`),1)])]),H(`div`,YKt,[Yr(z(Wie),{class:`ai-tool-approval-card__processor-icon`}),Nn((B(),V(`span`,XKt,[Qr(ke(z(zi)(`当前处理人`))+`:`+ke(d.value),1)])),[[z(Tp),{...z(n)}]])]),H(`div`,ZKt,[Yr(z(xu),{class:`ai-tool-approval-card__detail`,disabled:!o.value.url,theme:`primary`,onClick:p},{default:Mn(()=>[Qr(ke(z(zi)(`查看单据详情`))+` `,1),r[1]||=H(`span`,{class:`ai-tool-approval-card__detail-icon`},null,-1)]),_:1},8,[`disabled`]),s.value&&!e.readonly?(B(),Gr(z(xu),{key:0,class:`ai-tool-approval-card__cancel`,outline:``,theme:`primary`,onClick:h},{default:Mn(()=>[Qr(ke(z(zi)(`取消审批`)),1)]),_:1})):$r(`v-if`,!0)])]))}}),$Kt={class:`ai-interrupt-message`},eqt={key:0,class:`ai-interrupt-message__content`},tqt={class:`ai-interrupt-message__fallback`},nqt=$n({__name:`interrupt-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},setup(e){let t={[Vi.AIDevToolApproval]:QKt},n=e=>({id:e.interruptId||e.id||``,reason:Vi.AIDevToolApproval,toolCallId:``,metadata:e.payload.metadata}),r={[Vi.AIDevToolApproval]:e=>({component:QKt,props:{interrupt:n(e),readonly:!0}}),[Vi.UserQuestion]:e=>({component:kWt,props:{answers:e.payload?.answers??[],status:e.status}})},i=new Set([Vi.UserQuestion]),a=e,o=fi(()=>a.content?.outcome?.type===`interrupt`?a.content.outcome.interrupts:[]),s=fi(()=>a.content?.message),l=e=>t[e.reason],u=e=>i.has(e.reason),d=fi(()=>{if(a.content?.outcome?.type!==`success`)return;let e=a.content?.result;if(e)return r[e.reason]?.(e)});return(t,n)=>(B(),V(`div`,$Kt,[s.value?(B(),V(`div`,eqt,ke(s.value),1)):$r(`v-if`,!0),(B(!0),V(Lr,null,fr(o.value,t=>(B(),V(Lr,{key:t.toolCallId},[l(t)?(B(),Gr(ur(l(t)),{key:0,interrupt:t,"on-interrupt-resume":e.onInterruptResume},null,40,[`interrupt`,`on-interrupt-resume`])):u(t)?$r(`v-if`,!0):(B(),V(Lr,{key:1},[$r(` UserQuestion 的交互浮层渲染在 chat-input 上方,不在会话内渲染 `),H(`div`,tqt,ke(t.message||z(zi)(`暂不支持的中断消息`)),1)],2112))],64))),128)),$r(` outcome.success 时按 reason 在会话内回显 resume 结果(审批单 / 已回答内容等) `),d.value?(B(),Gr(ur(d.value.component),Se(ri({key:1},d.value.props)),pr({_:2},[t.$slots.answeredQuestion?{name:`answer`,fn:Mn(e=>[mr(t.$slots,`answeredQuestion`,Se(Xr(e)))]),key:`0`}:void 0]),1040)):$r(`v-if`,!0)]))}}),rqt={class:`ai-loading-message`},iqt=$n({__name:`loading-message`,setup(e){return(e,t)=>(B(),V(`div`,rqt,[Yr(ef,{size:18}),mr(e.$slots,`default`,{},()=>[Qr(ke(z(zi)(`请求中...`)),1)])]))}}),aqt={class:`ai-reasoning-message`},oqt={key:0,class:`ai-reasoning-message-title-icon`},sqt={class:`ai-reasoning-message-title-text`},cqt={class:`ai-reasoning-message-content`},lqt=$n({__name:`reasoning-message`,props:br({duration:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Dr(e,`collapsed`),{stop:r}=Rn(()=>t.duration,async e=>{e&&(n.value=!0,await Dn(),r?.())},{immediate:!0}),i=fi(()=>{switch(t.status){case Wi.Pending:return zi(`思考中`);case Wi.Success:case Wi.Complete:return zi(`已思考完成`)+(t.duration?` (${zi(`耗时`)} :${$re(t.duration)})`:``);case Wi.Error:return zi(`思考失败`);default:return zi(`思考中`)}});return(t,r)=>(B(),V(`div`,aqt,[H(`div`,{class:xe([`ai-reasoning-message-title`,{"ai-reasoning-message-title-collapsed":n.value,"is-thinking":e.status===z(Wi).Pending||e.status===z(Wi).Streaming,"is-complete":e.status===z(Wi).Complete||e.status===z(Wi).Success,"is-error":e.status===z(Wi).Error}]),onClick:r[0]||=e=>n.value=!n.value},[e.status===z(Wi).Pending||e.status===z(Wi).Streaming?(B(),V(`span`,oqt,[Yr(ef)])):$r(`v-if`,!0),H(`span`,sqt,ke(i.value),1),$r(` <template v-if="status === MessageStatus.Pending || status === MessageStatus.Streaming">
|
|
3492
|
+
</span> `)]),H(`div`,RWt,[H(`span`,zWt,ke(z(a))+` / `+ke(z(o)),1),Yr(z(Fie),{class:`ai-user-question-card__arrow`,style:ge({transform:r.value?`rotate(180deg)`:`rotate(-90deg)`}),onClick:ji(m,[`stop`])},null,8,[`style`])])]),$r(` 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 `),Nn(H(`div`,BWt,[(B(!0),V(Lr,null,fr(z(i),(t,n)=>(B(),V(`div`,{key:n,class:`ai-user-question-card__question`},[H(`div`,VWt,[H(`span`,HWt,ke(n+1)+`. `+ke(t.question),1),t.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,UWt,ke(t.multiSelect?z(zi)(`多选`):z(zi)(`单选`)),1))]),H(`div`,WWt,[$r(` 默认渲染选择题;业务方可覆盖此 slot 渲染任意表单,作答有效时通过 setAnswer 回传 `),mr(e.$slots,`question`,ri({ref_for:!0},{question:t,qIndex:n,answer:z(l)(n),setAnswer:e=>z(u)(n,e),confirm:_}),()=>[Yr(FWt,{question:t,onAnswer:e=>z(u)(n,e),onConfirm:_},null,8,[`question`,`onAnswer`])])])]))),128))],512),[[Ci,!r.value]]),Nn(H(`footer`,GWt,[Yr(z(xu),{class:`ai-user-question-card__complete`,disabled:!z(s)||g.value===`skip`,loading:g.value===`complete`,size:`small`,theme:`primary`,onClick:_},{default:Mn(()=>[g.value===`complete`?$r(`v-if`,!0):(B(),Gr(z(Yie),{key:0,class:`ai-user-question-card__enter-icon`})),Qr(` `+ke(z(zi)(`完成`)),1)]),_:1},8,[`disabled`,`loading`]),Yr(z(xu),{class:`ai-user-question-card__skip`,disabled:g.value===`complete`,loading:g.value===`skip`,size:`small`,text:``,onClick:v},{default:Mn(()=>[g.value===`skip`?$r(`v-if`,!0):(B(),Gr(z(Xie),{key:0,class:`ai-user-question-card__skip-icon`})),Qr(` `+ke(z(zi)(`跳过`)),1)]),_:1},8,[`disabled`,`loading`])],512),[[Ci,!r.value]])],2))}}),qWt={class:`ai-delete-confirm`},JWt={class:`ai-delete-confirm__title`},YWt={class:`ai-delete-confirm__desc`},XWt={class:`ai-delete-confirm__actions`},ZWt=$n({__name:`delete-tool`,props:{description:{},id:{},name:{},disabled:{type:Boolean},tippyOptions:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=e,r=t,i=er(`tippyRef`),a=fi(()=>({id:n.id,name:n.name,description:n.description,disabled:n.disabled,tippyOptions:n.tippyOptions})),o=fi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),s=()=>{if(n.disabled)return!1},l=()=>{i.value?.hide?.()},u=()=>{l(),r(`confirm`)},d=()=>{l(),r(`cancel`)};return lr(()=>{l()}),(e,t)=>(B(),Gr(z(np),ri({ref_key:`tippyRef`,ref:i},o.value,{onShow:s}),{content:Mn(()=>[H(`div`,qWt,[H(`div`,JWt,ke(z(zi)(`确认删除该回答?`)),1),H(`div`,YWt,ke(z(zi)(`删除操作无法撤回,请谨慎操作!`)),1),H(`div`,XWt,[Yr(z(xu),{size:`small`,theme:`danger`,onClick:u},{default:Mn(()=>[Qr(ke(z(zi)(`删除`)),1)]),_:1}),Yr(z(xu),{size:`small`,onClick:d},{default:Mn(()=>[Qr(ke(z(zi)(`取消`)),1)]),_:1})])])]),default:Mn(()=>[Yr(Ep,Se(Xr(a.value)),null,16)]),_:1},16))}}),QWt={class:`ai-feedback-title`},$Wt={class:`ai-feedback-reason-list`},eGt=[`onClick`],tGt={class:`ai-feedback-other`},nGt={class:`ai-feedback-footer`},rGt=$n({__name:`user-feedback`,props:{loading:{type:Boolean},reasonList:{},title:{}},emits:[`submit`,`cancel`],setup(e,{emit:t}){let n=t,r=cn(``),i=cn([]),a=e=>{i.value.includes(e)?i.value=i.value.filter(t=>t!==e):i.value=[...i.value,e]},o=()=>{n(`submit`,i.value,r.value)},s=()=>{i.value=[],r.value=``,n(`cancel`)};return(t,n)=>(B(),V(`div`,{class:`ai-user-feedback`,onMouseenter:n[1]||=ji(()=>{},[`stop`,`prevent`])},[H(`div`,QWt,ke(e.title),1),H(`div`,$Wt,[e.loading?(B(),V(Lr,{key:0},fr(8,e=>H(`div`,{key:e,class:`reason-item ai-skeleton-element`})),64)):(B(!0),V(Lr,{key:1},fr(e.reasonList,e=>(B(),V(`div`,{key:e,class:xe([`reason-item`,{"is-active":i.value.includes(e)}]),onClick:t=>a(e)},ke(e),11,eGt))),128))]),H(`div`,tGt,[Yr(z(Mu),{modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,placeholder:z(zi)(`说出您的想法`),rows:3,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),H(`div`,nGt,[Yr(z(xu),{class:`custom-btn`,disabled:!r.value&&i.value.length===0,size:`small`,theme:`primary`,onClick:o},{default:Mn(()=>[Qr(ke(z(zi)(`提交`)),1)]),_:1},8,[`disabled`]),Yr(z(xu),{class:`custom-btn`,size:`small`,width:`80px`,onClick:s},{default:Mn(()=>[Qr(ke(z(zi)(`取消`)),1)]),_:1})])],32))}}),iGt={ref:`messageToolsRef`,class:`message-tools-container`},aGt={class:`message-tools`,style:{"margin-right":`8px`}},oGt={key:0,class:`ai-divider`,style:{"margin-right":`8px`}},sGt={class:`message-tools`},cGt=$n({__name:`message-tools`,props:{messageTools:{default:()=>sie},messageToolsStatus:{},onAction:{},tippyOptions:{},updateTools:{default:()=>lie}},emits:[`feedback`],setup(e,{emit:t}){let n=e,r=t,i=er(`feedbackTippyRef`),a=cn(!1),o=cn([]),s=cn(null),l=fi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),u=async e=>{if(e.id===`like`||e.id===`unlike`){try{a.value=!0,o.value=[],o.value=await n.onAction?.(e)||[]}finally{a.value=!1}return}await n.onAction?.(e)},d=async e=>{await n.onAction?.(e)},f=()=>{i.value?.forEach(e=>e?.hide?.())},p=e=>s.value?s.value===`like`&&e===`like`?`activeLike`:s.value===`unlike`&&e===`unlike`?`activeUnLike`:e:e,m=e=>{let t=p(e);return t===`activeLike`?zi(`取消满意`):t===`activeUnLike`?zi(`取消不满意`):n.updateTools?.find(e=>e.id===t)?.description||``},h=(e,t,n)=>{f(),s.value===e.id?s.value=null:s.value=e.id,r(`feedback`,e,t,n)},g=e=>{if(n.messageToolsStatus===w9.Disabled)return!1;if(s.value&&s.value===e)return s.value=null,!1};return lr(()=>{f(),o.value=[]}),(t,n)=>(B(),V(`div`,iGt,[H(`div`,aGt,[(B(!0),V(Lr,null,fr(e.messageTools,t=>(B(),V(Lr,{key:t.id},[t.id===`delete`?(B(),Gr(ZWt,ri({key:0,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Ep,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))]),e.updateTools.length>0?(B(),V(`div`,oGt)):$r(`v-if`,!0),H(`div`,sGt,[(B(!0),V(Lr,null,fr(e.updateTools,t=>(B(),V(Lr,{key:t.id},[t.id===`like`||t.id===`unlike`?(B(),Gr(z(np),ri({key:0,ref_for:!0,ref_key:`feedbackTippyRef`,ref:i},{ref_for:!0},l.value,{onShow:e=>g(t.id)}),{content:Mn(()=>[Yr(rGt,{loading:a.value,"reason-list":o.value,title:t.id===`like`?z(zi)(`什么原因让你满意?`):z(zi)(`什么原因让你不满意?`),onCancel:f,onSubmit:(e,n)=>h(t,e,n)},null,8,[`loading`,`reason-list`,`title`,`onSubmit`])]),default:Mn(()=>[Yr(Ep,ri({ref_for:!0},t,{id:p(t.id),active:s.value===t.id,disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":{...e.tippyOptions,content:m(t.id)},onClick:e=>u(t)}),null,16,[`id`,`active`,`disabled`,`tippy-options`,`onClick`])]),_:2},1040,[`onShow`])):t.id===`delete`?(B(),Gr(ZWt,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Ep,ri({key:2,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))])],512))}}),T9=$n({name:`HighlightKeyword`,props:{text:{type:String,required:!0}},setup(e){let t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=aEe(),r=fi(()=>{if(!e.text||!n?.value)return e.text;let r=n.value.trim();if(!r)return e.text;let i=RegExp(`(${t(r)})`,`ig`),a=e.text?.toString().split(i);return a.length<=1?e.text:a.map(e=>i.test(e)?U(`span`,{class:die},e):e)});return()=>U(`span`,r.value)}}),lGt={class:`ai-activity-message`},uGt={class:`ai-activity-message-content`},dGt=$n({__name:`activity-layout`,props:br({activityType:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=Dr(e,`collapsed`);return(n,r)=>(B(),V(`div`,lGt,[H(`div`,{class:`ai-activity-message-title`,onClick:r[0]||=e=>t.value=!t.value},[mr(n.$slots,`title`,Se(Xr({collapsed:t.value}))),e.activityType===z(Hi).FlowAgent?$r(`v-if`,!0):(B(),V(`span`,{key:0,class:xe([`ai-activity-message-title-icon collapsed-icon`,{"is-collapsed":t.value}])},[Yr(z(Zi))],2))]),Nn(H(`div`,uGt,[mr(n.$slots,`default`)],512),[[Ci,!t.value]])]))}}),E9=[{color:`#3A84FF`,icon:null,key:`running`,label:zi(`执行中`),rawStates:[`CREATED`,`LOOP_READY`,`READY`,`RUNNING`,`BLOCKED`,`ROLLING_BACK`,`ROLL_BACK_SUCCESS`]},{color:`#65C389`,icon:Sie,key:`success`,label:zi(`成功`),rawStates:[`FINISHED`]},{color:`#EA3636`,icon:Cie,key:`failed`,label:zi(`失败`),rawStates:[`FAILED`,`REVOKED`,`ROLL_BACK_FAILED`]},{color:`#F59500`,icon:wie,key:`suspended`,label:zi(`挂起`),rawStates:[`SUSPENDED`]},{color:`#4D4F56`,dotColor:`#DCDEE5`,icon:Tie,key:`pending`,label:zi(`待执行`),rawStates:[`PENDING`]},{color:`#5B7290`,icon:Eie,key:`skipped`,label:zi(`跳过`),rawStates:[`SKIPPED`]}],fGt=Object.fromEntries(E9.map(e=>[e.key,e])),pGt=Object.fromEntries(E9.flatMap(e=>e.rawStates.map(t=>[t,e.key]))),mGt=e=>pGt[e]??`running`,hGt=e=>fGt[e].dotColor??fGt[e].color,gGt=e=>{let t=fGt[e].icon;return t?Zr(t):null},_Gt=e=>{let t=fi(()=>Array.isArray(e.value)?e.value:[e.value??{}]),n=cn({}),r=e=>n.value[e.task_id]!==!1;return{isTaskExpanded:r,taskList:t,toggleTaskExpanded:e=>{n.value={...n.value,[e.task_id]:!r(e)}},viewTasks:fi(()=>t.value.map(e=>{let t=Object.values(e.nodes??{}).map(e=>{let t=mGt(e.state);return{convergedState:t,dotColor:hGt(t),elapsedTimeText:eie(e.elapsed_time),id:e.id,name:e.name,raw:e,retryable:!!e.retryable,skippable:!!e.skippable}}),n=t.reduce((e,t)=>e+t.raw.elapsed_time,0),r=mGt(e.task_state??``);return{convergedState:r,hasConfidence:!!e.has_confidence,confidenceTitle:e.confidence_title,isActive:!!e.is_active,nodes:t,raw:e,stateIcon:gGt(r),taskId:e.task_id,taskName:e.task_name,totalTimeText:eie(n)}})),visibleStats:fi(()=>{let e={};for(let t of E9)e[t.key]=0;for(let n of t.value)for(let[t,r]of Object.entries(n.statistics?.state_counts??{}))e[mGt(t)]+=r;return E9.filter(t=>e[t.key]>0).map(t=>({color:t.color,display:e[t.key]>99?`99+`:String(e[t.key]),dotColor:hGt(t.key),key:t.key,label:t.label}))})}},vGt=[{icon:cae,id:Gi.FlowNodeRetry,label:()=>zi(`重试`),visible:e=>e.convergedState===`failed`&&e.retryable},{icon:Xie,id:Gi.FlowNodeSkip,label:()=>zi(`跳过`),visible:e=>e.convergedState===`failed`&&e.skippable}],yGt=e=>{let{onInterruptResume:t,openNodeDetail:n}=e,r=(e,n,r)=>{t.value?.({payload:{node_id:r.id,task_id:n.task_id},operation:e})};return{getNodeActions:(e,t)=>{let i=vGt.filter(e=>e.visible(t)).map(n=>({icon:n.icon,id:n.id,label:n.label(),run:()=>r(n.id,e.raw,t.raw)}));return i.push({icon:Xi,id:`detail`,label:zi(`详情`),run:()=>n(e.raw,t.raw)}),i}}},bGt={class:`ai-detail-section`},xGt={class:`section-heading`},SGt={class:`section-text`},D9=$n({__name:`detail-section`,props:{title:{}},setup(e){return(t,n)=>(B(),V(`div`,bGt,[H(`div`,xGt,[n[0]||=H(`span`,{class:`section-bar`},null,-1),H(`span`,SGt,ke(e.title),1)]),mr(t.$slots,`default`)]))}}),CGt={class:`ai-simple-table`},wGt={key:0},TGt=[`colspan`],O9=$n({__name:`simple-table`,props:{columns:{},data:{}},setup(e){return(t,n)=>(B(),V(`table`,CGt,[H(`thead`,null,[H(`tr`,null,[(B(!0),V(Lr,null,fr(e.columns,e=>(B(),V(`th`,{key:e.key},ke(e.label),1))),128))])]),H(`tbody`,null,[(B(!0),V(Lr,null,fr(e.data,(t,n)=>(B(),V(`tr`,{key:n},[(B(!0),V(Lr,null,fr(e.columns,e=>(B(),V(`td`,{key:e.key,class:xe({"is-break-all":e.breakAll})},ke(t[e.key]??`--`),3))),128))]))),128)),e.data.length?$r(`v-if`,!0):(B(),V(`tr`,wGt,[H(`td`,{class:`is-empty`,colspan:e.columns.length},` -- `,8,TGt)]))])]))}}),EGt={class:`flow-agent-node-detail`},DGt={class:`detail-title`},OGt={key:1,class:`detail-title-content`},kGt={class:`detail-tab-bar`},AGt=[`onClick`],jGt={class:`detail-body`},MGt={class:`skeleton-section`},NGt={class:`skeleton-section`},PGt={class:`info-form`},FGt={class:`info-label`},IGt={class:`info-value`},LGt={class:`info-row`},RGt={class:`info-label`},zGt={class:`info-value`},BGt={key:0,class:`failure-item`},VGt={key:1,class:`failure-item`},HGt={class:`info-row`},UGt={class:`info-label`},WGt={class:`info-value`},GGt={key:0,class:`skeleton-section`},k9=function(e){return e.Config=`config`,e.Output=`output`,e}(k9||{}),KGt=$n({__name:`flow-agent-node-detail`,props:{data:{},has_confidence:{type:Boolean},loading:{type:Boolean},node_id:{},node_name:{},task_id:{},task_name:{}},setup(e){let t=[{key:k9.Config,label:zi(`节点配置`)},{key:k9.Output,label:zi(`节点输出`)}],n=[{key:`key`,label:zi(`参数名`)},{breakAll:!0,key:`value`,label:zi(`参数值`)}],r=[{key:`name`,label:zi(`名称`)},{key:`description`,label:zi(`变量说明`)},{key:`key`,label:`KEY`}],i=[{key:`key`,label:zi(`参数名`)},{breakAll:!0,key:`value`,label:zi(`参数值`)}],a={forced_fail:Ri?`Force Fail`:`强制失败`},o=e,s=cn(k9.Config),l=fi(()=>o.data?.basic_info),u=fi(()=>{let e=l.value;return e?[{label:zi(`流程模板`),value:e.template_name||`--`},{label:zi(`节点名称`),value:e.node_name||`--`},{label:zi(`步骤名称`),value:e.stage_name||`--`},{label:zi(`是否可选`),value:e.optional?zi(`是`):zi(`否`)}]:[]}),d=fi(()=>{let e=l.value;return e?.skippable||e?.auto_retry?.enable}),f=fi(()=>{let e=l.value?.auto_retry;return e?.enable?Ri?`In ${e.interval} seconds, auto retry ${e.times} times`:`在 ${e.interval} 秒后,自动重试 ${e.times} 次`:``}),p=fi(()=>{let e=l.value?.timeout_config;if(!e?.enable)return`--`;let t=a[e.action]??e.action;return Ri?`Timeout ${e.seconds} seconds later, ${t}`:`超时 ${e.seconds} 秒后则${t}`}),m=fi(()=>Object.entries(o.data?.inputs??{}).map(([e,t])=>({key:e,value:_(t)}))),h=fi(()=>(o.data?.plugin_output??[]).map(e=>({description:e.schema?.description||`--`,name:e.name,key:e.key}))),g=fi(()=>(o.data?.outputs??[]).map(e=>({key:e.key,value:_(e.value)}))),_=e=>e==null?`--`:typeof e==`object`?JSON.stringify(e):String(e);return(a,o)=>(B(),V(`div`,EGt,[H(`h3`,DGt,[e.loading?(B(),V(Lr,{key:0},[H(`span`,null,ke(z(zi)(`节点`))+`:`,1),o[0]||=H(`span`,{class:`skeleton-title ai-skeleton-element`},null,-1)],64)):(B(),V(`div`,OGt,ke(z(zi)(`节点`))+`:`+ke(l.value?.node_name),1)),mr(a.$slots,`locateButton`)]),H(`div`,kGt,[(B(),V(Lr,null,fr(t,e=>H(`div`,{key:e.key,class:xe([`detail-tab`,{"is-active":s.value===e.key}]),onClick:t=>s.value=e.key},[(B(),Gr(ur(e.key===k9.Config?z(Oie):z(Xi)),{class:`detail-tab-icon`})),Qr(` `+ke(e.label),1)],10,AGt)),64))]),H(`div`,jGt,[s.value===k9.Config?(B(),V(Lr,{key:0},[e.loading?(B(),V(Lr,{key:0},[H(`div`,MGt,[o[1]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,fr(6,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))]),H(`div`,NGt,[o[2]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,fr(4,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])],64)):(B(),V(Lr,{key:1},[Yr(D9,{title:z(zi)(`基础信息`)},{default:Mn(()=>[H(`div`,PGt,[(B(!0),V(Lr,null,fr(u.value,e=>(B(),V(`div`,{key:e.label,class:`info-row`},[H(`div`,FGt,ke(e.label),1),H(`div`,IGt,ke(e.value),1)]))),128)),H(`div`,LGt,[H(`div`,RGt,ke(z(zi)(`失败处理`)),1),H(`div`,zGt,[d.value?(B(),V(Lr,{key:0},[l.value?.skippable?(B(),V(`span`,BGt,[o[3]||=H(`span`,{class:`tag-badge`},`MS`,-1),Qr(` `+ke(z(zi)(`手动跳过`))+ke(l.value?.auto_retry?.enable?`;`:``),1)])):$r(`v-if`,!0),l.value?.auto_retry?.enable?(B(),V(`span`,VGt,[o[4]||=H(`span`,{class:`tag-badge`},`AR`,-1),Qr(` `+ke(f.value),1)])):$r(`v-if`,!0)],64)):(B(),V(Lr,{key:1},[Qr(`--`)],64))])]),H(`div`,HGt,[H(`div`,UGt,ke(z(zi)(`超时控制`)),1),H(`div`,WGt,ke(p.value),1)])])]),_:1},8,[`title`]),Yr(D9,{title:z(zi)(`输入参数`)},{default:Mn(()=>[Yr(O9,{columns:n,data:m.value},null,8,[`data`])]),_:1},8,[`title`]),Yr(D9,{title:z(zi)(`输出参数`)},{default:Mn(()=>[Yr(O9,{columns:r,data:h.value},null,8,[`data`])]),_:1},8,[`title`])],64))],64)):(B(),V(Lr,{key:1},[e.loading?(B(),V(`div`,GGt,[o[5]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,fr(5,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])):(B(),Gr(D9,{key:1,title:z(zi)(`结构化输出`)},{default:Mn(()=>[Yr(O9,{columns:i,data:g.value},null,8,[`data`])]),_:1},8,[`title`]))],64))])]))}}),A9=e=>e.task_id==null?``:`${e.task_id}`,qGt=A9,JGt=(e,t)=>e.task_id==null?``:`${e.task_id}|${t.id}|${t.name}`,YGt=e=>{let{messageUid:t,taskList:n}=e,r=zTe(),i=FTe(),a=fi(()=>r.selectedTab.value?.name??``),o=cn(!1),s=()=>{o.value=!0},l=fi(()=>{if(o.value)return a.value;let e=n.value.find(e=>e.is_active);return e?.task_id==null?a.value:A9(e)}),u=e=>{let t=l.value;return t===A9(e)||t===qGt(e)},d=(e,t)=>l.value===JGt(e,t),f=(e,n)=>{let i=e.task_id;i!=null&&(s(),r.addCustomTab?.({label:n.name,name:JGt(e,n),data:{component:KGt,messageUid:t.value,props:{data:{},loading:!0,node_id:n.id,node_name:n.name,task_id:i,task_name:e.task_name}}}))},p=e=>{let n=e?.task_id;n&&(s(),r.addCustomTab?.({label:zi(`有效证据`),name:qGt(e),data:{component:KGt,messageUid:t.value,props:{data:{},has_confidence:e.has_confidence,loading:!0,task_id:n,task_name:e.task_name}}}))};return Rn(a,(e,t)=>{t!==void 0&&s()}),sr(()=>{i?.value&&p(n.value.find(e=>e.is_active&&e.has_confidence))}),lr(()=>{if(i?.value)for(let e of n.value){r.removeCustomTab?.(A9(e)),r.removeCustomTab?.(qGt(e));for(let t of Object.values(e.nodes??{}))r.removeCustomTab?.(JGt(e,t))}}),{displaySelectedTabName:l,isNodeSelected:d,isTaskSelected:u,markUserTabSelection:s,openConfidence:p,openNodeDetail:f}},XGt={class:`ai-activity-message-title-text`},ZGt={class:`flow-agent-title-label`},QGt={class:`flow-agent-stat-tooltip`},$Gt={class:`flow-agent-stat-tooltip-status`},eKt={class:`flow-agent-stat-tooltip-label`},tKt=[`onClick`],nKt={class:`flow-agent-task-state-icon`},rKt={class:`flow-agent-task-name`},iKt={key:0,class:`flow-agent-task-trailing`},aKt={class:`flow-agent-task-time`},oKt=[`onClick`],sKt={class:`flow-agent-task-nodes`},cKt={class:`flow-agent-node-status`},lKt=[`title`],uKt={key:0,class:`flow-agent-node-trailing`},dKt={class:`flow-agent-node-time`},fKt={class:`flow-agent-node-actions`},pKt=[`onClick`],mKt=$n({__name:`flow-agent-content`,props:br({content:{},messageUid:{},onInterruptResume:{type:Function},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=cp(),r=Dr(e,`collapsed`),i=rEe(),a=fi(()=>i.value!==Ki.Share),o=fi(()=>t.status===Wi.Pending||t.status===Wi.Streaming),{isTaskExpanded:s,taskList:l,toggleTaskExpanded:u,viewTasks:d,visibleStats:f}=_Gt(pn(t,`content`)),{isNodeSelected:p,isTaskSelected:m,openConfidence:h,openNodeDetail:g}=YGt({messageUid:pn(t,`messageUid`),taskList:l}),{getNodeActions:_}=yGt({onInterruptResume:pn(t,`onInterruptResume`),openNodeDetail:g});return(e,t)=>(B(),Gr(dGt,{collapsed:r.value,"onUpdate:collapsed":t[0]||=e=>r.value=e,"activity-type":z(Hi).FlowAgent,class:`flow-agent-activity`},{title:Mn(()=>[$r(` hover 整条执行情况栏展示统计 tooltip(设计稿 annotation) `),Yr(z(np),ri({class:`flow-agent-title-bar`,theme:`ai-chat-box-light light`},{...z(n),tag:`div`,arrow:!0,followCursor:!1,offset:[0,10]}),{content:Mn(()=>[H(`div`,QGt,[(B(!0),V(Lr,null,fr(z(f),e=>(B(),V(`div`,{key:e.key,class:`flow-agent-stat-tooltip-item`},[H(`span`,$Gt,[e.key===`running`?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:ge({borderColor:e.dotColor})},null,4))]),H(`span`,eKt,ke(e.label)+`:`,1),H(`span`,{class:`flow-agent-stat-tooltip-count`,style:ge({color:e.color})},ke(e.display),5)]))),128))])]),default:Mn(()=>[H(`span`,{class:xe([`ai-activity-message-title-icon`,{"icon-collapsed":r.value}])},[o.value?(B(),Gr(ef,{key:0,size:12})):(B(),Gr(z(Yi),{key:1}))],2),H(`span`,XGt,[H(`span`,ZGt,ke(z(zi)(`执行情况`))+`:`,1),(B(!0),V(Lr,null,fr(z(f),e=>(B(),V(`span`,{key:e.key,class:`flow-agent-stat-item`},[e.key===`running`?(B(),Gr(z(pu),{key:0,class:`flow-agent-stat-loading`,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:ge({borderColor:e.dotColor})},null,4)),H(`span`,{class:`flow-agent-stat-count`,style:ge({color:e.color})},ke(e.display),5)]))),128))])]),_:1},16)]),default:Mn(()=>[(B(!0),V(Lr,null,fr(z(d),e=>(B(),V(`div`,{key:e.taskId,class:`flow-agent-task-group`},[H(`div`,{class:xe([`flow-agent-task-header`,{"has-confidence":e.hasConfidence,"is-selected":z(m)(e.raw)}])},[H(`span`,{class:xe([`flow-agent-task-arrow`,{"is-expanded":z(s)(e.raw)}]),onClick:ji(t=>z(u)(e.raw),[`stop`])},[Yr(z(Yi))],10,tKt),H(`span`,nKt,[e.convergedState===`running`?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),Gr(ur(e.stateIcon),{key:1}))]),Nn((B(),V(`span`,rKt,[Yr(z(T9),{text:e.taskName},null,8,[`text`])])),[[z(Tp),{...z(n)}]]),a.value?(B(),V(`span`,iKt,[H(`span`,aKt,ke(e.totalTimeText),1),e.hasConfidence?(B(),V(`span`,{key:0,class:`flow-agent-task-action-btn flow-agent-task-confidence-btn`,onClick:ji(t=>z(h)(e.raw),[`stop`])},[Yr(z(Xi)),Qr(` `+ke(e.confidenceTitle??z(zi)(`有效证据`)),1)],8,oKt)):$r(`v-if`,!0)])):$r(`v-if`,!0)],2),Nn(H(`div`,sKt,[(B(!0),V(Lr,null,fr(e.nodes,t=>(B(),V(`div`,{key:t.id,class:xe([`flow-agent-node-item`,{"is-selected":z(p)(e.raw,t.raw)}])},[H(`span`,cKt,[t.convergedState===`running`?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-status-dot`,style:ge({borderColor:t.dotColor})},null,4))]),Nn((B(),V(`span`,{class:`flow-agent-node-name`,title:t.name},[Yr(z(T9),{text:t.name},null,8,[`text`])],8,lKt)),[[z(Tp),{...z(n)}]]),a.value?(B(),V(`span`,uKt,[H(`span`,dKt,ke(t.elapsedTimeText),1),H(`span`,fKt,[(B(!0),V(Lr,null,fr(z(_)(e,t),e=>(B(),V(`span`,{key:e.id,class:`flow-agent-node-action-btn`,onClick:ji(t=>e.run(),[`stop`])},[(B(),Gr(ur(e.icon))),Qr(` `+ke(e.label),1)],8,pKt))),128))])])):$r(`v-if`,!0)],2))),128))],512),[[Ci,z(s)(e.raw)]])]))),128))]),_:1},8,[`collapsed`,`activity-type`]))}}),hKt={class:`ai-activity-message-title-icon`},gKt={class:`ai-activity-message-title-text`},_Kt={class:`knowledge-rag-content`},vKt=$n({__name:`knowledge-rag-content`,props:br({content:{},messageUid:{},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Dr(e,`collapsed`),r=fi(()=>t.status===Wi.Pending||t.status===Wi.Streaming),i=fi(()=>r.value?zi(`检索中`):zi(`检索完成`));return(t,a)=>(B(),Gr(dGt,{collapsed:n.value,"onUpdate:collapsed":a[0]||=e=>n.value=e},{title:Mn(()=>[H(`span`,hKt,[r.value?(B(),Gr(ef,{key:0})):(B(),Gr(z(Ji),{key:1,style:{"font-size":`12px`}}))]),H(`span`,gKt,ke(i.value),1)]),default:Mn(()=>[H(`div`,_Kt,[Yr(n9,{content:e.content?.content||``},null,8,[`content`])]),Yr(r9,{content:e.content?.referenceDocument||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),yKt={class:`ai-activity-message-title-icon`},bKt={class:`ai-activity-message-title-text`},xKt=$n({__name:`reference-doc-content`,props:br({content:{},messageUid:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Dr(e,`collapsed`),r=fi(()=>{let e=t.content?.length??0;return Ri?`Reference ${e} documents as reference`:`引用 ${e} 篇资料作为参考`});return(t,i)=>(B(),Gr(dGt,{collapsed:n.value,"onUpdate:collapsed":i[0]||=e=>n.value=e},{title:Mn(()=>[H(`span`,yKt,[Yr(z(Ji),{style:{"font-size":`12px`}})]),H(`span`,bKt,ke(r.value),1)]),default:Mn(()=>[Yr(r9,{content:e.content||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),SKt=$n({__name:`activity-message`,props:br({activityType:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t={[Hi.FlowAgent]:mKt,[Hi.KnowledgeRag]:vKt,[Hi.ReferenceDocument]:xKt},n=e,r=Dr(e,`collapsed`),i=fi(()=>t[n.activityType??``]);return(t,n)=>i.value?(B(),Gr(ur(i.value),{key:0,collapsed:r.value,"onUpdate:collapsed":n[0]||=e=>r.value=e,content:e.content,"message-uid":e.uid,"on-interrupt-resume":e.onInterruptResume,status:e.status},null,40,[`collapsed`,`content`,`message-uid`,`on-interrupt-resume`,`status`])):$r(`v-if`,!0)}}),CKt={class:`toolcall-desc`},wKt={class:`desc-title`},TKt={class:`desc-panel`},EKt={class:`desc-label`},DKt={class:`desc-value`},OKt=$n({__name:`desc-panel`,props:{desc:{},title:{}},setup(e){let t=e,n=e=>e==null?``:typeof e==`object`?JSON.stringify(e):String(e),r=fi(()=>{try{return JSON.parse(t.desc||``)}catch{return t.desc}});return(t,i)=>(B(),V(`div`,CKt,[H(`div`,wKt,ke(e.title),1),H(`div`,TKt,[$r(` null 的 typeof 为 object,需排除,避免 v-for 异常;键/值统一转字符串以满足 HighlightKeyword `),r.value!==null&&typeof r.value==`object`?(B(!0),V(Lr,{key:0},fr(r.value,(e,t)=>(B(),V(`div`,{key:t,class:`desc-panel-item`},[H(`span`,EKt,[Yr(z(T9),{text:String(t)},null,8,[`text`]),i[0]||=Qr(`:`,-1)]),H(`span`,DKt,[Yr(z(T9),{style:{"word-break":`break-all`},text:n(e)},null,8,[`text`])])]))),128)):(B(),Gr(z(T9),{key:1,style:{wordBreak:`break-all`},text:n(r.value)},null,8,[`text`]))])]))}}),kKt={class:`tool-message`},AKt=$n({__name:`tool-message`,props:{duration:{},error:{type:[Boolean,String]},toolCallId:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,kKt,[Yr(OKt,{desc:e.content||(typeof e.error==`string`?e.error:void 0),title:z(zi)(`返回内容`)},null,8,[`desc`,`title`])]))}}),jKt={class:`ai-toolcall-render`},MKt={class:`toolcall-header-title`},NKt={class:`toolcall-status-title`},PKt={key:1,class:`toolcall-duration`},FKt={class:`ai-toolcall-render-content`},IKt=$n({__name:`toolcall-render`,props:{duration:{},status:{},toolCall:{}},setup(e){let t=e,n=cn(!0),r=cn(null),i=cp(),{keywordMatched:a,keyword:o}=oEe(()=>[t.toolCall?.function.name,t.toolCall?.function.mcpName,t.toolCall?.function.description,t.toolCall?.function.arguments,t.toolCall?.id]),s=fi(()=>r.value===null?o?.value?.trim()?!a.value:n.value:r.value);function l(){n.value=!s.value,r.value=n.value}let u=fi(()=>{let e=t.toolCall?.function.mcpName||``,n=t.toolCall?.function.name||t.toolCall?.id||``;return e?`${e} / ${n}`:n}),d=fi(()=>{switch(t.status){default:case Wi.Pending:return zi(`调用中`);case Wi.Complete:case Wi.Success:return zi(`调用成功`);case Wi.Error||t.toolCall?.toolMessage?.error:return zi(`调用失败`)}}),f=fi(()=>{let e=t.duration||t.toolCall?.toolMessage?.duration;return e?$re(e):``});return(t,n)=>(B(),V(`div`,jKt,[H(`div`,{class:xe([`ai-toolcall-render-header`,`toolcall-status-${e.status}`]),onClick:l},[Yr(z(Yi),{class:xe({"is-collapsed":s.value})},null,8,[`class`]),Qr(` `+ke(e.toolCall?.function.mcpName?z(zi)(`调用 MCP:`):z(zi)(`调用工具:`))+` `,1),Nn((B(),V(`span`,MKt,[Yr(z(T9),{text:u.value},null,8,[`text`])])),[[z(Tp),{...z(i),text:u.value,appendTo:`parent`}]]),H(`span`,NKt,[e.status===z(Wi).Pending||e.status===z(Wi).Streaming?(B(),Gr(z(pu),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):$r(`v-if`,!0),Yr(z(T9),{text:d.value},null,8,[`text`]),f.value?(B(),V(`span`,PKt,` (`+ke(f.value)+`) `,1)):$r(`v-if`,!0)])],2),Nn(H(`div`,FKt,[Yr(OKt,{desc:e.toolCall?.function.description,title:z(zi)(`描述`)},null,8,[`desc`,`title`]),Yr(OKt,{desc:e.toolCall?.function.arguments,title:z(zi)(`参数`)},null,8,[`desc`,`title`]),e.toolCall?.toolMessage?(B(),Gr(AKt,Se(ri({key:0},e.toolCall.toolMessage)),null,16)):$r(`v-if`,!0)],512),[[Ci,!s.value]])]))}}),LKt={class:`ai-assistant-message`},RKt={class:`ai-assistant-message-content`},zKt=$n({__name:`assistant-message`,props:{toolCalls:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,LKt,[H(`div`,RKt,[mr(t.$slots,`default`,Se(Xr({content:e.content})),()=>[Yr(i9,{content:e.content||``,status:e.status,type:z(Hi).Text},null,8,[`content`,`status`,`type`])])]),e.toolCalls&&e.toolCalls.length>0?(B(!0),V(Lr,{key:0},fr(e.toolCalls,t=>(B(),Gr(IKt,{key:t.id,status:e.status,"tool-call":t},null,8,[`status`,`tool-call`]))),128)):$r(`v-if`,!0)]))}}),BKt={class:`info-message`},VKt=$n({__name:`info-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,BKt,[(B(!0),V(Lr,null,fr(Array.isArray(e.content)?e.content:[e.content],(e,t)=>(B(),V(`div`,{key:t,class:`info-message-content`},ke(e),1))),128))]))}}),HKt={class:`ai-tool-approval-card`},UKt={class:`ai-tool-approval-card__header`},WKt={class:`ai-tool-approval-card__title-wrap`},GKt={class:`ai-tool-approval-card__title`},KKt={class:`ai-tool-approval-card__fields`},qKt={class:`ai-tool-approval-card__field`},JKt={class:`ai-tool-approval-card__field`},YKt={class:`ai-tool-approval-card__processor`},XKt={class:`ai-tool-approval-card__processor-text`},ZKt={class:`ai-tool-approval-card__actions`},QKt=$n({__name:`tool-approval-card`,props:{interrupt:{},onInterruptResume:{type:Function},readonly:{type:Boolean}},setup(e){let t=e,n=cp(),r=rEe(),i=fi(()=>r.value===Ki.Share),{copy:a}=ap(),o=new Set([Bi.PENDING,Bi.DRAFT]),s=new Set([Bi.ABANDONED,Bi.CANCELLED,Bi.EXPIRED,Bi.REJECTED]),l=fi(()=>t.interrupt.metadata?.ticket??{approvers:[],sn:``,status:Bi.PENDING,submit_time:``,title:``,url:``}),u=fi(()=>o.has(l.value.status)),d=fi(()=>u.value?`pending`:l.value.status),f=fi(()=>u.value?zi(`评审中`):nie[l.value.status]??l.value.status),p=fi(()=>l.value.approvers.filter(Boolean).join(`、`)||zi(`无`)),m=fi(()=>l.value.url||l.value.sn),h=()=>{l.value.url&&window.open(l.value.url,`_blank`,`noopener`)},g=()=>{m.value&&a(m.value)},_=cn(!1),v=()=>{_.value||(_.value=!0,t.onInterruptResume?.({operation:Gi.ApprovalCancel,payload:{interrupt_id:t.interrupt.id}},t.interrupt))};return(t,r)=>(B(),V(`section`,HKt,[H(`header`,UKt,[H(`div`,WKt,[r[0]||=H(`span`,{class:`ai-tool-approval-card__title-bar`},null,-1),H(`span`,GKt,ke(l.value.title||z(zi)(`算法方案评审单`)),1),Nn(Yr(z(oae),{class:xe([`ai-tool-approval-card__copy-icon`,{"is-disabled":!m.value}]),onClick:g},null,8,[`class`]),[[z(rp),{...z(n),content:z(zi)(`复制单据链接`),theme:`ai-chat-box`,offset:[0,8]}]])]),H(`span`,{class:xe([`ai-tool-approval-card__status`,`ai-tool-approval-card__status--${d.value}`])},[l.value.status===z(Bi).APPROVED?(B(),Gr(z(Uie),{key:0,class:`ai-tool-approval-card__status-icon`})):z(s).has(l.value.status)?(B(),Gr(z(Gie),{key:1,class:`ai-tool-approval-card__status-icon`})):l.value.status===z(Bi).REVOKED?(B(),Gr(z(Kie),{key:2,class:xe([`ai-tool-approval-card__status-icon`,{"ai-tool-approval-card__status-icon--revoked":l.value.status===z(Bi).REVOKED}])},null,8,[`class`])):(B(),Gr(z(pu),{key:3,class:`ai-tool-approval-card__status-icon`,mode:`spin`,size:`mini`,theme:`primary`})),Qr(` `+ke(f.value),1)],2)]),H(`dl`,KKt,[H(`div`,qKt,[H(`dt`,null,ke(z(zi)(`单据编号`)),1),H(`dd`,null,ke(l.value.sn||`--`),1)]),H(`div`,JKt,[H(`dt`,null,ke(z(zi)(`提交时间`)),1),H(`dd`,null,ke(l.value.submit_time||`--`),1)])]),H(`div`,YKt,[Yr(z(Wie),{class:`ai-tool-approval-card__processor-icon`}),Nn((B(),V(`span`,XKt,[Qr(ke(z(zi)(`当前处理人`))+`:`+ke(p.value),1)])),[[z(Tp),{...z(n)}]])]),H(`div`,ZKt,[Yr(z(xu),{class:`ai-tool-approval-card__detail`,disabled:!l.value.url,theme:`primary`,onClick:h},{default:Mn(()=>[Qr(ke(z(zi)(`查看单据详情`))+` `,1),r[1]||=H(`span`,{class:`ai-tool-approval-card__detail-icon`},null,-1)]),_:1},8,[`disabled`]),u.value&&!e.readonly?(B(),Gr(z(xu),{key:0,class:`ai-tool-approval-card__cancel`,disabled:_.value||i.value,loading:_.value,outline:``,theme:`primary`,onClick:v},{default:Mn(()=>[Qr(ke(z(zi)(`取消审批`)),1)]),_:1},8,[`disabled`,`loading`])):$r(`v-if`,!0)])]))}}),$Kt={class:`ai-interrupt-message`},eqt={key:0,class:`ai-interrupt-message__content`},tqt={class:`ai-interrupt-message__fallback`},nqt=$n({__name:`interrupt-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},setup(e){let t={[Vi.AIDevToolApproval]:QKt},n=e=>({id:e.interruptId||e.id||``,reason:Vi.AIDevToolApproval,toolCallId:``,metadata:e.payload.metadata}),r={[Vi.AIDevToolApproval]:e=>({component:QKt,props:{interrupt:n(e),readonly:!0}}),[Vi.UserQuestion]:e=>({component:kWt,props:{answers:e.payload?.answers??[],status:e.status}})},i=new Set([Vi.UserQuestion]),a=e,o=fi(()=>a.content?.outcome?.type===`interrupt`?a.content.outcome.interrupts:[]),s=fi(()=>a.content?.message),l=e=>t[e.reason],u=e=>i.has(e.reason),d=fi(()=>{if(a.content?.outcome?.type!==`success`)return;let e=a.content?.result;if(e)return r[e.reason]?.(e)});return(t,n)=>(B(),V(`div`,$Kt,[s.value?(B(),V(`div`,eqt,ke(s.value),1)):$r(`v-if`,!0),(B(!0),V(Lr,null,fr(o.value,t=>(B(),V(Lr,{key:t.toolCallId},[l(t)?(B(),Gr(ur(l(t)),{key:0,interrupt:t,"on-interrupt-resume":e.onInterruptResume},null,40,[`interrupt`,`on-interrupt-resume`])):u(t)?$r(`v-if`,!0):(B(),V(Lr,{key:1},[$r(` UserQuestion 的交互浮层渲染在 chat-input 上方,不在会话内渲染 `),H(`div`,tqt,ke(t.message||z(zi)(`暂不支持的中断消息`)),1)],2112))],64))),128)),$r(` outcome.success 时按 reason 在会话内回显 resume 结果(审批单 / 已回答内容等) `),d.value?(B(),Gr(ur(d.value.component),Se(ri({key:1},d.value.props)),pr({_:2},[t.$slots.answeredQuestion?{name:`answer`,fn:Mn(e=>[mr(t.$slots,`answeredQuestion`,Se(Xr(e)))]),key:`0`}:void 0]),1040)):$r(`v-if`,!0)]))}}),rqt={class:`ai-loading-message`},iqt=$n({__name:`loading-message`,setup(e){return(e,t)=>(B(),V(`div`,rqt,[Yr(ef,{size:18}),mr(e.$slots,`default`,{},()=>[Qr(ke(z(zi)(`请求中...`)),1)])]))}}),aqt={class:`ai-reasoning-message`},oqt={key:0,class:`ai-reasoning-message-title-icon`},sqt={class:`ai-reasoning-message-title-text`},cqt={class:`ai-reasoning-message-content`},lqt=$n({__name:`reasoning-message`,props:br({duration:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Dr(e,`collapsed`),{stop:r}=Rn(()=>t.duration,async e=>{e&&(n.value=!0,await Dn(),r?.())},{immediate:!0}),i=fi(()=>{switch(t.status){case Wi.Pending:return zi(`思考中`);case Wi.Success:case Wi.Complete:return zi(`已思考完成`)+(t.duration?` (${zi(`耗时`)} :${$re(t.duration)})`:``);case Wi.Error:return zi(`思考失败`);default:return zi(`思考中`)}});return(t,r)=>(B(),V(`div`,aqt,[H(`div`,{class:xe([`ai-reasoning-message-title`,{"ai-reasoning-message-title-collapsed":n.value,"is-thinking":e.status===z(Wi).Pending||e.status===z(Wi).Streaming,"is-complete":e.status===z(Wi).Complete||e.status===z(Wi).Success,"is-error":e.status===z(Wi).Error}]),onClick:r[0]||=e=>n.value=!n.value},[e.status===z(Wi).Pending||e.status===z(Wi).Streaming?(B(),V(`span`,oqt,[Yr(ef)])):$r(`v-if`,!0),H(`span`,sqt,ke(i.value),1),$r(` <template v-if="status === MessageStatus.Pending || status === MessageStatus.Streaming">
|
|
3493
3493
|
<ContentLoadingIcon
|
|
3494
3494
|
v-for="i in 3"
|
|
3495
3495
|
:key="i"
|
|
@@ -3484,12 +3484,12 @@ Input "@" to trigger tool and MCP
|
|
|
3484
3484
|
Use Shift + Enter to enter a new line`:`输入 "/" 唤出 Skill
|
|
3485
3485
|
输入 "\\" 唤出 Prompt
|
|
3486
3486
|
输入 "@" 唤出 工具和 MCP
|
|
3487
|
-
通过 Shift + Enter 进行换行输入`},prompts:{default:()=>[]},resources:{default:()=>[]},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{default:()=>[]},supportUpload:{type:Boolean,default:!0},tippyOptions:{}},{cite:{required:!1,default:``},citeModifiers:{}}),emits:Sr([`selectShortcut`,`deleteShortcut`,`update:modelValue`],[`update:cite`]),setup(e,{expose:t,emit:n}){let r=nr(`aiSlashInputRef`),i=nr(`filesRef`),a=Ar(e,`cite`),o=un(200),s=e,l=n,u=ln(s.defaultUploadFiles||[]),d=mi(()=>s.shortcuts?.find(e=>e.id===s.shortcutId)),f=mi(()=>s.messageStatus&&[qi.Pending,qi.Streaming,qi.Fetching].includes(s.messageStatus)?s.messageStatus:s.modelValue?.length<1||Array.isArray(s.modelValue)&&!c9(s.modelValue).trim()?qi.Disabled:s.messageStatus);See(()=>{let e=s.inputMaxHeight||200;if(u.value.length<1||!i.value){o.value=e;return}o.value=e+(i.value?.clientHeight||0)});let p=async()=>{try{if(s.sendDisabledTip)return;r.value?.cleanup?.();let e;u.value?.length?(e=u.value?.slice().map(e=>({type:Gi.Binary,url:e.url,mimeType:e.file?.type||``,filename:e.file?.name||``})),s.modelValue&&e.push({type:Gi.Text,text:c9(s.modelValue)})):e=typeof s.modelValue==`string`?s.modelValue:c9(s.modelValue),s.onSendMessage?.(e,s.modelValue),u.value=[]}catch(e){console.error(e)}},m=e=>{if(e.key===`Enter`||e.key===`NumpadEnter`){if(e.shiftKey||f.value===qi.Disabled||s.sendDisabledTip||f.value===qi.Fetching||f.value===qi.Streaming||f.value===qi.Pending)return;p()}},h=async()=>{try{s.onStopSending?.()}catch(e){console.error(e)}},g=()=>{a.value=``},_=e=>{l(`selectShortcut`,e)},v=()=>{l(`deleteShortcut`)},y=e=>`${e.name}_${e.size}_${e.lastModified}`,b=(cie/(1024*1024)).toFixed(1),x=async e=>{if(!s.supportUpload)return;if(u.value.length>=3){e.length>0&&jd({message:Li(e.length,b,Vi),theme:`error`});return}let t=new Set(u.value.map(e=>e.file?y(e.file):``)),n=0;for(let r=0;r<e.length;r++){let i=e[r];if(u.value.length>=3){n+=e.length-r;break}let a=y(i);if(t.has(a)){n+=1;continue}if(i.size<=0||i.size>=2516582.4){n+=1;continue}t.add(a);let o={file:i,status:C9.Pending};u.value.push(o),s.onUpload?.(i).then(e=>{if(e&&typeof e==`object`&&`download_url`in e){o.url=e.download_url,o.status=C9.Success;return}o.status=C9.Error}).catch(()=>{o.status=C9.Error})}n>0&&jd({message:Li(n,b,Vi),theme:`error`})},S=e=>{u.value=u.value.filter(t=>t.file?t.file!==e.file:t.url?t.url!==e.url:t.filename?t.filename!==e.filename:!0)},C=(e,t)=>{l(`update:modelValue`,e,t)};return t({focus:()=>{r.value?.focus?.()},triggerSendMessage:p}),(t,n)=>(B(),V(`div`,{class:`chat-input-container`,style:_e({"--chat-z-index":z(tie)})},[gr(t.$slots,`top`),gr(t.$slots,`interrupt`),H(`div`,{class:`chat-input`,style:_e({maxHeight:o.value+`px`})},[gr(t.$slots,`input-header`,{},()=>[a.value?(B(),qr(cUt,{key:0,class:`chat-input-cite`,content:a.value,onClose:g},null,8,[`content`])):ti(`v-if`,!0)]),gr(t.$slots,`files`,Ce(Qr({files:u.value})),()=>[u.value.length?(B(),V(`div`,{key:0,ref_key:`filesRef`,ref:i,class:`chat-input-files`},[Zr(zUt,{files:u.value,onDeleteFile:S},null,8,[`files`])],512)):ti(`v-if`,!0)]),Zr(lWt,{ref_key:`aiSlashInputRef`,ref:r,"model-value":e.modelValue,placeholder:e.placeholder,prompts:e.prompts,resources:e.resources,skills:e.skills,onKeydown:m,"onUpdate:modelValue":C,onUpload:x},null,8,[`model-value`,`placeholder`,`prompts`,`resources`,`skills`]),Zr(dWt,{"message-state":f.value,"send-disabled-tip":e.sendDisabledTip,"tippy-options":e.tippyOptions,onSendMessage:p,onStopSending:h},{default:Pn(()=>[e.supportUpload?(B(),qr(aUt,{key:0,"tippy-options":e.tippyOptions,onUpload:x},null,8,[`tippy-options`])):ti(`v-if`,!0),e.supportUpload&&(e.shortcuts?.length||d.value)?(B(),V(`span`,fWt)):ti(`v-if`,!0),gr(t.$slots,`attachment`,{},()=>[e.shortcuts&&!d.value?(B(),qr(vTe,{key:0,shortcuts:e.shortcuts,onSelectShortcut:_},null,8,[`shortcuts`])):ti(`v-if`,!0),d.value?(B(),qr(lp,{key:1,class:`selected-shortcut-btn`,shortcut:d.value},{append:Pn(()=>[Zr(z(ta),{onClick:v})]),_:1},8,[`shortcut`])):ti(`v-if`,!0)])]),"send-icon":Pn(()=>[gr(t.$slots,`send-icon`)]),_:3},8,[`message-state`,`send-disabled-tip`,`tippy-options`])],4)],4))}}),mWt={class:`chat-input-info-alert`},hWt={class:`chat-input-info-alert__text`},gWt=tr({__name:`input-info-alert`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,mWt,[Zr(z(Kie),{class:`chat-input-info-alert__icon`}),H(`span`,hWt,Ae(e.content),1)]))}}),_Wt=`others`,vWt=e=>e<26?String.fromCharCode(65+e):String(e+1),yWt=e=>{let t=mi(()=>e()?.metadata?.questions??[]),n=un({}),r=e=>n.value[e],i=(e,t)=>{n.value={...n.value,[e]:t}},a=mi(()=>t.value.length),o=mi(()=>t.value.reduce((e,t,r)=>e+ +!!n.value[r],0)),s=mi(()=>a.value>0&&o.value===a.value),l=()=>t.value.map((e,t)=>n.value[t]??{question:e.question,answer:[]});return{questions:t,answeredCount:o,totalCount:a,completed:s,getAnswer:r,setAnswer:i,buildResolvePayload:()=>({interruptId:e()?.id??``,reason:Wi.UserQuestion,status:`resolved`,payload:{answers:l()}}),buildSkipPayload:()=>bWt(e())}},bWt=e=>({interruptId:e?.id??``,reason:Wi.UserQuestion,status:`cancelled`,payload:{answers:[]}}),xWt={class:`ai-user-question-answered`},SWt={class:`ai-user-question-answered__header`},CWt={class:`ai-user-question-answered__title-wrap`},wWt={class:`ai-user-question-answered__title`},TWt={class:`ai-user-question-answered__status`},EWt={class:`ai-user-question-answered__body`},DWt={class:`ai-user-question-answered__question`},OWt={class:`ai-user-question-answered__question-text`},kWt={key:0,class:`ai-user-question-answered__tag`},AWt=tr({__name:`user-question-answered-card`,props:{answers:{},status:{default:`resolved`}},setup(e){let t=e,n=mi(()=>t.status===`cancelled`?Hi(`已取消`):Hi(`已回复`));return(t,r)=>(B(),V(`section`,xWt,[H(`header`,SWt,[H(`div`,CWt,[Zr(z(Gie),{class:`ai-user-question-answered__help-icon`}),H(`span`,wWt,Ae(z(Hi)(`回答内容`)),1)]),H(`span`,TWt,Ae(n.value),1)]),H(`div`,EWt,[(B(!0),V(zr,null,mr(e.answers,(n,r)=>(B(),V(`div`,{key:r,class:`ai-user-question-answered__item`},[H(`div`,DWt,[H(`span`,OWt,Ae(r+1)+`. `+Ae(n.question),1),n.multiSelect===void 0?ti(`v-if`,!0):(B(),V(`span`,kWt,Ae(n.multiSelect?z(Hi)(`多选`):z(Hi)(`单选`)),1))]),ti(` 默认逐条回显选择题答案;业务方可覆盖此 slot 渲染自定义表单的回显 `),gr(t.$slots,`answer`,ai({ref_for:!0},{item:n,index:r,status:e.status}),()=>[(B(!0),V(zr,null,mr(n.answer,(e,t)=>(B(),V(`p`,{key:t,class:`ai-user-question-answered__answer`},Ae(e.description||e.label),1))),128))])]))),128))])]))}}),jWt={class:`ai-user-question-option__badge`},MWt=[`placeholder`,`value`],NWt={key:1,class:`ai-user-question-option__text`},PWt=tr({__name:`user-question-option`,props:{option:{},othersText:{},selected:{type:Boolean}},emits:[`confirm`,`select`,`update:othersText`],setup(e,{emit:t}){let n=e,r=t,i=()=>{r(`select`)},a=()=>{n.selected||r(`select`)},o=e=>{let t=e.target.value;r(`update:othersText`,t),n.selected||r(`select`)};return(t,n)=>(B(),V(`div`,{class:Se([`ai-user-question-option`,{"ai-user-question-option--selected":e.selected,"ai-user-question-option--others":e.option.isOthers}]),onClick:i},[H(`span`,jWt,Ae(e.option.letter),1),ti(` Others:自定义输入 `),e.option.isOthers?(B(),V(`input`,{key:0,class:`ai-user-question-option__input`,placeholder:z(Hi)(`请输入...`),value:e.othersText,onClick:n[0]||=Pi(()=>{},[`stop`]),onFocus:a,onInput:o,onKeydown:n[1]||=Cre(Pi(e=>r(`confirm`),[`stop`]),[`enter`])},null,40,MWt)):(B(),V(`span`,NWt,Ae(e.option.description),1))],2))}}),FWt={class:`ai-user-question-choice`},IWt=tr({__name:`user-question-choice`,props:{question:{}},emits:[`answer`,`confirm`],setup(e,{emit:t}){let n=e,r=t,i=un([]),a=un(``),o=mi(()=>{let e=(n.question.options??[]).filter(e=>e.label!==_Wt).map((e,t)=>({...e,isOthers:!1,letter:vWt(t)}));return e.push({label:_Wt,description:``,isOthers:!0,letter:vWt(e.length)}),e}),s=mi(()=>o.value.findIndex(e=>e.isOthers)),l=e=>i.value.includes(e),u=mi(()=>i.value.length?s.value>=0&&i.value.includes(s.value)?a.value.trim().length>0:!0:!1),d=()=>({question:n.question.question,multiSelect:n.question.multiSelect,answer:i.value.map(e=>{let t=o.value[e];return t?.isOthers?{label:_Wt,description:a.value.trim()}:{label:t?.label??``,description:t?.description??``}})}),f=()=>r(`answer`,u.value?d():void 0),p=e=>{let t=i.value;i.value=n.question.multiSelect?t.includes(e)?t.filter(t=>t!==e):[...t,e]:[e],f()},m=e=>{a.value=e,f()};return Bn(()=>n.question,()=>{i.value=[],a.value=``,f()}),(e,t)=>(B(),V(`div`,FWt,[(B(!0),V(zr,null,mr(o.value,(e,n)=>(B(),qr(PWt,{key:n,option:e,"others-text":a.value,selected:l(n),onConfirm:t[0]||=e=>r(`confirm`),onSelect:e=>p(n),"onUpdate:othersText":m},null,8,[`option`,`others-text`,`selected`,`onSelect`]))),128))]))}}),LWt={class:`ai-user-question-card__title-wrap`},RWt={class:`ai-user-question-card__title`},zWt={class:`ai-user-question-card__counter-wrap`},BWt={class:`ai-user-question-card__counter`},VWt={class:`ai-user-question-card__body`},HWt={class:`ai-user-question-card__question-title`},UWt={class:`ai-user-question-card__question-text`},WWt={key:0,class:`ai-user-question-card__tag`},GWt={class:`ai-user-question-card__options`},KWt={class:`ai-user-question-card__footer`},qWt=tr({__name:`user-question-card`,props:{interrupt:{},onResume:{type:Function}},setup(e){let t=e,n=pp(),r=un(!1),{questions:i,answeredCount:a,totalCount:o,completed:s,getAnswer:l,setAnswer:u,buildResolvePayload:d,buildSkipPayload:f}=yWt(()=>t.interrupt),p=mi(()=>t.interrupt.metadata?.questions?.[0]?.header||t.interrupt.message||``),m=()=>{r.value=!r.value},h=()=>{r.value&&=!1},g=()=>{s.value
|
|
3487
|
+
通过 Shift + Enter 进行换行输入`},prompts:{default:()=>[]},resources:{default:()=>[]},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{default:()=>[]},supportUpload:{type:Boolean,default:!0},tippyOptions:{}},{cite:{required:!1,default:``},citeModifiers:{}}),emits:Sr([`selectShortcut`,`deleteShortcut`,`update:modelValue`],[`update:cite`]),setup(e,{expose:t,emit:n}){let r=nr(`aiSlashInputRef`),i=nr(`filesRef`),a=Ar(e,`cite`),o=un(200),s=e,l=n,u=ln(s.defaultUploadFiles||[]),d=mi(()=>s.shortcuts?.find(e=>e.id===s.shortcutId)),f=mi(()=>s.messageStatus&&[qi.Pending,qi.Streaming,qi.Fetching].includes(s.messageStatus)?s.messageStatus:s.modelValue?.length<1||Array.isArray(s.modelValue)&&!c9(s.modelValue).trim()?qi.Disabled:s.messageStatus);See(()=>{let e=s.inputMaxHeight||200;if(u.value.length<1||!i.value){o.value=e;return}o.value=e+(i.value?.clientHeight||0)});let p=async()=>{try{if(s.sendDisabledTip)return;r.value?.cleanup?.();let e;u.value?.length?(e=u.value?.slice().map(e=>({type:Gi.Binary,url:e.url,mimeType:e.file?.type||``,filename:e.file?.name||``})),s.modelValue&&e.push({type:Gi.Text,text:c9(s.modelValue)})):e=typeof s.modelValue==`string`?s.modelValue:c9(s.modelValue),s.onSendMessage?.(e,s.modelValue),u.value=[]}catch(e){console.error(e)}},m=e=>{if(e.key===`Enter`||e.key===`NumpadEnter`){if(e.shiftKey||f.value===qi.Disabled||s.sendDisabledTip||f.value===qi.Fetching||f.value===qi.Streaming||f.value===qi.Pending)return;p()}},h=async()=>{try{s.onStopSending?.()}catch(e){console.error(e)}},g=()=>{a.value=``},_=e=>{l(`selectShortcut`,e)},v=()=>{l(`deleteShortcut`)},y=e=>`${e.name}_${e.size}_${e.lastModified}`,b=(cie/(1024*1024)).toFixed(1),x=async e=>{if(!s.supportUpload)return;if(u.value.length>=3){e.length>0&&jd({message:Li(e.length,b,Vi),theme:`error`});return}let t=new Set(u.value.map(e=>e.file?y(e.file):``)),n=0;for(let r=0;r<e.length;r++){let i=e[r];if(u.value.length>=3){n+=e.length-r;break}let a=y(i);if(t.has(a)){n+=1;continue}if(i.size<=0||i.size>=2516582.4){n+=1;continue}t.add(a);let o={file:i,status:C9.Pending};u.value.push(o),s.onUpload?.(i).then(e=>{if(e&&typeof e==`object`&&`download_url`in e){o.url=e.download_url,o.status=C9.Success;return}o.status=C9.Error}).catch(()=>{o.status=C9.Error})}n>0&&jd({message:Li(n,b,Vi),theme:`error`})},S=e=>{u.value=u.value.filter(t=>t.file?t.file!==e.file:t.url?t.url!==e.url:t.filename?t.filename!==e.filename:!0)},C=(e,t)=>{l(`update:modelValue`,e,t)};return t({focus:()=>{r.value?.focus?.()},triggerSendMessage:p}),(t,n)=>(B(),V(`div`,{class:`chat-input-container`,style:_e({"--chat-z-index":z(tie)})},[gr(t.$slots,`top`),gr(t.$slots,`interrupt`),H(`div`,{class:`chat-input`,style:_e({maxHeight:o.value+`px`})},[gr(t.$slots,`input-header`,{},()=>[a.value?(B(),qr(cUt,{key:0,class:`chat-input-cite`,content:a.value,onClose:g},null,8,[`content`])):ti(`v-if`,!0)]),gr(t.$slots,`files`,Ce(Qr({files:u.value})),()=>[u.value.length?(B(),V(`div`,{key:0,ref_key:`filesRef`,ref:i,class:`chat-input-files`},[Zr(zUt,{files:u.value,onDeleteFile:S},null,8,[`files`])],512)):ti(`v-if`,!0)]),Zr(lWt,{ref_key:`aiSlashInputRef`,ref:r,"model-value":e.modelValue,placeholder:e.placeholder,prompts:e.prompts,resources:e.resources,skills:e.skills,onKeydown:m,"onUpdate:modelValue":C,onUpload:x},null,8,[`model-value`,`placeholder`,`prompts`,`resources`,`skills`]),Zr(dWt,{"message-state":f.value,"send-disabled-tip":e.sendDisabledTip,"tippy-options":e.tippyOptions,onSendMessage:p,onStopSending:h},{default:Pn(()=>[e.supportUpload?(B(),qr(aUt,{key:0,"tippy-options":e.tippyOptions,onUpload:x},null,8,[`tippy-options`])):ti(`v-if`,!0),e.supportUpload&&(e.shortcuts?.length||d.value)?(B(),V(`span`,fWt)):ti(`v-if`,!0),gr(t.$slots,`attachment`,{},()=>[e.shortcuts&&!d.value?(B(),qr(vTe,{key:0,shortcuts:e.shortcuts,onSelectShortcut:_},null,8,[`shortcuts`])):ti(`v-if`,!0),d.value?(B(),qr(lp,{key:1,class:`selected-shortcut-btn`,shortcut:d.value},{append:Pn(()=>[Zr(z(ta),{onClick:v})]),_:1},8,[`shortcut`])):ti(`v-if`,!0)])]),"send-icon":Pn(()=>[gr(t.$slots,`send-icon`)]),_:3},8,[`message-state`,`send-disabled-tip`,`tippy-options`])],4)],4))}}),mWt={class:`chat-input-info-alert`},hWt={class:`chat-input-info-alert__text`},gWt=tr({__name:`input-info-alert`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,mWt,[Zr(z(Kie),{class:`chat-input-info-alert__icon`}),H(`span`,hWt,Ae(e.content),1)]))}}),_Wt=`others`,vWt=e=>e<26?String.fromCharCode(65+e):String(e+1),yWt=e=>{let t=mi(()=>e()?.metadata?.questions??[]),n=un({}),r=e=>n.value[e],i=(e,t)=>{n.value={...n.value,[e]:t}},a=mi(()=>t.value.length),o=mi(()=>t.value.reduce((e,t,r)=>e+ +!!n.value[r],0)),s=mi(()=>a.value>0&&o.value===a.value),l=()=>t.value.map((e,t)=>n.value[t]??{question:e.question,answer:[]});return{questions:t,answeredCount:o,totalCount:a,completed:s,getAnswer:r,setAnswer:i,buildResolvePayload:()=>({interruptId:e()?.id??``,reason:Wi.UserQuestion,status:`resolved`,payload:{answers:l()}}),buildSkipPayload:()=>bWt(e())}},bWt=e=>({interruptId:e?.id??``,reason:Wi.UserQuestion,status:`cancelled`,payload:{answers:[]}}),xWt={class:`ai-user-question-answered`},SWt={class:`ai-user-question-answered__header`},CWt={class:`ai-user-question-answered__title-wrap`},wWt={class:`ai-user-question-answered__title`},TWt={class:`ai-user-question-answered__status`},EWt={class:`ai-user-question-answered__body`},DWt={class:`ai-user-question-answered__question`},OWt={class:`ai-user-question-answered__question-text`},kWt={key:0,class:`ai-user-question-answered__tag`},AWt=tr({__name:`user-question-answered-card`,props:{answers:{},status:{default:`resolved`}},setup(e){let t=e,n=mi(()=>t.status===`cancelled`?Hi(`已取消`):Hi(`已回复`));return(t,r)=>(B(),V(`section`,xWt,[H(`header`,SWt,[H(`div`,CWt,[Zr(z(Gie),{class:`ai-user-question-answered__help-icon`}),H(`span`,wWt,Ae(z(Hi)(`回答内容`)),1)]),H(`span`,TWt,Ae(n.value),1)]),H(`div`,EWt,[(B(!0),V(zr,null,mr(e.answers,(n,r)=>(B(),V(`div`,{key:r,class:`ai-user-question-answered__item`},[H(`div`,DWt,[H(`span`,OWt,Ae(r+1)+`. `+Ae(n.question),1),n.multiSelect===void 0?ti(`v-if`,!0):(B(),V(`span`,kWt,Ae(n.multiSelect?z(Hi)(`多选`):z(Hi)(`单选`)),1))]),ti(` 默认逐条回显选择题答案;业务方可覆盖此 slot 渲染自定义表单的回显 `),gr(t.$slots,`answer`,ai({ref_for:!0},{item:n,index:r,status:e.status}),()=>[(B(!0),V(zr,null,mr(n.answer,(e,t)=>(B(),V(`p`,{key:t,class:`ai-user-question-answered__answer`},Ae(e.description||e.label),1))),128))])]))),128))])]))}}),jWt={class:`ai-user-question-option__badge`},MWt=[`placeholder`,`value`],NWt={key:1,class:`ai-user-question-option__text`},PWt=tr({__name:`user-question-option`,props:{option:{},othersText:{},selected:{type:Boolean}},emits:[`confirm`,`select`,`update:othersText`],setup(e,{emit:t}){let n=e,r=t,i=()=>{r(`select`)},a=()=>{n.selected||r(`select`)},o=e=>{let t=e.target.value;r(`update:othersText`,t),n.selected||r(`select`)};return(t,n)=>(B(),V(`div`,{class:Se([`ai-user-question-option`,{"ai-user-question-option--selected":e.selected,"ai-user-question-option--others":e.option.isOthers}]),onClick:i},[H(`span`,jWt,Ae(e.option.letter),1),ti(` Others:自定义输入 `),e.option.isOthers?(B(),V(`input`,{key:0,class:`ai-user-question-option__input`,placeholder:z(Hi)(`请输入...`),value:e.othersText,onClick:n[0]||=Pi(()=>{},[`stop`]),onFocus:a,onInput:o,onKeydown:n[1]||=Cre(Pi(e=>r(`confirm`),[`stop`]),[`enter`])},null,40,MWt)):(B(),V(`span`,NWt,Ae(e.option.description),1))],2))}}),FWt={class:`ai-user-question-choice`},IWt=tr({__name:`user-question-choice`,props:{question:{}},emits:[`answer`,`confirm`],setup(e,{emit:t}){let n=e,r=t,i=un([]),a=un(``),o=mi(()=>{let e=(n.question.options??[]).filter(e=>e.label!==_Wt).map((e,t)=>({...e,isOthers:!1,letter:vWt(t)}));return e.push({label:_Wt,description:``,isOthers:!0,letter:vWt(e.length)}),e}),s=mi(()=>o.value.findIndex(e=>e.isOthers)),l=e=>i.value.includes(e),u=mi(()=>i.value.length?s.value>=0&&i.value.includes(s.value)?a.value.trim().length>0:!0:!1),d=()=>({question:n.question.question,multiSelect:n.question.multiSelect,answer:i.value.map(e=>{let t=o.value[e];return t?.isOthers?{label:_Wt,description:a.value.trim()}:{label:t?.label??``,description:t?.description??``}})}),f=()=>r(`answer`,u.value?d():void 0),p=e=>{let t=i.value;i.value=n.question.multiSelect?t.includes(e)?t.filter(t=>t!==e):[...t,e]:[e],f()},m=e=>{a.value=e,f()};return Bn(()=>n.question,()=>{i.value=[],a.value=``,f()}),(e,t)=>(B(),V(`div`,FWt,[(B(!0),V(zr,null,mr(o.value,(e,n)=>(B(),qr(PWt,{key:n,option:e,"others-text":a.value,selected:l(n),onConfirm:t[0]||=e=>r(`confirm`),onSelect:e=>p(n),"onUpdate:othersText":m},null,8,[`option`,`others-text`,`selected`,`onSelect`]))),128))]))}}),LWt={class:`ai-user-question-card__title-wrap`},RWt={class:`ai-user-question-card__title`},zWt={class:`ai-user-question-card__counter-wrap`},BWt={class:`ai-user-question-card__counter`},VWt={class:`ai-user-question-card__body`},HWt={class:`ai-user-question-card__question-title`},UWt={class:`ai-user-question-card__question-text`},WWt={key:0,class:`ai-user-question-card__tag`},GWt={class:`ai-user-question-card__options`},KWt={class:`ai-user-question-card__footer`},qWt=tr({__name:`user-question-card`,props:{interrupt:{},onResume:{type:Function}},setup(e){let t=e,n=pp(),r=un(!1),{questions:i,answeredCount:a,totalCount:o,completed:s,getAnswer:l,setAnswer:u,buildResolvePayload:d,buildSkipPayload:f}=yWt(()=>t.interrupt),p=mi(()=>t.interrupt.metadata?.questions?.[0]?.header||t.interrupt.message||``),m=()=>{r.value=!r.value},h=()=>{r.value&&=!1},g=un(null),_=()=>{!s.value||g.value!==null||(g.value=`complete`,t.onResume?.(d(),t.interrupt))},v=()=>{g.value===null&&(g.value=`skip`,t.onResume?.(f(),t.interrupt))};return(e,t)=>(B(),V(`section`,{class:Se([`ai-user-question-card`,{"ai-user-question-card--collapsed":r.value}])},[H(`header`,{class:`ai-user-question-card__header`,onClick:h},[H(`div`,LWt,[Zr(z(Gie),{class:`ai-user-question-card__help-icon`}),Fn((B(),V(`span`,RWt,[ei(Ae(p.value),1)])),[[z(Ap),{...z(n)}]]),ti(` <span
|
|
3488
3488
|
v-if="isCollapsed"
|
|
3489
3489
|
class="ai-user-question-card__tag"
|
|
3490
3490
|
>
|
|
3491
3491
|
{{ headerSelectText }}
|
|
3492
|
-
</span> `)]),H(`div`,zWt,[H(`span`,BWt,Ae(z(a))+` / `+Ae(z(o)),1),Zr(z(Nie),{class:`ai-user-question-card__arrow`,style:_e({transform:r.value?`rotate(180deg)`:`rotate(-90deg)`}),onClick:Pi(m,[`stop`])},null,8,[`style`])])]),ti(` 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 `),Fn(H(`div`,VWt,[(B(!0),V(zr,null,mr(z(i),(t,n)=>(B(),V(`div`,{key:n,class:`ai-user-question-card__question`},[H(`div`,HWt,[H(`span`,UWt,Ae(n+1)+`. `+Ae(t.question),1),t.multiSelect===void 0?ti(`v-if`,!0):(B(),V(`span`,WWt,Ae(t.multiSelect?z(Hi)(`多选`):z(Hi)(`单选`)),1))]),H(`div`,GWt,[ti(` 默认渲染选择题;业务方可覆盖此 slot 渲染任意表单,作答有效时通过 setAnswer 回传 `),gr(e.$slots,`question`,ai({ref_for:!0},{question:t,qIndex:n,answer:z(l)(n),setAnswer:e=>z(u)(n,e),confirm:g}),()=>[Zr(IWt,{question:t,onAnswer:e=>z(u)(n,e),onConfirm:g},null,8,[`question`,`onAnswer`])])])]))),128))],512),[[Ei,!r.value]]),Fn(H(`footer`,KWt,[Zr(z(Tu),{class:`ai-user-question-card__complete`,disabled:!z(s),size:`small`,theme:`primary`,onClick:g},{default:Pn(()=>[Zr(z(qie),{class:`ai-user-question-card__enter-icon`}),ei(` `+Ae(z(Hi)(`完成`)),1)]),_:1},8,[`disabled`]),Zr(z(Tu),{class:`ai-user-question-card__skip`,size:`small`,text:``,onClick:_},{default:Pn(()=>[Zr(z(Jie),{class:`ai-user-question-card__skip-icon`}),ei(` `+Ae(z(Hi)(`跳过`)),1)]),_:1})],512),[[Ei,!r.value]])],2))}}),JWt={class:`ai-delete-confirm`},YWt={class:`ai-delete-confirm__title`},XWt={class:`ai-delete-confirm__desc`},ZWt={class:`ai-delete-confirm__actions`},QWt=tr({__name:`delete-tool`,props:{description:{},id:{},name:{},disabled:{type:Boolean},tippyOptions:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=e,r=t,i=nr(`tippyRef`),a=mi(()=>({id:n.id,name:n.name,description:n.description,disabled:n.disabled,tippyOptions:n.tippyOptions})),o=mi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),s=()=>{if(n.disabled)return!1},l=()=>{i.value?.hide?.()},u=()=>{l(),r(`confirm`)},d=()=>{l(),r(`cancel`)};return dr(()=>{l()}),(e,t)=>(B(),qr(z(sp),ai({ref_key:`tippyRef`,ref:i},o.value,{onShow:s}),{content:Pn(()=>[H(`div`,JWt,[H(`div`,YWt,Ae(z(Hi)(`确认删除该回答?`)),1),H(`div`,XWt,Ae(z(Hi)(`删除操作无法撤回,请谨慎操作!`)),1),H(`div`,ZWt,[Zr(z(Tu),{size:`small`,theme:`danger`,onClick:u},{default:Pn(()=>[ei(Ae(z(Hi)(`删除`)),1)]),_:1}),Zr(z(Tu),{size:`small`,onClick:d},{default:Pn(()=>[ei(Ae(z(Hi)(`取消`)),1)]),_:1})])])]),default:Pn(()=>[Zr(jp,Ce(Qr(a.value)),null,16)]),_:1},16))}}),$Wt={class:`ai-feedback-title`},eGt={class:`ai-feedback-reason-list`},tGt=[`onClick`],nGt={class:`ai-feedback-other`},rGt={class:`ai-feedback-footer`},iGt=tr({__name:`user-feedback`,props:{loading:{type:Boolean},reasonList:{},title:{}},emits:[`submit`,`cancel`],setup(e,{emit:t}){let n=t,r=un(``),i=un([]),a=e=>{i.value.includes(e)?i.value=i.value.filter(t=>t!==e):i.value=[...i.value,e]},o=()=>{n(`submit`,i.value,r.value)},s=()=>{i.value=[],r.value=``,n(`cancel`)};return(t,n)=>(B(),V(`div`,{class:`ai-user-feedback`,onMouseenter:n[1]||=Pi(()=>{},[`stop`,`prevent`])},[H(`div`,$Wt,Ae(e.title),1),H(`div`,eGt,[e.loading?(B(),V(zr,{key:0},mr(8,e=>H(`div`,{key:e,class:`reason-item ai-skeleton-element`})),64)):(B(!0),V(zr,{key:1},mr(e.reasonList,e=>(B(),V(`div`,{key:e,class:Se([`reason-item`,{"is-active":i.value.includes(e)}]),onClick:t=>a(e)},Ae(e),11,tGt))),128))]),H(`div`,nGt,[Zr(z(Iu),{modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,placeholder:z(Hi)(`说出您的想法`),rows:3,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),H(`div`,rGt,[Zr(z(Tu),{class:`custom-btn`,disabled:!r.value&&i.value.length===0,size:`small`,theme:`primary`,onClick:o},{default:Pn(()=>[ei(Ae(z(Hi)(`提交`)),1)]),_:1},8,[`disabled`]),Zr(z(Tu),{class:`custom-btn`,size:`small`,width:`80px`,onClick:s},{default:Pn(()=>[ei(Ae(z(Hi)(`取消`)),1)]),_:1})])],32))}}),aGt={ref:`messageToolsRef`,class:`message-tools-container`},oGt={class:`message-tools`,style:{"margin-right":`8px`}},sGt={key:0,class:`ai-divider`,style:{"margin-right":`8px`}},cGt={class:`message-tools`},lGt=tr({__name:`message-tools`,props:{messageTools:{default:()=>aie},messageToolsStatus:{},onAction:{},tippyOptions:{},updateTools:{default:()=>sie}},emits:[`feedback`],setup(e,{emit:t}){let n=e,r=t,i=nr(`feedbackTippyRef`),a=un(!1),o=un([]),s=un(null),l=mi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),u=async e=>{if(e.id===`like`||e.id===`unlike`){try{a.value=!0,o.value=[],o.value=await n.onAction?.(e)||[]}finally{a.value=!1}return}await n.onAction?.(e)},d=async e=>{await n.onAction?.(e)},f=()=>{i.value?.forEach(e=>e?.hide?.())},p=e=>s.value?s.value===`like`&&e===`like`?`activeLike`:s.value===`unlike`&&e===`unlike`?`activeUnLike`:e:e,m=e=>{let t=p(e);return t===`activeLike`?Hi(`取消满意`):t===`activeUnLike`?Hi(`取消不满意`):n.updateTools?.find(e=>e.id===t)?.description||``},h=(e,t,n)=>{f(),s.value===e.id?s.value=null:s.value=e.id,r(`feedback`,e,t,n)},g=e=>{if(n.messageToolsStatus===w9.Disabled)return!1;if(s.value&&s.value===e)return s.value=null,!1};return dr(()=>{f(),o.value=[]}),(t,n)=>(B(),V(`div`,aGt,[H(`div`,oGt,[(B(!0),V(zr,null,mr(e.messageTools,t=>(B(),V(zr,{key:t.id},[t.id===`delete`?(B(),qr(QWt,ai({key:0,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),qr(jp,ai({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))]),e.updateTools.length>0?(B(),V(`div`,sGt)):ti(`v-if`,!0),H(`div`,cGt,[(B(!0),V(zr,null,mr(e.updateTools,t=>(B(),V(zr,{key:t.id},[t.id===`like`||t.id===`unlike`?(B(),qr(z(sp),ai({key:0,ref_for:!0,ref_key:`feedbackTippyRef`,ref:i},{ref_for:!0},l.value,{onShow:e=>g(t.id)}),{content:Pn(()=>[Zr(iGt,{loading:a.value,"reason-list":o.value,title:t.id===`like`?z(Hi)(`什么原因让你满意?`):z(Hi)(`什么原因让你不满意?`),onCancel:f,onSubmit:(e,n)=>h(t,e,n)},null,8,[`loading`,`reason-list`,`title`,`onSubmit`])]),default:Pn(()=>[Zr(jp,ai({ref_for:!0},t,{id:p(t.id),active:s.value===t.id,disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":{...e.tippyOptions,content:m(t.id)},onClick:e=>u(t)}),null,16,[`id`,`active`,`disabled`,`tippy-options`,`onClick`])]),_:2},1040,[`onShow`])):t.id===`delete`?(B(),qr(QWt,ai({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),qr(jp,ai({key:2,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))])],512))}}),T9=tr({name:`HighlightKeyword`,props:{text:{type:String,required:!0}},setup(e){let t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=tEe(),r=mi(()=>{if(!e.text||!n?.value)return e.text;let r=n.value.trim();if(!r)return e.text;let i=RegExp(`(${t(r)})`,`ig`),a=e.text?.toString().split(i);return a.length<=1?e.text:a.map(e=>i.test(e)?U(`span`,{class:lie},e):e)});return()=>U(`span`,r.value)}}),uGt={class:`ai-activity-message`},dGt={class:`ai-activity-message-content`},fGt=tr({__name:`activity-layout`,props:Sr({activityType:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=Ar(e,`collapsed`);return(n,r)=>(B(),V(`div`,uGt,[H(`div`,{class:`ai-activity-message-title`,onClick:r[0]||=e=>t.value=!t.value},[gr(n.$slots,`title`,Ce(Qr({collapsed:t.value}))),e.activityType===z(Gi).FlowAgent?ti(`v-if`,!0):(B(),V(`span`,{key:0,class:Se([`ai-activity-message-title-icon collapsed-icon`,{"is-collapsed":t.value}])},[Zr(z(ea))],2))]),Fn(H(`div`,dGt,[gr(n.$slots,`default`)],512),[[Ei,!t.value]])]))}}),E9=[{color:`#3A84FF`,icon:null,key:`running`,label:Hi(`执行中`),rawStates:[`CREATED`,`LOOP_READY`,`READY`,`RUNNING`,`BLOCKED`,`ROLLING_BACK`,`ROLL_BACK_SUCCESS`]},{color:`#65C389`,icon:bie,key:`success`,label:Hi(`成功`),rawStates:[`FINISHED`]},{color:`#EA3636`,icon:xie,key:`failed`,label:Hi(`失败`),rawStates:[`FAILED`,`REVOKED`,`ROLL_BACK_FAILED`]},{color:`#F59500`,icon:Sie,key:`suspended`,label:Hi(`挂起`),rawStates:[`SUSPENDED`]},{color:`#4D4F56`,dotColor:`#DCDEE5`,icon:Cie,key:`pending`,label:Hi(`待执行`),rawStates:[`PENDING`]},{color:`#5B7290`,icon:wie,key:`skipped`,label:Hi(`跳过`),rawStates:[`SKIPPED`]}],pGt=Object.fromEntries(E9.map(e=>[e.key,e])),mGt=Object.fromEntries(E9.flatMap(e=>e.rawStates.map(t=>[t,e.key]))),hGt=e=>mGt[e]??`running`,gGt=e=>pGt[e].dotColor??pGt[e].color,_Gt=e=>{let t=pGt[e].icon;return t?$r(t):null},vGt=e=>{let t=mi(()=>Array.isArray(e.value)?e.value:[e.value??{}]),n=un({}),r=e=>n.value[e.task_id]!==!1;return{isTaskExpanded:r,taskList:t,toggleTaskExpanded:e=>{n.value={...n.value,[e.task_id]:!r(e)}},viewTasks:mi(()=>t.value.map(e=>{let t=Object.values(e.nodes??{}).map(e=>{let t=hGt(e.state);return{convergedState:t,dotColor:gGt(t),elapsedTimeText:Qre(e.elapsed_time),id:e.id,name:e.name,raw:e,retryable:!!e.retryable,skippable:!!e.skippable}}),n=t.reduce((e,t)=>e+t.raw.elapsed_time,0),r=hGt(e.task_state??``);return{convergedState:r,hasConfidence:!!e.has_confidence,confidenceTitle:e.confidence_title,isActive:!!e.is_active,nodes:t,raw:e,stateIcon:_Gt(r),taskId:e.task_id,taskName:e.task_name,totalTimeText:Qre(n)}})),visibleStats:mi(()=>{let e={};for(let t of E9)e[t.key]=0;for(let n of t.value)for(let[t,r]of Object.entries(n.statistics?.state_counts??{}))e[hGt(t)]+=r;return E9.filter(t=>e[t.key]>0).map(t=>({color:t.color,display:e[t.key]>99?`99+`:String(e[t.key]),dotColor:gGt(t.key),key:t.key,label:t.label}))})}},yGt=[{icon:oae,id:Ji.FlowNodeRetry,label:()=>Hi(`重试`),visible:e=>e.convergedState===`failed`&&e.retryable},{icon:Jie,id:Ji.FlowNodeSkip,label:()=>Hi(`跳过`),visible:e=>e.convergedState===`failed`&&e.skippable}],bGt=e=>{let{onInterruptResume:t,openNodeDetail:n}=e,r=(e,n,r)=>{t.value?.({payload:{node_id:r.id,task_id:n.task_id},operation:e})};return{getNodeActions:(e,t)=>{let i=yGt.filter(e=>e.visible(t)).map(n=>({icon:n.icon,id:n.id,label:n.label(),run:()=>r(n.id,e.raw,t.raw)}));return i.push({icon:$i,id:`detail`,label:Hi(`详情`),run:()=>n(e.raw,t.raw)}),i}}},xGt={class:`ai-detail-section`},SGt={class:`section-heading`},CGt={class:`section-text`},D9=tr({__name:`detail-section`,props:{title:{}},setup(e){return(t,n)=>(B(),V(`div`,xGt,[H(`div`,SGt,[n[0]||=H(`span`,{class:`section-bar`},null,-1),H(`span`,CGt,Ae(e.title),1)]),gr(t.$slots,`default`)]))}}),wGt={class:`ai-simple-table`},TGt={key:0},EGt=[`colspan`],DGt=tr({__name:`simple-table`,props:{columns:{},data:{}},setup(e){return(t,n)=>(B(),V(`table`,wGt,[H(`thead`,null,[H(`tr`,null,[(B(!0),V(zr,null,mr(e.columns,e=>(B(),V(`th`,{key:e.key},Ae(e.label),1))),128))])]),H(`tbody`,null,[(B(!0),V(zr,null,mr(e.data,(t,n)=>(B(),V(`tr`,{key:n},[(B(!0),V(zr,null,mr(e.columns,e=>(B(),V(`td`,{key:e.key,class:Se({"is-break-all":e.breakAll})},Ae(t[e.key]??`--`),3))),128))]))),128)),e.data.length?ti(`v-if`,!0):(B(),V(`tr`,TGt,[H(`td`,{class:`is-empty`,colspan:e.columns.length},` -- `,8,EGt)]))])]))}}),OGt={class:`flow-agent-node-detail`},kGt={class:`detail-title`},AGt={key:1,class:`detail-title-content`},jGt={class:`detail-tab-bar`},MGt=[`onClick`],NGt={class:`detail-body`},PGt={class:`skeleton-section`},FGt={class:`skeleton-section`},IGt={class:`info-form`},LGt={class:`info-label`},RGt={class:`info-value`},zGt={class:`info-row`},BGt={class:`info-label`},VGt={class:`info-value`},HGt={key:0,class:`failure-item`},UGt={key:1,class:`failure-item`},WGt={class:`info-row`},GGt={class:`info-label`},KGt={class:`info-value`},qGt={key:0,class:`skeleton-section`},O9=function(e){return e.Config=`config`,e.Output=`output`,e}(O9||{}),JGt=tr({__name:`flow-agent-node-detail`,props:{data:{},has_confidence:{type:Boolean},loading:{type:Boolean},node_id:{},node_name:{},task_id:{},task_name:{}},setup(e){let t=[{key:O9.Config,label:Hi(`节点配置`)},{key:O9.Output,label:Hi(`节点输出`)}],n=[{key:`key`,label:Hi(`参数名`)},{breakAll:!0,key:`value`,label:Hi(`参数值`)}],r=[{key:`name`,label:Hi(`名称`)},{key:`description`,label:Hi(`变量说明`)},{key:`key`,label:`KEY`}],i=[{key:`key`,label:Hi(`参数名`)},{breakAll:!0,key:`value`,label:Hi(`参数值`)}],a={forced_fail:Vi?`Force Fail`:`强制失败`},o=e,s=un(O9.Config),l=mi(()=>o.data?.basic_info),u=mi(()=>{let e=l.value;return e?[{label:Hi(`流程模板`),value:e.template_name||`--`},{label:Hi(`节点名称`),value:e.node_name||`--`},{label:Hi(`步骤名称`),value:e.stage_name||`--`},{label:Hi(`是否可选`),value:e.optional?Hi(`是`):Hi(`否`)}]:[]}),d=mi(()=>{let e=l.value;return e?.skippable||e?.auto_retry?.enable}),f=mi(()=>{let e=l.value?.auto_retry;return e?.enable?Vi?`In ${e.interval} seconds, auto retry ${e.times} times`:`在 ${e.interval} 秒后,自动重试 ${e.times} 次`:``}),p=mi(()=>{let e=l.value?.timeout_config;if(!e?.enable)return`--`;let t=a[e.action]??e.action;return Vi?`Timeout ${e.seconds} seconds later, ${t}`:`超时 ${e.seconds} 秒后则${t}`}),m=mi(()=>Object.entries(o.data?.inputs??{}).map(([e,t])=>({key:e,value:_(t)}))),h=mi(()=>(o.data?.plugin_output??[]).map(e=>({description:e.schema?.description||`--`,name:e.name,key:e.key}))),g=mi(()=>(o.data?.outputs??[]).map(e=>({key:e.key,value:_(e.value)}))),_=e=>e==null?`--`:typeof e==`object`?JSON.stringify(e):String(e);return(a,o)=>(B(),V(`div`,OGt,[H(`h3`,kGt,[e.loading?(B(),V(zr,{key:0},[H(`span`,null,Ae(z(Hi)(`节点`))+`:`,1),o[0]||=H(`span`,{class:`skeleton-title ai-skeleton-element`},null,-1)],64)):(B(),V(`div`,AGt,Ae(z(Hi)(`节点`))+`:`+Ae(l.value?.node_name),1)),gr(a.$slots,`locateButton`)]),H(`div`,jGt,[(B(),V(zr,null,mr(t,e=>H(`div`,{key:e.key,class:Se([`detail-tab`,{"is-active":s.value===e.key}]),onClick:t=>s.value=e.key},[(B(),qr(fr(e.key===O9.Config?z(Eie):z($i)),{class:`detail-tab-icon`})),ei(` `+Ae(e.label),1)],10,MGt)),64))]),H(`div`,NGt,[s.value===O9.Config?(B(),V(zr,{key:0},[e.loading?(B(),V(zr,{key:0},[H(`div`,PGt,[o[1]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(zr,null,mr(6,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))]),H(`div`,FGt,[o[2]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(zr,null,mr(4,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])],64)):(B(),V(zr,{key:1},[Zr(D9,{title:z(Hi)(`基础信息`)},{default:Pn(()=>[H(`div`,IGt,[(B(!0),V(zr,null,mr(u.value,e=>(B(),V(`div`,{key:e.label,class:`info-row`},[H(`div`,LGt,Ae(e.label),1),H(`div`,RGt,Ae(e.value),1)]))),128)),H(`div`,zGt,[H(`div`,BGt,Ae(z(Hi)(`失败处理`)),1),H(`div`,VGt,[d.value?(B(),V(zr,{key:0},[l.value?.skippable?(B(),V(`span`,HGt,[o[3]||=H(`span`,{class:`tag-badge`},`MS`,-1),ei(` `+Ae(z(Hi)(`手动跳过`))+Ae(l.value?.auto_retry?.enable?`;`:``),1)])):ti(`v-if`,!0),l.value?.auto_retry?.enable?(B(),V(`span`,UGt,[o[4]||=H(`span`,{class:`tag-badge`},`AR`,-1),ei(` `+Ae(f.value),1)])):ti(`v-if`,!0)],64)):(B(),V(zr,{key:1},[ei(`--`)],64))])]),H(`div`,WGt,[H(`div`,GGt,Ae(z(Hi)(`超时控制`)),1),H(`div`,KGt,Ae(p.value),1)])])]),_:1},8,[`title`]),Zr(D9,{title:z(Hi)(`输入参数`)},{default:Pn(()=>[Zr(DGt,{columns:n,data:m.value},null,8,[`data`])]),_:1},8,[`title`]),Zr(D9,{title:z(Hi)(`输出参数`)},{default:Pn(()=>[Zr(DGt,{columns:r,data:h.value},null,8,[`data`])]),_:1},8,[`title`])],64))],64)):(B(),V(zr,{key:1},[e.loading?(B(),V(`div`,qGt,[o[5]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(zr,null,mr(5,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])):(B(),qr(D9,{key:1,title:z(Hi)(`结构化输出`)},{default:Pn(()=>[Zr(DGt,{columns:i,data:g.value},null,8,[`data`])]),_:1},8,[`title`]))],64))])]))}}),k9=e=>e.task_id==null?``:`${e.task_id}`,YGt=k9,XGt=(e,t)=>e.task_id==null?``:`${e.task_id}|${t.id}|${t.name}`,ZGt=e=>{let{messageUid:t,taskList:n}=e,r=FTe(),i=jTe(),a=mi(()=>r.selectedTab.value?.name??``),o=un(!1),s=()=>{o.value=!0},l=mi(()=>{if(o.value)return a.value;let e=n.value.find(e=>e.is_active);return e?.task_id==null?a.value:k9(e)}),u=e=>{let t=l.value;return t===k9(e)||t===YGt(e)},d=(e,t)=>l.value===XGt(e,t),f=(e,n)=>{let i=e.task_id;i!=null&&(s(),r.addCustomTab?.({label:n.name,name:XGt(e,n),data:{component:JGt,messageUid:t.value,props:{data:{},loading:!0,node_id:n.id,node_name:n.name,task_id:i,task_name:e.task_name}}}))},p=e=>{let n=e?.task_id;n&&(s(),r.addCustomTab?.({label:Hi(`有效证据`),name:YGt(e),data:{component:JGt,messageUid:t.value,props:{data:{},has_confidence:e.has_confidence,loading:!0,task_id:n,task_name:e.task_name}}}))};return Bn(a,(e,t)=>{t!==void 0&&s()}),lr(()=>{i?.value&&p(n.value.find(e=>e.is_active&&e.has_confidence))}),dr(()=>{if(i?.value)for(let e of n.value){r.removeCustomTab?.(k9(e)),r.removeCustomTab?.(YGt(e));for(let t of Object.values(e.nodes??{}))r.removeCustomTab?.(XGt(e,t))}}),{displaySelectedTabName:l,isNodeSelected:d,isTaskSelected:u,markUserTabSelection:s,openConfidence:p,openNodeDetail:f}},QGt={class:`ai-activity-message-title-text`},$Gt={class:`flow-agent-title-label`},eKt={class:`flow-agent-stat-tooltip`},tKt={class:`flow-agent-stat-tooltip-status`},nKt={class:`flow-agent-stat-tooltip-label`},rKt=[`onClick`],iKt={class:`flow-agent-task-state-icon`},aKt={class:`flow-agent-task-name`},oKt={key:0,class:`flow-agent-task-trailing`},sKt={class:`flow-agent-task-time`},cKt=[`onClick`],lKt={class:`flow-agent-task-nodes`},uKt={class:`flow-agent-node-status`},dKt=[`title`],fKt={key:0,class:`flow-agent-node-trailing`},pKt={class:`flow-agent-node-time`},mKt={class:`flow-agent-node-actions`},hKt=[`onClick`],gKt=tr({__name:`flow-agent-content`,props:Sr({content:{},messageUid:{},onInterruptResume:{type:Function},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=pp(),r=Ar(e,`collapsed`),i=$Te(),a=mi(()=>i.value!==Yi.Share),o=mi(()=>t.status===qi.Pending||t.status===qi.Streaming),{isTaskExpanded:s,taskList:l,toggleTaskExpanded:u,viewTasks:d,visibleStats:f}=vGt(hn(t,`content`)),{isNodeSelected:p,isTaskSelected:m,openConfidence:h,openNodeDetail:g}=ZGt({messageUid:hn(t,`messageUid`),taskList:l}),{getNodeActions:_}=bGt({onInterruptResume:hn(t,`onInterruptResume`),openNodeDetail:g});return(e,t)=>(B(),qr(fGt,{collapsed:r.value,"onUpdate:collapsed":t[0]||=e=>r.value=e,"activity-type":z(Gi).FlowAgent,class:`flow-agent-activity`},{title:Pn(()=>[ti(` hover 整条执行情况栏展示统计 tooltip(设计稿 annotation) `),Zr(z(sp),ai({class:`flow-agent-title-bar`,theme:`ai-chat-box-light light`},{...z(n),tag:`div`,arrow:!0,followCursor:!1,offset:[0,10]}),{content:Pn(()=>[H(`div`,eKt,[(B(!0),V(zr,null,mr(z(f),e=>(B(),V(`div`,{key:e.key,class:`flow-agent-stat-tooltip-item`},[H(`span`,tKt,[e.key===`running`?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:_e({borderColor:e.dotColor})},null,4))]),H(`span`,nKt,Ae(e.label)+`:`,1),H(`span`,{class:`flow-agent-stat-tooltip-count`,style:_e({color:e.color})},Ae(e.display),5)]))),128))])]),default:Pn(()=>[H(`span`,{class:Se([`ai-activity-message-title-icon`,{"icon-collapsed":r.value}])},[o.value?(B(),qr(of,{key:0,size:12})):(B(),qr(z(Qi),{key:1}))],2),H(`span`,QGt,[H(`span`,$Gt,Ae(z(Hi)(`执行情况`))+`:`,1),(B(!0),V(zr,null,mr(z(f),e=>(B(),V(`span`,{key:e.key,class:`flow-agent-stat-item`},[e.key===`running`?(B(),qr(z(_u),{key:0,class:`flow-agent-stat-loading`,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:_e({borderColor:e.dotColor})},null,4)),H(`span`,{class:`flow-agent-stat-count`,style:_e({color:e.color})},Ae(e.display),5)]))),128))])]),_:1},16)]),default:Pn(()=>[(B(!0),V(zr,null,mr(z(d),e=>(B(),V(`div`,{key:e.taskId,class:`flow-agent-task-group`},[H(`div`,{class:Se([`flow-agent-task-header`,{"has-confidence":e.hasConfidence,"is-selected":z(m)(e.raw)}])},[H(`span`,{class:Se([`flow-agent-task-arrow`,{"is-expanded":z(s)(e.raw)}]),onClick:Pi(t=>z(u)(e.raw),[`stop`])},[Zr(z(Qi))],10,rKt),H(`span`,iKt,[e.convergedState===`running`?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),qr(fr(e.stateIcon),{key:1}))]),Fn((B(),V(`span`,aKt,[Zr(z(T9),{text:e.taskName},null,8,[`text`])])),[[z(Ap),{...z(n)}]]),a.value?(B(),V(`span`,oKt,[H(`span`,sKt,Ae(e.totalTimeText),1),e.hasConfidence?(B(),V(`span`,{key:0,class:`flow-agent-task-action-btn flow-agent-task-confidence-btn`,onClick:Pi(t=>z(h)(e.raw),[`stop`])},[Zr(z($i)),ei(` `+Ae(e.confidenceTitle??z(Hi)(`有效证据`)),1)],8,cKt)):ti(`v-if`,!0)])):ti(`v-if`,!0)],2),Fn(H(`div`,lKt,[(B(!0),V(zr,null,mr(e.nodes,t=>(B(),V(`div`,{key:t.id,class:Se([`flow-agent-node-item`,{"is-selected":z(p)(e.raw,t.raw)}])},[H(`span`,uKt,[t.convergedState===`running`?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-status-dot`,style:_e({borderColor:t.dotColor})},null,4))]),Fn((B(),V(`span`,{class:`flow-agent-node-name`,title:t.name},[Zr(z(T9),{text:t.name},null,8,[`text`])],8,dKt)),[[z(Ap),{...z(n)}]]),a.value?(B(),V(`span`,fKt,[H(`span`,pKt,Ae(t.elapsedTimeText),1),H(`span`,mKt,[(B(!0),V(zr,null,mr(z(_)(e,t),e=>(B(),V(`span`,{key:e.id,class:`flow-agent-node-action-btn`,onClick:Pi(t=>e.run(),[`stop`])},[(B(),qr(fr(e.icon))),ei(` `+Ae(e.label),1)],8,hKt))),128))])])):ti(`v-if`,!0)],2))),128))],512),[[Ei,z(s)(e.raw)]])]))),128))]),_:1},8,[`collapsed`,`activity-type`]))}}),_Kt={class:`ai-activity-message-title-icon`},vKt={class:`ai-activity-message-title-text`},yKt={class:`knowledge-rag-content`},bKt=tr({__name:`knowledge-rag-content`,props:Sr({content:{},messageUid:{},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Ar(e,`collapsed`),r=mi(()=>t.status===qi.Pending||t.status===qi.Streaming),i=mi(()=>r.value?Hi(`检索中`):Hi(`检索完成`));return(t,a)=>(B(),qr(fGt,{collapsed:n.value,"onUpdate:collapsed":a[0]||=e=>n.value=e},{title:Pn(()=>[H(`span`,_Kt,[r.value?(B(),qr(of,{key:0})):(B(),qr(z(Zi),{key:1,style:{"font-size":`12px`}}))]),H(`span`,vKt,Ae(i.value),1)]),default:Pn(()=>[H(`div`,yKt,[Zr(n9,{content:e.content?.content||``},null,8,[`content`])]),Zr(r9,{content:e.content?.referenceDocument||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),xKt={class:`ai-activity-message-title-icon`},SKt={class:`ai-activity-message-title-text`},CKt=tr({__name:`reference-doc-content`,props:Sr({content:{},messageUid:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Ar(e,`collapsed`),r=mi(()=>{let e=t.content?.length??0;return Vi?`Reference ${e} documents as reference`:`引用 ${e} 篇资料作为参考`});return(t,i)=>(B(),qr(fGt,{collapsed:n.value,"onUpdate:collapsed":i[0]||=e=>n.value=e},{title:Pn(()=>[H(`span`,xKt,[Zr(z(Zi),{style:{"font-size":`12px`}})]),H(`span`,SKt,Ae(r.value),1)]),default:Pn(()=>[Zr(r9,{content:e.content||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),wKt=tr({__name:`activity-message`,props:Sr({activityType:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t={[Gi.FlowAgent]:gKt,[Gi.KnowledgeRag]:bKt,[Gi.ReferenceDocument]:CKt},n=e,r=Ar(e,`collapsed`),i=mi(()=>t[n.activityType??``]);return(t,n)=>i.value?(B(),qr(fr(i.value),{key:0,collapsed:r.value,"onUpdate:collapsed":n[0]||=e=>r.value=e,content:e.content,"message-uid":e.uid,"on-interrupt-resume":e.onInterruptResume,status:e.status},null,40,[`collapsed`,`content`,`message-uid`,`on-interrupt-resume`,`status`])):ti(`v-if`,!0)}}),TKt={class:`toolcall-desc`},EKt={class:`desc-title`},DKt={class:`desc-panel`},OKt={class:`desc-label`},kKt={class:`desc-value`},A9=tr({__name:`desc-panel`,props:{desc:{},title:{}},setup(e){let t=e,n=e=>e==null?``:typeof e==`object`?JSON.stringify(e):String(e),r=mi(()=>{try{return JSON.parse(t.desc||``)}catch{return t.desc}});return(t,i)=>(B(),V(`div`,TKt,[H(`div`,EKt,Ae(e.title),1),H(`div`,DKt,[ti(` null 的 typeof 为 object,需排除,避免 v-for 异常;键/值统一转字符串以满足 HighlightKeyword `),r.value!==null&&typeof r.value==`object`?(B(!0),V(zr,{key:0},mr(r.value,(e,t)=>(B(),V(`div`,{key:t,class:`desc-panel-item`},[H(`span`,OKt,[Zr(z(T9),{text:String(t)},null,8,[`text`]),i[0]||=ei(`:`,-1)]),H(`span`,kKt,[Zr(z(T9),{style:{"word-break":`break-all`},text:n(e)},null,8,[`text`])])]))),128)):(B(),qr(z(T9),{key:1,style:{wordBreak:`break-all`},text:n(r.value)},null,8,[`text`]))])]))}}),AKt={class:`tool-message`},jKt=tr({__name:`tool-message`,props:{duration:{},error:{type:[Boolean,String]},toolCallId:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,AKt,[Zr(A9,{desc:e.content||(typeof e.error==`string`?e.error:void 0),title:z(Hi)(`返回内容`)},null,8,[`desc`,`title`])]))}}),MKt={class:`ai-toolcall-render`},NKt={class:`toolcall-header-title`},PKt={class:`toolcall-status-title`},FKt={key:1,class:`toolcall-duration`},IKt={class:`ai-toolcall-render-content`},LKt=tr({__name:`toolcall-render`,props:{duration:{},status:{},toolCall:{}},setup(e){let t=e,n=un(!0),r=un(null),i=pp(),{keywordMatched:a,keyword:o}=nEe(()=>[t.toolCall?.function.name,t.toolCall?.function.mcpName,t.toolCall?.function.description,t.toolCall?.function.arguments,t.toolCall?.id]),s=mi(()=>r.value===null?o?.value?.trim()?!a.value:n.value:r.value);function l(){n.value=!s.value,r.value=n.value}let u=mi(()=>{let e=t.toolCall?.function.mcpName||``,n=t.toolCall?.function.name||t.toolCall?.id||``;return e?`${e} / ${n}`:n}),d=mi(()=>{switch(t.status){default:case qi.Pending:return Hi(`调用中`);case qi.Complete:case qi.Success:return Hi(`调用成功`);case qi.Error||t.toolCall?.toolMessage?.error:return Hi(`调用失败`)}}),f=mi(()=>{let e=t.duration||t.toolCall?.toolMessage?.duration;return e?Zre(e):``});return(t,n)=>(B(),V(`div`,MKt,[H(`div`,{class:Se([`ai-toolcall-render-header`,`toolcall-status-${e.status}`]),onClick:l},[Zr(z(Qi),{class:Se({"is-collapsed":s.value})},null,8,[`class`]),ei(` `+Ae(e.toolCall?.function.mcpName?z(Hi)(`调用 MCP:`):z(Hi)(`调用工具:`))+` `,1),Fn((B(),V(`span`,NKt,[Zr(z(T9),{text:u.value},null,8,[`text`])])),[[z(Ap),{...z(i),text:u.value,appendTo:`parent`}]]),H(`span`,PKt,[e.status===z(qi).Pending||e.status===z(qi).Streaming?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):ti(`v-if`,!0),Zr(z(T9),{text:d.value},null,8,[`text`]),f.value?(B(),V(`span`,FKt,` (`+Ae(f.value)+`) `,1)):ti(`v-if`,!0)])],2),Fn(H(`div`,IKt,[Zr(A9,{desc:e.toolCall?.function.description,title:z(Hi)(`描述`)},null,8,[`desc`,`title`]),Zr(A9,{desc:e.toolCall?.function.arguments,title:z(Hi)(`参数`)},null,8,[`desc`,`title`]),e.toolCall?.toolMessage?(B(),qr(jKt,Ce(ai({key:0},e.toolCall.toolMessage)),null,16)):ti(`v-if`,!0)],512),[[Ei,!s.value]])]))}}),RKt={class:`ai-assistant-message`},zKt={class:`ai-assistant-message-content`},BKt=tr({__name:`assistant-message`,props:{toolCalls:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,RKt,[H(`div`,zKt,[gr(t.$slots,`default`,Ce(Qr({content:e.content})),()=>[Zr(i9,{content:e.content||``,status:e.status,type:z(Gi).Text},null,8,[`content`,`status`,`type`])])]),e.toolCalls&&e.toolCalls.length>0?(B(!0),V(zr,{key:0},mr(e.toolCalls,t=>(B(),qr(LKt,{key:t.id,status:e.status,"tool-call":t},null,8,[`status`,`tool-call`]))),128)):ti(`v-if`,!0)]))}}),VKt={class:`info-message`},HKt=tr({__name:`info-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,VKt,[(B(!0),V(zr,null,mr(Array.isArray(e.content)?e.content:[e.content],(e,t)=>(B(),V(`div`,{key:t,class:`info-message-content`},Ae(e),1))),128))]))}}),UKt={class:`ai-tool-approval-card`},WKt={class:`ai-tool-approval-card__header`},GKt={class:`ai-tool-approval-card__title-wrap`},KKt={class:`ai-tool-approval-card__title`},qKt={class:`ai-tool-approval-card__fields`},JKt={class:`ai-tool-approval-card__field`},YKt={class:`ai-tool-approval-card__field`},XKt={class:`ai-tool-approval-card__processor`},ZKt={class:`ai-tool-approval-card__processor-text`},QKt={class:`ai-tool-approval-card__actions`},$Kt=tr({__name:`tool-approval-card`,props:{interrupt:{},onInterruptResume:{type:Function},readonly:{type:Boolean}},setup(e){let t=e,n=pp(),{copy:r}=up(),i=new Set([Ui.PENDING,Ui.DRAFT]),a=new Set([Ui.ABANDONED,Ui.CANCELLED,Ui.EXPIRED,Ui.REJECTED]),o=mi(()=>t.interrupt.metadata?.ticket??{approvers:[],sn:``,status:Ui.PENDING,submit_time:``,title:``,url:``}),s=mi(()=>i.has(o.value.status)),l=mi(()=>s.value?`pending`:o.value.status),u=mi(()=>s.value?Hi(`评审中`):eie[o.value.status]??o.value.status),d=mi(()=>o.value.approvers.filter(Boolean).join(`、`)||Hi(`无`)),f=mi(()=>o.value.url||o.value.sn),p=()=>{o.value.url&&window.open(o.value.url,`_blank`,`noopener`)},m=()=>{f.value&&r(f.value)},h=()=>{t.onInterruptResume?.({operation:Ji.ApprovalCancel,payload:{interrupt_id:t.interrupt.id}},t.interrupt)};return(t,r)=>(B(),V(`section`,UKt,[H(`header`,WKt,[H(`div`,GKt,[r[0]||=H(`span`,{class:`ai-tool-approval-card__title-bar`},null,-1),H(`span`,KKt,Ae(o.value.title||z(Hi)(`算法方案评审单`)),1),Fn(Zr(z(iae),{class:Se([`ai-tool-approval-card__copy-icon`,{"is-disabled":!f.value}]),onClick:m},null,8,[`class`]),[[z(cp),{...z(n),content:z(Hi)(`复制单据链接`),theme:`ai-chat-box`,offset:[0,8]}]])]),H(`span`,{class:Se([`ai-tool-approval-card__status`,`ai-tool-approval-card__status--${l.value}`])},[o.value.status===z(Ui).APPROVED?(B(),qr(z(Vie),{key:0,class:`ai-tool-approval-card__status-icon`})):z(a).has(o.value.status)?(B(),qr(z(Uie),{key:1,class:`ai-tool-approval-card__status-icon`})):o.value.status===z(Ui).REVOKED?(B(),qr(z(Wie),{key:2,class:Se([`ai-tool-approval-card__status-icon`,{"ai-tool-approval-card__status-icon--revoked":o.value.status===z(Ui).REVOKED}])},null,8,[`class`])):(B(),qr(z(_u),{key:3,class:`ai-tool-approval-card__status-icon`,mode:`spin`,size:`mini`,theme:`primary`})),ei(` `+Ae(u.value),1)],2)]),H(`dl`,qKt,[H(`div`,JKt,[H(`dt`,null,Ae(z(Hi)(`单据编号`)),1),H(`dd`,null,Ae(o.value.sn||`--`),1)]),H(`div`,YKt,[H(`dt`,null,Ae(z(Hi)(`提交时间`)),1),H(`dd`,null,Ae(o.value.submit_time||`--`),1)])]),H(`div`,XKt,[Zr(z(Hie),{class:`ai-tool-approval-card__processor-icon`}),Fn((B(),V(`span`,ZKt,[ei(Ae(z(Hi)(`当前处理人`))+`:`+Ae(d.value),1)])),[[z(Ap),{...z(n)}]])]),H(`div`,QKt,[Zr(z(Tu),{class:`ai-tool-approval-card__detail`,disabled:!o.value.url,theme:`primary`,onClick:p},{default:Pn(()=>[ei(Ae(z(Hi)(`查看单据详情`))+` `,1),r[1]||=H(`span`,{class:`ai-tool-approval-card__detail-icon`},null,-1)]),_:1},8,[`disabled`]),s.value&&!e.readonly?(B(),qr(z(Tu),{key:0,class:`ai-tool-approval-card__cancel`,outline:``,theme:`primary`,onClick:h},{default:Pn(()=>[ei(Ae(z(Hi)(`取消审批`)),1)]),_:1})):ti(`v-if`,!0)])]))}}),eqt={class:`ai-interrupt-message`},tqt={key:0,class:`ai-interrupt-message__content`},nqt={class:`ai-interrupt-message__fallback`},rqt=tr({__name:`interrupt-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},setup(e){let t={[Wi.AIDevToolApproval]:$Kt},n=e=>({id:e.interruptId||e.id||``,reason:Wi.AIDevToolApproval,toolCallId:``,metadata:e.payload.metadata}),r={[Wi.AIDevToolApproval]:e=>({component:$Kt,props:{interrupt:n(e),readonly:!0}}),[Wi.UserQuestion]:e=>({component:AWt,props:{answers:e.payload?.answers??[],status:e.status}})},i=new Set([Wi.UserQuestion]),a=e,o=mi(()=>a.content?.outcome?.type===`interrupt`?a.content.outcome.interrupts:[]),s=mi(()=>a.content?.message),l=e=>t[e.reason],u=e=>i.has(e.reason),d=mi(()=>{if(a.content?.outcome?.type!==`success`)return;let e=a.content?.result;if(e)return r[e.reason]?.(e)});return(t,n)=>(B(),V(`div`,eqt,[s.value?(B(),V(`div`,tqt,Ae(s.value),1)):ti(`v-if`,!0),(B(!0),V(zr,null,mr(o.value,t=>(B(),V(zr,{key:t.toolCallId},[l(t)?(B(),qr(fr(l(t)),{key:0,interrupt:t,"on-interrupt-resume":e.onInterruptResume},null,40,[`interrupt`,`on-interrupt-resume`])):u(t)?ti(`v-if`,!0):(B(),V(zr,{key:1},[ti(` UserQuestion 的交互浮层渲染在 chat-input 上方,不在会话内渲染 `),H(`div`,nqt,Ae(t.message||z(Hi)(`暂不支持的中断消息`)),1)],2112))],64))),128)),ti(` outcome.success 时按 reason 在会话内回显 resume 结果(审批单 / 已回答内容等) `),d.value?(B(),qr(fr(d.value.component),Ce(ai({key:1},d.value.props)),hr({_:2},[t.$slots.answeredQuestion?{name:`answer`,fn:Pn(e=>[gr(t.$slots,`answeredQuestion`,Ce(Qr(e)))]),key:`0`}:void 0]),1040)):ti(`v-if`,!0)]))}}),iqt={class:`ai-loading-message`},aqt=tr({__name:`loading-message`,setup(e){return(e,t)=>(B(),V(`div`,iqt,[Zr(of,{size:18}),gr(e.$slots,`default`,{},()=>[ei(Ae(z(Hi)(`请求中...`)),1)])]))}}),oqt={class:`ai-reasoning-message`},sqt={key:0,class:`ai-reasoning-message-title-icon`},cqt={class:`ai-reasoning-message-title-text`},lqt={class:`ai-reasoning-message-content`},uqt=tr({__name:`reasoning-message`,props:Sr({duration:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Ar(e,`collapsed`),{stop:r}=Bn(()=>t.duration,async e=>{e&&(n.value=!0,await kn(),r?.())},{immediate:!0}),i=mi(()=>{switch(t.status){case qi.Pending:return Hi(`思考中`);case qi.Success:case qi.Complete:return Hi(`已思考完成`)+(t.duration?` (${Hi(`耗时`)} :${Zre(t.duration)})`:``);case qi.Error:return Hi(`思考失败`);default:return Hi(`思考中`)}});return(t,r)=>(B(),V(`div`,oqt,[H(`div`,{class:Se([`ai-reasoning-message-title`,{"ai-reasoning-message-title-collapsed":n.value,"is-thinking":e.status===z(qi).Pending||e.status===z(qi).Streaming,"is-complete":e.status===z(qi).Complete||e.status===z(qi).Success,"is-error":e.status===z(qi).Error}]),onClick:r[0]||=e=>n.value=!n.value},[e.status===z(qi).Pending||e.status===z(qi).Streaming?(B(),V(`span`,sqt,[Zr(of)])):ti(`v-if`,!0),H(`span`,cqt,Ae(i.value),1),ti(` <template v-if="status === MessageStatus.Pending || status === MessageStatus.Streaming">
|
|
3492
|
+
</span> `)]),H(`div`,zWt,[H(`span`,BWt,Ae(z(a))+` / `+Ae(z(o)),1),Zr(z(Nie),{class:`ai-user-question-card__arrow`,style:_e({transform:r.value?`rotate(180deg)`:`rotate(-90deg)`}),onClick:Pi(m,[`stop`])},null,8,[`style`])])]),ti(` 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 `),Fn(H(`div`,VWt,[(B(!0),V(zr,null,mr(z(i),(t,n)=>(B(),V(`div`,{key:n,class:`ai-user-question-card__question`},[H(`div`,HWt,[H(`span`,UWt,Ae(n+1)+`. `+Ae(t.question),1),t.multiSelect===void 0?ti(`v-if`,!0):(B(),V(`span`,WWt,Ae(t.multiSelect?z(Hi)(`多选`):z(Hi)(`单选`)),1))]),H(`div`,GWt,[ti(` 默认渲染选择题;业务方可覆盖此 slot 渲染任意表单,作答有效时通过 setAnswer 回传 `),gr(e.$slots,`question`,ai({ref_for:!0},{question:t,qIndex:n,answer:z(l)(n),setAnswer:e=>z(u)(n,e),confirm:_}),()=>[Zr(IWt,{question:t,onAnswer:e=>z(u)(n,e),onConfirm:_},null,8,[`question`,`onAnswer`])])])]))),128))],512),[[Ei,!r.value]]),Fn(H(`footer`,KWt,[Zr(z(Tu),{class:`ai-user-question-card__complete`,disabled:!z(s)||g.value===`skip`,loading:g.value===`complete`,size:`small`,theme:`primary`,onClick:_},{default:Pn(()=>[g.value===`complete`?ti(`v-if`,!0):(B(),qr(z(qie),{key:0,class:`ai-user-question-card__enter-icon`})),ei(` `+Ae(z(Hi)(`完成`)),1)]),_:1},8,[`disabled`,`loading`]),Zr(z(Tu),{class:`ai-user-question-card__skip`,disabled:g.value===`complete`,loading:g.value===`skip`,size:`small`,text:``,onClick:v},{default:Pn(()=>[g.value===`skip`?ti(`v-if`,!0):(B(),qr(z(Jie),{key:0,class:`ai-user-question-card__skip-icon`})),ei(` `+Ae(z(Hi)(`跳过`)),1)]),_:1},8,[`disabled`,`loading`])],512),[[Ei,!r.value]])],2))}}),JWt={class:`ai-delete-confirm`},YWt={class:`ai-delete-confirm__title`},XWt={class:`ai-delete-confirm__desc`},ZWt={class:`ai-delete-confirm__actions`},QWt=tr({__name:`delete-tool`,props:{description:{},id:{},name:{},disabled:{type:Boolean},tippyOptions:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=e,r=t,i=nr(`tippyRef`),a=mi(()=>({id:n.id,name:n.name,description:n.description,disabled:n.disabled,tippyOptions:n.tippyOptions})),o=mi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),s=()=>{if(n.disabled)return!1},l=()=>{i.value?.hide?.()},u=()=>{l(),r(`confirm`)},d=()=>{l(),r(`cancel`)};return dr(()=>{l()}),(e,t)=>(B(),qr(z(sp),ai({ref_key:`tippyRef`,ref:i},o.value,{onShow:s}),{content:Pn(()=>[H(`div`,JWt,[H(`div`,YWt,Ae(z(Hi)(`确认删除该回答?`)),1),H(`div`,XWt,Ae(z(Hi)(`删除操作无法撤回,请谨慎操作!`)),1),H(`div`,ZWt,[Zr(z(Tu),{size:`small`,theme:`danger`,onClick:u},{default:Pn(()=>[ei(Ae(z(Hi)(`删除`)),1)]),_:1}),Zr(z(Tu),{size:`small`,onClick:d},{default:Pn(()=>[ei(Ae(z(Hi)(`取消`)),1)]),_:1})])])]),default:Pn(()=>[Zr(jp,Ce(Qr(a.value)),null,16)]),_:1},16))}}),$Wt={class:`ai-feedback-title`},eGt={class:`ai-feedback-reason-list`},tGt=[`onClick`],nGt={class:`ai-feedback-other`},rGt={class:`ai-feedback-footer`},iGt=tr({__name:`user-feedback`,props:{loading:{type:Boolean},reasonList:{},title:{}},emits:[`submit`,`cancel`],setup(e,{emit:t}){let n=t,r=un(``),i=un([]),a=e=>{i.value.includes(e)?i.value=i.value.filter(t=>t!==e):i.value=[...i.value,e]},o=()=>{n(`submit`,i.value,r.value)},s=()=>{i.value=[],r.value=``,n(`cancel`)};return(t,n)=>(B(),V(`div`,{class:`ai-user-feedback`,onMouseenter:n[1]||=Pi(()=>{},[`stop`,`prevent`])},[H(`div`,$Wt,Ae(e.title),1),H(`div`,eGt,[e.loading?(B(),V(zr,{key:0},mr(8,e=>H(`div`,{key:e,class:`reason-item ai-skeleton-element`})),64)):(B(!0),V(zr,{key:1},mr(e.reasonList,e=>(B(),V(`div`,{key:e,class:Se([`reason-item`,{"is-active":i.value.includes(e)}]),onClick:t=>a(e)},Ae(e),11,tGt))),128))]),H(`div`,nGt,[Zr(z(Iu),{modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,placeholder:z(Hi)(`说出您的想法`),rows:3,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),H(`div`,rGt,[Zr(z(Tu),{class:`custom-btn`,disabled:!r.value&&i.value.length===0,size:`small`,theme:`primary`,onClick:o},{default:Pn(()=>[ei(Ae(z(Hi)(`提交`)),1)]),_:1},8,[`disabled`]),Zr(z(Tu),{class:`custom-btn`,size:`small`,width:`80px`,onClick:s},{default:Pn(()=>[ei(Ae(z(Hi)(`取消`)),1)]),_:1})])],32))}}),aGt={ref:`messageToolsRef`,class:`message-tools-container`},oGt={class:`message-tools`,style:{"margin-right":`8px`}},sGt={key:0,class:`ai-divider`,style:{"margin-right":`8px`}},cGt={class:`message-tools`},lGt=tr({__name:`message-tools`,props:{messageTools:{default:()=>aie},messageToolsStatus:{},onAction:{},tippyOptions:{},updateTools:{default:()=>sie}},emits:[`feedback`],setup(e,{emit:t}){let n=e,r=t,i=nr(`feedbackTippyRef`),a=un(!1),o=un([]),s=un(null),l=mi(()=>({arrow:!1,interactive:!0,offset:[0,6],theme:`ai-chat-box-light light`,trigger:`click`,appendTo:()=>document.body,...n.tippyOptions||{}})),u=async e=>{if(e.id===`like`||e.id===`unlike`){try{a.value=!0,o.value=[],o.value=await n.onAction?.(e)||[]}finally{a.value=!1}return}await n.onAction?.(e)},d=async e=>{await n.onAction?.(e)},f=()=>{i.value?.forEach(e=>e?.hide?.())},p=e=>s.value?s.value===`like`&&e===`like`?`activeLike`:s.value===`unlike`&&e===`unlike`?`activeUnLike`:e:e,m=e=>{let t=p(e);return t===`activeLike`?Hi(`取消满意`):t===`activeUnLike`?Hi(`取消不满意`):n.updateTools?.find(e=>e.id===t)?.description||``},h=(e,t,n)=>{f(),s.value===e.id?s.value=null:s.value=e.id,r(`feedback`,e,t,n)},g=e=>{if(n.messageToolsStatus===w9.Disabled)return!1;if(s.value&&s.value===e)return s.value=null,!1};return dr(()=>{f(),o.value=[]}),(t,n)=>(B(),V(`div`,aGt,[H(`div`,oGt,[(B(!0),V(zr,null,mr(e.messageTools,t=>(B(),V(zr,{key:t.id},[t.id===`delete`?(B(),qr(QWt,ai({key:0,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),qr(jp,ai({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))]),e.updateTools.length>0?(B(),V(`div`,sGt)):ti(`v-if`,!0),H(`div`,cGt,[(B(!0),V(zr,null,mr(e.updateTools,t=>(B(),V(zr,{key:t.id},[t.id===`like`||t.id===`unlike`?(B(),qr(z(sp),ai({key:0,ref_for:!0,ref_key:`feedbackTippyRef`,ref:i},{ref_for:!0},l.value,{onShow:e=>g(t.id)}),{content:Pn(()=>[Zr(iGt,{loading:a.value,"reason-list":o.value,title:t.id===`like`?z(Hi)(`什么原因让你满意?`):z(Hi)(`什么原因让你不满意?`),onCancel:f,onSubmit:(e,n)=>h(t,e,n)},null,8,[`loading`,`reason-list`,`title`,`onSubmit`])]),default:Pn(()=>[Zr(jp,ai({ref_for:!0},t,{id:p(t.id),active:s.value===t.id,disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":{...e.tippyOptions,content:m(t.id)},onClick:e=>u(t)}),null,16,[`id`,`active`,`disabled`,`tippy-options`,`onClick`])]),_:2},1040,[`onShow`])):t.id===`delete`?(B(),qr(QWt,ai({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),qr(jp,ai({key:2,ref_for:!0},t,{disabled:e.messageToolsStatus===z(w9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))])],512))}}),T9=tr({name:`HighlightKeyword`,props:{text:{type:String,required:!0}},setup(e){let t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=tEe(),r=mi(()=>{if(!e.text||!n?.value)return e.text;let r=n.value.trim();if(!r)return e.text;let i=RegExp(`(${t(r)})`,`ig`),a=e.text?.toString().split(i);return a.length<=1?e.text:a.map(e=>i.test(e)?U(`span`,{class:lie},e):e)});return()=>U(`span`,r.value)}}),uGt={class:`ai-activity-message`},dGt={class:`ai-activity-message-content`},fGt=tr({__name:`activity-layout`,props:Sr({activityType:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=Ar(e,`collapsed`);return(n,r)=>(B(),V(`div`,uGt,[H(`div`,{class:`ai-activity-message-title`,onClick:r[0]||=e=>t.value=!t.value},[gr(n.$slots,`title`,Ce(Qr({collapsed:t.value}))),e.activityType===z(Gi).FlowAgent?ti(`v-if`,!0):(B(),V(`span`,{key:0,class:Se([`ai-activity-message-title-icon collapsed-icon`,{"is-collapsed":t.value}])},[Zr(z(ea))],2))]),Fn(H(`div`,dGt,[gr(n.$slots,`default`)],512),[[Ei,!t.value]])]))}}),E9=[{color:`#3A84FF`,icon:null,key:`running`,label:Hi(`执行中`),rawStates:[`CREATED`,`LOOP_READY`,`READY`,`RUNNING`,`BLOCKED`,`ROLLING_BACK`,`ROLL_BACK_SUCCESS`]},{color:`#65C389`,icon:bie,key:`success`,label:Hi(`成功`),rawStates:[`FINISHED`]},{color:`#EA3636`,icon:xie,key:`failed`,label:Hi(`失败`),rawStates:[`FAILED`,`REVOKED`,`ROLL_BACK_FAILED`]},{color:`#F59500`,icon:Sie,key:`suspended`,label:Hi(`挂起`),rawStates:[`SUSPENDED`]},{color:`#4D4F56`,dotColor:`#DCDEE5`,icon:Cie,key:`pending`,label:Hi(`待执行`),rawStates:[`PENDING`]},{color:`#5B7290`,icon:wie,key:`skipped`,label:Hi(`跳过`),rawStates:[`SKIPPED`]}],pGt=Object.fromEntries(E9.map(e=>[e.key,e])),mGt=Object.fromEntries(E9.flatMap(e=>e.rawStates.map(t=>[t,e.key]))),hGt=e=>mGt[e]??`running`,gGt=e=>pGt[e].dotColor??pGt[e].color,_Gt=e=>{let t=pGt[e].icon;return t?$r(t):null},vGt=e=>{let t=mi(()=>Array.isArray(e.value)?e.value:[e.value??{}]),n=un({}),r=e=>n.value[e.task_id]!==!1;return{isTaskExpanded:r,taskList:t,toggleTaskExpanded:e=>{n.value={...n.value,[e.task_id]:!r(e)}},viewTasks:mi(()=>t.value.map(e=>{let t=Object.values(e.nodes??{}).map(e=>{let t=hGt(e.state);return{convergedState:t,dotColor:gGt(t),elapsedTimeText:Qre(e.elapsed_time),id:e.id,name:e.name,raw:e,retryable:!!e.retryable,skippable:!!e.skippable}}),n=t.reduce((e,t)=>e+t.raw.elapsed_time,0),r=hGt(e.task_state??``);return{convergedState:r,hasConfidence:!!e.has_confidence,confidenceTitle:e.confidence_title,isActive:!!e.is_active,nodes:t,raw:e,stateIcon:_Gt(r),taskId:e.task_id,taskName:e.task_name,totalTimeText:Qre(n)}})),visibleStats:mi(()=>{let e={};for(let t of E9)e[t.key]=0;for(let n of t.value)for(let[t,r]of Object.entries(n.statistics?.state_counts??{}))e[hGt(t)]+=r;return E9.filter(t=>e[t.key]>0).map(t=>({color:t.color,display:e[t.key]>99?`99+`:String(e[t.key]),dotColor:gGt(t.key),key:t.key,label:t.label}))})}},yGt=[{icon:oae,id:Ji.FlowNodeRetry,label:()=>Hi(`重试`),visible:e=>e.convergedState===`failed`&&e.retryable},{icon:Jie,id:Ji.FlowNodeSkip,label:()=>Hi(`跳过`),visible:e=>e.convergedState===`failed`&&e.skippable}],bGt=e=>{let{onInterruptResume:t,openNodeDetail:n}=e,r=(e,n,r)=>{t.value?.({payload:{node_id:r.id,task_id:n.task_id},operation:e})};return{getNodeActions:(e,t)=>{let i=yGt.filter(e=>e.visible(t)).map(n=>({icon:n.icon,id:n.id,label:n.label(),run:()=>r(n.id,e.raw,t.raw)}));return i.push({icon:$i,id:`detail`,label:Hi(`详情`),run:()=>n(e.raw,t.raw)}),i}}},xGt={class:`ai-detail-section`},SGt={class:`section-heading`},CGt={class:`section-text`},D9=tr({__name:`detail-section`,props:{title:{}},setup(e){return(t,n)=>(B(),V(`div`,xGt,[H(`div`,SGt,[n[0]||=H(`span`,{class:`section-bar`},null,-1),H(`span`,CGt,Ae(e.title),1)]),gr(t.$slots,`default`)]))}}),wGt={class:`ai-simple-table`},TGt={key:0},EGt=[`colspan`],DGt=tr({__name:`simple-table`,props:{columns:{},data:{}},setup(e){return(t,n)=>(B(),V(`table`,wGt,[H(`thead`,null,[H(`tr`,null,[(B(!0),V(zr,null,mr(e.columns,e=>(B(),V(`th`,{key:e.key},Ae(e.label),1))),128))])]),H(`tbody`,null,[(B(!0),V(zr,null,mr(e.data,(t,n)=>(B(),V(`tr`,{key:n},[(B(!0),V(zr,null,mr(e.columns,e=>(B(),V(`td`,{key:e.key,class:Se({"is-break-all":e.breakAll})},Ae(t[e.key]??`--`),3))),128))]))),128)),e.data.length?ti(`v-if`,!0):(B(),V(`tr`,TGt,[H(`td`,{class:`is-empty`,colspan:e.columns.length},` -- `,8,EGt)]))])]))}}),OGt={class:`flow-agent-node-detail`},kGt={class:`detail-title`},AGt={key:1,class:`detail-title-content`},jGt={class:`detail-tab-bar`},MGt=[`onClick`],NGt={class:`detail-body`},PGt={class:`skeleton-section`},FGt={class:`skeleton-section`},IGt={class:`info-form`},LGt={class:`info-label`},RGt={class:`info-value`},zGt={class:`info-row`},BGt={class:`info-label`},VGt={class:`info-value`},HGt={key:0,class:`failure-item`},UGt={key:1,class:`failure-item`},WGt={class:`info-row`},GGt={class:`info-label`},KGt={class:`info-value`},qGt={key:0,class:`skeleton-section`},O9=function(e){return e.Config=`config`,e.Output=`output`,e}(O9||{}),JGt=tr({__name:`flow-agent-node-detail`,props:{data:{},has_confidence:{type:Boolean},loading:{type:Boolean},node_id:{},node_name:{},task_id:{},task_name:{}},setup(e){let t=[{key:O9.Config,label:Hi(`节点配置`)},{key:O9.Output,label:Hi(`节点输出`)}],n=[{key:`key`,label:Hi(`参数名`)},{breakAll:!0,key:`value`,label:Hi(`参数值`)}],r=[{key:`name`,label:Hi(`名称`)},{key:`description`,label:Hi(`变量说明`)},{key:`key`,label:`KEY`}],i=[{key:`key`,label:Hi(`参数名`)},{breakAll:!0,key:`value`,label:Hi(`参数值`)}],a={forced_fail:Vi?`Force Fail`:`强制失败`},o=e,s=un(O9.Config),l=mi(()=>o.data?.basic_info),u=mi(()=>{let e=l.value;return e?[{label:Hi(`流程模板`),value:e.template_name||`--`},{label:Hi(`节点名称`),value:e.node_name||`--`},{label:Hi(`步骤名称`),value:e.stage_name||`--`},{label:Hi(`是否可选`),value:e.optional?Hi(`是`):Hi(`否`)}]:[]}),d=mi(()=>{let e=l.value;return e?.skippable||e?.auto_retry?.enable}),f=mi(()=>{let e=l.value?.auto_retry;return e?.enable?Vi?`In ${e.interval} seconds, auto retry ${e.times} times`:`在 ${e.interval} 秒后,自动重试 ${e.times} 次`:``}),p=mi(()=>{let e=l.value?.timeout_config;if(!e?.enable)return`--`;let t=a[e.action]??e.action;return Vi?`Timeout ${e.seconds} seconds later, ${t}`:`超时 ${e.seconds} 秒后则${t}`}),m=mi(()=>Object.entries(o.data?.inputs??{}).map(([e,t])=>({key:e,value:_(t)}))),h=mi(()=>(o.data?.plugin_output??[]).map(e=>({description:e.schema?.description||`--`,name:e.name,key:e.key}))),g=mi(()=>(o.data?.outputs??[]).map(e=>({key:e.key,value:_(e.value)}))),_=e=>e==null?`--`:typeof e==`object`?JSON.stringify(e):String(e);return(a,o)=>(B(),V(`div`,OGt,[H(`h3`,kGt,[e.loading?(B(),V(zr,{key:0},[H(`span`,null,Ae(z(Hi)(`节点`))+`:`,1),o[0]||=H(`span`,{class:`skeleton-title ai-skeleton-element`},null,-1)],64)):(B(),V(`div`,AGt,Ae(z(Hi)(`节点`))+`:`+Ae(l.value?.node_name),1)),gr(a.$slots,`locateButton`)]),H(`div`,jGt,[(B(),V(zr,null,mr(t,e=>H(`div`,{key:e.key,class:Se([`detail-tab`,{"is-active":s.value===e.key}]),onClick:t=>s.value=e.key},[(B(),qr(fr(e.key===O9.Config?z(Eie):z($i)),{class:`detail-tab-icon`})),ei(` `+Ae(e.label),1)],10,MGt)),64))]),H(`div`,NGt,[s.value===O9.Config?(B(),V(zr,{key:0},[e.loading?(B(),V(zr,{key:0},[H(`div`,PGt,[o[1]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(zr,null,mr(6,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))]),H(`div`,FGt,[o[2]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(zr,null,mr(4,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])],64)):(B(),V(zr,{key:1},[Zr(D9,{title:z(Hi)(`基础信息`)},{default:Pn(()=>[H(`div`,IGt,[(B(!0),V(zr,null,mr(u.value,e=>(B(),V(`div`,{key:e.label,class:`info-row`},[H(`div`,LGt,Ae(e.label),1),H(`div`,RGt,Ae(e.value),1)]))),128)),H(`div`,zGt,[H(`div`,BGt,Ae(z(Hi)(`失败处理`)),1),H(`div`,VGt,[d.value?(B(),V(zr,{key:0},[l.value?.skippable?(B(),V(`span`,HGt,[o[3]||=H(`span`,{class:`tag-badge`},`MS`,-1),ei(` `+Ae(z(Hi)(`手动跳过`))+Ae(l.value?.auto_retry?.enable?`;`:``),1)])):ti(`v-if`,!0),l.value?.auto_retry?.enable?(B(),V(`span`,UGt,[o[4]||=H(`span`,{class:`tag-badge`},`AR`,-1),ei(` `+Ae(f.value),1)])):ti(`v-if`,!0)],64)):(B(),V(zr,{key:1},[ei(`--`)],64))])]),H(`div`,WGt,[H(`div`,GGt,Ae(z(Hi)(`超时控制`)),1),H(`div`,KGt,Ae(p.value),1)])])]),_:1},8,[`title`]),Zr(D9,{title:z(Hi)(`输入参数`)},{default:Pn(()=>[Zr(DGt,{columns:n,data:m.value},null,8,[`data`])]),_:1},8,[`title`]),Zr(D9,{title:z(Hi)(`输出参数`)},{default:Pn(()=>[Zr(DGt,{columns:r,data:h.value},null,8,[`data`])]),_:1},8,[`title`])],64))],64)):(B(),V(zr,{key:1},[e.loading?(B(),V(`div`,qGt,[o[5]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(zr,null,mr(5,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])):(B(),qr(D9,{key:1,title:z(Hi)(`结构化输出`)},{default:Pn(()=>[Zr(DGt,{columns:i,data:g.value},null,8,[`data`])]),_:1},8,[`title`]))],64))])]))}}),k9=e=>e.task_id==null?``:`${e.task_id}`,YGt=k9,XGt=(e,t)=>e.task_id==null?``:`${e.task_id}|${t.id}|${t.name}`,ZGt=e=>{let{messageUid:t,taskList:n}=e,r=FTe(),i=jTe(),a=mi(()=>r.selectedTab.value?.name??``),o=un(!1),s=()=>{o.value=!0},l=mi(()=>{if(o.value)return a.value;let e=n.value.find(e=>e.is_active);return e?.task_id==null?a.value:k9(e)}),u=e=>{let t=l.value;return t===k9(e)||t===YGt(e)},d=(e,t)=>l.value===XGt(e,t),f=(e,n)=>{let i=e.task_id;i!=null&&(s(),r.addCustomTab?.({label:n.name,name:XGt(e,n),data:{component:JGt,messageUid:t.value,props:{data:{},loading:!0,node_id:n.id,node_name:n.name,task_id:i,task_name:e.task_name}}}))},p=e=>{let n=e?.task_id;n&&(s(),r.addCustomTab?.({label:Hi(`有效证据`),name:YGt(e),data:{component:JGt,messageUid:t.value,props:{data:{},has_confidence:e.has_confidence,loading:!0,task_id:n,task_name:e.task_name}}}))};return Bn(a,(e,t)=>{t!==void 0&&s()}),lr(()=>{i?.value&&p(n.value.find(e=>e.is_active&&e.has_confidence))}),dr(()=>{if(i?.value)for(let e of n.value){r.removeCustomTab?.(k9(e)),r.removeCustomTab?.(YGt(e));for(let t of Object.values(e.nodes??{}))r.removeCustomTab?.(XGt(e,t))}}),{displaySelectedTabName:l,isNodeSelected:d,isTaskSelected:u,markUserTabSelection:s,openConfidence:p,openNodeDetail:f}},QGt={class:`ai-activity-message-title-text`},$Gt={class:`flow-agent-title-label`},eKt={class:`flow-agent-stat-tooltip`},tKt={class:`flow-agent-stat-tooltip-status`},nKt={class:`flow-agent-stat-tooltip-label`},rKt=[`onClick`],iKt={class:`flow-agent-task-state-icon`},aKt={class:`flow-agent-task-name`},oKt={key:0,class:`flow-agent-task-trailing`},sKt={class:`flow-agent-task-time`},cKt=[`onClick`],lKt={class:`flow-agent-task-nodes`},uKt={class:`flow-agent-node-status`},dKt=[`title`],fKt={key:0,class:`flow-agent-node-trailing`},pKt={class:`flow-agent-node-time`},mKt={class:`flow-agent-node-actions`},hKt=[`onClick`],gKt=tr({__name:`flow-agent-content`,props:Sr({content:{},messageUid:{},onInterruptResume:{type:Function},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=pp(),r=Ar(e,`collapsed`),i=$Te(),a=mi(()=>i.value!==Yi.Share),o=mi(()=>t.status===qi.Pending||t.status===qi.Streaming),{isTaskExpanded:s,taskList:l,toggleTaskExpanded:u,viewTasks:d,visibleStats:f}=vGt(hn(t,`content`)),{isNodeSelected:p,isTaskSelected:m,openConfidence:h,openNodeDetail:g}=ZGt({messageUid:hn(t,`messageUid`),taskList:l}),{getNodeActions:_}=bGt({onInterruptResume:hn(t,`onInterruptResume`),openNodeDetail:g});return(e,t)=>(B(),qr(fGt,{collapsed:r.value,"onUpdate:collapsed":t[0]||=e=>r.value=e,"activity-type":z(Gi).FlowAgent,class:`flow-agent-activity`},{title:Pn(()=>[ti(` hover 整条执行情况栏展示统计 tooltip(设计稿 annotation) `),Zr(z(sp),ai({class:`flow-agent-title-bar`,theme:`ai-chat-box-light light`},{...z(n),tag:`div`,arrow:!0,followCursor:!1,offset:[0,10]}),{content:Pn(()=>[H(`div`,eKt,[(B(!0),V(zr,null,mr(z(f),e=>(B(),V(`div`,{key:e.key,class:`flow-agent-stat-tooltip-item`},[H(`span`,tKt,[e.key===`running`?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:_e({borderColor:e.dotColor})},null,4))]),H(`span`,nKt,Ae(e.label)+`:`,1),H(`span`,{class:`flow-agent-stat-tooltip-count`,style:_e({color:e.color})},Ae(e.display),5)]))),128))])]),default:Pn(()=>[H(`span`,{class:Se([`ai-activity-message-title-icon`,{"icon-collapsed":r.value}])},[o.value?(B(),qr(of,{key:0,size:12})):(B(),qr(z(Qi),{key:1}))],2),H(`span`,QGt,[H(`span`,$Gt,Ae(z(Hi)(`执行情况`))+`:`,1),(B(!0),V(zr,null,mr(z(f),e=>(B(),V(`span`,{key:e.key,class:`flow-agent-stat-item`},[e.key===`running`?(B(),qr(z(_u),{key:0,class:`flow-agent-stat-loading`,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-stat-dot`,style:_e({borderColor:e.dotColor})},null,4)),H(`span`,{class:`flow-agent-stat-count`,style:_e({color:e.color})},Ae(e.display),5)]))),128))])]),_:1},16)]),default:Pn(()=>[(B(!0),V(zr,null,mr(z(d),e=>(B(),V(`div`,{key:e.taskId,class:`flow-agent-task-group`},[H(`div`,{class:Se([`flow-agent-task-header`,{"has-confidence":e.hasConfidence,"is-selected":z(m)(e.raw)}])},[H(`span`,{class:Se([`flow-agent-task-arrow`,{"is-expanded":z(s)(e.raw)}]),onClick:Pi(t=>z(u)(e.raw),[`stop`])},[Zr(z(Qi))],10,rKt),H(`span`,iKt,[e.convergedState===`running`?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),qr(fr(e.stateIcon),{key:1}))]),Fn((B(),V(`span`,aKt,[Zr(z(T9),{text:e.taskName},null,8,[`text`])])),[[z(Ap),{...z(n)}]]),a.value?(B(),V(`span`,oKt,[H(`span`,sKt,Ae(e.totalTimeText),1),e.hasConfidence?(B(),V(`span`,{key:0,class:`flow-agent-task-action-btn flow-agent-task-confidence-btn`,onClick:Pi(t=>z(h)(e.raw),[`stop`])},[Zr(z($i)),ei(` `+Ae(e.confidenceTitle??z(Hi)(`有效证据`)),1)],8,cKt)):ti(`v-if`,!0)])):ti(`v-if`,!0)],2),Fn(H(`div`,lKt,[(B(!0),V(zr,null,mr(e.nodes,t=>(B(),V(`div`,{key:t.id,class:Se([`flow-agent-node-item`,{"is-selected":z(p)(e.raw,t.raw)}])},[H(`span`,uKt,[t.convergedState===`running`?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),V(`span`,{key:1,class:`flow-agent-status-dot`,style:_e({borderColor:t.dotColor})},null,4))]),Fn((B(),V(`span`,{class:`flow-agent-node-name`,title:t.name},[Zr(z(T9),{text:t.name},null,8,[`text`])],8,dKt)),[[z(Ap),{...z(n)}]]),a.value?(B(),V(`span`,fKt,[H(`span`,pKt,Ae(t.elapsedTimeText),1),H(`span`,mKt,[(B(!0),V(zr,null,mr(z(_)(e,t),e=>(B(),V(`span`,{key:e.id,class:`flow-agent-node-action-btn`,onClick:Pi(t=>e.run(),[`stop`])},[(B(),qr(fr(e.icon))),ei(` `+Ae(e.label),1)],8,hKt))),128))])])):ti(`v-if`,!0)],2))),128))],512),[[Ei,z(s)(e.raw)]])]))),128))]),_:1},8,[`collapsed`,`activity-type`]))}}),_Kt={class:`ai-activity-message-title-icon`},vKt={class:`ai-activity-message-title-text`},yKt={class:`knowledge-rag-content`},bKt=tr({__name:`knowledge-rag-content`,props:Sr({content:{},messageUid:{},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Ar(e,`collapsed`),r=mi(()=>t.status===qi.Pending||t.status===qi.Streaming),i=mi(()=>r.value?Hi(`检索中`):Hi(`检索完成`));return(t,a)=>(B(),qr(fGt,{collapsed:n.value,"onUpdate:collapsed":a[0]||=e=>n.value=e},{title:Pn(()=>[H(`span`,_Kt,[r.value?(B(),qr(of,{key:0})):(B(),qr(z(Zi),{key:1,style:{"font-size":`12px`}}))]),H(`span`,vKt,Ae(i.value),1)]),default:Pn(()=>[H(`div`,yKt,[Zr(n9,{content:e.content?.content||``},null,8,[`content`])]),Zr(r9,{content:e.content?.referenceDocument||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),xKt={class:`ai-activity-message-title-icon`},SKt={class:`ai-activity-message-title-text`},CKt=tr({__name:`reference-doc-content`,props:Sr({content:{},messageUid:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Ar(e,`collapsed`),r=mi(()=>{let e=t.content?.length??0;return Vi?`Reference ${e} documents as reference`:`引用 ${e} 篇资料作为参考`});return(t,i)=>(B(),qr(fGt,{collapsed:n.value,"onUpdate:collapsed":i[0]||=e=>n.value=e},{title:Pn(()=>[H(`span`,xKt,[Zr(z(Zi),{style:{"font-size":`12px`}})]),H(`span`,SKt,Ae(r.value),1)]),default:Pn(()=>[Zr(r9,{content:e.content||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),wKt=tr({__name:`activity-message`,props:Sr({activityType:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t={[Gi.FlowAgent]:gKt,[Gi.KnowledgeRag]:bKt,[Gi.ReferenceDocument]:CKt},n=e,r=Ar(e,`collapsed`),i=mi(()=>t[n.activityType??``]);return(t,n)=>i.value?(B(),qr(fr(i.value),{key:0,collapsed:r.value,"onUpdate:collapsed":n[0]||=e=>r.value=e,content:e.content,"message-uid":e.uid,"on-interrupt-resume":e.onInterruptResume,status:e.status},null,40,[`collapsed`,`content`,`message-uid`,`on-interrupt-resume`,`status`])):ti(`v-if`,!0)}}),TKt={class:`toolcall-desc`},EKt={class:`desc-title`},DKt={class:`desc-panel`},OKt={class:`desc-label`},kKt={class:`desc-value`},A9=tr({__name:`desc-panel`,props:{desc:{},title:{}},setup(e){let t=e,n=e=>e==null?``:typeof e==`object`?JSON.stringify(e):String(e),r=mi(()=>{try{return JSON.parse(t.desc||``)}catch{return t.desc}});return(t,i)=>(B(),V(`div`,TKt,[H(`div`,EKt,Ae(e.title),1),H(`div`,DKt,[ti(` null 的 typeof 为 object,需排除,避免 v-for 异常;键/值统一转字符串以满足 HighlightKeyword `),r.value!==null&&typeof r.value==`object`?(B(!0),V(zr,{key:0},mr(r.value,(e,t)=>(B(),V(`div`,{key:t,class:`desc-panel-item`},[H(`span`,OKt,[Zr(z(T9),{text:String(t)},null,8,[`text`]),i[0]||=ei(`:`,-1)]),H(`span`,kKt,[Zr(z(T9),{style:{"word-break":`break-all`},text:n(e)},null,8,[`text`])])]))),128)):(B(),qr(z(T9),{key:1,style:{wordBreak:`break-all`},text:n(r.value)},null,8,[`text`]))])]))}}),AKt={class:`tool-message`},jKt=tr({__name:`tool-message`,props:{duration:{},error:{type:[Boolean,String]},toolCallId:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,AKt,[Zr(A9,{desc:e.content||(typeof e.error==`string`?e.error:void 0),title:z(Hi)(`返回内容`)},null,8,[`desc`,`title`])]))}}),MKt={class:`ai-toolcall-render`},NKt={class:`toolcall-header-title`},PKt={class:`toolcall-status-title`},FKt={key:1,class:`toolcall-duration`},IKt={class:`ai-toolcall-render-content`},LKt=tr({__name:`toolcall-render`,props:{duration:{},status:{},toolCall:{}},setup(e){let t=e,n=un(!0),r=un(null),i=pp(),{keywordMatched:a,keyword:o}=nEe(()=>[t.toolCall?.function.name,t.toolCall?.function.mcpName,t.toolCall?.function.description,t.toolCall?.function.arguments,t.toolCall?.id]),s=mi(()=>r.value===null?o?.value?.trim()?!a.value:n.value:r.value);function l(){n.value=!s.value,r.value=n.value}let u=mi(()=>{let e=t.toolCall?.function.mcpName||``,n=t.toolCall?.function.name||t.toolCall?.id||``;return e?`${e} / ${n}`:n}),d=mi(()=>{switch(t.status){default:case qi.Pending:return Hi(`调用中`);case qi.Complete:case qi.Success:return Hi(`调用成功`);case qi.Error||t.toolCall?.toolMessage?.error:return Hi(`调用失败`)}}),f=mi(()=>{let e=t.duration||t.toolCall?.toolMessage?.duration;return e?Zre(e):``});return(t,n)=>(B(),V(`div`,MKt,[H(`div`,{class:Se([`ai-toolcall-render-header`,`toolcall-status-${e.status}`]),onClick:l},[Zr(z(Qi),{class:Se({"is-collapsed":s.value})},null,8,[`class`]),ei(` `+Ae(e.toolCall?.function.mcpName?z(Hi)(`调用 MCP:`):z(Hi)(`调用工具:`))+` `,1),Fn((B(),V(`span`,NKt,[Zr(z(T9),{text:u.value},null,8,[`text`])])),[[z(Ap),{...z(i),text:u.value,appendTo:`parent`}]]),H(`span`,PKt,[e.status===z(qi).Pending||e.status===z(qi).Streaming?(B(),qr(z(_u),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):ti(`v-if`,!0),Zr(z(T9),{text:d.value},null,8,[`text`]),f.value?(B(),V(`span`,FKt,` (`+Ae(f.value)+`) `,1)):ti(`v-if`,!0)])],2),Fn(H(`div`,IKt,[Zr(A9,{desc:e.toolCall?.function.description,title:z(Hi)(`描述`)},null,8,[`desc`,`title`]),Zr(A9,{desc:e.toolCall?.function.arguments,title:z(Hi)(`参数`)},null,8,[`desc`,`title`]),e.toolCall?.toolMessage?(B(),qr(jKt,Ce(ai({key:0},e.toolCall.toolMessage)),null,16)):ti(`v-if`,!0)],512),[[Ei,!s.value]])]))}}),RKt={class:`ai-assistant-message`},zKt={class:`ai-assistant-message-content`},BKt=tr({__name:`assistant-message`,props:{toolCalls:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,RKt,[H(`div`,zKt,[gr(t.$slots,`default`,Ce(Qr({content:e.content})),()=>[Zr(i9,{content:e.content||``,status:e.status,type:z(Gi).Text},null,8,[`content`,`status`,`type`])])]),e.toolCalls&&e.toolCalls.length>0?(B(!0),V(zr,{key:0},mr(e.toolCalls,t=>(B(),qr(LKt,{key:t.id,status:e.status,"tool-call":t},null,8,[`status`,`tool-call`]))),128)):ti(`v-if`,!0)]))}}),VKt={class:`info-message`},HKt=tr({__name:`info-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,VKt,[(B(!0),V(zr,null,mr(Array.isArray(e.content)?e.content:[e.content],(e,t)=>(B(),V(`div`,{key:t,class:`info-message-content`},Ae(e),1))),128))]))}}),UKt={class:`ai-tool-approval-card`},WKt={class:`ai-tool-approval-card__header`},GKt={class:`ai-tool-approval-card__title-wrap`},KKt={class:`ai-tool-approval-card__title`},qKt={class:`ai-tool-approval-card__fields`},JKt={class:`ai-tool-approval-card__field`},YKt={class:`ai-tool-approval-card__field`},XKt={class:`ai-tool-approval-card__processor`},ZKt={class:`ai-tool-approval-card__processor-text`},QKt={class:`ai-tool-approval-card__actions`},$Kt=tr({__name:`tool-approval-card`,props:{interrupt:{},onInterruptResume:{type:Function},readonly:{type:Boolean}},setup(e){let t=e,n=pp(),r=$Te(),i=mi(()=>r.value===Yi.Share),{copy:a}=up(),o=new Set([Ui.PENDING,Ui.DRAFT]),s=new Set([Ui.ABANDONED,Ui.CANCELLED,Ui.EXPIRED,Ui.REJECTED]),l=mi(()=>t.interrupt.metadata?.ticket??{approvers:[],sn:``,status:Ui.PENDING,submit_time:``,title:``,url:``}),u=mi(()=>o.has(l.value.status)),d=mi(()=>u.value?`pending`:l.value.status),f=mi(()=>u.value?Hi(`评审中`):eie[l.value.status]??l.value.status),p=mi(()=>l.value.approvers.filter(Boolean).join(`、`)||Hi(`无`)),m=mi(()=>l.value.url||l.value.sn),h=()=>{l.value.url&&window.open(l.value.url,`_blank`,`noopener`)},g=()=>{m.value&&a(m.value)},_=un(!1),v=()=>{_.value||(_.value=!0,t.onInterruptResume?.({operation:Ji.ApprovalCancel,payload:{interrupt_id:t.interrupt.id}},t.interrupt))};return(t,r)=>(B(),V(`section`,UKt,[H(`header`,WKt,[H(`div`,GKt,[r[0]||=H(`span`,{class:`ai-tool-approval-card__title-bar`},null,-1),H(`span`,KKt,Ae(l.value.title||z(Hi)(`算法方案评审单`)),1),Fn(Zr(z(iae),{class:Se([`ai-tool-approval-card__copy-icon`,{"is-disabled":!m.value}]),onClick:g},null,8,[`class`]),[[z(cp),{...z(n),content:z(Hi)(`复制单据链接`),theme:`ai-chat-box`,offset:[0,8]}]])]),H(`span`,{class:Se([`ai-tool-approval-card__status`,`ai-tool-approval-card__status--${d.value}`])},[l.value.status===z(Ui).APPROVED?(B(),qr(z(Vie),{key:0,class:`ai-tool-approval-card__status-icon`})):z(s).has(l.value.status)?(B(),qr(z(Uie),{key:1,class:`ai-tool-approval-card__status-icon`})):l.value.status===z(Ui).REVOKED?(B(),qr(z(Wie),{key:2,class:Se([`ai-tool-approval-card__status-icon`,{"ai-tool-approval-card__status-icon--revoked":l.value.status===z(Ui).REVOKED}])},null,8,[`class`])):(B(),qr(z(_u),{key:3,class:`ai-tool-approval-card__status-icon`,mode:`spin`,size:`mini`,theme:`primary`})),ei(` `+Ae(f.value),1)],2)]),H(`dl`,qKt,[H(`div`,JKt,[H(`dt`,null,Ae(z(Hi)(`单据编号`)),1),H(`dd`,null,Ae(l.value.sn||`--`),1)]),H(`div`,YKt,[H(`dt`,null,Ae(z(Hi)(`提交时间`)),1),H(`dd`,null,Ae(l.value.submit_time||`--`),1)])]),H(`div`,XKt,[Zr(z(Hie),{class:`ai-tool-approval-card__processor-icon`}),Fn((B(),V(`span`,ZKt,[ei(Ae(z(Hi)(`当前处理人`))+`:`+Ae(p.value),1)])),[[z(Ap),{...z(n)}]])]),H(`div`,QKt,[Zr(z(Tu),{class:`ai-tool-approval-card__detail`,disabled:!l.value.url,theme:`primary`,onClick:h},{default:Pn(()=>[ei(Ae(z(Hi)(`查看单据详情`))+` `,1),r[1]||=H(`span`,{class:`ai-tool-approval-card__detail-icon`},null,-1)]),_:1},8,[`disabled`]),u.value&&!e.readonly?(B(),qr(z(Tu),{key:0,class:`ai-tool-approval-card__cancel`,disabled:_.value||i.value,loading:_.value,outline:``,theme:`primary`,onClick:v},{default:Pn(()=>[ei(Ae(z(Hi)(`取消审批`)),1)]),_:1},8,[`disabled`,`loading`])):ti(`v-if`,!0)])]))}}),eqt={class:`ai-interrupt-message`},tqt={key:0,class:`ai-interrupt-message__content`},nqt={class:`ai-interrupt-message__fallback`},rqt=tr({__name:`interrupt-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},setup(e){let t={[Wi.AIDevToolApproval]:$Kt},n=e=>({id:e.interruptId||e.id||``,reason:Wi.AIDevToolApproval,toolCallId:``,metadata:e.payload.metadata}),r={[Wi.AIDevToolApproval]:e=>({component:$Kt,props:{interrupt:n(e),readonly:!0}}),[Wi.UserQuestion]:e=>({component:AWt,props:{answers:e.payload?.answers??[],status:e.status}})},i=new Set([Wi.UserQuestion]),a=e,o=mi(()=>a.content?.outcome?.type===`interrupt`?a.content.outcome.interrupts:[]),s=mi(()=>a.content?.message),l=e=>t[e.reason],u=e=>i.has(e.reason),d=mi(()=>{if(a.content?.outcome?.type!==`success`)return;let e=a.content?.result;if(e)return r[e.reason]?.(e)});return(t,n)=>(B(),V(`div`,eqt,[s.value?(B(),V(`div`,tqt,Ae(s.value),1)):ti(`v-if`,!0),(B(!0),V(zr,null,mr(o.value,t=>(B(),V(zr,{key:t.toolCallId},[l(t)?(B(),qr(fr(l(t)),{key:0,interrupt:t,"on-interrupt-resume":e.onInterruptResume},null,40,[`interrupt`,`on-interrupt-resume`])):u(t)?ti(`v-if`,!0):(B(),V(zr,{key:1},[ti(` UserQuestion 的交互浮层渲染在 chat-input 上方,不在会话内渲染 `),H(`div`,nqt,Ae(t.message||z(Hi)(`暂不支持的中断消息`)),1)],2112))],64))),128)),ti(` outcome.success 时按 reason 在会话内回显 resume 结果(审批单 / 已回答内容等) `),d.value?(B(),qr(fr(d.value.component),Ce(ai({key:1},d.value.props)),hr({_:2},[t.$slots.answeredQuestion?{name:`answer`,fn:Pn(e=>[gr(t.$slots,`answeredQuestion`,Ce(Qr(e)))]),key:`0`}:void 0]),1040)):ti(`v-if`,!0)]))}}),iqt={class:`ai-loading-message`},aqt=tr({__name:`loading-message`,setup(e){return(e,t)=>(B(),V(`div`,iqt,[Zr(of,{size:18}),gr(e.$slots,`default`,{},()=>[ei(Ae(z(Hi)(`请求中...`)),1)])]))}}),oqt={class:`ai-reasoning-message`},sqt={key:0,class:`ai-reasoning-message-title-icon`},cqt={class:`ai-reasoning-message-title-text`},lqt={class:`ai-reasoning-message-content`},uqt=tr({__name:`reasoning-message`,props:Sr({duration:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Ar(e,`collapsed`),{stop:r}=Bn(()=>t.duration,async e=>{e&&(n.value=!0,await kn(),r?.())},{immediate:!0}),i=mi(()=>{switch(t.status){case qi.Pending:return Hi(`思考中`);case qi.Success:case qi.Complete:return Hi(`已思考完成`)+(t.duration?` (${Hi(`耗时`)} :${Zre(t.duration)})`:``);case qi.Error:return Hi(`思考失败`);default:return Hi(`思考中`)}});return(t,r)=>(B(),V(`div`,oqt,[H(`div`,{class:Se([`ai-reasoning-message-title`,{"ai-reasoning-message-title-collapsed":n.value,"is-thinking":e.status===z(qi).Pending||e.status===z(qi).Streaming,"is-complete":e.status===z(qi).Complete||e.status===z(qi).Success,"is-error":e.status===z(qi).Error}]),onClick:r[0]||=e=>n.value=!n.value},[e.status===z(qi).Pending||e.status===z(qi).Streaming?(B(),V(`span`,sqt,[Zr(of)])):ti(`v-if`,!0),H(`span`,cqt,Ae(i.value),1),ti(` <template v-if="status === MessageStatus.Pending || status === MessageStatus.Streaming">
|
|
3493
3493
|
<ContentLoadingIcon
|
|
3494
3494
|
v-for="i in 3"
|
|
3495
3495
|
:key="i"
|