@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.
@@ -51026,27 +51026,27 @@ var TW = ["src"], EW = {
51026
51026
  onResume: { type: Function }
51027
51027
  },
51028
51028
  setup(e) {
51029
- let t = e, n = ZM(), r = G(!1), { questions: i, answeredCount: a, totalCount: s, completed: c, getAnswer: l, setAnswer: u, buildResolvePayload: f, buildSkipPayload: p } = yG(() => t.interrupt), _ = d(() => t.interrupt.metadata?.questions?.[0]?.header || t.interrupt.message || ""), b = () => {
51029
+ let t = e, n = ZM(), r = G(!1), { questions: i, answeredCount: a, totalCount: s, completed: c, getAnswer: l, setAnswer: u, buildResolvePayload: f, buildSkipPayload: _ } = yG(() => t.interrupt), b = d(() => t.interrupt.metadata?.questions?.[0]?.header || t.interrupt.message || ""), x = () => {
51030
51030
  r.value = !r.value;
51031
- }, x = () => {
51032
- r.value &&= !1;
51033
51031
  }, S = () => {
51034
- c.value && t.onResume?.(f(), t.interrupt);
51035
- }, C = () => {
51036
- t.onResume?.(p(), t.interrupt);
51032
+ r.value &&= !1;
51033
+ }, C = G(null), w = () => {
51034
+ !c.value || C.value !== null || (C.value = "complete", t.onResume?.(f(), t.interrupt));
51035
+ }, T = () => {
51036
+ C.value === null && (C.value = "skip", t.onResume?.(_(), t.interrupt));
51037
51037
  };
51038
51038
  return (e, t) => (V(), h("section", { class: P(["ai-user-question-card", { "ai-user-question-card--collapsed": r.value }]) }, [
51039
51039
  g("header", {
51040
51040
  class: "ai-user-question-card__header",
51041
- onClick: x
51041
+ onClick: S
51042
51042
  }, [g("div", LG, [
51043
51043
  y(J(Oj), { class: "ai-user-question-card__help-icon" }),
51044
- he((V(), h("span", RG, [v(K(_.value), 1)])), [[J(eN), { ...J(n) }]]),
51044
+ he((V(), h("span", RG, [v(K(b.value), 1)])), [[J(eN), { ...J(n) }]]),
51045
51045
  m(" <span\n v-if=\"isCollapsed\"\n class=\"ai-user-question-card__tag\"\n >\n {{ headerSelectText }}\n </span> ")
51046
51046
  ]), g("div", zG, [g("span", BG, K(J(a)) + " / " + K(J(s)), 1), y(J(gj), {
51047
51047
  class: "ai-user-question-card__arrow",
51048
51048
  style: I({ transform: r.value ? "rotate(180deg)" : "rotate(-90deg)" }),
51049
- onClick: _e(b, ["stop"])
51049
+ onClick: _e(x, ["stop"])
51050
51050
  }, null, 8, ["style"])])]),
51051
51051
  m(" 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 "),
51052
51052
  he(g("div", VG, [(V(!0), h(o, null, U(J(i), (t, n) => (V(), h("div", {
@@ -51057,30 +51057,39 @@ var TW = ["src"], EW = {
51057
51057
  qIndex: n,
51058
51058
  answer: J(l)(n),
51059
51059
  setAnswer: (e) => J(u)(n, e),
51060
- confirm: S
51060
+ confirm: w
51061
51061
  }), () => [y(IG, {
51062
51062
  question: t,
51063
51063
  onAnswer: (e) => J(u)(n, e),
51064
- onConfirm: S
51064
+ onConfirm: w
51065
51065
  }, null, 8, ["question", "onAnswer"])])])]))), 128))], 512), [[de, !r.value]]),
51066
51066
  he(g("footer", KG, [y(J(iy), {
51067
51067
  class: "ai-user-question-card__complete",
51068
- disabled: !J(c),
51068
+ disabled: !J(c) || C.value === "skip",
51069
+ loading: C.value === "complete",
51069
51070
  size: "small",
51070
51071
  theme: "primary",
51071
- onClick: S
51072
+ onClick: w
51072
51073
  }, {
51073
- default: Y(() => [y(J(Aj), { class: "ai-user-question-card__enter-icon" }), v(" " + K(J(Q)("完成")), 1)]),
51074
+ default: Y(() => [C.value === "complete" ? m("v-if", !0) : (V(), p(J(Aj), {
51075
+ key: 0,
51076
+ class: "ai-user-question-card__enter-icon"
51077
+ })), v(" " + K(J(Q)("完成")), 1)]),
51074
51078
  _: 1
51075
- }, 8, ["disabled"]), y(J(iy), {
51079
+ }, 8, ["disabled", "loading"]), y(J(iy), {
51076
51080
  class: "ai-user-question-card__skip",
51081
+ disabled: C.value === "complete",
51082
+ loading: C.value === "skip",
51077
51083
  size: "small",
51078
51084
  text: "",
51079
- onClick: C
51085
+ onClick: T
51080
51086
  }, {
51081
- default: Y(() => [y(J(jj), { class: "ai-user-question-card__skip-icon" }), v(" " + K(J(Q)("跳过")), 1)]),
51087
+ default: Y(() => [C.value === "skip" ? m("v-if", !0) : (V(), p(J(jj), {
51088
+ key: 0,
51089
+ class: "ai-user-question-card__skip-icon"
51090
+ })), v(" " + K(J(Q)("跳过")), 1)]),
51082
51091
  _: 1
51083
- })], 512), [[de, !r.value]])
51092
+ }, 8, ["disabled", "loading"])], 512), [[de, !r.value]])
51084
51093
  ], 2));
51085
51094
  }
51086
51095
  }), JG = { class: "ai-delete-confirm" }, YG = { class: "ai-delete-confirm__title" }, XG = { class: "ai-delete-confirm__desc" }, ZG = { class: "ai-delete-confirm__actions" }, QG = /* @__PURE__ */ x({
@@ -52164,77 +52173,79 @@ var TW = ["src"], EW = {
52164
52173
  readonly: { type: Boolean }
52165
52174
  },
52166
52175
  setup(e) {
52167
- let t = e, n = ZM(), { copy: r } = bM(), i = new Set([DA.PENDING, DA.DRAFT]), a = new Set([
52176
+ let t = e, n = ZM(), r = JM(), i = d(() => r.value === UA.Share), { copy: a } = bM(), o = new Set([DA.PENDING, DA.DRAFT]), s = new Set([
52168
52177
  DA.ABANDONED,
52169
52178
  DA.CANCELLED,
52170
52179
  DA.EXPIRED,
52171
52180
  DA.REJECTED
52172
- ]), o = d(() => t.interrupt.metadata?.ticket ?? {
52181
+ ]), c = d(() => t.interrupt.metadata?.ticket ?? {
52173
52182
  approvers: [],
52174
52183
  sn: "",
52175
52184
  status: DA.PENDING,
52176
52185
  submit_time: "",
52177
52186
  title: "",
52178
52187
  url: ""
52179
- }), s = d(() => i.has(o.value.status)), c = d(() => s.value ? "pending" : o.value.status), l = d(() => s.value ? Q("评审中") : MA[o.value.status] ?? o.value.status), u = d(() => o.value.approvers.filter(Boolean).join("、") || Q("无")), f = d(() => o.value.url || o.value.sn), _ = () => {
52180
- o.value.url && window.open(o.value.url, "_blank", "noopener");
52181
- }, b = () => {
52182
- f.value && r(f.value);
52183
- }, x = () => {
52184
- t.onInterruptResume?.({
52188
+ }), l = d(() => o.has(c.value.status)), u = d(() => l.value ? "pending" : c.value.status), f = d(() => l.value ? Q("评审中") : MA[c.value.status] ?? c.value.status), _ = d(() => c.value.approvers.filter(Boolean).join("、") || Q("无")), b = d(() => c.value.url || c.value.sn), x = () => {
52189
+ c.value.url && window.open(c.value.url, "_blank", "noopener");
52190
+ }, S = () => {
52191
+ b.value && a(b.value);
52192
+ }, C = G(!1), w = () => {
52193
+ C.value || (C.value = !0, t.onInterruptResume?.({
52185
52194
  operation: NA.ApprovalCancel,
52186
52195
  payload: { interrupt_id: t.interrupt.id }
52187
- }, t.interrupt);
52196
+ }, t.interrupt));
52188
52197
  };
52189
52198
  return (t, r) => (V(), h("section", Yq, [
52190
52199
  g("header", Xq, [g("div", Zq, [
52191
52200
  r[0] ||= g("span", { class: "ai-tool-approval-card__title-bar" }, null, -1),
52192
- g("span", Qq, K(o.value.title || J(Q)("算法方案评审单")), 1),
52201
+ g("span", Qq, K(c.value.title || J(Q)("算法方案评审单")), 1),
52193
52202
  he(y(J(Uj), {
52194
- class: P(["ai-tool-approval-card__copy-icon", { "is-disabled": !f.value }]),
52195
- onClick: b
52203
+ class: P(["ai-tool-approval-card__copy-icon", { "is-disabled": !b.value }]),
52204
+ onClick: S
52196
52205
  }, null, 8, ["class"]), [[J(Yk), {
52197
52206
  ...J(n),
52198
52207
  content: J(Q)("复制单据链接"),
52199
52208
  theme: "ai-chat-box",
52200
52209
  offset: [0, 8]
52201
52210
  }]])
52202
- ]), g("span", { class: P(["ai-tool-approval-card__status", `ai-tool-approval-card__status--${c.value}`]) }, [o.value.status === J(DA).APPROVED ? (V(), p(J(wj), {
52211
+ ]), g("span", { class: P(["ai-tool-approval-card__status", `ai-tool-approval-card__status--${u.value}`]) }, [c.value.status === J(DA).APPROVED ? (V(), p(J(wj), {
52203
52212
  key: 0,
52204
52213
  class: "ai-tool-approval-card__status-icon"
52205
- })) : J(a).has(o.value.status) ? (V(), p(J(Ej), {
52214
+ })) : J(s).has(c.value.status) ? (V(), p(J(Ej), {
52206
52215
  key: 1,
52207
52216
  class: "ai-tool-approval-card__status-icon"
52208
- })) : o.value.status === J(DA).REVOKED ? (V(), p(J(Dj), {
52217
+ })) : c.value.status === J(DA).REVOKED ? (V(), p(J(Dj), {
52209
52218
  key: 2,
52210
- class: P(["ai-tool-approval-card__status-icon", { "ai-tool-approval-card__status-icon--revoked": o.value.status === J(DA).REVOKED }])
52219
+ class: P(["ai-tool-approval-card__status-icon", { "ai-tool-approval-card__status-icon--revoked": c.value.status === J(DA).REVOKED }])
52211
52220
  }, null, 8, ["class"])) : (V(), p(J(Bv), {
52212
52221
  key: 3,
52213
52222
  class: "ai-tool-approval-card__status-icon",
52214
52223
  mode: "spin",
52215
52224
  size: "mini",
52216
52225
  theme: "primary"
52217
- })), v(" " + K(l.value), 1)], 2)]),
52218
- g("dl", $q, [g("div", eJ, [g("dt", null, K(J(Q)("单据编号")), 1), g("dd", null, K(o.value.sn || "--"), 1)]), g("div", tJ, [g("dt", null, K(J(Q)("提交时间")), 1), g("dd", null, K(o.value.submit_time || "--"), 1)])]),
52219
- g("div", nJ, [y(J(Tj), { class: "ai-tool-approval-card__processor-icon" }), he((V(), h("span", rJ, [v(K(J(Q)("当前处理人")) + ":" + K(u.value), 1)])), [[J(eN), { ...J(n) }]])]),
52226
+ })), v(" " + K(f.value), 1)], 2)]),
52227
+ g("dl", $q, [g("div", eJ, [g("dt", null, K(J(Q)("单据编号")), 1), g("dd", null, K(c.value.sn || "--"), 1)]), g("div", tJ, [g("dt", null, K(J(Q)("提交时间")), 1), g("dd", null, K(c.value.submit_time || "--"), 1)])]),
52228
+ g("div", nJ, [y(J(Tj), { class: "ai-tool-approval-card__processor-icon" }), he((V(), h("span", rJ, [v(K(J(Q)("当前处理人")) + ":" + K(_.value), 1)])), [[J(eN), { ...J(n) }]])]),
52220
52229
  g("div", iJ, [y(J(iy), {
52221
52230
  class: "ai-tool-approval-card__detail",
52222
- disabled: !o.value.url,
52231
+ disabled: !c.value.url,
52223
52232
  theme: "primary",
52224
- onClick: _
52233
+ onClick: x
52225
52234
  }, {
52226
52235
  default: Y(() => [v(K(J(Q)("查看单据详情")) + " ", 1), r[1] ||= g("span", { class: "ai-tool-approval-card__detail-icon" }, null, -1)]),
52227
52236
  _: 1
52228
- }, 8, ["disabled"]), s.value && !e.readonly ? (V(), p(J(iy), {
52237
+ }, 8, ["disabled"]), l.value && !e.readonly ? (V(), p(J(iy), {
52229
52238
  key: 0,
52230
52239
  class: "ai-tool-approval-card__cancel",
52240
+ disabled: C.value || i.value,
52241
+ loading: C.value,
52231
52242
  outline: "",
52232
52243
  theme: "primary",
52233
- onClick: x
52244
+ onClick: w
52234
52245
  }, {
52235
52246
  default: Y(() => [v(K(J(Q)("取消审批")), 1)]),
52236
52247
  _: 1
52237
- })) : m("v-if", !0)])
52248
+ }, 8, ["disabled", "loading"])) : m("v-if", !0)])
52238
52249
  ]));
52239
52250
  }
52240
52251
  }), oJ = { class: "ai-interrupt-message" }, sJ = {
@@ -3487,12 +3487,12 @@ Input "@" to trigger tool and MCP
3487
3487
  Use Shift + Enter to enter a new line`:`输入 "/" 唤出 Skill
3488
3488
  输入 "\\" 唤出 Prompt
3489
3489
  输入 "@" 唤出 工具和 MCP
3490
- 通过 Shift + Enter 进行换行输入`},prompts:{default:()=>[]},resources:{default:()=>[]},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{default:()=>[]},supportUpload:{type:Boolean,default:!0},tippyOptions:{}},{cite:{required:!1,default:``},citeModifiers:{}}),emits:yr([`selectShortcut`,`deleteShortcut`,`update:modelValue`],[`update:cite`]),setup(e,{expose:t,emit:n}){let r=$n(`aiSlashInputRef`),i=$n(`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&&[Mp.Pending,Mp.Streaming,Mp.Fetching].includes(s.messageStatus)?s.messageStatus:s.modelValue?.length<1||Array.isArray(s.modelValue)&&!C9(s.modelValue).trim()?Mp.Disabled:s.messageStatus);wee(()=>{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:Ap.Binary,url:e.url,mimeType:e.file?.type||``,filename:e.file?.name||``})),s.modelValue&&e.push({type:Ap.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===Mp.Disabled||s.sendDisabledTip||f.value===Mp.Fetching||f.value===Mp.Streaming||f.value===Mp.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=(ZTe/(1024*1024)).toFixed(1),x=async e=>{if(!s.supportUpload)return;if(u.value.length>=3){e.length>0&&ud({message:Sp(e.length,b,Ep),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:R9.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=R9.Success;return}o.status=R9.Error}).catch(()=>{o.status=R9.Error})}n>0&&ud({message:Sp(n,b,Ep),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(WTe)})},[pr(t.$slots,`top`),pr(t.$slots,`interrupt`),H(`div`,{class:`chat-input`,style:ge({maxHeight:o.value+`px`})},[pr(t.$slots,`input-header`,{},()=>[a.value?(B(),Gr(bWt,{key:0,class:`chat-input-cite`,content:a.value,onClose:g},null,8,[`content`])):$r(`v-if`,!0)]),pr(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(ZWt,{files:u.value,onDeleteFile:S},null,8,[`files`])],512)):$r(`v-if`,!0)]),Yr(xGt,{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(CGt,{"message-state":f.value,"send-disabled-tip":e.sendDisabledTip,"tippy-options":e.tippyOptions,onSendMessage:p,onStopSending:h},{default:jn(()=>[e.supportUpload?(B(),Gr(_Wt,{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`,wGt)):$r(`v-if`,!0),pr(t.$slots,`attachment`,{},()=>[e.shortcuts&&!d.value?(B(),Gr(fDe,{key:0,shortcuts:e.shortcuts,onSelectShortcut:_},null,8,[`shortcuts`])):$r(`v-if`,!0),d.value?(B(),Gr(Hp,{key:1,class:`selected-shortcut-btn`,shortcut:d.value},{append:jn(()=>[Yr(z(Bp),{onClick:v})]),_:1},8,[`shortcut`])):$r(`v-if`,!0)])]),"send-icon":jn(()=>[pr(t.$slots,`send-icon`)]),_:3},8,[`message-state`,`send-disabled-tip`,`tippy-options`])],4)],4))}}),EGt={class:`chat-input-info-alert`},DGt={class:`chat-input-info-alert__text`},OGt=Qn({__name:`input-info-alert`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,EGt,[Yr(z(FEe),{class:`chat-input-info-alert__icon`}),H(`span`,DGt,ke(e.content),1)]))}}),kGt=`others`,AGt=e=>e<26?String.fromCharCode(65+e):String(e+1),jGt=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:kp.UserQuestion,status:`resolved`,payload:{answers:l()}}),buildSkipPayload:()=>MGt(e())}},MGt=e=>({interruptId:e?.id??``,reason:kp.UserQuestion,status:`cancelled`,payload:{answers:[]}}),NGt={class:`ai-user-question-answered`},PGt={class:`ai-user-question-answered__header`},FGt={class:`ai-user-question-answered__title-wrap`},IGt={class:`ai-user-question-answered__title`},LGt={class:`ai-user-question-answered__status`},RGt={class:`ai-user-question-answered__body`},zGt={class:`ai-user-question-answered__question`},BGt={class:`ai-user-question-answered__question-text`},VGt={key:0,class:`ai-user-question-answered__tag`},HGt=Qn({__name:`user-question-answered-card`,props:{answers:{},status:{default:`resolved`}},setup(e){let t=e,n=fi(()=>t.status===`cancelled`?Dp(`已取消`):Dp(`已回复`));return(t,r)=>(B(),V(`section`,NGt,[H(`header`,PGt,[H(`div`,FGt,[Yr(z(PEe),{class:`ai-user-question-answered__help-icon`}),H(`span`,IGt,ke(z(Dp)(`回答内容`)),1)]),H(`span`,LGt,ke(n.value),1)]),H(`div`,RGt,[(B(!0),V(Lr,null,dr(e.answers,(n,r)=>(B(),V(`div`,{key:r,class:`ai-user-question-answered__item`},[H(`div`,zGt,[H(`span`,BGt,ke(r+1)+`. `+ke(n.question),1),n.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,VGt,ke(n.multiSelect?z(Dp)(`多选`):z(Dp)(`单选`)),1))]),$r(` 默认逐条回显选择题答案;业务方可覆盖此 slot 渲染自定义表单的回显 `),pr(t.$slots,`answer`,ri({ref_for:!0},{item:n,index:r,status:e.status}),()=>[(B(!0),V(Lr,null,dr(n.answer,(e,t)=>(B(),V(`p`,{key:t,class:`ai-user-question-answered__answer`},ke(e.description||e.label),1))),128))])]))),128))])]))}}),UGt={class:`ai-user-question-option__badge`},WGt=[`placeholder`,`value`],GGt={key:1,class:`ai-user-question-option__text`},KGt=Qn({__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`,UGt,ke(e.option.letter),1),$r(` Others:自定义输入 `),e.option.isOthers?(B(),V(`input`,{key:0,class:`ai-user-question-option__input`,placeholder:z(Dp)(`请输入...`),value:e.othersText,onClick:n[0]||=Mi(()=>{},[`stop`]),onFocus:a,onInput:o,onKeydown:n[1]||=wre(Mi(e=>r(`confirm`),[`stop`]),[`enter`])},null,40,WGt)):(B(),V(`span`,GGt,ke(e.option.description),1))],2))}}),qGt={class:`ai-user-question-choice`},JGt=Qn({__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!==kGt).map((e,t)=>({...e,isOthers:!1,letter:AGt(t)}));return e.push({label:kGt,description:``,isOthers:!0,letter:AGt(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:kGt,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 Ln(()=>n.question,()=>{i.value=[],a.value=``,f()}),(e,t)=>(B(),V(`div`,qGt,[(B(!0),V(Lr,null,dr(o.value,(e,n)=>(B(),Gr(KGt,{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))]))}}),YGt={class:`ai-user-question-card__title-wrap`},XGt={class:`ai-user-question-card__title`},ZGt={class:`ai-user-question-card__counter-wrap`},QGt={class:`ai-user-question-card__counter`},$Gt={class:`ai-user-question-card__body`},eKt={class:`ai-user-question-card__question-title`},tKt={class:`ai-user-question-card__question-text`},nKt={key:0,class:`ai-user-question-card__tag`},rKt={class:`ai-user-question-card__options`},iKt={class:`ai-user-question-card__footer`},aKt=Qn({__name:`user-question-card`,props:{interrupt:{},onResume:{type:Function}},setup(e){let t=e,n=Kp(),r=cn(!1),{questions:i,answeredCount:a,totalCount:o,completed:s,getAnswer:l,setAnswer:u,buildResolvePayload:d,buildSkipPayload:f}=jGt(()=>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&&t.onResume?.(d(),t.interrupt)},_=()=>{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`,YGt,[Yr(z(PEe),{class:`ai-user-question-card__help-icon`}),Mn((B(),V(`span`,XGt,[Qr(ke(p.value),1)])),[[z(qp),{...z(n)}]]),$r(` <span
3490
+ 通过 Shift + Enter 进行换行输入`},prompts:{default:()=>[]},resources:{default:()=>[]},sendDisabledTip:{},shortcutId:{},shortcuts:{},skills:{default:()=>[]},supportUpload:{type:Boolean,default:!0},tippyOptions:{}},{cite:{required:!1,default:``},citeModifiers:{}}),emits:yr([`selectShortcut`,`deleteShortcut`,`update:modelValue`],[`update:cite`]),setup(e,{expose:t,emit:n}){let r=$n(`aiSlashInputRef`),i=$n(`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&&[Mp.Pending,Mp.Streaming,Mp.Fetching].includes(s.messageStatus)?s.messageStatus:s.modelValue?.length<1||Array.isArray(s.modelValue)&&!C9(s.modelValue).trim()?Mp.Disabled:s.messageStatus);wee(()=>{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:Ap.Binary,url:e.url,mimeType:e.file?.type||``,filename:e.file?.name||``})),s.modelValue&&e.push({type:Ap.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===Mp.Disabled||s.sendDisabledTip||f.value===Mp.Fetching||f.value===Mp.Streaming||f.value===Mp.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=(ZTe/(1024*1024)).toFixed(1),x=async e=>{if(!s.supportUpload)return;if(u.value.length>=3){e.length>0&&ud({message:Sp(e.length,b,Ep),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:R9.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=R9.Success;return}o.status=R9.Error}).catch(()=>{o.status=R9.Error})}n>0&&ud({message:Sp(n,b,Ep),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(WTe)})},[pr(t.$slots,`top`),pr(t.$slots,`interrupt`),H(`div`,{class:`chat-input`,style:ge({maxHeight:o.value+`px`})},[pr(t.$slots,`input-header`,{},()=>[a.value?(B(),Gr(bWt,{key:0,class:`chat-input-cite`,content:a.value,onClose:g},null,8,[`content`])):$r(`v-if`,!0)]),pr(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(ZWt,{files:u.value,onDeleteFile:S},null,8,[`files`])],512)):$r(`v-if`,!0)]),Yr(xGt,{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(CGt,{"message-state":f.value,"send-disabled-tip":e.sendDisabledTip,"tippy-options":e.tippyOptions,onSendMessage:p,onStopSending:h},{default:jn(()=>[e.supportUpload?(B(),Gr(_Wt,{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`,wGt)):$r(`v-if`,!0),pr(t.$slots,`attachment`,{},()=>[e.shortcuts&&!d.value?(B(),Gr(fDe,{key:0,shortcuts:e.shortcuts,onSelectShortcut:_},null,8,[`shortcuts`])):$r(`v-if`,!0),d.value?(B(),Gr(Hp,{key:1,class:`selected-shortcut-btn`,shortcut:d.value},{append:jn(()=>[Yr(z(Bp),{onClick:v})]),_:1},8,[`shortcut`])):$r(`v-if`,!0)])]),"send-icon":jn(()=>[pr(t.$slots,`send-icon`)]),_:3},8,[`message-state`,`send-disabled-tip`,`tippy-options`])],4)],4))}}),EGt={class:`chat-input-info-alert`},DGt={class:`chat-input-info-alert__text`},OGt=Qn({__name:`input-info-alert`,props:{content:{}},setup(e){return(t,n)=>(B(),V(`div`,EGt,[Yr(z(FEe),{class:`chat-input-info-alert__icon`}),H(`span`,DGt,ke(e.content),1)]))}}),kGt=`others`,AGt=e=>e<26?String.fromCharCode(65+e):String(e+1),jGt=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:kp.UserQuestion,status:`resolved`,payload:{answers:l()}}),buildSkipPayload:()=>MGt(e())}},MGt=e=>({interruptId:e?.id??``,reason:kp.UserQuestion,status:`cancelled`,payload:{answers:[]}}),NGt={class:`ai-user-question-answered`},PGt={class:`ai-user-question-answered__header`},FGt={class:`ai-user-question-answered__title-wrap`},IGt={class:`ai-user-question-answered__title`},LGt={class:`ai-user-question-answered__status`},RGt={class:`ai-user-question-answered__body`},zGt={class:`ai-user-question-answered__question`},BGt={class:`ai-user-question-answered__question-text`},VGt={key:0,class:`ai-user-question-answered__tag`},HGt=Qn({__name:`user-question-answered-card`,props:{answers:{},status:{default:`resolved`}},setup(e){let t=e,n=fi(()=>t.status===`cancelled`?Dp(`已取消`):Dp(`已回复`));return(t,r)=>(B(),V(`section`,NGt,[H(`header`,PGt,[H(`div`,FGt,[Yr(z(PEe),{class:`ai-user-question-answered__help-icon`}),H(`span`,IGt,ke(z(Dp)(`回答内容`)),1)]),H(`span`,LGt,ke(n.value),1)]),H(`div`,RGt,[(B(!0),V(Lr,null,dr(e.answers,(n,r)=>(B(),V(`div`,{key:r,class:`ai-user-question-answered__item`},[H(`div`,zGt,[H(`span`,BGt,ke(r+1)+`. `+ke(n.question),1),n.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,VGt,ke(n.multiSelect?z(Dp)(`多选`):z(Dp)(`单选`)),1))]),$r(` 默认逐条回显选择题答案;业务方可覆盖此 slot 渲染自定义表单的回显 `),pr(t.$slots,`answer`,ri({ref_for:!0},{item:n,index:r,status:e.status}),()=>[(B(!0),V(Lr,null,dr(n.answer,(e,t)=>(B(),V(`p`,{key:t,class:`ai-user-question-answered__answer`},ke(e.description||e.label),1))),128))])]))),128))])]))}}),UGt={class:`ai-user-question-option__badge`},WGt=[`placeholder`,`value`],GGt={key:1,class:`ai-user-question-option__text`},KGt=Qn({__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`,UGt,ke(e.option.letter),1),$r(` Others:自定义输入 `),e.option.isOthers?(B(),V(`input`,{key:0,class:`ai-user-question-option__input`,placeholder:z(Dp)(`请输入...`),value:e.othersText,onClick:n[0]||=Mi(()=>{},[`stop`]),onFocus:a,onInput:o,onKeydown:n[1]||=wre(Mi(e=>r(`confirm`),[`stop`]),[`enter`])},null,40,WGt)):(B(),V(`span`,GGt,ke(e.option.description),1))],2))}}),qGt={class:`ai-user-question-choice`},JGt=Qn({__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!==kGt).map((e,t)=>({...e,isOthers:!1,letter:AGt(t)}));return e.push({label:kGt,description:``,isOthers:!0,letter:AGt(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:kGt,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 Ln(()=>n.question,()=>{i.value=[],a.value=``,f()}),(e,t)=>(B(),V(`div`,qGt,[(B(!0),V(Lr,null,dr(o.value,(e,n)=>(B(),Gr(KGt,{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))]))}}),YGt={class:`ai-user-question-card__title-wrap`},XGt={class:`ai-user-question-card__title`},ZGt={class:`ai-user-question-card__counter-wrap`},QGt={class:`ai-user-question-card__counter`},$Gt={class:`ai-user-question-card__body`},eKt={class:`ai-user-question-card__question-title`},tKt={class:`ai-user-question-card__question-text`},nKt={key:0,class:`ai-user-question-card__tag`},rKt={class:`ai-user-question-card__options`},iKt={class:`ai-user-question-card__footer`},aKt=Qn({__name:`user-question-card`,props:{interrupt:{},onResume:{type:Function}},setup(e){let t=e,n=Kp(),r=cn(!1),{questions:i,answeredCount:a,totalCount:o,completed:s,getAnswer:l,setAnswer:u,buildResolvePayload:d,buildSkipPayload:f}=jGt(()=>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`,YGt,[Yr(z(PEe),{class:`ai-user-question-card__help-icon`}),Mn((B(),V(`span`,XGt,[Qr(ke(p.value),1)])),[[z(qp),{...z(n)}]]),$r(` <span
3491
3491
  v-if="isCollapsed"
3492
3492
  class="ai-user-question-card__tag"
3493
3493
  >
3494
3494
  {{ headerSelectText }}
3495
- </span> `)]),H(`div`,ZGt,[H(`span`,QGt,ke(z(a))+` / `+ke(z(o)),1),Yr(z(SEe),{class:`ai-user-question-card__arrow`,style:ge({transform:r.value?`rotate(180deg)`:`rotate(-90deg)`}),onClick:Mi(m,[`stop`])},null,8,[`style`])])]),$r(` 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 `),Mn(H(`div`,$Gt,[(B(!0),V(Lr,null,dr(z(i),(t,n)=>(B(),V(`div`,{key:n,class:`ai-user-question-card__question`},[H(`div`,eKt,[H(`span`,tKt,ke(n+1)+`. `+ke(t.question),1),t.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,nKt,ke(t.multiSelect?z(Dp)(`多选`):z(Dp)(`单选`)),1))]),H(`div`,rKt,[$r(` 默认渲染选择题;业务方可覆盖此 slot 渲染任意表单,作答有效时通过 setAnswer 回传 `),pr(e.$slots,`question`,ri({ref_for:!0},{question:t,qIndex:n,answer:z(l)(n),setAnswer:e=>z(u)(n,e),confirm:g}),()=>[Yr(JGt,{question:t,onAnswer:e=>z(u)(n,e),onConfirm:g},null,8,[`question`,`onAnswer`])])])]))),128))],512),[[wi,!r.value]]),Mn(H(`footer`,iKt,[Yr(z(iu),{class:`ai-user-question-card__complete`,disabled:!z(s),size:`small`,theme:`primary`,onClick:g},{default:jn(()=>[Yr(z(IEe),{class:`ai-user-question-card__enter-icon`}),Qr(` `+ke(z(Dp)(`完成`)),1)]),_:1},8,[`disabled`]),Yr(z(iu),{class:`ai-user-question-card__skip`,size:`small`,text:``,onClick:_},{default:jn(()=>[Yr(z(LEe),{class:`ai-user-question-card__skip-icon`}),Qr(` `+ke(z(Dp)(`跳过`)),1)]),_:1})],512),[[wi,!r.value]])],2))}}),oKt={class:`ai-delete-confirm`},sKt={class:`ai-delete-confirm__title`},cKt={class:`ai-delete-confirm__desc`},lKt={class:`ai-delete-confirm__actions`},uKt=Qn({__name:`delete-tool`,props:{description:{},id:{},name:{},disabled:{type:Boolean},tippyOptions:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=e,r=t,i=$n(`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 cr(()=>{l()}),(e,t)=>(B(),Gr(z(bp),ri({ref_key:`tippyRef`,ref:i},o.value,{onShow:s}),{content:jn(()=>[H(`div`,oKt,[H(`div`,sKt,ke(z(Dp)(`确认删除该回答?`)),1),H(`div`,cKt,ke(z(Dp)(`删除操作无法撤回,请谨慎操作!`)),1),H(`div`,lKt,[Yr(z(iu),{size:`small`,theme:`danger`,onClick:u},{default:jn(()=>[Qr(ke(z(Dp)(`删除`)),1)]),_:1}),Yr(z(iu),{size:`small`,onClick:d},{default:jn(()=>[Qr(ke(z(Dp)(`取消`)),1)]),_:1})])])]),default:jn(()=>[Yr(Jp,Se(Xr(a.value)),null,16)]),_:1},16))}}),dKt={class:`ai-feedback-title`},fKt={class:`ai-feedback-reason-list`},pKt=[`onClick`],mKt={class:`ai-feedback-other`},hKt={class:`ai-feedback-footer`},gKt=Qn({__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]||=Mi(()=>{},[`stop`,`prevent`])},[H(`div`,dKt,ke(e.title),1),H(`div`,fKt,[e.loading?(B(),V(Lr,{key:0},dr(8,e=>H(`div`,{key:e,class:`reason-item ai-skeleton-element`})),64)):(B(!0),V(Lr,{key:1},dr(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,pKt))),128))]),H(`div`,mKt,[Yr(z(hu),{modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,placeholder:z(Dp)(`说出您的想法`),rows:3,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),H(`div`,hKt,[Yr(z(iu),{class:`custom-btn`,disabled:!r.value&&i.value.length===0,size:`small`,theme:`primary`,onClick:o},{default:jn(()=>[Qr(ke(z(Dp)(`提交`)),1)]),_:1},8,[`disabled`]),Yr(z(iu),{class:`custom-btn`,size:`small`,width:`80px`,onClick:s},{default:jn(()=>[Qr(ke(z(Dp)(`取消`)),1)]),_:1})])],32))}}),_Kt={ref:`messageToolsRef`,class:`message-tools-container`},vKt={class:`message-tools`,style:{"margin-right":`8px`}},yKt={key:0,class:`ai-divider`,style:{"margin-right":`8px`}},bKt={class:`message-tools`},xKt=Qn({__name:`message-tools`,props:{messageTools:{default:()=>JTe},messageToolsStatus:{},onAction:{},tippyOptions:{},updateTools:{default:()=>XTe}},emits:[`feedback`],setup(e,{emit:t}){let n=e,r=t,i=$n(`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`?Dp(`取消满意`):t===`activeUnLike`?Dp(`取消不满意`):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===z9.Disabled)return!1;if(s.value&&s.value===e)return s.value=null,!1};return cr(()=>{f(),o.value=[]}),(t,n)=>(B(),V(`div`,_Kt,[H(`div`,vKt,[(B(!0),V(Lr,null,dr(e.messageTools,t=>(B(),V(Lr,{key:t.id},[t.id===`delete`?(B(),Gr(uKt,ri({key:0,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Jp,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))]),e.updateTools.length>0?(B(),V(`div`,yKt)):$r(`v-if`,!0),H(`div`,bKt,[(B(!0),V(Lr,null,dr(e.updateTools,t=>(B(),V(Lr,{key:t.id},[t.id===`like`||t.id===`unlike`?(B(),Gr(z(bp),ri({key:0,ref_for:!0,ref_key:`feedbackTippyRef`,ref:i},{ref_for:!0},l.value,{onShow:e=>g(t.id)}),{content:jn(()=>[Yr(gKt,{loading:a.value,"reason-list":o.value,title:t.id===`like`?z(Dp)(`什么原因让你满意?`):z(Dp)(`什么原因让你不满意?`),onCancel:f,onSubmit:(e,n)=>h(t,e,n)},null,8,[`loading`,`reason-list`,`title`,`onSubmit`])]),default:jn(()=>[Yr(Jp,ri({ref_for:!0},t,{id:p(t.id),active:s.value===t.id,disabled:e.messageToolsStatus===z(z9).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(uKt,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Jp,ri({key:2,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))])],512))}}),B9=Qn({name:`HighlightKeyword`,props:{text:{type:String,required:!0}},setup(e){let t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=YDe(),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:QTe},e):e)});return()=>U(`span`,r.value)}}),SKt={class:`ai-activity-message`},CKt={class:`ai-activity-message-content`},wKt=Qn({__name:`activity-layout`,props:yr({activityType:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=Dr(e,`collapsed`);return(n,r)=>(B(),V(`div`,SKt,[H(`div`,{class:`ai-activity-message-title`,onClick:r[0]||=e=>t.value=!t.value},[pr(n.$slots,`title`,Se(Xr({collapsed:t.value}))),e.activityType===z(Ap).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(zp))],2))]),Mn(H(`div`,CKt,[pr(n.$slots,`default`)],512),[[wi,!t.value]])]))}}),V9=[{color:`#3A84FF`,icon:null,key:`running`,label:Dp(`执行中`),rawStates:[`CREATED`,`LOOP_READY`,`READY`,`RUNNING`,`BLOCKED`,`ROLLING_BACK`,`ROLL_BACK_SUCCESS`]},{color:`#65C389`,icon:lEe,key:`success`,label:Dp(`成功`),rawStates:[`FINISHED`]},{color:`#EA3636`,icon:uEe,key:`failed`,label:Dp(`失败`),rawStates:[`FAILED`,`REVOKED`,`ROLL_BACK_FAILED`]},{color:`#F59500`,icon:dEe,key:`suspended`,label:Dp(`挂起`),rawStates:[`SUSPENDED`]},{color:`#4D4F56`,dotColor:`#DCDEE5`,icon:fEe,key:`pending`,label:Dp(`待执行`),rawStates:[`PENDING`]},{color:`#5B7290`,icon:pEe,key:`skipped`,label:Dp(`跳过`),rawStates:[`SKIPPED`]}],TKt=Object.fromEntries(V9.map(e=>[e.key,e])),EKt=Object.fromEntries(V9.flatMap(e=>e.rawStates.map(t=>[t,e.key]))),H9=e=>EKt[e]??`running`,DKt=e=>TKt[e].dotColor??TKt[e].color,OKt=e=>{let t=TKt[e].icon;return t?Zr(t):null},kKt=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=H9(e.state);return{convergedState:t,dotColor:DKt(t),elapsedTimeText:VTe(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=H9(e.task_state??``);return{convergedState:r,hasConfidence:!!e.has_confidence,confidenceTitle:e.confidence_title,isActive:!!e.is_active,nodes:t,raw:e,stateIcon:OKt(r),taskId:e.task_id,taskName:e.task_name,totalTimeText:VTe(n)}})),visibleStats:fi(()=>{let e={};for(let t of V9)e[t.key]=0;for(let n of t.value)for(let[t,r]of Object.entries(n.statistics?.state_counts??{}))e[H9(t)]+=r;return V9.filter(t=>e[t.key]>0).map(t=>({color:t.color,display:e[t.key]>99?`99+`:String(e[t.key]),dotColor:DKt(t.key),key:t.key,label:t.label}))})}},AKt=[{icon:YEe,id:Np.FlowNodeRetry,label:()=>Dp(`重试`),visible:e=>e.convergedState===`failed`&&e.retryable},{icon:LEe,id:Np.FlowNodeSkip,label:()=>Dp(`跳过`),visible:e=>e.convergedState===`failed`&&e.skippable}],jKt=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=AKt.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:Rp,id:`detail`,label:Dp(`详情`),run:()=>n(e.raw,t.raw)}),i}}},MKt={class:`ai-detail-section`},NKt={class:`section-heading`},PKt={class:`section-text`},U9=Qn({__name:`detail-section`,props:{title:{}},setup(e){return(t,n)=>(B(),V(`div`,MKt,[H(`div`,NKt,[n[0]||=H(`span`,{class:`section-bar`},null,-1),H(`span`,PKt,ke(e.title),1)]),pr(t.$slots,`default`)]))}}),FKt={class:`ai-simple-table`},IKt={key:0},LKt=[`colspan`],RKt=Qn({__name:`simple-table`,props:{columns:{},data:{}},setup(e){return(t,n)=>(B(),V(`table`,FKt,[H(`thead`,null,[H(`tr`,null,[(B(!0),V(Lr,null,dr(e.columns,e=>(B(),V(`th`,{key:e.key},ke(e.label),1))),128))])]),H(`tbody`,null,[(B(!0),V(Lr,null,dr(e.data,(t,n)=>(B(),V(`tr`,{key:n},[(B(!0),V(Lr,null,dr(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`,IKt,[H(`td`,{class:`is-empty`,colspan:e.columns.length},` -- `,8,LKt)]))])]))}}),zKt={class:`flow-agent-node-detail`},BKt={class:`detail-title`},VKt={key:1,class:`detail-title-content`},HKt={class:`detail-tab-bar`},UKt=[`onClick`],WKt={class:`detail-body`},GKt={class:`skeleton-section`},KKt={class:`skeleton-section`},qKt={class:`info-form`},JKt={class:`info-label`},YKt={class:`info-value`},XKt={class:`info-row`},ZKt={class:`info-label`},QKt={class:`info-value`},$Kt={key:0,class:`failure-item`},eqt={key:1,class:`failure-item`},tqt={class:`info-row`},nqt={class:`info-label`},rqt={class:`info-value`},iqt={key:0,class:`skeleton-section`},W9=function(e){return e.Config=`config`,e.Output=`output`,e}(W9||{}),aqt=Qn({__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:W9.Config,label:Dp(`节点配置`)},{key:W9.Output,label:Dp(`节点输出`)}],n=[{key:`key`,label:Dp(`参数名`)},{breakAll:!0,key:`value`,label:Dp(`参数值`)}],r=[{key:`name`,label:Dp(`名称`)},{key:`description`,label:Dp(`变量说明`)},{key:`key`,label:`KEY`}],i=[{key:`key`,label:Dp(`参数名`)},{breakAll:!0,key:`value`,label:Dp(`参数值`)}],a={forced_fail:Ep?`Force Fail`:`强制失败`},o=e,s=cn(W9.Config),l=fi(()=>o.data?.basic_info),u=fi(()=>{let e=l.value;return e?[{label:Dp(`流程模板`),value:e.template_name||`--`},{label:Dp(`节点名称`),value:e.node_name||`--`},{label:Dp(`步骤名称`),value:e.stage_name||`--`},{label:Dp(`是否可选`),value:e.optional?Dp(`是`):Dp(`否`)}]:[]}),d=fi(()=>{let e=l.value;return e?.skippable||e?.auto_retry?.enable}),f=fi(()=>{let e=l.value?.auto_retry;return e?.enable?Ep?`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 Ep?`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`,zKt,[H(`h3`,BKt,[e.loading?(B(),V(Lr,{key:0},[H(`span`,null,ke(z(Dp)(`节点`))+`:`,1),o[0]||=H(`span`,{class:`skeleton-title ai-skeleton-element`},null,-1)],64)):(B(),V(`div`,VKt,ke(z(Dp)(`节点`))+`:`+ke(l.value?.node_name),1)),pr(a.$slots,`locateButton`)]),H(`div`,HKt,[(B(),V(Lr,null,dr(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(lr(e.key===W9.Config?z(hEe):z(Rp)),{class:`detail-tab-icon`})),Qr(` `+ke(e.label),1)],10,UKt)),64))]),H(`div`,WKt,[s.value===W9.Config?(B(),V(Lr,{key:0},[e.loading?(B(),V(Lr,{key:0},[H(`div`,GKt,[o[1]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,dr(6,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))]),H(`div`,KKt,[o[2]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,dr(4,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])],64)):(B(),V(Lr,{key:1},[Yr(U9,{title:z(Dp)(`基础信息`)},{default:jn(()=>[H(`div`,qKt,[(B(!0),V(Lr,null,dr(u.value,e=>(B(),V(`div`,{key:e.label,class:`info-row`},[H(`div`,JKt,ke(e.label),1),H(`div`,YKt,ke(e.value),1)]))),128)),H(`div`,XKt,[H(`div`,ZKt,ke(z(Dp)(`失败处理`)),1),H(`div`,QKt,[d.value?(B(),V(Lr,{key:0},[l.value?.skippable?(B(),V(`span`,$Kt,[o[3]||=H(`span`,{class:`tag-badge`},`MS`,-1),Qr(` `+ke(z(Dp)(`手动跳过`))+ke(l.value?.auto_retry?.enable?`;`:``),1)])):$r(`v-if`,!0),l.value?.auto_retry?.enable?(B(),V(`span`,eqt,[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`,tqt,[H(`div`,nqt,ke(z(Dp)(`超时控制`)),1),H(`div`,rqt,ke(p.value),1)])])]),_:1},8,[`title`]),Yr(U9,{title:z(Dp)(`输入参数`)},{default:jn(()=>[Yr(RKt,{columns:n,data:m.value},null,8,[`data`])]),_:1},8,[`title`]),Yr(U9,{title:z(Dp)(`输出参数`)},{default:jn(()=>[Yr(RKt,{columns:r,data:h.value},null,8,[`data`])]),_:1},8,[`title`])],64))],64)):(B(),V(Lr,{key:1},[e.loading?(B(),V(`div`,iqt,[o[5]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,dr(5,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])):(B(),Gr(U9,{key:1,title:z(Dp)(`结构化输出`)},{default:jn(()=>[Yr(RKt,{columns:i,data:g.value},null,8,[`data`])]),_:1},8,[`title`]))],64))])]))}}),G9=e=>e.task_id==null?``:`${e.task_id}`,oqt=G9,sqt=(e,t)=>e.task_id==null?``:`${e.task_id}|${t.id}|${t.name}`,cqt=e=>{let{messageUid:t,taskList:n}=e,r=kDe(),i=TDe(),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:G9(e)}),u=e=>{let t=l.value;return t===G9(e)||t===oqt(e)},d=(e,t)=>l.value===sqt(e,t),f=(e,n)=>{let i=e.task_id;i!=null&&(s(),r.addCustomTab?.({label:n.name,name:sqt(e,n),data:{component:aqt,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:Dp(`有效证据`),name:oqt(e),data:{component:aqt,messageUid:t.value,props:{data:{},has_confidence:e.has_confidence,loading:!0,task_id:n,task_name:e.task_name}}}))};return Ln(a,(e,t)=>{t!==void 0&&s()}),or(()=>{i?.value&&p(n.value.find(e=>e.is_active&&e.has_confidence))}),cr(()=>{if(i?.value)for(let e of n.value){r.removeCustomTab?.(G9(e)),r.removeCustomTab?.(oqt(e));for(let t of Object.values(e.nodes??{}))r.removeCustomTab?.(sqt(e,t))}}),{displaySelectedTabName:l,isNodeSelected:d,isTaskSelected:u,markUserTabSelection:s,openConfidence:p,openNodeDetail:f}},lqt={class:`ai-activity-message-title-text`},uqt={class:`flow-agent-title-label`},dqt={class:`flow-agent-stat-tooltip`},fqt={class:`flow-agent-stat-tooltip-status`},pqt={class:`flow-agent-stat-tooltip-label`},mqt=[`onClick`],hqt={class:`flow-agent-task-state-icon`},gqt={class:`flow-agent-task-name`},_qt={key:0,class:`flow-agent-task-trailing`},vqt={class:`flow-agent-task-time`},yqt=[`onClick`],bqt={class:`flow-agent-task-nodes`},xqt={class:`flow-agent-node-status`},Sqt=[`title`],Cqt={key:0,class:`flow-agent-node-trailing`},wqt={class:`flow-agent-node-time`},Tqt={class:`flow-agent-node-actions`},Eqt=[`onClick`],Dqt=Qn({__name:`flow-agent-content`,props:yr({content:{},messageUid:{},onInterruptResume:{type:Function},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Kp(),r=Dr(e,`collapsed`),i=qDe(),a=fi(()=>i.value!==Pp.Share),o=fi(()=>t.status===Mp.Pending||t.status===Mp.Streaming),{isTaskExpanded:s,taskList:l,toggleTaskExpanded:u,viewTasks:d,visibleStats:f}=kKt(fn(t,`content`)),{isNodeSelected:p,isTaskSelected:m,openConfidence:h,openNodeDetail:g}=cqt({messageUid:fn(t,`messageUid`),taskList:l}),{getNodeActions:_}=jKt({onInterruptResume:fn(t,`onInterruptResume`),openNodeDetail:g});return(e,t)=>(B(),Gr(wKt,{collapsed:r.value,"onUpdate:collapsed":t[0]||=e=>r.value=e,"activity-type":z(Ap).FlowAgent,class:`flow-agent-activity`},{title:jn(()=>[$r(` hover 整条执行情况栏展示统计 tooltip(设计稿 annotation) `),Yr(z(bp),ri({class:`flow-agent-title-bar`,theme:`ai-chat-box-light light`},{...z(n),tag:`div`,arrow:!0,followCursor:!1,offset:[0,10]}),{content:jn(()=>[H(`div`,dqt,[(B(!0),V(Lr,null,dr(z(f),e=>(B(),V(`div`,{key:e.key,class:`flow-agent-stat-tooltip-item`},[H(`span`,fqt,[e.key===`running`?(B(),Gr(z(Xl),{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`,pqt,ke(e.label)+`:`,1),H(`span`,{class:`flow-agent-stat-tooltip-count`,style:ge({color:e.color})},ke(e.display),5)]))),128))])]),default:jn(()=>[H(`span`,{class:xe([`ai-activity-message-title-icon`,{"icon-collapsed":r.value}])},[o.value?(B(),Gr(Vp,{key:0,size:12})):(B(),Gr(z(Lp),{key:1}))],2),H(`span`,lqt,[H(`span`,uqt,ke(z(Dp)(`执行情况`))+`:`,1),(B(!0),V(Lr,null,dr(z(f),e=>(B(),V(`span`,{key:e.key,class:`flow-agent-stat-item`},[e.key===`running`?(B(),Gr(z(Xl),{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:jn(()=>[(B(!0),V(Lr,null,dr(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:Mi(t=>z(u)(e.raw),[`stop`])},[Yr(z(Lp))],10,mqt),H(`span`,hqt,[e.convergedState===`running`?(B(),Gr(z(Xl),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),Gr(lr(e.stateIcon),{key:1}))]),Mn((B(),V(`span`,gqt,[Yr(z(B9),{text:e.taskName},null,8,[`text`])])),[[z(qp),{...z(n)}]]),a.value?(B(),V(`span`,_qt,[H(`span`,vqt,ke(e.totalTimeText),1),e.hasConfidence?(B(),V(`span`,{key:0,class:`flow-agent-task-action-btn flow-agent-task-confidence-btn`,onClick:Mi(t=>z(h)(e.raw),[`stop`])},[Yr(z(Rp)),Qr(` `+ke(e.confidenceTitle??z(Dp)(`有效证据`)),1)],8,yqt)):$r(`v-if`,!0)])):$r(`v-if`,!0)],2),Mn(H(`div`,bqt,[(B(!0),V(Lr,null,dr(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`,xqt,[t.convergedState===`running`?(B(),Gr(z(Xl),{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))]),Mn((B(),V(`span`,{class:`flow-agent-node-name`,title:t.name},[Yr(z(B9),{text:t.name},null,8,[`text`])],8,Sqt)),[[z(qp),{...z(n)}]]),a.value?(B(),V(`span`,Cqt,[H(`span`,wqt,ke(t.elapsedTimeText),1),H(`span`,Tqt,[(B(!0),V(Lr,null,dr(z(_)(e,t),e=>(B(),V(`span`,{key:e.id,class:`flow-agent-node-action-btn`,onClick:Mi(t=>e.run(),[`stop`])},[(B(),Gr(lr(e.icon))),Qr(` `+ke(e.label),1)],8,Eqt))),128))])])):$r(`v-if`,!0)],2))),128))],512),[[wi,z(s)(e.raw)]])]))),128))]),_:1},8,[`collapsed`,`activity-type`]))}}),Oqt={class:`ai-activity-message-title-icon`},kqt={class:`ai-activity-message-title-text`},Aqt={class:`knowledge-rag-content`},jqt=Qn({__name:`knowledge-rag-content`,props:yr({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===Mp.Pending||t.status===Mp.Streaming),i=fi(()=>r.value?Dp(`检索中`):Dp(`检索完成`));return(t,a)=>(B(),Gr(wKt,{collapsed:n.value,"onUpdate:collapsed":a[0]||=e=>n.value=e},{title:jn(()=>[H(`span`,Oqt,[r.value?(B(),Gr(Vp,{key:0})):(B(),Gr(z(Ip),{key:1,style:{"font-size":`12px`}}))]),H(`span`,kqt,ke(i.value),1)]),default:jn(()=>[H(`div`,Aqt,[Yr(y9,{content:e.content?.content||``},null,8,[`content`])]),Yr(oUt,{content:e.content?.referenceDocument||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),Mqt={class:`ai-activity-message-title-icon`},Nqt={class:`ai-activity-message-title-text`},Pqt=Qn({__name:`reference-doc-content`,props:yr({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 Ep?`Reference ${e} documents as reference`:`引用 ${e} 篇资料作为参考`});return(t,i)=>(B(),Gr(wKt,{collapsed:n.value,"onUpdate:collapsed":i[0]||=e=>n.value=e},{title:jn(()=>[H(`span`,Mqt,[Yr(z(Ip),{style:{"font-size":`12px`}})]),H(`span`,Nqt,ke(r.value),1)]),default:jn(()=>[Yr(oUt,{content:e.content||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),Fqt=Qn({__name:`activity-message`,props:yr({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={[Ap.FlowAgent]:Dqt,[Ap.KnowledgeRag]:jqt,[Ap.ReferenceDocument]:Pqt},n=e,r=Dr(e,`collapsed`),i=fi(()=>t[n.activityType??``]);return(t,n)=>i.value?(B(),Gr(lr(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)}}),Iqt={class:`toolcall-desc`},Lqt={class:`desc-title`},Rqt={class:`desc-panel`},zqt={class:`desc-label`},Bqt={class:`desc-value`},Vqt=Qn({__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`,Iqt,[H(`div`,Lqt,ke(e.title),1),H(`div`,Rqt,[$r(` null 的 typeof 为 object,需排除,避免 v-for 异常;键/值统一转字符串以满足 HighlightKeyword `),r.value!==null&&typeof r.value==`object`?(B(!0),V(Lr,{key:0},dr(r.value,(e,t)=>(B(),V(`div`,{key:t,class:`desc-panel-item`},[H(`span`,zqt,[Yr(z(B9),{text:String(t)},null,8,[`text`]),i[0]||=Qr(`:`,-1)]),H(`span`,Bqt,[Yr(z(B9),{style:{"word-break":`break-all`},text:n(e)},null,8,[`text`])])]))),128)):(B(),Gr(z(B9),{key:1,style:{wordBreak:`break-all`},text:n(r.value)},null,8,[`text`]))])]))}}),Hqt={class:`tool-message`},Uqt=Qn({__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`,Hqt,[Yr(Vqt,{desc:e.content||(typeof e.error==`string`?e.error:void 0),title:z(Dp)(`返回内容`)},null,8,[`desc`,`title`])]))}}),Wqt={class:`ai-toolcall-render`},Gqt={class:`toolcall-header-title`},Kqt={class:`toolcall-status-title`},qqt={key:1,class:`toolcall-duration`},Jqt={class:`ai-toolcall-render-content`},Yqt=Qn({__name:`toolcall-render`,props:{duration:{},status:{},toolCall:{}},setup(e){let t=e,n=cn(!0),r=cn(null),i=Kp(),{keywordMatched:a,keyword:o}=XDe(()=>[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 Mp.Pending:return Dp(`调用中`);case Mp.Complete:case Mp.Success:return Dp(`调用成功`);case Mp.Error||t.toolCall?.toolMessage?.error:return Dp(`调用失败`)}}),f=fi(()=>{let e=t.duration||t.toolCall?.toolMessage?.duration;return e?BTe(e):``});return(t,n)=>(B(),V(`div`,Wqt,[H(`div`,{class:xe([`ai-toolcall-render-header`,`toolcall-status-${e.status}`]),onClick:l},[Yr(z(Lp),{class:xe({"is-collapsed":s.value})},null,8,[`class`]),Qr(` `+ke(e.toolCall?.function.mcpName?z(Dp)(`调用 MCP:`):z(Dp)(`调用工具:`))+` `,1),Mn((B(),V(`span`,Gqt,[Yr(z(B9),{text:u.value},null,8,[`text`])])),[[z(qp),{...z(i),text:u.value,appendTo:`parent`}]]),H(`span`,Kqt,[e.status===z(Mp).Pending||e.status===z(Mp).Streaming?(B(),Gr(z(Xl),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):$r(`v-if`,!0),Yr(z(B9),{text:d.value},null,8,[`text`]),f.value?(B(),V(`span`,qqt,` (`+ke(f.value)+`) `,1)):$r(`v-if`,!0)])],2),Mn(H(`div`,Jqt,[Yr(Vqt,{desc:e.toolCall?.function.description,title:z(Dp)(`描述`)},null,8,[`desc`,`title`]),Yr(Vqt,{desc:e.toolCall?.function.arguments,title:z(Dp)(`参数`)},null,8,[`desc`,`title`]),e.toolCall?.toolMessage?(B(),Gr(Uqt,Se(ri({key:0},e.toolCall.toolMessage)),null,16)):$r(`v-if`,!0)],512),[[wi,!s.value]])]))}}),Xqt={class:`ai-assistant-message`},Zqt={class:`ai-assistant-message-content`},Qqt=Qn({__name:`assistant-message`,props:{toolCalls:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,Xqt,[H(`div`,Zqt,[pr(t.$slots,`default`,Se(Xr({content:e.content})),()=>[Yr(sUt,{content:e.content||``,status:e.status,type:z(Ap).Text},null,8,[`content`,`status`,`type`])])]),e.toolCalls&&e.toolCalls.length>0?(B(!0),V(Lr,{key:0},dr(e.toolCalls,t=>(B(),Gr(Yqt,{key:t.id,status:e.status,"tool-call":t},null,8,[`status`,`tool-call`]))),128)):$r(`v-if`,!0)]))}}),$qt={class:`info-message`},eJt=Qn({__name:`info-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,$qt,[(B(!0),V(Lr,null,dr(Array.isArray(e.content)?e.content:[e.content],(e,t)=>(B(),V(`div`,{key:t,class:`info-message-content`},ke(e),1))),128))]))}}),tJt={class:`ai-tool-approval-card`},nJt={class:`ai-tool-approval-card__header`},rJt={class:`ai-tool-approval-card__title-wrap`},iJt={class:`ai-tool-approval-card__title`},aJt={class:`ai-tool-approval-card__fields`},oJt={class:`ai-tool-approval-card__field`},sJt={class:`ai-tool-approval-card__field`},cJt={class:`ai-tool-approval-card__processor`},lJt={class:`ai-tool-approval-card__processor-text`},uJt={class:`ai-tool-approval-card__actions`},dJt=Qn({__name:`tool-approval-card`,props:{interrupt:{},onInterruptResume:{type:Function},readonly:{type:Boolean}},setup(e){let t=e,n=Kp(),{copy:r}=Up(),i=new Set([Op.PENDING,Op.DRAFT]),a=new Set([Op.ABANDONED,Op.CANCELLED,Op.EXPIRED,Op.REJECTED]),o=fi(()=>t.interrupt.metadata?.ticket??{approvers:[],sn:``,status:Op.PENDING,submit_time:``,title:``,url:``}),s=fi(()=>i.has(o.value.status)),l=fi(()=>s.value?`pending`:o.value.status),u=fi(()=>s.value?Dp(`评审中`):UTe[o.value.status]??o.value.status),d=fi(()=>o.value.approvers.filter(Boolean).join(`、`)||Dp(`无`)),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:Np.ApprovalCancel,payload:{interrupt_id:t.interrupt.id}},t.interrupt)};return(t,r)=>(B(),V(`section`,tJt,[H(`header`,nJt,[H(`div`,rJt,[r[0]||=H(`span`,{class:`ai-tool-approval-card__title-bar`},null,-1),H(`span`,iJt,ke(o.value.title||z(Dp)(`算法方案评审单`)),1),Mn(Yr(z(qEe),{class:xe([`ai-tool-approval-card__copy-icon`,{"is-disabled":!f.value}]),onClick:m},null,8,[`class`]),[[z(xp),{...z(n),content:z(Dp)(`复制单据链接`),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(Op).APPROVED?(B(),Gr(z(AEe),{key:0,class:`ai-tool-approval-card__status-icon`})):z(a).has(o.value.status)?(B(),Gr(z(MEe),{key:1,class:`ai-tool-approval-card__status-icon`})):o.value.status===z(Op).REVOKED?(B(),Gr(z(NEe),{key:2,class:xe([`ai-tool-approval-card__status-icon`,{"ai-tool-approval-card__status-icon--revoked":o.value.status===z(Op).REVOKED}])},null,8,[`class`])):(B(),Gr(z(Xl),{key:3,class:`ai-tool-approval-card__status-icon`,mode:`spin`,size:`mini`,theme:`primary`})),Qr(` `+ke(u.value),1)],2)]),H(`dl`,aJt,[H(`div`,oJt,[H(`dt`,null,ke(z(Dp)(`单据编号`)),1),H(`dd`,null,ke(o.value.sn||`--`),1)]),H(`div`,sJt,[H(`dt`,null,ke(z(Dp)(`提交时间`)),1),H(`dd`,null,ke(o.value.submit_time||`--`),1)])]),H(`div`,cJt,[Yr(z(jEe),{class:`ai-tool-approval-card__processor-icon`}),Mn((B(),V(`span`,lJt,[Qr(ke(z(Dp)(`当前处理人`))+`:`+ke(d.value),1)])),[[z(qp),{...z(n)}]])]),H(`div`,uJt,[Yr(z(iu),{class:`ai-tool-approval-card__detail`,disabled:!o.value.url,theme:`primary`,onClick:p},{default:jn(()=>[Qr(ke(z(Dp)(`查看单据详情`))+` `,1),r[1]||=H(`span`,{class:`ai-tool-approval-card__detail-icon`},null,-1)]),_:1},8,[`disabled`]),s.value&&!e.readonly?(B(),Gr(z(iu),{key:0,class:`ai-tool-approval-card__cancel`,outline:``,theme:`primary`,onClick:h},{default:jn(()=>[Qr(ke(z(Dp)(`取消审批`)),1)]),_:1})):$r(`v-if`,!0)])]))}}),fJt={class:`ai-interrupt-message`},pJt={key:0,class:`ai-interrupt-message__content`},mJt={class:`ai-interrupt-message__fallback`},hJt=Qn({__name:`interrupt-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},setup(e){let t={[kp.AIDevToolApproval]:dJt},n=e=>({id:e.interruptId||e.id||``,reason:kp.AIDevToolApproval,toolCallId:``,metadata:e.payload.metadata}),r={[kp.AIDevToolApproval]:e=>({component:dJt,props:{interrupt:n(e),readonly:!0}}),[kp.UserQuestion]:e=>({component:HGt,props:{answers:e.payload?.answers??[],status:e.status}})},i=new Set([kp.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`,fJt,[s.value?(B(),V(`div`,pJt,ke(s.value),1)):$r(`v-if`,!0),(B(!0),V(Lr,null,dr(o.value,t=>(B(),V(Lr,{key:t.toolCallId},[l(t)?(B(),Gr(lr(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`,mJt,ke(t.message||z(Dp)(`暂不支持的中断消息`)),1)],2112))],64))),128)),$r(` outcome.success 时按 reason 在会话内回显 resume 结果(审批单 / 已回答内容等) `),d.value?(B(),Gr(lr(d.value.component),Se(ri({key:1},d.value.props)),fr({_:2},[t.$slots.answeredQuestion?{name:`answer`,fn:jn(e=>[pr(t.$slots,`answeredQuestion`,Se(Xr(e)))]),key:`0`}:void 0]),1040)):$r(`v-if`,!0)]))}}),gJt={class:`ai-loading-message`},_Jt=Qn({__name:`loading-message`,setup(e){return(e,t)=>(B(),V(`div`,gJt,[Yr(Vp,{size:18}),pr(e.$slots,`default`,{},()=>[Qr(ke(z(Dp)(`请求中...`)),1)])]))}}),vJt={class:`ai-reasoning-message`},yJt={key:0,class:`ai-reasoning-message-title-icon`},bJt={class:`ai-reasoning-message-title-text`},xJt={class:`ai-reasoning-message-content`},SJt=Qn({__name:`reasoning-message`,props:yr({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}=Ln(()=>t.duration,async e=>{e&&(n.value=!0,await En(),r?.())},{immediate:!0}),i=fi(()=>{switch(t.status){case Mp.Pending:return Dp(`思考中`);case Mp.Success:case Mp.Complete:return Dp(`已思考完成`)+(t.duration?` (${Dp(`耗时`)} :${BTe(t.duration)})`:``);case Mp.Error:return Dp(`思考失败`);default:return Dp(`思考中`)}});return(t,r)=>(B(),V(`div`,vJt,[H(`div`,{class:xe([`ai-reasoning-message-title`,{"ai-reasoning-message-title-collapsed":n.value,"is-thinking":e.status===z(Mp).Pending||e.status===z(Mp).Streaming,"is-complete":e.status===z(Mp).Complete||e.status===z(Mp).Success,"is-error":e.status===z(Mp).Error}]),onClick:r[0]||=e=>n.value=!n.value},[e.status===z(Mp).Pending||e.status===z(Mp).Streaming?(B(),V(`span`,yJt,[Yr(Vp)])):$r(`v-if`,!0),H(`span`,bJt,ke(i.value),1),$r(` <template v-if="status === MessageStatus.Pending || status === MessageStatus.Streaming">
3495
+ </span> `)]),H(`div`,ZGt,[H(`span`,QGt,ke(z(a))+` / `+ke(z(o)),1),Yr(z(SEe),{class:`ai-user-question-card__arrow`,style:ge({transform:r.value?`rotate(180deg)`:`rotate(-90deg)`}),onClick:Mi(m,[`stop`])},null,8,[`style`])])]),$r(` 折叠用 v-show 而非 v-if:保留 UserQuestionChoice 及自定义 slot 的勾选态,避免卸载丢失选中 `),Mn(H(`div`,$Gt,[(B(!0),V(Lr,null,dr(z(i),(t,n)=>(B(),V(`div`,{key:n,class:`ai-user-question-card__question`},[H(`div`,eKt,[H(`span`,tKt,ke(n+1)+`. `+ke(t.question),1),t.multiSelect===void 0?$r(`v-if`,!0):(B(),V(`span`,nKt,ke(t.multiSelect?z(Dp)(`多选`):z(Dp)(`单选`)),1))]),H(`div`,rKt,[$r(` 默认渲染选择题;业务方可覆盖此 slot 渲染任意表单,作答有效时通过 setAnswer 回传 `),pr(e.$slots,`question`,ri({ref_for:!0},{question:t,qIndex:n,answer:z(l)(n),setAnswer:e=>z(u)(n,e),confirm:_}),()=>[Yr(JGt,{question:t,onAnswer:e=>z(u)(n,e),onConfirm:_},null,8,[`question`,`onAnswer`])])])]))),128))],512),[[wi,!r.value]]),Mn(H(`footer`,iKt,[Yr(z(iu),{class:`ai-user-question-card__complete`,disabled:!z(s)||g.value===`skip`,loading:g.value===`complete`,size:`small`,theme:`primary`,onClick:_},{default:jn(()=>[g.value===`complete`?$r(`v-if`,!0):(B(),Gr(z(IEe),{key:0,class:`ai-user-question-card__enter-icon`})),Qr(` `+ke(z(Dp)(`完成`)),1)]),_:1},8,[`disabled`,`loading`]),Yr(z(iu),{class:`ai-user-question-card__skip`,disabled:g.value===`complete`,loading:g.value===`skip`,size:`small`,text:``,onClick:v},{default:jn(()=>[g.value===`skip`?$r(`v-if`,!0):(B(),Gr(z(LEe),{key:0,class:`ai-user-question-card__skip-icon`})),Qr(` `+ke(z(Dp)(`跳过`)),1)]),_:1},8,[`disabled`,`loading`])],512),[[wi,!r.value]])],2))}}),oKt={class:`ai-delete-confirm`},sKt={class:`ai-delete-confirm__title`},cKt={class:`ai-delete-confirm__desc`},lKt={class:`ai-delete-confirm__actions`},uKt=Qn({__name:`delete-tool`,props:{description:{},id:{},name:{},disabled:{type:Boolean},tippyOptions:{}},emits:[`confirm`,`cancel`],setup(e,{emit:t}){let n=e,r=t,i=$n(`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 cr(()=>{l()}),(e,t)=>(B(),Gr(z(bp),ri({ref_key:`tippyRef`,ref:i},o.value,{onShow:s}),{content:jn(()=>[H(`div`,oKt,[H(`div`,sKt,ke(z(Dp)(`确认删除该回答?`)),1),H(`div`,cKt,ke(z(Dp)(`删除操作无法撤回,请谨慎操作!`)),1),H(`div`,lKt,[Yr(z(iu),{size:`small`,theme:`danger`,onClick:u},{default:jn(()=>[Qr(ke(z(Dp)(`删除`)),1)]),_:1}),Yr(z(iu),{size:`small`,onClick:d},{default:jn(()=>[Qr(ke(z(Dp)(`取消`)),1)]),_:1})])])]),default:jn(()=>[Yr(Jp,Se(Xr(a.value)),null,16)]),_:1},16))}}),dKt={class:`ai-feedback-title`},fKt={class:`ai-feedback-reason-list`},pKt=[`onClick`],mKt={class:`ai-feedback-other`},hKt={class:`ai-feedback-footer`},gKt=Qn({__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]||=Mi(()=>{},[`stop`,`prevent`])},[H(`div`,dKt,ke(e.title),1),H(`div`,fKt,[e.loading?(B(),V(Lr,{key:0},dr(8,e=>H(`div`,{key:e,class:`reason-item ai-skeleton-element`})),64)):(B(!0),V(Lr,{key:1},dr(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,pKt))),128))]),H(`div`,mKt,[Yr(z(hu),{modelValue:r.value,"onUpdate:modelValue":n[0]||=e=>r.value=e,placeholder:z(Dp)(`说出您的想法`),rows:3,type:`textarea`},null,8,[`modelValue`,`placeholder`])]),H(`div`,hKt,[Yr(z(iu),{class:`custom-btn`,disabled:!r.value&&i.value.length===0,size:`small`,theme:`primary`,onClick:o},{default:jn(()=>[Qr(ke(z(Dp)(`提交`)),1)]),_:1},8,[`disabled`]),Yr(z(iu),{class:`custom-btn`,size:`small`,width:`80px`,onClick:s},{default:jn(()=>[Qr(ke(z(Dp)(`取消`)),1)]),_:1})])],32))}}),_Kt={ref:`messageToolsRef`,class:`message-tools-container`},vKt={class:`message-tools`,style:{"margin-right":`8px`}},yKt={key:0,class:`ai-divider`,style:{"margin-right":`8px`}},bKt={class:`message-tools`},xKt=Qn({__name:`message-tools`,props:{messageTools:{default:()=>JTe},messageToolsStatus:{},onAction:{},tippyOptions:{},updateTools:{default:()=>XTe}},emits:[`feedback`],setup(e,{emit:t}){let n=e,r=t,i=$n(`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`?Dp(`取消满意`):t===`activeUnLike`?Dp(`取消不满意`):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===z9.Disabled)return!1;if(s.value&&s.value===e)return s.value=null,!1};return cr(()=>{f(),o.value=[]}),(t,n)=>(B(),V(`div`,_Kt,[H(`div`,vKt,[(B(!0),V(Lr,null,dr(e.messageTools,t=>(B(),V(Lr,{key:t.id},[t.id===`delete`?(B(),Gr(uKt,ri({key:0,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Jp,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))]),e.updateTools.length>0?(B(),V(`div`,yKt)):$r(`v-if`,!0),H(`div`,bKt,[(B(!0),V(Lr,null,dr(e.updateTools,t=>(B(),V(Lr,{key:t.id},[t.id===`like`||t.id===`unlike`?(B(),Gr(z(bp),ri({key:0,ref_for:!0,ref_key:`feedbackTippyRef`,ref:i},{ref_for:!0},l.value,{onShow:e=>g(t.id)}),{content:jn(()=>[Yr(gKt,{loading:a.value,"reason-list":o.value,title:t.id===`like`?z(Dp)(`什么原因让你满意?`):z(Dp)(`什么原因让你不满意?`),onCancel:f,onSubmit:(e,n)=>h(t,e,n)},null,8,[`loading`,`reason-list`,`title`,`onSubmit`])]),default:jn(()=>[Yr(Jp,ri({ref_for:!0},t,{id:p(t.id),active:s.value===t.id,disabled:e.messageToolsStatus===z(z9).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(uKt,ri({key:1,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onConfirm:e=>d(t)}),null,16,[`disabled`,`tippy-options`,`onConfirm`])):(B(),Gr(Jp,ri({key:2,ref_for:!0},t,{disabled:e.messageToolsStatus===z(z9).Disabled,"tippy-options":e.tippyOptions,onClick:e=>u(t)}),null,16,[`disabled`,`tippy-options`,`onClick`]))],64))),128))])],512))}}),B9=Qn({name:`HighlightKeyword`,props:{text:{type:String,required:!0}},setup(e){let t=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),n=YDe(),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:QTe},e):e)});return()=>U(`span`,r.value)}}),SKt={class:`ai-activity-message`},CKt={class:`ai-activity-message-content`},wKt=Qn({__name:`activity-layout`,props:yr({activityType:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=Dr(e,`collapsed`);return(n,r)=>(B(),V(`div`,SKt,[H(`div`,{class:`ai-activity-message-title`,onClick:r[0]||=e=>t.value=!t.value},[pr(n.$slots,`title`,Se(Xr({collapsed:t.value}))),e.activityType===z(Ap).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(zp))],2))]),Mn(H(`div`,CKt,[pr(n.$slots,`default`)],512),[[wi,!t.value]])]))}}),V9=[{color:`#3A84FF`,icon:null,key:`running`,label:Dp(`执行中`),rawStates:[`CREATED`,`LOOP_READY`,`READY`,`RUNNING`,`BLOCKED`,`ROLLING_BACK`,`ROLL_BACK_SUCCESS`]},{color:`#65C389`,icon:lEe,key:`success`,label:Dp(`成功`),rawStates:[`FINISHED`]},{color:`#EA3636`,icon:uEe,key:`failed`,label:Dp(`失败`),rawStates:[`FAILED`,`REVOKED`,`ROLL_BACK_FAILED`]},{color:`#F59500`,icon:dEe,key:`suspended`,label:Dp(`挂起`),rawStates:[`SUSPENDED`]},{color:`#4D4F56`,dotColor:`#DCDEE5`,icon:fEe,key:`pending`,label:Dp(`待执行`),rawStates:[`PENDING`]},{color:`#5B7290`,icon:pEe,key:`skipped`,label:Dp(`跳过`),rawStates:[`SKIPPED`]}],TKt=Object.fromEntries(V9.map(e=>[e.key,e])),EKt=Object.fromEntries(V9.flatMap(e=>e.rawStates.map(t=>[t,e.key]))),H9=e=>EKt[e]??`running`,DKt=e=>TKt[e].dotColor??TKt[e].color,OKt=e=>{let t=TKt[e].icon;return t?Zr(t):null},kKt=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=H9(e.state);return{convergedState:t,dotColor:DKt(t),elapsedTimeText:VTe(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=H9(e.task_state??``);return{convergedState:r,hasConfidence:!!e.has_confidence,confidenceTitle:e.confidence_title,isActive:!!e.is_active,nodes:t,raw:e,stateIcon:OKt(r),taskId:e.task_id,taskName:e.task_name,totalTimeText:VTe(n)}})),visibleStats:fi(()=>{let e={};for(let t of V9)e[t.key]=0;for(let n of t.value)for(let[t,r]of Object.entries(n.statistics?.state_counts??{}))e[H9(t)]+=r;return V9.filter(t=>e[t.key]>0).map(t=>({color:t.color,display:e[t.key]>99?`99+`:String(e[t.key]),dotColor:DKt(t.key),key:t.key,label:t.label}))})}},AKt=[{icon:YEe,id:Np.FlowNodeRetry,label:()=>Dp(`重试`),visible:e=>e.convergedState===`failed`&&e.retryable},{icon:LEe,id:Np.FlowNodeSkip,label:()=>Dp(`跳过`),visible:e=>e.convergedState===`failed`&&e.skippable}],jKt=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=AKt.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:Rp,id:`detail`,label:Dp(`详情`),run:()=>n(e.raw,t.raw)}),i}}},MKt={class:`ai-detail-section`},NKt={class:`section-heading`},PKt={class:`section-text`},U9=Qn({__name:`detail-section`,props:{title:{}},setup(e){return(t,n)=>(B(),V(`div`,MKt,[H(`div`,NKt,[n[0]||=H(`span`,{class:`section-bar`},null,-1),H(`span`,PKt,ke(e.title),1)]),pr(t.$slots,`default`)]))}}),FKt={class:`ai-simple-table`},IKt={key:0},LKt=[`colspan`],RKt=Qn({__name:`simple-table`,props:{columns:{},data:{}},setup(e){return(t,n)=>(B(),V(`table`,FKt,[H(`thead`,null,[H(`tr`,null,[(B(!0),V(Lr,null,dr(e.columns,e=>(B(),V(`th`,{key:e.key},ke(e.label),1))),128))])]),H(`tbody`,null,[(B(!0),V(Lr,null,dr(e.data,(t,n)=>(B(),V(`tr`,{key:n},[(B(!0),V(Lr,null,dr(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`,IKt,[H(`td`,{class:`is-empty`,colspan:e.columns.length},` -- `,8,LKt)]))])]))}}),zKt={class:`flow-agent-node-detail`},BKt={class:`detail-title`},VKt={key:1,class:`detail-title-content`},HKt={class:`detail-tab-bar`},UKt=[`onClick`],WKt={class:`detail-body`},GKt={class:`skeleton-section`},KKt={class:`skeleton-section`},qKt={class:`info-form`},JKt={class:`info-label`},YKt={class:`info-value`},XKt={class:`info-row`},ZKt={class:`info-label`},QKt={class:`info-value`},$Kt={key:0,class:`failure-item`},eqt={key:1,class:`failure-item`},tqt={class:`info-row`},nqt={class:`info-label`},rqt={class:`info-value`},iqt={key:0,class:`skeleton-section`},W9=function(e){return e.Config=`config`,e.Output=`output`,e}(W9||{}),aqt=Qn({__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:W9.Config,label:Dp(`节点配置`)},{key:W9.Output,label:Dp(`节点输出`)}],n=[{key:`key`,label:Dp(`参数名`)},{breakAll:!0,key:`value`,label:Dp(`参数值`)}],r=[{key:`name`,label:Dp(`名称`)},{key:`description`,label:Dp(`变量说明`)},{key:`key`,label:`KEY`}],i=[{key:`key`,label:Dp(`参数名`)},{breakAll:!0,key:`value`,label:Dp(`参数值`)}],a={forced_fail:Ep?`Force Fail`:`强制失败`},o=e,s=cn(W9.Config),l=fi(()=>o.data?.basic_info),u=fi(()=>{let e=l.value;return e?[{label:Dp(`流程模板`),value:e.template_name||`--`},{label:Dp(`节点名称`),value:e.node_name||`--`},{label:Dp(`步骤名称`),value:e.stage_name||`--`},{label:Dp(`是否可选`),value:e.optional?Dp(`是`):Dp(`否`)}]:[]}),d=fi(()=>{let e=l.value;return e?.skippable||e?.auto_retry?.enable}),f=fi(()=>{let e=l.value?.auto_retry;return e?.enable?Ep?`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 Ep?`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`,zKt,[H(`h3`,BKt,[e.loading?(B(),V(Lr,{key:0},[H(`span`,null,ke(z(Dp)(`节点`))+`:`,1),o[0]||=H(`span`,{class:`skeleton-title ai-skeleton-element`},null,-1)],64)):(B(),V(`div`,VKt,ke(z(Dp)(`节点`))+`:`+ke(l.value?.node_name),1)),pr(a.$slots,`locateButton`)]),H(`div`,HKt,[(B(),V(Lr,null,dr(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(lr(e.key===W9.Config?z(hEe):z(Rp)),{class:`detail-tab-icon`})),Qr(` `+ke(e.label),1)],10,UKt)),64))]),H(`div`,WKt,[s.value===W9.Config?(B(),V(Lr,{key:0},[e.loading?(B(),V(Lr,{key:0},[H(`div`,GKt,[o[1]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,dr(6,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))]),H(`div`,KKt,[o[2]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,dr(4,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])],64)):(B(),V(Lr,{key:1},[Yr(U9,{title:z(Dp)(`基础信息`)},{default:jn(()=>[H(`div`,qKt,[(B(!0),V(Lr,null,dr(u.value,e=>(B(),V(`div`,{key:e.label,class:`info-row`},[H(`div`,JKt,ke(e.label),1),H(`div`,YKt,ke(e.value),1)]))),128)),H(`div`,XKt,[H(`div`,ZKt,ke(z(Dp)(`失败处理`)),1),H(`div`,QKt,[d.value?(B(),V(Lr,{key:0},[l.value?.skippable?(B(),V(`span`,$Kt,[o[3]||=H(`span`,{class:`tag-badge`},`MS`,-1),Qr(` `+ke(z(Dp)(`手动跳过`))+ke(l.value?.auto_retry?.enable?`;`:``),1)])):$r(`v-if`,!0),l.value?.auto_retry?.enable?(B(),V(`span`,eqt,[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`,tqt,[H(`div`,nqt,ke(z(Dp)(`超时控制`)),1),H(`div`,rqt,ke(p.value),1)])])]),_:1},8,[`title`]),Yr(U9,{title:z(Dp)(`输入参数`)},{default:jn(()=>[Yr(RKt,{columns:n,data:m.value},null,8,[`data`])]),_:1},8,[`title`]),Yr(U9,{title:z(Dp)(`输出参数`)},{default:jn(()=>[Yr(RKt,{columns:r,data:h.value},null,8,[`data`])]),_:1},8,[`title`])],64))],64)):(B(),V(Lr,{key:1},[e.loading?(B(),V(`div`,iqt,[o[5]||=H(`div`,{class:`skeleton-heading ai-skeleton-element`},null,-1),(B(),V(Lr,null,dr(5,e=>H(`div`,{key:e,class:`skeleton-row ai-skeleton-element`})),64))])):(B(),Gr(U9,{key:1,title:z(Dp)(`结构化输出`)},{default:jn(()=>[Yr(RKt,{columns:i,data:g.value},null,8,[`data`])]),_:1},8,[`title`]))],64))])]))}}),G9=e=>e.task_id==null?``:`${e.task_id}`,oqt=G9,sqt=(e,t)=>e.task_id==null?``:`${e.task_id}|${t.id}|${t.name}`,cqt=e=>{let{messageUid:t,taskList:n}=e,r=kDe(),i=TDe(),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:G9(e)}),u=e=>{let t=l.value;return t===G9(e)||t===oqt(e)},d=(e,t)=>l.value===sqt(e,t),f=(e,n)=>{let i=e.task_id;i!=null&&(s(),r.addCustomTab?.({label:n.name,name:sqt(e,n),data:{component:aqt,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:Dp(`有效证据`),name:oqt(e),data:{component:aqt,messageUid:t.value,props:{data:{},has_confidence:e.has_confidence,loading:!0,task_id:n,task_name:e.task_name}}}))};return Ln(a,(e,t)=>{t!==void 0&&s()}),or(()=>{i?.value&&p(n.value.find(e=>e.is_active&&e.has_confidence))}),cr(()=>{if(i?.value)for(let e of n.value){r.removeCustomTab?.(G9(e)),r.removeCustomTab?.(oqt(e));for(let t of Object.values(e.nodes??{}))r.removeCustomTab?.(sqt(e,t))}}),{displaySelectedTabName:l,isNodeSelected:d,isTaskSelected:u,markUserTabSelection:s,openConfidence:p,openNodeDetail:f}},lqt={class:`ai-activity-message-title-text`},uqt={class:`flow-agent-title-label`},dqt={class:`flow-agent-stat-tooltip`},fqt={class:`flow-agent-stat-tooltip-status`},pqt={class:`flow-agent-stat-tooltip-label`},mqt=[`onClick`],hqt={class:`flow-agent-task-state-icon`},gqt={class:`flow-agent-task-name`},_qt={key:0,class:`flow-agent-task-trailing`},vqt={class:`flow-agent-task-time`},yqt=[`onClick`],bqt={class:`flow-agent-task-nodes`},xqt={class:`flow-agent-node-status`},Sqt=[`title`],Cqt={key:0,class:`flow-agent-node-trailing`},wqt={class:`flow-agent-node-time`},Tqt={class:`flow-agent-node-actions`},Eqt=[`onClick`],Dqt=Qn({__name:`flow-agent-content`,props:yr({content:{},messageUid:{},onInterruptResume:{type:Function},status:{}},{collapsed:{type:Boolean,default:!1},collapsedModifiers:{}}),emits:[`update:collapsed`],setup(e){let t=e,n=Kp(),r=Dr(e,`collapsed`),i=qDe(),a=fi(()=>i.value!==Pp.Share),o=fi(()=>t.status===Mp.Pending||t.status===Mp.Streaming),{isTaskExpanded:s,taskList:l,toggleTaskExpanded:u,viewTasks:d,visibleStats:f}=kKt(fn(t,`content`)),{isNodeSelected:p,isTaskSelected:m,openConfidence:h,openNodeDetail:g}=cqt({messageUid:fn(t,`messageUid`),taskList:l}),{getNodeActions:_}=jKt({onInterruptResume:fn(t,`onInterruptResume`),openNodeDetail:g});return(e,t)=>(B(),Gr(wKt,{collapsed:r.value,"onUpdate:collapsed":t[0]||=e=>r.value=e,"activity-type":z(Ap).FlowAgent,class:`flow-agent-activity`},{title:jn(()=>[$r(` hover 整条执行情况栏展示统计 tooltip(设计稿 annotation) `),Yr(z(bp),ri({class:`flow-agent-title-bar`,theme:`ai-chat-box-light light`},{...z(n),tag:`div`,arrow:!0,followCursor:!1,offset:[0,10]}),{content:jn(()=>[H(`div`,dqt,[(B(!0),V(Lr,null,dr(z(f),e=>(B(),V(`div`,{key:e.key,class:`flow-agent-stat-tooltip-item`},[H(`span`,fqt,[e.key===`running`?(B(),Gr(z(Xl),{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`,pqt,ke(e.label)+`:`,1),H(`span`,{class:`flow-agent-stat-tooltip-count`,style:ge({color:e.color})},ke(e.display),5)]))),128))])]),default:jn(()=>[H(`span`,{class:xe([`ai-activity-message-title-icon`,{"icon-collapsed":r.value}])},[o.value?(B(),Gr(Vp,{key:0,size:12})):(B(),Gr(z(Lp),{key:1}))],2),H(`span`,lqt,[H(`span`,uqt,ke(z(Dp)(`执行情况`))+`:`,1),(B(!0),V(Lr,null,dr(z(f),e=>(B(),V(`span`,{key:e.key,class:`flow-agent-stat-item`},[e.key===`running`?(B(),Gr(z(Xl),{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:jn(()=>[(B(!0),V(Lr,null,dr(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:Mi(t=>z(u)(e.raw),[`stop`])},[Yr(z(Lp))],10,mqt),H(`span`,hqt,[e.convergedState===`running`?(B(),Gr(z(Xl),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):(B(),Gr(lr(e.stateIcon),{key:1}))]),Mn((B(),V(`span`,gqt,[Yr(z(B9),{text:e.taskName},null,8,[`text`])])),[[z(qp),{...z(n)}]]),a.value?(B(),V(`span`,_qt,[H(`span`,vqt,ke(e.totalTimeText),1),e.hasConfidence?(B(),V(`span`,{key:0,class:`flow-agent-task-action-btn flow-agent-task-confidence-btn`,onClick:Mi(t=>z(h)(e.raw),[`stop`])},[Yr(z(Rp)),Qr(` `+ke(e.confidenceTitle??z(Dp)(`有效证据`)),1)],8,yqt)):$r(`v-if`,!0)])):$r(`v-if`,!0)],2),Mn(H(`div`,bqt,[(B(!0),V(Lr,null,dr(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`,xqt,[t.convergedState===`running`?(B(),Gr(z(Xl),{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))]),Mn((B(),V(`span`,{class:`flow-agent-node-name`,title:t.name},[Yr(z(B9),{text:t.name},null,8,[`text`])],8,Sqt)),[[z(qp),{...z(n)}]]),a.value?(B(),V(`span`,Cqt,[H(`span`,wqt,ke(t.elapsedTimeText),1),H(`span`,Tqt,[(B(!0),V(Lr,null,dr(z(_)(e,t),e=>(B(),V(`span`,{key:e.id,class:`flow-agent-node-action-btn`,onClick:Mi(t=>e.run(),[`stop`])},[(B(),Gr(lr(e.icon))),Qr(` `+ke(e.label),1)],8,Eqt))),128))])])):$r(`v-if`,!0)],2))),128))],512),[[wi,z(s)(e.raw)]])]))),128))]),_:1},8,[`collapsed`,`activity-type`]))}}),Oqt={class:`ai-activity-message-title-icon`},kqt={class:`ai-activity-message-title-text`},Aqt={class:`knowledge-rag-content`},jqt=Qn({__name:`knowledge-rag-content`,props:yr({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===Mp.Pending||t.status===Mp.Streaming),i=fi(()=>r.value?Dp(`检索中`):Dp(`检索完成`));return(t,a)=>(B(),Gr(wKt,{collapsed:n.value,"onUpdate:collapsed":a[0]||=e=>n.value=e},{title:jn(()=>[H(`span`,Oqt,[r.value?(B(),Gr(Vp,{key:0})):(B(),Gr(z(Ip),{key:1,style:{"font-size":`12px`}}))]),H(`span`,kqt,ke(i.value),1)]),default:jn(()=>[H(`div`,Aqt,[Yr(y9,{content:e.content?.content||``},null,8,[`content`])]),Yr(oUt,{content:e.content?.referenceDocument||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),Mqt={class:`ai-activity-message-title-icon`},Nqt={class:`ai-activity-message-title-text`},Pqt=Qn({__name:`reference-doc-content`,props:yr({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 Ep?`Reference ${e} documents as reference`:`引用 ${e} 篇资料作为参考`});return(t,i)=>(B(),Gr(wKt,{collapsed:n.value,"onUpdate:collapsed":i[0]||=e=>n.value=e},{title:jn(()=>[H(`span`,Mqt,[Yr(z(Ip),{style:{"font-size":`12px`}})]),H(`span`,Nqt,ke(r.value),1)]),default:jn(()=>[Yr(oUt,{content:e.content||[]},null,8,[`content`])]),_:1},8,[`collapsed`]))}}),Fqt=Qn({__name:`activity-message`,props:yr({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={[Ap.FlowAgent]:Dqt,[Ap.KnowledgeRag]:jqt,[Ap.ReferenceDocument]:Pqt},n=e,r=Dr(e,`collapsed`),i=fi(()=>t[n.activityType??``]);return(t,n)=>i.value?(B(),Gr(lr(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)}}),Iqt={class:`toolcall-desc`},Lqt={class:`desc-title`},Rqt={class:`desc-panel`},zqt={class:`desc-label`},Bqt={class:`desc-value`},Vqt=Qn({__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`,Iqt,[H(`div`,Lqt,ke(e.title),1),H(`div`,Rqt,[$r(` null 的 typeof 为 object,需排除,避免 v-for 异常;键/值统一转字符串以满足 HighlightKeyword `),r.value!==null&&typeof r.value==`object`?(B(!0),V(Lr,{key:0},dr(r.value,(e,t)=>(B(),V(`div`,{key:t,class:`desc-panel-item`},[H(`span`,zqt,[Yr(z(B9),{text:String(t)},null,8,[`text`]),i[0]||=Qr(`:`,-1)]),H(`span`,Bqt,[Yr(z(B9),{style:{"word-break":`break-all`},text:n(e)},null,8,[`text`])])]))),128)):(B(),Gr(z(B9),{key:1,style:{wordBreak:`break-all`},text:n(r.value)},null,8,[`text`]))])]))}}),Hqt={class:`tool-message`},Uqt=Qn({__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`,Hqt,[Yr(Vqt,{desc:e.content||(typeof e.error==`string`?e.error:void 0),title:z(Dp)(`返回内容`)},null,8,[`desc`,`title`])]))}}),Wqt={class:`ai-toolcall-render`},Gqt={class:`toolcall-header-title`},Kqt={class:`toolcall-status-title`},qqt={key:1,class:`toolcall-duration`},Jqt={class:`ai-toolcall-render-content`},Yqt=Qn({__name:`toolcall-render`,props:{duration:{},status:{},toolCall:{}},setup(e){let t=e,n=cn(!0),r=cn(null),i=Kp(),{keywordMatched:a,keyword:o}=XDe(()=>[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 Mp.Pending:return Dp(`调用中`);case Mp.Complete:case Mp.Success:return Dp(`调用成功`);case Mp.Error||t.toolCall?.toolMessage?.error:return Dp(`调用失败`)}}),f=fi(()=>{let e=t.duration||t.toolCall?.toolMessage?.duration;return e?BTe(e):``});return(t,n)=>(B(),V(`div`,Wqt,[H(`div`,{class:xe([`ai-toolcall-render-header`,`toolcall-status-${e.status}`]),onClick:l},[Yr(z(Lp),{class:xe({"is-collapsed":s.value})},null,8,[`class`]),Qr(` `+ke(e.toolCall?.function.mcpName?z(Dp)(`调用 MCP:`):z(Dp)(`调用工具:`))+` `,1),Mn((B(),V(`span`,Gqt,[Yr(z(B9),{text:u.value},null,8,[`text`])])),[[z(qp),{...z(i),text:u.value,appendTo:`parent`}]]),H(`span`,Kqt,[e.status===z(Mp).Pending||e.status===z(Mp).Streaming?(B(),Gr(z(Xl),{key:0,mode:`spin`,size:`mini`,theme:`primary`})):$r(`v-if`,!0),Yr(z(B9),{text:d.value},null,8,[`text`]),f.value?(B(),V(`span`,qqt,` (`+ke(f.value)+`) `,1)):$r(`v-if`,!0)])],2),Mn(H(`div`,Jqt,[Yr(Vqt,{desc:e.toolCall?.function.description,title:z(Dp)(`描述`)},null,8,[`desc`,`title`]),Yr(Vqt,{desc:e.toolCall?.function.arguments,title:z(Dp)(`参数`)},null,8,[`desc`,`title`]),e.toolCall?.toolMessage?(B(),Gr(Uqt,Se(ri({key:0},e.toolCall.toolMessage)),null,16)):$r(`v-if`,!0)],512),[[wi,!s.value]])]))}}),Xqt={class:`ai-assistant-message`},Zqt={class:`ai-assistant-message-content`},Qqt=Qn({__name:`assistant-message`,props:{toolCalls:{},content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,Xqt,[H(`div`,Zqt,[pr(t.$slots,`default`,Se(Xr({content:e.content})),()=>[Yr(sUt,{content:e.content||``,status:e.status,type:z(Ap).Text},null,8,[`content`,`status`,`type`])])]),e.toolCalls&&e.toolCalls.length>0?(B(!0),V(Lr,{key:0},dr(e.toolCalls,t=>(B(),Gr(Yqt,{key:t.id,status:e.status,"tool-call":t},null,8,[`status`,`tool-call`]))),128)):$r(`v-if`,!0)]))}}),$qt={class:`info-message`},eJt=Qn({__name:`info-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{}},setup(e){return(t,n)=>(B(),V(`div`,$qt,[(B(!0),V(Lr,null,dr(Array.isArray(e.content)?e.content:[e.content],(e,t)=>(B(),V(`div`,{key:t,class:`info-message-content`},ke(e),1))),128))]))}}),tJt={class:`ai-tool-approval-card`},nJt={class:`ai-tool-approval-card__header`},rJt={class:`ai-tool-approval-card__title-wrap`},iJt={class:`ai-tool-approval-card__title`},aJt={class:`ai-tool-approval-card__fields`},oJt={class:`ai-tool-approval-card__field`},sJt={class:`ai-tool-approval-card__field`},cJt={class:`ai-tool-approval-card__processor`},lJt={class:`ai-tool-approval-card__processor-text`},uJt={class:`ai-tool-approval-card__actions`},dJt=Qn({__name:`tool-approval-card`,props:{interrupt:{},onInterruptResume:{type:Function},readonly:{type:Boolean}},setup(e){let t=e,n=Kp(),r=qDe(),i=fi(()=>r.value===Pp.Share),{copy:a}=Up(),o=new Set([Op.PENDING,Op.DRAFT]),s=new Set([Op.ABANDONED,Op.CANCELLED,Op.EXPIRED,Op.REJECTED]),l=fi(()=>t.interrupt.metadata?.ticket??{approvers:[],sn:``,status:Op.PENDING,submit_time:``,title:``,url:``}),u=fi(()=>o.has(l.value.status)),d=fi(()=>u.value?`pending`:l.value.status),f=fi(()=>u.value?Dp(`评审中`):UTe[l.value.status]??l.value.status),p=fi(()=>l.value.approvers.filter(Boolean).join(`、`)||Dp(`无`)),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:Np.ApprovalCancel,payload:{interrupt_id:t.interrupt.id}},t.interrupt))};return(t,r)=>(B(),V(`section`,tJt,[H(`header`,nJt,[H(`div`,rJt,[r[0]||=H(`span`,{class:`ai-tool-approval-card__title-bar`},null,-1),H(`span`,iJt,ke(l.value.title||z(Dp)(`算法方案评审单`)),1),Mn(Yr(z(qEe),{class:xe([`ai-tool-approval-card__copy-icon`,{"is-disabled":!m.value}]),onClick:g},null,8,[`class`]),[[z(xp),{...z(n),content:z(Dp)(`复制单据链接`),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(Op).APPROVED?(B(),Gr(z(AEe),{key:0,class:`ai-tool-approval-card__status-icon`})):z(s).has(l.value.status)?(B(),Gr(z(MEe),{key:1,class:`ai-tool-approval-card__status-icon`})):l.value.status===z(Op).REVOKED?(B(),Gr(z(NEe),{key:2,class:xe([`ai-tool-approval-card__status-icon`,{"ai-tool-approval-card__status-icon--revoked":l.value.status===z(Op).REVOKED}])},null,8,[`class`])):(B(),Gr(z(Xl),{key:3,class:`ai-tool-approval-card__status-icon`,mode:`spin`,size:`mini`,theme:`primary`})),Qr(` `+ke(f.value),1)],2)]),H(`dl`,aJt,[H(`div`,oJt,[H(`dt`,null,ke(z(Dp)(`单据编号`)),1),H(`dd`,null,ke(l.value.sn||`--`),1)]),H(`div`,sJt,[H(`dt`,null,ke(z(Dp)(`提交时间`)),1),H(`dd`,null,ke(l.value.submit_time||`--`),1)])]),H(`div`,cJt,[Yr(z(jEe),{class:`ai-tool-approval-card__processor-icon`}),Mn((B(),V(`span`,lJt,[Qr(ke(z(Dp)(`当前处理人`))+`:`+ke(p.value),1)])),[[z(qp),{...z(n)}]])]),H(`div`,uJt,[Yr(z(iu),{class:`ai-tool-approval-card__detail`,disabled:!l.value.url,theme:`primary`,onClick:h},{default:jn(()=>[Qr(ke(z(Dp)(`查看单据详情`))+` `,1),r[1]||=H(`span`,{class:`ai-tool-approval-card__detail-icon`},null,-1)]),_:1},8,[`disabled`]),u.value&&!e.readonly?(B(),Gr(z(iu),{key:0,class:`ai-tool-approval-card__cancel`,disabled:_.value||i.value,loading:_.value,outline:``,theme:`primary`,onClick:v},{default:jn(()=>[Qr(ke(z(Dp)(`取消审批`)),1)]),_:1},8,[`disabled`,`loading`])):$r(`v-if`,!0)])]))}}),fJt={class:`ai-interrupt-message`},pJt={key:0,class:`ai-interrupt-message__content`},mJt={class:`ai-interrupt-message__fallback`},hJt=Qn({__name:`interrupt-message`,props:{content:{},id:{},messageId:{},name:{},role:{},status:{},uid:{},property:{},onInterruptResume:{type:Function}},setup(e){let t={[kp.AIDevToolApproval]:dJt},n=e=>({id:e.interruptId||e.id||``,reason:kp.AIDevToolApproval,toolCallId:``,metadata:e.payload.metadata}),r={[kp.AIDevToolApproval]:e=>({component:dJt,props:{interrupt:n(e),readonly:!0}}),[kp.UserQuestion]:e=>({component:HGt,props:{answers:e.payload?.answers??[],status:e.status}})},i=new Set([kp.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`,fJt,[s.value?(B(),V(`div`,pJt,ke(s.value),1)):$r(`v-if`,!0),(B(!0),V(Lr,null,dr(o.value,t=>(B(),V(Lr,{key:t.toolCallId},[l(t)?(B(),Gr(lr(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`,mJt,ke(t.message||z(Dp)(`暂不支持的中断消息`)),1)],2112))],64))),128)),$r(` outcome.success 时按 reason 在会话内回显 resume 结果(审批单 / 已回答内容等) `),d.value?(B(),Gr(lr(d.value.component),Se(ri({key:1},d.value.props)),fr({_:2},[t.$slots.answeredQuestion?{name:`answer`,fn:jn(e=>[pr(t.$slots,`answeredQuestion`,Se(Xr(e)))]),key:`0`}:void 0]),1040)):$r(`v-if`,!0)]))}}),gJt={class:`ai-loading-message`},_Jt=Qn({__name:`loading-message`,setup(e){return(e,t)=>(B(),V(`div`,gJt,[Yr(Vp,{size:18}),pr(e.$slots,`default`,{},()=>[Qr(ke(z(Dp)(`请求中...`)),1)])]))}}),vJt={class:`ai-reasoning-message`},yJt={key:0,class:`ai-reasoning-message-title-icon`},bJt={class:`ai-reasoning-message-title-text`},xJt={class:`ai-reasoning-message-content`},SJt=Qn({__name:`reasoning-message`,props:yr({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}=Ln(()=>t.duration,async e=>{e&&(n.value=!0,await En(),r?.())},{immediate:!0}),i=fi(()=>{switch(t.status){case Mp.Pending:return Dp(`思考中`);case Mp.Success:case Mp.Complete:return Dp(`已思考完成`)+(t.duration?` (${Dp(`耗时`)} :${BTe(t.duration)})`:``);case Mp.Error:return Dp(`思考失败`);default:return Dp(`思考中`)}});return(t,r)=>(B(),V(`div`,vJt,[H(`div`,{class:xe([`ai-reasoning-message-title`,{"ai-reasoning-message-title-collapsed":n.value,"is-thinking":e.status===z(Mp).Pending||e.status===z(Mp).Streaming,"is-complete":e.status===z(Mp).Complete||e.status===z(Mp).Success,"is-error":e.status===z(Mp).Error}]),onClick:r[0]||=e=>n.value=!n.value},[e.status===z(Mp).Pending||e.status===z(Mp).Streaming?(B(),V(`span`,yJt,[Yr(Vp)])):$r(`v-if`,!0),H(`span`,bJt,ke(i.value),1),$r(` <template v-if="status === MessageStatus.Pending || status === MessageStatus.Streaming">
3496
3496
  <ContentLoadingIcon
3497
3497
  v-for="i in 3"
3498
3498
  :key="i"