@next-bricks/ai 1.11.0 → 1.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bricks.json CHANGED
@@ -15,5 +15,5 @@
15
15
  "basic.show-dialog"
16
16
  ]
17
17
  },
18
- "filePath": "bricks/ai/dist/index.5adfb196.js"
18
+ "filePath": "bricks/ai/dist/index.e1931dc8.js"
19
19
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[7904],{15:(e,t,r)=>{r.d(t,{a:()=>a,t:()=>n});var o=r(8769),n=(0,o.createContext)({}),a=()=>(0,o.useContext)(n)},1534:(e,t,r)=>{r.d(t,{CA:()=>s,g3:()=>l,mc:()=>i});var o=r(8769),n=r.n(o),a=(0,r(2621).wrapBrick)("eo-icon");function s(){return n().createElement("div",{className:"message-list-loading-wrapper"})}function i(){return n().createElement("div",{className:"chart-item-loading-wrapper"},n().createElement("div",{className:"load"},n().createElement("div",null),n().createElement("div",null),n().createElement("div",null),n().createElement("div",null)))}function l(){return n().createElement("div",{className:"common-loading-wrapper"},n().createElement(a,{icon:"loading",lib:"antd",spinning:!0}))}},6855:(e,t,r)=>{r.d(t,{M:()=>ie});var o=r(8769),n=r.n(o),a=r(15);function s(e){var{role:t}=e,r=(0,o.useMemo)((()=>"user"===t),[t]);return n().createElement("div",{className:"avatar ".concat(r?"user":"robot")})}var i=r(3373),l=r.n(i),c=r(1534),p=r(2621),d=(0,p.wrapBrick)("eo-link");function m(e){var{text:t,prompts:r}=e;return n().createElement("div",{className:"guide-item"},t,n().createElement("div",{className:"prompts-list"},r?r.map(((e,t)=>n().createElement(d,{key:t},e))):null))}var u=r(9740),h=r(7357),w=r(4001),g=r(536),b=r(4895),v=r(8589),f=r(2762),x=r(7268),k=r(3319),y=r(6330),E=r(8406);function A(e){var{columns:t,dataSource:r}=e,a=(0,o.useRef)(null),s=(0,o.useMemo)((()=>n().createElement("colgroup",null,t.map(((e,t)=>n().createElement("col",{key:t,style:{width:200,minWidth:200}}))))),[t]);return(0,o.useLayoutEffect)((()=>{var e=a.current;if(e){var{width:t}=e.parentElement.getBoundingClientRect();e.style.width="".concat(t,"px")}}),[]),n().createElement("div",{className:"instance-list-table-wrapper"},n().createElement("div",{className:"result-tip"},"【查询结果】:"),r.length?n().createElement("div",{className:"table-wrapper"},n().createElement("div",{className:"table-content",ref:a},n().createElement("table",null,s,n().createElement("thead",null,n().createElement("tr",null,t.map(((e,t)=>n().createElement("th",{key:t,className:"".concat(e.key)},e.title))))),n().createElement("tbody",null,r.map(((e,r)=>n().createElement("tr",{key:r},t.map(((t,r)=>{var o,a=(o=e[t.key])&&"object"==typeof o?JSON.stringify(o):o;return n().createElement("td",{key:r,title:a},"#showKey"===t.key?function(e){if(Array.isArray(e)){var t=e[0]||"-",r=e.slice(1,e.length).join(",");return r?"".concat(t,"(").concat(r,")"):t}return e}(e[t.key]):a)}))))))))):n().createElement("div",{className:"empty-tip"},"【无数据】"))}var S=(0,o.createContext)({}),z=r(4328),C=(0,p.wrapBrick)("eo-link");function N(e){var{text:t}=e,{chatting:r}=(0,o.useContext)(S),[a,s]=(0,o.useState)(!0),[i,l]=(0,o.useState)(!1),[p,d]=(0,o.useState)(!1),[m,h]=(0,o.useState)(!1),[w,g]=(0,o.useState)(""),[b,v]=(0,o.useState)([]),[f,x]=(0,o.useState)([]),[k,N]=(0,o.useState)(!1),M=(0,o.useCallback)(function(){var e=(0,y.A)((function*(e,t){if(!i){l(!0);try{var r,o,n=yield(0,E.y)(e,(0,u.A)({page:1,page_size:10},t));x(null!==(r=n.list)&&void 0!==r?r:[]),(null===(o=n.list)||void 0===o?void 0:o.length)&&v((a=n.list,p=[],d=a[0],null===(c=Object.keys(d))||void 0===c||c.forEach((e=>{p.push({title:e,dataIndex:e,key:e})})),p)),h(!1)}catch(e){h(!0)}var a,c,p,d;l(!1),s(!1)}}));return function(t,r){return e.apply(this,arguments)}}(),[i]);return(0,o.useEffect)((()=>{var e;try{e=JSON.parse(t)}catch(e){return h(!0),void(p&&s(!1))}g(e.objectId),M(e.objectId,e)}),[t,p]),(0,o.useEffect)((()=>{r?t.match(/\n[`]{0,3}$/)&&(d(!0),i||s(!1)):d(!0)}),[t,r,i]),n().createElement("div",{className:"instance-list-wrapper"},a||i?n().createElement(c.mc,null):p&&m?n().createElement("div",{className:"error-tip"},n().createElement(C,{onClick:()=>{N((e=>!e))}},k?"收起":"查询失败, 点击查看原始查询语句"),k?n().createElement("div",{className:"params"},n().createElement("div",{className:"params-tip"},"【查询语句】: "),n().createElement("pre",null,n().createElement("code",null,t))):null):n().createElement("div",null,n().createElement(A,{columns:b,dataSource:f}),w?n().createElement("div",{className:"open-more"},n().createElement(C,{href:"".concat((0,z.getBasePath)(),"next-cmdb-instance-management/next/").concat(w,"/list"),target:"_blank"},"查看更多")):null))}function M(e){var{text:t}=e,r=(0,o.useMemo)((()=>t.replace(/\n[`]{0,3}$/,"")),[t]);return n().createElement("div",{className:"progress-text"},r)}var q=()=>{var[e,t]=(0,o.useState)(""),{contentRef:r,node:a}=(0,k.e2)(),s=(0,o.useMemo)((()=>n().createElement("pre",{spellCheck:!1},n().createElement("code",{ref:r}))),[r]),i=(0,o.useMemo)((()=>{var t,r,o;if(null===(t=a.firstChild)||void 0===t||!t.text)return null;switch(e){case"easy_cmd_progress":return n().createElement(M,{text:null===(r=a.firstChild)||void 0===r?void 0:r.textContent});case"easy_cmd_cmdb_instance_list":case"easy_cmd_cmdb_instance_table":return n().createElement(N,{text:null===(o=a.firstChild)||void 0===o?void 0:o.textContent});default:return s}}),[a,e,s]);return(0,o.useEffect)((()=>{if(!e){var{attrs:{language:r}}=a;r&&t(r)}}),[a,e]),i};function I(e){var{text:t}=e;return n().createElement("div",{className:"markdown-item"},n().createElement(w.pb,null,n().createElement(k.vo,null,n().createElement(P,{value:t}))))}function P(e){var{value:t}=e,r=(0,k.$X)(),{get:a}=(0,w.hG)((e=>h.KE.make().config((r=>{r.set(h.k,e),r.update(h.QM,(e=>(0,u.A)((0,u.A)({},e),{},{editable:()=>!1}))),t&&r.set(h.CI,t)})).config(b.E).use(f.Wj).use(v.Te).use(g.PD).use((0,x.m5)(g.Ay.node,(()=>r({component:q}))))),[]);return(0,o.useEffect)((()=>{var e;void 0!==t&&(null===(e=a())||void 0===e||e.action((0,x.yh)(t)))}),[a,t]),n().createElement(w.y5,null)}function _(e){var{text:t}=e;return n().createElement("div",{className:"table-item"},t)}function R(e){var{text:t}=e;return n().createElement("div",{className:"text-item"},t)}var L=r(2681),H=(0,p.wrapBrick)("eo-icon"),Y=(0,p.wrapBrick)("eo-tooltip"),B=(0,L.unwrapProvider)("basic.copy-to-clipboard"),D=(0,L.unwrapProvider)("basic.show-notification");function W(e){var{role:t,content:r,chatting:s,taskId:i,tag:c}=e,p=(0,o.useMemo)((()=>"assistant"===t&&"load"!==r.type),[t,r.type]),d=(0,o.useMemo)((()=>s),[s]),{showLike:m,readonly:u,handleIsLike:h}=(0,a.a)(),w=(0,o.useCallback)(function(){var e=(0,y.A)((function*(e){var t=yield h(i,e);D({message:"".concat(e?"点赞":"操作").concat(t?"成功":"失败"),type:t?"success":"error"})}));return function(t){return e.apply(this,arguments)}}(),[i,h]);return p&&!d?n().createElement("div",{className:"toolbar"},m&&!u&&n().createElement(n().Fragment,null,n().createElement(Y,{content:"点赞"},n().createElement(H,{className:l()("like",{active:!0===(null==c?void 0:c.isLike)}),lib:"easyops",icon:"like",onClick:()=>w(!0)})),n().createElement(Y,{content:"还不够好"},n().createElement(H,{className:l()("unlike",{active:!1===(null==c?void 0:c.isLike)}),lib:"easyops",icon:"unlike",onClick:()=>w(!1)})),n().createElement("div",{className:"split"})),n().createElement(Y,{content:"点击复制"},n().createElement(H,{lib:"antd",icon:"copy",onClick:()=>{B(r.text).then((()=>D({type:"success",message:"复制成功"}))).catch((()=>D({type:"error",message:"复制失败"})))}}))):null}var O=r(6238),j=r.n(O);function T(e){var{time:t}=e;return n().createElement("div",{className:"time"},t?"string"==typeof t?t:j()(t).format("YYYY-MM-DD HH:mm:ss"):null)}var F=(0,p.wrapBrick)("eo-tooltip"),J=(0,p.wrapBrick)("eo-icon");function X(e){var{role:t,content:r}=e,s=(0,o.useMemo)((()=>"user"===t),[t]),{chatting:i,readonly:l,setSearchStr:c}=(0,a.a)();return l||!s||i?null:n().createElement("div",{className:"content-tip"},n().createElement(F,{content:"点击再次提问"},n().createElement(J,{lib:"antd",icon:"edit",onClick:()=>{c(r.text)}})))}var $="no_agent";function G(e){var{content:t,created:r,role:a,agentId:s}=e,i=(0,o.useMemo)((()=>"user"===a),[a]),l=(0,o.useCallback)((e=>{var{type:t,text:r,examplePrompts:o}=e;switch(t){case"guide":return n().createElement(m,{text:r,prompts:o});case"text":return n().createElement(R,{text:r});case"table":return n().createElement(_,{text:r});case"load":return n().createElement(c.mc,null);default:return n().createElement(I,{text:r})}}),[]),p=(0,o.useMemo)((()=>l(t)),[t,l]);return n().createElement(S.Provider,{value:e},n().createElement("div",{className:"message-box"},n().createElement("div",{className:"message-top"},i?"我":s&&s!==$?s:"AI助手",n().createElement(T,{time:r})),n().createElement("div",{className:"message-content"},n().createElement("div",{className:"content"},p,n().createElement(X,e),n().createElement(W,e)))))}var K=r(9575),U=(0,p.wrapBrick)("eo-icon"),Q=(0,p.wrapBrick)("eo-link"),V=85,Z=24;function ee(e){var{name:t,description:r,icon:s,starterPrompts:i}=e,{setSearchStr:l}=(0,a.a)(),c=(0,o.useMemo)((()=>{var e;return null!==(e=null==s?void 0:s.color)&&void 0!==e?e:"geekblue"}),[s]);return n().createElement("div",{className:"quick-answer-card-item",style:{height:V,background:"linear-gradient(rgba(var(--theme-".concat(c,"-color-rgb-channel), 0.1), rgba(var(--theme-").concat(c,"-color-rgb-channel), 0.08))")},onClick:()=>{(null==i?void 0:i.length)&&l(i[0])}},n().createElement("div",{className:"left"},n().createElement(U,(0,K.A)({className:"icon"},null!=s?s:{icon:"default-app",lib:"easyops",category:"app"},{style:{background:"rgba(var(--theme-".concat(c,"-color-rgb-channel), 0.5)")}}))),n().createElement("div",{className:"content"},n().createElement("div",{className:"title"},t),n().createElement("div",{className:"description"},r)))}function te(){var e,{quickAnswerConfig:t,msgList:r,loading:s}=(0,a.a)(),[i,l]=(0,o.useState)(!1),c=(0,o.useRef)(null),p=(0,o.useRef)(!1);return(0,o.useEffect)((()=>{var e=c.current;if(e){var t=new ResizeObserver((e=>{for(var t of e)t.contentRect.height>3*V+2*Z?p.current||l(!0):l(!1)}));return t.observe(e),()=>t.disconnect()}}),[i,null==t?void 0:t.list]),null!=t&&t.list.length&&0===r.length&&!s?n().createElement("div",{className:"quick-answer-wrapper"},n().createElement("div",{className:"tip"},null!==(e=t.tip)&&void 0!==e?e:"你好,我是运维数智人 — Murphy,我能为你提供以下服务:"),n().createElement("div",{className:"quick-answer-list",style:(0,u.A)({},i?{maxHeight:3*V+2*Z+10,overflow:"hidden"}:{}),ref:c},t.list.map((e=>n().createElement(ee,(0,K.A)({key:e.instanceId},e))))),i?n().createElement("div",{className:"show-more-wrapper"},n().createElement(Q,{icon:{lib:"antd",icon:"down"},className:"show-more-btn",onClick:()=>{p.current=!0,l(!1)}},"显示更多")):null):null}var re=r(2445),oe=(0,p.wrapBrick)("eo-link");function ne(){var{stopChat:e}=(0,a.a)();return n().createElement("div",{className:"stop-responding-wrapper"},n().createElement(oe,{className:"stop-btn",onClick:()=>{e()}},"停止生成"))}var ae=80,se=200;function ie(e){var{showAvatar:t=!0}=e,r=(0,o.useRef)(null),i=(0,o.useRef)(null),[p,d]=(0,o.useState)(0),m=(0,o.useRef)(!1),{msgLoading:u,msgEnd:h,msgList:w,loading:g,activeSessionId:b,chatting:v,checkSession:f}=(0,a.a)(),x=(0,o.useCallback)((function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return n().createElement("div",{className:l()("message-item",{user:"user"===e.role}),key:r},t&&n().createElement(s,{role:e.role}),n().createElement(G,e))}),[t]),k=(0,o.useMemo)((()=>w.map(((e,t)=>e.chatting?n().createElement(n().Fragment,null,x(e,t),v&&t===w.length-1?n().createElement(ne,null):null):x(e,t)))),[w,v,x]),y=(0,o.useCallback)((()=>{var e=r.current;if(e){var{scrollHeight:t,clientHeight:o,scrollTop:n}=e,a=t-o===n;a?a&&m.current&&(m.current=!1):m.current=!0,!u&&!h&&n<se&&f()}}),[h,u,f]),E=(0,re.debounce)(y,200);return(0,o.useEffect)((()=>{(v||b)&&(m.current=!1)}),[v,b]),(0,o.useEffect)((()=>{var e=i.current;if(e){var t=new ResizeObserver((e=>{var t=0;if(!m.current){for(var o of e)t=o.contentRect.height-ae;g||v||r.current.scroll({top:Number.MAX_SAFE_INTEGER}),t>p&&v&&(r.current.scroll({top:Number.MAX_SAFE_INTEGER}),d(Math.max(p,t)))}}));return t.observe(e),()=>t.disconnect()}}),[v,g,p]),n().createElement("div",{className:"message-list",ref:r,onScroll:E},n().createElement("div",{className:"message-list-box",ref:i},h&&w.length?n().createElement("div",{className:"message-start-tip"},"会话开始"):null,u&&n().createElement(c.g3,null),n().createElement(te,null),k),g&&n().createElement(c.CA,null))}},205:(e,t,r)=>{r.d(t,{D:()=>w});var o,n=r(9740),a=r(8769),s=r.n(a),i=r(2621),l="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n padding: 10px !important;\n pointer-events: none !important;\n",c=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","font-variant","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing","word-break","white-space"],p=r(3373),d=r.n(p),m=r(15),u=(0,i.wrapBrick)("eo-tooltip"),h=(0,i.wrapBrick)("eo-icon");function w(){var[e,t]=(0,a.useState)(""),[r,i]=(0,a.useState)(!1),[p,w]=(0,a.useState)(!1),[g,b]=(0,a.useState)(),[v,f]=(0,a.useState)(!1),x=(0,a.useRef)(null),k=(0,a.useRef)(null),y=(0,a.useRef)(!1),E=(0,a.useRef)(!1),{chatting:A,loading:S,searchStr:z,createSession:C,setSearchStr:N,handleChat:M}=(0,m.a)(),q=(0,a.useMemo)((()=>!!e),[e]),I=(0,a.useMemo)((()=>[1,5]),[]),P=(0,a.useMemo)((()=>S||A),[A,S]),_=(0,a.useCallback)((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:I;if(!y.current||!p){var t=k.current;if(t){var r=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o||((o=document.createElement("textarea")).setAttribute("tab-index","-1"),o.setAttribute("aria-hidden","true"),document.body.appendChild(o));var n=window.getComputedStyle(e),a=c.map((e=>"".concat(e,":").concat(n.getPropertyValue(e)))).join(";");o.setAttribute("style","".concat(a,";").concat(l)),o.value=e.value||e.placeholder||"";var s=void 0,i=void 0,p=o.scrollHeight-20+2;if(null!==t||null!==r){o.value=" ";var d=o.scrollHeight-20;null!==t&&(s=d*t-20+2,p=Math.max(20,p)),null!==r&&(i=d*r-20+2,p=Math.min(i,p))}var m={height:p,overflowY:"scroll",resize:"none"};return s&&(m.minHeight=s),i&&(m.maxHeight=i),m}(t,e[0],e[1]);b(r)}y.current=p}}),[I,p]),R=(0,a.useCallback)((e=>{var r="string"==typeof e?e:e.target.value;t(r),k.current.value=r}),[]),L=(0,a.useCallback)((()=>{w((e=>!e))}),[]),H=(0,a.useCallback)((()=>{q&&k.current&&!P&&(M(e),i(!1),w(!1),R(""),k.current.blur())}),[e,q,P,M,R]),Y=(0,a.useCallback)((e=>{"Enter"!==e.key||e.shiftKey||E.current||(e.preventDefault(),H())}),[H]);return(0,a.useEffect)((()=>{var e;z&&(R(z),null===(e=k.current)||void 0===e||e.focus(),N(""))}),[z,P,N,R]),(0,a.useEffect)((()=>{_(p?[20,20]:void 0)}),[e,p,_]),(0,a.useEffect)((()=>{var e=x.current;if(e){var t=new ResizeObserver((()=>{var{width:t}=e.getBoundingClientRect(),{width:r}=e.parentElement.parentElement.getBoundingClientRect();f(t===r)}));return t.observe(e),()=>{t.disconnect()}}}),[]),(0,a.useEffect)((()=>{var e;!A&&k.current&&(null===(e=k.current)||void 0===e||e.focus())}),[A]),s().createElement("div",{className:d()("search-input-box",{"fill-content":v}),ref:x},s().createElement("div",{className:d()("input-box",{active:r,disabled:P,expand:p})},s().createElement("textarea",{value:e,ref:k,style:(0,n.A)((0,n.A)({},g),{},{paddingRight:p?"50px":"140px"}),placeholder:A?"回复中,请稍等...":"提出你的想法...",onFocus:()=>i(!0),onBlur:()=>i(!1),onChange:R,onKeyDown:Y,onCompositionStart:()=>{E.current=!0},onCompositionEnd:()=>{E.current=!1}}),s().createElement("span",{className:"suffix-icon"},s().createElement(u,{content:"新增会话"},s().createElement(h,{lib:"antd",icon:"plus-circle",onClick:()=>{C()}})),!p&&s().createElement(u,{content:"放大"},s().createElement(h,{lib:"antd",icon:"arrows-alt",onClick:L})),s().createElement("div",{className:"submit-split"}),s().createElement(u,{content:"提交"},s().createElement(h,{className:d()("submit-btn",{active:q,disabled:!q||P}),lib:A?"antd":"easyops",icon:A?"loading":"release-management-fill",category:A?"":"menu",spinning:A,onClick:H}))),s().createElement("span",{className:"toolbar-icon"},p&&s().createElement(u,{content:"缩小"},s().createElement(h,{lib:"antd",icon:"shrink",onClick:L})))),q&&s().createElement("div",{className:"search-input-toolbar"},s().createElement("div",{className:"input-tip"},"Shift + Enter 换行")))}},3830:(e,t,r)=>{r.d(t,{Z:()=>x});var o=r(6330),n=r(9575),a=r(8769),s=r.n(a),i=r(15),l=r(3373),c=r.n(l),p=r(2445),d=r(1534),m=r(2621),u=r(2681),h=(0,u.unwrapProvider)("basic.show-notification"),w=(0,m.wrapBrick)("eo-icon"),g=(0,u.unwrapProvider)("basic.show-dialog"),b=42,v=5,f=100;function x(){var{sessionEnd:e,sessionLoading:t,sessionList:r,querySessionHistory:o}=(0,i.a)(),l=(0,a.useRef)(null),c=(0,a.useRef)(null);(0,a.useEffect)((()=>{var e=20,t=l.current;t&&(e=Math.floor(t.clientHeight/b)+v),o(e)}),[]);var m=(0,a.useCallback)((()=>{if(!t&&!e){var r=c.current;if(r){var{scrollTop:n,scrollHeight:a,clientHeight:s}=r;n+s+f>a&&o()}}}),[o,t,e]),u=(0,p.debounce)(m,200);return s().createElement("div",{className:"session-list-wrapper",ref:l},s().createElement("div",{className:"session-title"},"历史对话"),s().createElement("div",{className:"session-list",ref:c,onScroll:u},r.map(((e,t)=>s().createElement(k,(0,n.A)({key:t},e)))),t&&s().createElement(d.g3,null)))}function k(e){var{title:t,conversationId:r}=e,{activeSessionId:n,checkSession:l,deleteSession:p}=(0,i.a)(),d=(0,a.useCallback)((()=>{l(r,!0)}),[r,l]),m=(0,a.useCallback)((e=>{e.stopPropagation(),g({type:"confirm",title:"会话删除确认",content:"请输入 {{ expect }} 以确认删除",expect:t.replace(/\s+/g,"")}).then((0,o.A)((function*(){var e=yield p([r]);h({message:"删除会话".concat(e?"成功":"失败"),type:e?"success":"error"})})))}),[r,p,t]);return s().createElement("div",{key:t,className:c()("session-item",{active:r===n}),onClick:d},s().createElement("div",{className:"content"},s().createElement("div",{className:"title",title:t},t)),s().createElement("div",{className:"session-close-btn",onClick:m},s().createElement(w,{icon:"close",lib:"antd"})))}},2442:(e,t,r)=>{r.d(t,{F:()=>_});var o=r(9740),n=r(6330),a=r(8769),s=r(6238),i=r.n(s),l=r(4635),c=r(918),p=r(2559),d=r(829),m=r(6121),u=r(2110),h=r(9455),w=r(4328),g=new WeakMap,b=new WeakMap,v=new WeakMap,f=new WeakMap,x=new WeakMap,k=new WeakMap,y=new WeakMap,E=new WeakMap,A=new WeakMap,S=new WeakMap,z=new WeakMap,C=new WeakMap,N=new WeakSet;class M{constructor(e){var{agentId:t,enterInterval:r=50}=e;(0,l.A)(this,N),(0,c.A)(this,g,void 0),(0,c.A)(this,b,void 0),(0,c.A)(this,v,void 0),(0,c.A)(this,f,!1),(0,c.A)(this,x,!1),(0,c.A)(this,k,void 0),(0,c.A)(this,y,[]),(0,c.A)(this,E,{}),(0,c.A)(this,A,void 0),(0,c.A)(this,S,void 0),(0,c.A)(this,z,void 0),(0,c.A)(this,C,void 0),(0,m.A)(b,this,t),(0,m.A)(v,this,r)}enqueue(e){(0,d.A)(y,this).push(e),(0,p.A)(N,this,I).call(this)}dequeue(){return(0,d.A)(y,this).shift()}getMessageQueue(){return(0,d.A)(y,this)}subscribe(e,t){(0,d.A)(E,this)[e]||((0,d.A)(E,this)[e]=[]),(0,d.A)(E,this)[e].push(t)}unsubscribe(e,t){(0,d.A)(E,this)[e]&&((0,d.A)(E,this)[e]=(0,d.A)(E,this)[e].filter((e=>e!==t)))}notifySubscribers(e){var t=e.topic;(0,d.A)(E,this)[t]&&(0,d.A)(E,this)[t].forEach((t=>{t(null==e?void 0:e.message)}))}setChatItemIsLike(e,t){return(0,n.A)((function*(){var r=!1;try{var{code:o}=yield h.http.request("".concat((0,w.getBasePath)(),"api/gateway/easyops.api.aiops_chat.conversation.CommentDialogue/conversation/comment"),{method:"POST",body:JSON.stringify({taskId:e,isLike:t})});0===o&&(r=!0)}catch(e){r=!1}return r}))()}setConversationId(e){(0,m.A)(A,this,e)}getSessionHistory(e){var t=this;return(0,n.A)((function*(){e&&(0,m.A)(z,t,e);try{var r,{data:{conversations:o,next_token:n}}=yield h.http.request("".concat((0,w.getBasePath)(),"api/gateway/easyops.api.aiops_chat.conversation.ListConversation/conversation/list"),{method:"POST",body:JSON.stringify({limit:null!==(r=(0,d.A)(z,t))&&void 0!==r?r:20,next_token:(0,d.A)(S,t)})});return(0,m.A)(S,t,n),n||t.notifySubscribers({topic:"session.fetch.end"}),o}catch(e){console.error("获取会话历史失败")}return[]}))()}getChatHistory(e){var t=this;return(0,n.A)((function*(){if(e&&(t.setConversationId(e),(0,m.A)(C,t,"")),!(0,d.A)(A,t))return[];try{var{data:{conversations:r,next_token:o}}=yield h.http.request("".concat((0,w.getBasePath)(),"api/gateway/easyops.api.aiops_chat.conversation.GetAllDialogue/conversation/get/").concat((0,d.A)(A,t)),{method:"POST",body:JSON.stringify({limit:15,next_token:(0,d.A)(C,t)})});return(0,m.A)(C,t,o),o||t.notifySubscribers({topic:"message.fetch.end"}),r}catch(e){console.error("获取消息历史失败")}return[]}))()}deleteSession(e){return(0,n.A)((function*(){if(!e.length)return!1;var t=!1;try{var{code:r}=yield h.http.request("".concat((0,w.getBasePath)(),"api/gateway/easyops.api.aiops_chat.conversation.DeleteConversation/conversation/delete"),{method:"POST",body:JSON.stringify({conversationIds:e})});0===r&&(t=!0)}catch(e){t=!1}return t}))()}splitWord(e){if(!e)return[];if((null==e?void 0:e.length)<5)return[e];var t=[];if(window.Intl)for(var r=new Intl.Segmenter("zh-Hans-CN",{granularity:"word"}).segment(e)[Symbol.iterator](),o=r.next();!o.done;)t.push(o.value.segment),o=r.next();else{var n={[Symbol.split](e){for(var t=0,r=[],o="";t<e.length;){var n=e.substring(t,t+1);/[\u4e00-\u9fa5]/.test(n)||/\s|[,。;《》?!,.:<>?!]]/.test(n)?(r.push(o+n),o=""):o+=n,t++}return o&&r.push(o),r}};e.split(n).forEach((e=>{t.push(e)}))}return t}chat(e){var t=this;return(0,n.A)((function*(){(0,m.A)(g,t,new AbortController);var r,a=!1;(0,m.A)(f,t,!0),yield(0,u.y)("".concat((0,w.getBasePath)(),"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions"),{method:"POST",signal:(0,d.A)(g,t).signal,body:JSON.stringify({agentId:(0,d.A)(b,t),conversationId:(0,d.A)(A,t),input:e,stream:!0}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"},onopen:(r=(0,n.A)((function*(e){e.ok?console.log("open sse service success!"):console.log("open sse service fail!")})),function(e){return r.apply(this,arguments)}),onmessage:e=>{var{data:r}=e;if(a=!0,"[DONE]"!==r){var n={};try{n=JSON.parse(r)}catch(e){return console.log("数据格式错误",e),void t.enqueue({topic:"add",message:{created:i()().format("YYYY-MM-DD HH:mm:ss"),delta:{role:"assistant",content:"`【数据格式错误】:` ".concat(e)}}})}(0,d.A)(A,t)||t.setConversationId(n.conversationId),t.splitWord(n.delta.content).forEach((e=>{t.enqueue({topic:"add",message:(0,o.A)((0,o.A)({},n),{},{delta:{role:"assistant",content:e}})})}))}else(0,d.A)(g,t).abort()},onclose:()=>{console.log("close"),a||t.enqueue({topic:"add",message:{delta:{role:"assistant",content:"`无法识别`"},created:i()().format("YYYY-MM-DD HH:mm:ss")}}),(0,d.A)(g,t).abort()},onerror:e=>{console.log("err",e),(0,d.A)(g,t).abort()}}),(0,m.A)(f,t,!1)}))()}stop(){var e;clearInterval((0,d.A)(k,this)),(0,d.A)(g,this)&&(null===(e=(0,d.A)(g,this))||void 0===e||e.abort()),(0,m.A)(f,this,!1),(0,m.A)(k,this,void 0),(0,m.A)(x,this,!1),(0,p.A)(N,this,q).call(this),this.notifySubscribers({topic:"stop"})}}function q(){(0,d.A)(y,this).length=0}function I(){(0,d.A)(x,this)||((0,m.A)(x,this,!0),(0,m.A)(k,this,setInterval((()=>{if((0,d.A)(f,this)||this.getMessageQueue().length){var e=this.dequeue();e&&this.notifySubscribers(e)}else clearInterval((0,d.A)(k,this)),(0,m.A)(k,this,void 0),(0,m.A)(x,this,!1),this.notifySubscribers({topic:"finish"})}),(0,d.A)(v,this))))}var P="new_session_id";function _(e){var{agentId:t,enterInterval:r=50}=e,[s,l]=(0,a.useState)(!1),[c,p]=(0,a.useState)(!1),[d,m]=(0,a.useState)(),[u,h]=(0,a.useState)(!1),[w,g]=(0,a.useState)(!1),[b,v]=(0,a.useState)([]),[f,x]=(0,a.useState)(!1),[k,y]=(0,a.useState)(!1),[E,A]=(0,a.useState)([]),[S,z]=(0,a.useState)(""),C=(0,a.useRef)(""),N=(0,a.useRef)(),q=(0,a.useMemo)((()=>new M({agentId:t,enterInterval:r})),[t,r]),I=(0,a.useMemo)((()=>({conversationId:P,title:"新建会话"})),[]),_=(0,a.useCallback)((()=>{q.stop()}),[q]),R=(0,a.useCallback)(function(){var e=(0,n.A)((function*(e){if(arguments.length>1&&void 0!==arguments[1]&&arguments[1]&&e?(y(!1),x(!1),h(!0),A([]),m(e),w&&_()):x(!0),e===P)return q.setConversationId(),y(!0),void h(!1);var t=yield q.getChatHistory(e);A((e=>(e=>{var t=[];return e.forEach((e=>{t.unshift({taskId:e.taskId,role:"user",content:{type:"text",text:e.input},key:"user_".concat(e.taskId),created:e.time},{agentId:e.agentId,taskId:e.taskId,role:"assistant",content:{type:"markdown",text:e.output},key:"assistant_".concat(e.taskId),created:e.inputTime,tag:e.tag})})),t.filter((e=>e.content.text))})(t).concat(e))),x(!1),h(!1)}));return function(t){return e.apply(this,arguments)}}(),[q,w,_]),L=(0,a.useCallback)(function(){var e=(0,n.A)((function*(e){var t=e.filter((e=>e!==P)),r=yield q.deleteSession(t);if(r){var o=!1;d&&t.includes(d)&&d!==P&&(o=!0,q.setConversationId(),y(!1),x(!1),A([]),w&&_()),v((e=>{var r=e.filter((e=>!t.includes(e.conversationId)));if(o){var n=e.find((e=>e.conversationId===P));return h(!1),m(P),n?r:[I].concat(r)}return r}))}return r}));return function(t){return e.apply(this,arguments)}}(),[d,q,w,I,_]),H=(0,a.useCallback)(function(){var e=(0,n.A)((function*(e){p(!0);var t=yield q.getSessionHistory(e);d?yield R(d):m(P),v((e=>d?e.concat(t):[I].concat([...e,...t]))),p(!1)}));return function(t){return e.apply(this,arguments)}}(),[q,d,I,R]),Y=(0,a.useCallback)(function(){var e=(0,n.A)((function*(e){d===P&&v((t=>t.map((t=>(0,o.A)((0,o.A)({},t),{},{title:t.conversationId===P?e:t.title}))))),g(!0),q.chat(e),A((t=>t.concat([{role:"user",content:{type:"text",text:e},created:i()().format("YYYY-MM-DD HH:mm:ss")},{role:"assistant",content:{type:"load",text:""},chatting:!0,created:"Now"}])))}));return function(t){return e.apply(this,arguments)}}(),[q,d]),B=(0,a.useCallback)((()=>{q.setConversationId(),A([]),m(P),b.find((e=>e.conversationId===P))||v((e=>[I].concat(e)))}),[q,b,I]),D=(0,a.useCallback)(function(){var e=(0,n.A)((function*(e,t){var r=yield q.setChatItemIsLike(e,t);return r&&A((r=>r.map((r=>(0,o.A)((0,o.A)({},r),{},{tag:e===r.taskId?{isLike:t}:r.tag}))))),r}));return function(t,r){return e.apply(this,arguments)}}(),[q]);return(0,a.useEffect)((()=>{var e=()=>{l(!0)};return q.subscribe("session.fetch.end",e),()=>{q.subscribe("session.fetch.end",e)}}),[q]),(0,a.useEffect)((()=>{var e=e=>{e&&(C.current=C.current+e.delta.content,d===P&&e.conversationId&&(v((t=>t.map((t=>(0,o.A)((0,o.A)({},t),{},{conversationId:t.conversationId===P?e.conversationId:t.conversationId}))))),m(e.conversationId)),N.current=(0,o.A)((0,o.A)({},e),{},{role:"assistant",content:{type:"markdown",text:C.current},chatting:!0,created:i()(null==e?void 0:e.created).format("YYYY-MM-DD HH:mm:ss")}),A((e=>(e.pop(),e.concat(N.current)))))},t=()=>{C.current="",g(!1),N.current=void 0},r=()=>{t()},n=()=>{y(!0)},a=()=>{N.current&&(N.current.content={type:"markdown",text:N.current.content.text+" \\\n ` 对话被中断了 `"},A(E.concat(N.current))),t()};return q.subscribe("add",e),q.subscribe("finish",r),q.subscribe("stop",a),q.subscribe("message.fetch.end",n),()=>{q.unsubscribe("add",e),q.unsubscribe("finish",r),q.unsubscribe("stop",a),q.unsubscribe("message.fetch.end",n)}}),[q,d,E]),{sessionEnd:s,sessionLoading:c,loading:u,chatting:w,activeSessionId:d,sessionList:b,searchStr:S,msgEnd:k,msgLoading:f,msgList:E,handleChat:Y,stopChat:_,createSession:B,deleteSession:L,checkSession:R,setSearchStr:z,querySessionHistory:H,handleIsLike:D}}},6870:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,':root{--message-box-bg:#f1f3f4;--search-input-icon-hover:#ddd;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.15)}html[data-theme="dark"],\nhtml[data-theme="dark-v2"]{--message-box-bg:rgba(255,255,255,0.16);--search-input-icon-hover:#383838;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.24)}',""]);const i=s},6567:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,'.progress-text{position:relative;margin-left:12px;font-size:12px;color:var(--palette-gray-7);line-height:22px;min-height:22px}.progress-text::before{content:"·";font-size:16px;position:absolute;left:-10px;top:-4px}.instance-list-wrapper .instance-list-table-wrapper .result-tip{margin:12px 0 2px 12px;font-size:0.875em;color:rgb(94 129 172)}.instance-list-wrapper .instance-list-table-wrapper .empty-tip{margin-left:12px;font-size:12px;color:var(--palette-gray-7)}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper{position:relative;box-sizing:border-box;margin:0;padding:0;font-size:14px;clear:both;max-width:100%;overflow:hidden}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper .table-content{width:0;overflow:scroll}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper .table-content table{margin:0}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper .table-content table tr td{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.instance-list-wrapper .error-tip{padding:12px 0;font-size:12px}.instance-list-wrapper .error-tip .params{margin-top:6px;border-radius:3px;padding:4px}.instance-list-wrapper .error-tip .params .params-tip{color:rgb(94 129 172)}.instance-list-wrapper .open-more{margin-top:4px;font-size:12px;display:flex;justify-content:end}',""]);const i=s.toString()},1123:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,'.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:"liga" 0,none}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror .tableWrapper{overflow-x:auto}.ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.ProseMirror td,\n.ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}.ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror .selectedCell:after{z-index:2;position:absolute;content:"";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,0.4);pointer-events:none}.milkdown-theme-nord blockquote{border-left-width:4px;--tw-border-opacity:1;border-color:rgb(94 129 172/var(--tw-border-opacity));padding-left:1rem;font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif;font-style:normal}.milkdown-theme-nord code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord pre code{color:inherit}.milkdown-theme-nord img{margin-top:0!important;margin-bottom:0!important;display:inline-block;max-width:100%}.milkdown-theme-nord.prose\n :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:400}.milkdown-theme-nord.prose\n :where(ol > li):not(:where([class~="not-prose"] *))::marker,\n.milkdown-theme-nord.prose\n :where(ul > li):not(:where([class~="not-prose"] *))::marker{--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):before,\n.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *)):after{content:""}.milkdown-theme-nord.prose\n :where(code):not(:where([class~="not-prose"] *)):before,\n.milkdown-theme-nord.prose\n :where(code):not(:where([class~="not-prose"] *)):after{content:""}.milkdown-theme-nord.prose .tableWrapper{position:relative;margin-bottom:0.5rem;overflow-x:auto}.milkdown-theme-nord.prose table{font-size:0.875rem;line-height:1.25rem;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.milkdown-theme-nord.prose table{border-radius:0.5rem}}.milkdown-theme-nord.prose td,\n.milkdown-theme-nord.prose th{padding:0.75rem 1.5rem!important}.milkdown-theme-nord.prose tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .milkdown-theme-nord.prose tr{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.milkdown-theme-nord.prose :where(td, th) p{margin:0!important}.milkdown-theme-nord.prose :where(td, th):nth-child(odd){background-color:var(--color-fill-bg-base-1)}.dark .milkdown-theme-nord.prose :where(td, th):nth-child(odd){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.milkdown-theme-nord.prose.ProseMirror .selectedCell:after{background-color:#88c0d04d}.milkdown-theme-nord.prose br[data-is-inline="true"],\n.milkdown-theme-nord.prose br[data-is-inline="true"]:after{content:" "}.prose{color:var(--color-normal-text)}.prose :where(p):not(:where([class~="not-prose"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~="not-prose"] *)){color:var(--color-info);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600}.prose :where(a strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(ol):not(:where([class~="not-prose"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-alpha}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-alpha}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)){list-style-type:upper-roman}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~="not-prose"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~="not-prose"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~="not-prose"] *)){font-weight:500;font-style:italic;color:var(--color-auxiliary-text);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"\\201C" "\\201D" "\\2018" "\\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose\n :where(blockquote p:first-of-type):not(\n :where([class~="not-prose"] *)\n )::before{content:open-quote}.prose\n :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *))::after{content:close-quote}.prose :where(h1):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:0.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~="not-prose"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~="not-prose"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:0.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600;margin-top:1.5em;margin-bottom:0.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~="not-prose"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~="not-prose"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~="not-prose"] *)){color:var(--tw-prose-captions);font-size:0.875em;line-height:1.4285714;margin-top:0.8571429em}.prose :where(code):not(:where([class~="not-prose"] *)){color:var(--tw-prose-code);font-weight:600;font-size:0.875em}.prose :where(code):not(:where([class~="not-prose"] *))::before{content:"`"}.prose :where(code):not(:where([class~="not-prose"] *))::after{content:"`"}.prose :where(a code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h1 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(h2 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:0.875em}.prose :where(h3 code):not(:where([class~="not-prose"] *)){color:inherit;font-size:0.9em}.prose :where(h4 code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(thead th code):not(:where([class~="not-prose"] *)){color:inherit}.prose :where(pre):not(:where([class~="not-prose"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:0.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:0.375rem;padding-top:0.8571429em;padding-right:1.1428571em;padding-bottom:0.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~="not-prose"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~="not-prose"] *))::before{content:none}.prose :where(pre code):not(:where([class~="not-prose"] *))::after{content:none}.prose :where(table):not(:where([class~="not-prose"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:0.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~="not-prose"] *)){color:var(--color-strong-text);font-weight:600;vertical-align:bottom;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose :where(tbody tr):not(:where([class~="not-prose"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~="not-prose"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~="not-prose"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~="not-prose"] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~="not-prose"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~="not-prose"] *)){margin-top:0.5em;margin-bottom:0.5em}.prose :where(ol > li):not(:where([class~="not-prose"] *)){padding-left:0.375em}.prose :where(ul > li):not(:where([class~="not-prose"] *)){padding-left:0.375em}.prose :where(.prose > ul > li p):not(:where([class~="not-prose"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose\n :where(.prose > ul > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose\n :where(.prose > ul > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose\n :where(.prose > ol > li > *:first-child):not(:where([class~="not-prose"] *)){margin-top:1.25em}.prose\n :where(.prose > ol > li > *:last-child):not(:where([class~="not-prose"] *)){margin-bottom:1.25em}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose :where(hr + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)){padding-right:0}.prose :where(tbody td, tfoot td):not(:where([class~="not-prose"] *)){padding-top:0.5714286em;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose\n :where(tbody td:first-child, tfoot td:first-child):not(\n :where([class~="not-prose"] *)\n ){padding-left:0}.prose\n :where(tbody td:last-child, tfoot td:last-child):not(\n :where([class~="not-prose"] *)\n ){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~="not-prose"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~="not-prose"] *)){margin-bottom:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.isolate{isolation:isolate}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\\!table{display:table!important}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink{flex-shrink:1}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.\\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.break-all{word-break:break-all}.rounded{border-radius:0.25rem}.border{border-width:1px}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.ease-in{transition-timing-function:cubic-bezier(0.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,0.2,1)}.milkdown{border-radius:0.25rem;margin:0;padding:0}.editor{margin-left:auto;margin-right:auto}:is(.dark .dark\\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}code[class*="language-"],\npre[class*="language-"]{color:#f8f8f2;background:none;font-family:"Fira Code",Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*="language-"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre) > code[class*="language-"],\npre[class*="language-"]{background:#2e3440}:not(pre) > code[class*="language-"]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:0.7}.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted{color:#a3be8c}.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable{color:#81a1c1}.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,\n.token.important{color:#ebcb8b}.token.important,\n.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}',""]);const i=s.toString()},6780:(e,t,r)=>{r.d(t,{A:()=>i});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a)()(n());s.push([e.id,'.quick-answer-wrapper{margin-top:20px;border-radius:6px;border:1px solid var(--color-border-divider-line);padding:16px 24px}.quick-answer-wrapper .tip{font-size:18px;margin-bottom:30px}.quick-answer-wrapper .quick-answer-list{display:grid;grid-gap:24px 16px;gap:24px 16px;border-radius:3px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item{position:relative;padding:16px;border-radius:6px;cursor:pointer;display:flex;padding:10px 20px;gap:12px;width:auto;box-sizing:border-box}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item:hover{box-shadow:var(--quick-answer-card-item-hover)}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .left .icon{font-size:20px;color:#fff;padding:8px;border-radius:6px;margin-top:4px}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content{flex:1;min-width:0}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .title{font-size:16px;font-weight:bold;color:var(--color-normal-text);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .description{color:var(--color-auxiliary-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.quick-answer-wrapper .show-more-wrapper{text-align:center;margin-top:20px}.quick-answer-wrapper .show-more-wrapper .show-more-btn{line-height:24px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after,\n .quick-answer-wrapper .show-more-wrapper .show-more-btn::before{content:"- - - - -";color:var(--color-text-divider-line);position:absolute}.quick-answer-wrapper .show-more-wrapper .show-more-btn::before{margin-left:-60px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after{margin-left:10px}',""]);const i=s.toString()},5679:(e,t,r)=>{r.d(t,{A:()=>m});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a),i=r(62),l=r.n(i),c=new URL(r(3101),r.b),p=s()(n()),d=l()(c);p.push([e.id,`.message-list-loading-wrapper{width:140px;height:140px;background-repeat:no-repeat;margin:auto;background-image:url(${d})}.chart-item-loading-wrapper{display:flex;padding:10px;font-size:40px;align-items:center;justify-content:center;color:#d2d3d4;border-radius:6px}.chart-item-loading-wrapper .load{display:inline-block;position:relative;width:64px;height:64px}.chart-item-loading-wrapper .load div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#aaa8a8;animation-timing-function:cubic-bezier(0,1,1,0)}.chart-item-loading-wrapper .load div:nth-child(1){left:6px;animation:load1 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(2){left:6px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(3){left:26px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(4){left:45px;animation:load3 0.6s infinite}@keyframes load1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes load2{0%{transform:translate(0,0)}100%{transform:translate(19px,0)}}@keyframes load3{0%{transform:scale(1)}100%{transform:scale(0)}}.common-loading-wrapper{text-align:center;font-size:30px;color:#ddd}`,""]);const m=p.toString()},8894:(e,t,r)=>{r.d(t,{A:()=>h});var o=r(6758),n=r.n(o),a=r(935),s=r.n(a),i=r(62),l=r.n(i),c=new URL(r(7309),r.b),p=new URL(r(950),r.b),d=s()(n()),m=l()(c),u=l()(p);d.push([e.id,`:host{display:block;height:100%}:host([hidden]){display:none}@media only screen and (min-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1556px}}@media only screen and (min-width: 1440px) and (max-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1156px}}@media only screen and (min-width: 804px) and (max-width: 1440px){.chat-view-container .chat-view-content .chat-view{width:804px}}@media only screen and (max-width: 804px){.chat-view-container .chat-view-content .chat-view{width:100%}}.chat-view-container{display:flex;flex-direction:row;width:100%;height:100%}.chat-view-selector{width:200px;padding:14px;border-right:1px solid var(--color-border-divider-line)}.chat-view-content{flex:1;display:flex;flex-direction:column;width:100%}.chat-view-content .chat-view-toolbar{background:#e0e4e5;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-view-content .chat-view-toolbar .username{color:#333333;font-weight:500;line-height:22px;font-size:16px}.chat-view-content .chat-view-toolbar .toolbar eo-icon{cursor:pointer}.chat-view-content .chat-view{max-width:100%;position:relative;display:flex;flex:1;flex-direction:column;box-sizing:border-box;overflow-y:auto;margin:0 auto}.session-list-wrapper{display:flex;flex-direction:column;height:100%}.session-list-wrapper .session-title{font-size:16px;color:var(--color-header-text);margin-bottom:16px}.session-list-wrapper .session-list{overflow-y:auto}.session-list-wrapper .session-list .session-item{display:flex;justify-content:space-between;cursor:pointer;border-radius:var(--small-border-radius);background-color:var(--third-menu-default-bg);padding:6px 16px;color:var(--color-header-text);margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item .content{width:0;flex:1}.session-list-wrapper .session-list .session-item .content .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item:hover .session-close-btn eo-icon{display:block}.session-list-wrapper .session-list .session-item:first-child{margin-top:0px}.session-list-wrapper .session-list .session-item.active{background-color:var(--third-menu-item-selected-bg);color:var(--color-brand)}.session-list-wrapper .session-list .session-item:hover,\n .session-list-wrapper .session-list .session-item.active:hover{color:var(--color-header-text);background-color:var(--third-menu-item-hover-bg)}.session-list-wrapper .session-list .session-item .session-close-btn{display:flex;align-items:center;cursor:pointer;font-size:12px}.session-list-wrapper .session-list .session-item .session-close-btn:hover{color:var(--color-error)}.session-list-wrapper .session-list .session-item .session-close-btn eo-icon{display:none}.message-list{display:flex;flex-direction:column;padding-bottom:30px;padding:12px;flex:1;overflow-y:scroll}.message-list .message-list-box{display:flex;flex-direction:column;position:relative;gap:36px}.message-list .message-list-box .message-item{display:flex;gap:8px;padding-right:40px}.message-list .message-list-box .message-item.user{flex-direction:row-reverse;padding:0;padding-left:40px}.message-list .message-list-box .message-item.user .message-box{margin-bottom:0}.message-list .message-list-box .message-item.user .message-box .message-top{flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content{justify-content:end}.message-list .message-list-box .message-item.user .message-box .message-content .content{background-color:#606f7c;color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content:hover .content-tip{display:block}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip{position:absolute;left:-22px;top:0px;display:none}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip eo-icon{padding:4px;color:#606f7c;cursor:pointer}.message-list .message-list-box .message-item .avatar{width:36px;height:36px;margin-top:32px}.message-list .message-list-box .message-item .avatar.user{background-image:url(${m})}.message-list .message-list-box .message-item .avatar.robot{background-image:url(${u})}.message-list .message-list-box .message-item .message-box{position:relative;flex:1}.message-list .message-list-box .message-item .message-box .message-content{display:flex;justify-content:start;position:relative}.message-list .message-list-box .message-item .message-box .message-content .content{position:relative;padding:14px;border-radius:6px;background:var(--message-box-bg)}.message-list .message-list-box .message-item .message-box .message-content .content .text-item{white-space:pre-wrap}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar{position:absolute;bottom:-24px;right:0;display:flex;gap:12px;align-items:center}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon{cursor:pointer;color:#606f7c}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon.active{color:var(--color-brand)}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar .split{width:1px;height:16px;background-color:#d9d9d9;margin-bottom:1px}.message-list .message-list-box .message-item .message-box .message-top{display:flex;margin-bottom:4px;color:#bec8ce;gap:8px}.message-list .message-list-box .message-item .message-box .message-top .time{min-height:22px}.message-list .message-list-box .stop-responding-wrapper{position:absolute;left:44px;bottom:-28px}.search-input-box{display:flex;flex-direction:column;height:50px;padding:12px;position:relative}.search-input-box.fill-content{box-shadow:1px 0px 4px 0px rgba(197,197,197,0.5)}.search-input-box .input-box{position:absolute;bottom:20px;left:12px;right:12px;display:inline-flex;padding:var(--input-affix-wrapper-padding);border-radius:var(--small-border-radius);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;color:var(--text-color-default);background-color:var(--antd-input-bg);border:1px solid var(--color-border-divider-line);transition:border-color 0.3s;overflow:visible}.search-input-box .input-box.active{border-color:var(--antd-input-focus-border-color)}.search-input-box .input-box.disabled{pointer-events:none;background:var(--input-outline-disabled);cursor:not-allowed}.search-input-box .input-box.expand textarea{padding-right:50px;margin-bottom:50px}.search-input-box .input-box textarea{width:100%;height:22px;font-size:18px;resize:none;padding:10px 50px 10px 10px;outline:none;border:none;line-height:20px;color:var(--color-normal-text);background-color:transparent;cursor:inherit;transition:all 300ms ease-out}.search-input-box .input-box textarea::placeholder{color:#b0b1b8}.search-input-box .input-box .suffix-icon{display:flex;align-items:center;gap:8px;position:absolute;right:12px;bottom:6px}.search-input-box .input-box .suffix-icon eo-tooltip{display:flex}.search-input-box .input-box .suffix-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .suffix-icon eo-icon:not(.disabled):hover{background:var(--search-input-icon-hover)}.search-input-box .input-box .suffix-icon .submit-split{width:1px;height:20px;background:#d1d1d1}.search-input-box .input-box .suffix-icon .submit-btn.active{color:var(--color-brand)}.search-input-box .input-box .suffix-icon .submit-btn.disabled{color:var(--color-disabled-text);cursor:not-allowed}.search-input-box .input-box .toolbar-icon{position:absolute;top:12px;right:14px}.search-input-box .input-box .toolbar-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .toolbar-icon eo-icon:hover{background:var(--search-input-icon-hover)}.search-input-box .search-input-toolbar{display:flex;justify-content:end;position:absolute;right:12px;bottom:0px}.search-input-box .search-input-toolbar .input-tip{font-size:12px;color:var(--color-secondary-text)}.message-start-tip,\n.session-end-tip{color:var(--color-disabled-text);font-size:12px;text-align:center;margin-top:12px;position:relative}.message-start-tip::after,\n .session-end-tip::after,\n .message-start-tip::before,\n .session-end-tip::before{content:"- - -";color:var(--color-disabled-text);position:absolute}.message-start-tip::before, .session-end-tip::before{margin-left:-35px}.message-start-tip::after, .session-end-tip::after{margin-left:10px}`,""]);const h=d.toString()},2896:(e,t,r)=>{var o=r(2591),n=r.n(o),a=r(1740),s=r.n(a),i=r(8128),l=r.n(i),c=r(855),p=r.n(c),d=r(3051),m=r.n(d),u=r(3656),h=r.n(u),w=r(6870),g={};g.styleTagTransform=h(),g.setAttributes=p(),g.insert=l().bind(null,"head"),g.domAPI=s(),g.insertStyleElement=m(),n()(w.A,g),w.A&&w.A.locals&&w.A.locals},3101:(e,t,r)=>{e.exports=r.p+"images/863bc601.gif"},950:(e,t,r)=>{e.exports=r.p+"images/8c6e5bc3.png"},7309:(e,t,r)=>{e.exports=r.p+"images/6c9a569e.png"}}]);
2
+ //# sourceMappingURL=7904.a8272897.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/7904.a8272897.js","mappings":"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","sources":["webpack:///./src/chat-view/ChatViewContext.ts","webpack:///./src/chat-view/components/Loading.tsx","webpack:///./src/chat-view/components/MessageItem/Avatar.tsx","webpack:///./src/chat-view/components/MessageItem/GuideItem.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/InstanceList/Table.tsx","webpack:///./src/chat-view/components/MessageItem/MsgItemContext.ts","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/InstanceList/index.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/ProgressText.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/index.tsx","webpack:///./src/chat-view/components/MessageItem/Markdown/index.tsx","webpack:///./src/chat-view/components/MessageItem/TableItem.tsx","webpack:///./src/chat-view/components/MessageItem/TextItem.tsx","webpack:///./src/chat-view/components/MessageItem/Toolbar.tsx","webpack:///./src/chat-view/components/MessageItem/Time.tsx","webpack:///./src/chat-view/components/MessageItem/ContentTip.tsx","webpack:///./src/chat-view/components/MessageItem/index.tsx","webpack:///./src/chat-view/components/QuickAnswerList/index.tsx","webpack:///./src/chat-view/components/StopBtn.tsx","webpack:///./src/chat-view/components/MessageList.tsx","webpack:///./src/chat-view/components/utils/calculateAutoSizeStyle.ts","webpack:///./src/chat-view/components/SearchInput.tsx","webpack:///./src/chat-view/components/SessionList.tsx","webpack:///./src/chat-view/ChatService.ts","webpack:///./src/chat-view/hooks/useChatViewInfo.ts","webpack:///./src/chat-view/host-context.css","webpack:///./src/chat-view/components/MessageItem/Markdown/CodeBlock/CodeBlock.shadow.css","webpack:///./src/chat-view/components/MessageItem/Markdown/markdown.shadow.css","webpack:///./src/chat-view/components/QuickAnswerList/quickAnswerList.shadow.css","webpack:///./src/chat-view/components/loading.shadow.css","webpack:///./src/chat-view/styles.shadow.css","webpack:///./src/chat-view/host-context.css?1beb"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { AgentDetailItem } from \"./components/QuickAnswerList/index.js\";\nimport { SessionItem } from \"./ChatService.js\";\n\nexport type Role = \"guide\" | \"user\" | \"assistant\";\n\nexport interface MessageItemContent {\n type: \"guide\" | \"text\" | \"markdown\" | \"table\" | \"load\";\n text: string;\n examplePrompts?: string[];\n}\n\nexport interface MessageItem {\n role: Role;\n content: MessageItemContent;\n created?: number | string;\n key?: number | string;\n conversationId?: string;\n taskId?: string;\n agentId?: string;\n chatting?: boolean;\n tag?: {\n isLike?: boolean;\n };\n}\n\nexport interface QuickAnswerConfig {\n tip: string;\n list: AgentDetailItem[];\n}\n\ninterface ChatViewContextProps {\n sessionEnd: boolean;\n sessionLoading: boolean;\n activeSessionId?: string;\n sessionList: SessionItem[];\n msgEnd: boolean;\n msgLoading: boolean;\n msgList: MessageItem[];\n loading: boolean;\n chatting: boolean;\n searchStr: string;\n showLike: boolean;\n readonly: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n handleIsLike: (id: string, isLike: boolean) => Promise<boolean>;\n handleChat: (str: string) => void;\n stopChat: () => void;\n checkSession: (id?: string, isInit?: boolean) => void;\n createSession: () => void;\n deleteSession: (ids: string[]) => Promise<boolean>;\n setSearchStr: (str: string) => void;\n querySessionHistory: (limit?: number) => void;\n}\n\nexport const ChatViewContext = createContext<ChatViewContextProps>(\n {} as ChatViewContextProps\n);\n\nexport const useChatViewContext = (): ChatViewContextProps =>\n useContext(ChatViewContext);\n","import React from \"react\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function MessageListLoading() {\n return <div className=\"message-list-loading-wrapper\"></div>;\n}\n\nexport function ChatItemLoading() {\n return (\n <div className=\"chart-item-loading-wrapper\">\n <div className=\"load\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>\n );\n}\n\nexport function CommonLoading() {\n return (\n <div className=\"common-loading-wrapper\">\n <WrappedIcon icon=\"loading\" lib=\"antd\" spinning />\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport type { Role } from \"../../ChatViewContext.js\";\n\nexport function Avatar({ role }: { role: Role }): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n\n return <div className={`avatar ${isUser ? \"user\" : \"robot\"}`} />;\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\ninterface GuideItemProps {\n text: string;\n prompts?: string[];\n}\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function GuideItem({ text, prompts }: GuideItemProps) {\n return (\n <div className=\"guide-item\">\n {text}\n <div className=\"prompts-list\">\n {prompts\n ? prompts.map((item, index) => (\n <WrappedLink key={index}>{item}</WrappedLink>\n ))\n : null}\n </div>\n </div>\n );\n}\n","import React, { useMemo, useRef, useLayoutEffect } from \"react\";\n\nexport type TableColumn = {\n title: string;\n dataIndex: string;\n key: string;\n width?: string;\n};\n\nfunction cmdbInstanceShowName(value: string | string[]): string {\n if (Array.isArray(value)) {\n const firstKey = value[0] || \"-\"; // 第一个show key为undefined时展示-\n const resKey = value.slice(1, value.length).join(\",\");\n const res = resKey ? `${firstKey}(${resKey})` : firstKey;\n return res;\n } else {\n return value;\n }\n}\n\nexport function TableComponent({\n columns,\n dataSource,\n}: {\n columns: TableColumn[];\n dataSource: Record<string, unknown>[];\n}) {\n const tableContentRef = useRef<HTMLDivElement>(null);\n\n const toString = (value: any) => {\n if (value && typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return value;\n };\n\n const getColGroup = useMemo(() => {\n return (\n <colgroup>\n {columns.map((_, index) => {\n return (\n <col\n key={index}\n style={{\n width: 200,\n minWidth: 200,\n }}\n ></col>\n );\n })}\n </colgroup>\n );\n }, [columns]);\n\n useLayoutEffect(() => {\n const tableContent = tableContentRef.current;\n\n if (tableContent) {\n const { width } = tableContent.parentElement!.getBoundingClientRect();\n\n tableContent.style.width = `${width}px`;\n }\n }, []);\n\n return (\n <div className=\"instance-list-table-wrapper\">\n <div className=\"result-tip\">【查询结果】:</div>\n {dataSource.length ? (\n <div className=\"table-wrapper\">\n <div className=\"table-content\" ref={tableContentRef}>\n <table>\n {getColGroup}\n <thead>\n <tr>\n {columns.map((item, index) => {\n return (\n <th key={index} className={`${item.key}`}>\n {item.title}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {dataSource.map((item: any, index) => {\n return (\n <tr key={index}>\n {columns.map((column, tdIndex) => {\n const content = toString(item[column.key]);\n return (\n <td key={tdIndex} title={content}>\n {column.key === \"#showKey\"\n ? cmdbInstanceShowName(item[column.key])\n : content}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n ) : (\n <div className=\"empty-tip\">【无数据】</div>\n )}\n </div>\n );\n}\n","import { createContext, useContext } from \"react\";\nimport { MessageItem } from \"../../ChatViewContext\";\n\nexport const MsgItemContext = createContext<MessageItem>({} as MessageItem);\n\nexport const useMsgItemContext = (): MessageItem => useContext(MsgItemContext);\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport {\n InstanceApi_postSearchV3,\n InstanceApi_PostSearchV3RequestBody,\n} from \"@next-api-sdk/cmdb-sdk\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport { TableColumn, TableComponent } from \"./Table\";\nimport { ChatItemLoading } from \"../../../../Loading.js\";\nimport { useMsgItemContext } from \"../../../MsgItemContext.js\";\nimport { getBasePath } from \"@next-core/runtime\";\n\nexport type RequestParams = InstanceApi_PostSearchV3RequestBody & {\n objectId: string;\n};\n\nconst computedTableColumns = (data: Record<string, any>[]) => {\n const columns: TableColumn[] = [];\n const matchItem = data[0];\n Object.keys(matchItem)?.forEach((key) => {\n columns.push({\n title: key,\n dataIndex: key,\n key: key,\n });\n });\n return columns;\n};\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport default function InstanceList({ text }: { text: string }) {\n const { chatting } = useMsgItemContext();\n\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [isFetching, setIsFetching] = useState<boolean>(false);\n const [isEnd, setIsEnd] = useState<boolean>(false);\n const [isError, setIsError] = useState<boolean>(false);\n const [objectId, setObjectId] = useState<string>(\"\");\n const [tableColumn, setTableColumn] = useState<TableColumn[]>([]);\n const [tableData, setTableData] = useState<Record<string, any>[]>([]);\n const [showMore, setShowMore] = useState<boolean>(false);\n\n const handleClickShowMoreBtn = () => {\n setShowMore((isShow) => !isShow);\n };\n\n const fetchInstanceList = useCallback(\n async (objectId: string, params: InstanceApi_PostSearchV3RequestBody) => {\n if (isFetching) return;\n setIsFetching(true);\n try {\n const request = await InstanceApi_postSearchV3(objectId, {\n page: 1,\n page_size: 10,\n ...params,\n });\n setTableData(request.list ?? []);\n request.list?.length &&\n setTableColumn(computedTableColumns(request.list!));\n setIsError(false);\n } catch {\n setIsError(true);\n }\n setIsFetching(false);\n setIsLoading(false);\n },\n [isFetching]\n );\n\n useEffect(() => {\n let data: InstanceApi_PostSearchV3RequestBody & { objectId: string };\n try {\n data = JSON.parse(text);\n } catch {\n setIsError(true);\n if (isEnd) {\n setIsLoading(false);\n }\n return;\n }\n setObjectId(data.objectId);\n fetchInstanceList(data.objectId, data);\n }, [text, isEnd]);\n\n useEffect(() => {\n if (chatting) {\n if (text.match(/\\n[`]{0,3}$/)) {\n setIsEnd(true);\n if (!isFetching) {\n setIsLoading(false);\n }\n }\n } else {\n setIsEnd(true);\n }\n }, [text, chatting, isFetching]);\n\n return (\n <div className=\"instance-list-wrapper\">\n {isLoading || isFetching ? (\n <ChatItemLoading />\n ) : isEnd && isError ? (\n <div className=\"error-tip\">\n <WrappedLink onClick={handleClickShowMoreBtn}>\n {showMore ? \"收起\" : \"查询失败, 点击查看原始查询语句\"}\n </WrappedLink>\n {showMore ? (\n <div className=\"params\">\n <div className=\"params-tip\">【查询语句】: </div>\n <pre>\n <code>{text}</code>\n </pre>\n </div>\n ) : null}\n </div>\n ) : (\n <div>\n <TableComponent columns={tableColumn} dataSource={tableData} />\n {objectId ? (\n <div className=\"open-more\">\n <WrappedLink\n href={`${getBasePath()}next-cmdb-instance-management/next/${objectId}/list`}\n target=\"_blank\"\n >\n 查看更多\n </WrappedLink>\n </div>\n ) : null}\n </div>\n )}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\n\nexport function ProgressText({ text }: { text: string }): React.ReactNode {\n const renderText = useMemo(() => {\n // 文本末尾存在 \\n ```, 会导致在渲染快结束的时候突然有一个换行,在结束的时候,换行被干掉,导致页面闪动的情况\n // 所以在这里计算,如果文本将要关闭,则默认不然 \\n ``` 显示\n const newText = text.replace(/\\n[`]{0,3}$/, \"\");\n return newText;\n }, [text]);\n\n return <div className=\"progress-text\">{renderText}</div>;\n}\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { useNodeViewContext } from \"@prosemirror-adapter/react\";\nimport InstanceList from \"./InstanceList/index.js\";\nimport { ProgressText } from \"./ProgressText.js\";\n\nexport const CodeBlock = () => {\n const [language, setLanguage] = useState(\"\");\n const { contentRef, node } = useNodeViewContext();\n const defaultContent = useMemo(\n () => (\n <pre spellCheck={false}>\n <code ref={contentRef} />\n </pre>\n ),\n [contentRef]\n );\n\n const renderContent = useMemo(() => {\n if (!node.firstChild?.text) return null;\n switch (language) {\n case \"easy_cmd_progress\":\n return <ProgressText text={node.firstChild?.textContent} />;\n case \"easy_cmd_cmdb_instance_list\":\n case \"easy_cmd_cmdb_instance_table\":\n return <InstanceList text={node.firstChild?.textContent} />;\n default:\n return defaultContent;\n }\n }, [node, language, defaultContent]);\n\n useEffect(() => {\n if (!language) {\n const {\n attrs: { language },\n } = node;\n if (language) {\n setLanguage(language);\n }\n }\n }, [node, language]);\n\n return renderContent;\n};\n","import React, { useEffect } from \"react\";\nimport {\n defaultValueCtx,\n Editor,\n rootCtx,\n editorViewOptionsCtx,\n} from \"@milkdown/core\";\nimport { Milkdown, useEditor, MilkdownProvider } from \"@milkdown/react\";\nimport { commonmark, codeBlockSchema } from \"@milkdown/preset-commonmark\";\nimport { nord } from \"@milkdown/theme-nord\";\nimport { gfm } from \"@milkdown/preset-gfm\";\nimport { prism } from \"@milkdown/plugin-prism\";\nimport { $view, replaceAll } from \"@milkdown/utils\";\nimport {\n ProsemirrorAdapterProvider,\n useNodeViewFactory,\n} from \"@prosemirror-adapter/react\";\nimport { CodeBlock } from \"./CodeBlock/index.js\";\n\nexport function MarkdownItem({ text }: { text: string }) {\n return (\n <div className=\"markdown-item\">\n <MilkdownProvider>\n <ProsemirrorAdapterProvider>\n <MarkdownDisplay value={text} />\n </ProsemirrorAdapterProvider>\n </MilkdownProvider>\n </div>\n );\n}\n\nexport function MarkdownDisplay({ value }: { value: string }): React.ReactNode {\n const nodeViewFactory = useNodeViewFactory();\n\n const { get } = useEditor((root) => {\n return Editor.make()\n .config((ctx) => {\n ctx.set(rootCtx, root);\n ctx.update(editorViewOptionsCtx, (prev: any) => ({\n ...prev,\n editable: () => false,\n }));\n value && ctx.set(defaultValueCtx, value);\n })\n .config(nord)\n .use(prism)\n .use(gfm)\n .use(commonmark)\n .use(\n $view(codeBlockSchema.node, () =>\n nodeViewFactory({ component: CodeBlock })\n )\n );\n }, []);\n\n useEffect(() => {\n if (value !== undefined) {\n get()?.action(replaceAll(value));\n }\n }, [get, value]);\n\n return <Milkdown />;\n}\n","import React from \"react\";\n// import { wrapBrick } from \"@next-core/react-element\";\n// import type {\n// EoNextTable,\n// NextTableComponentProps,\n// } from \"@next-bricks/advanced/next-table\";\n\ninterface MarkdownItemProps {\n text: string;\n}\n\n// const WrappedNextTable = wrapBrick<EoNextTable, NextTableComponentProps>(\n// \"eo-next-table\"\n// );\n\nexport function TableItem({ text }: MarkdownItemProps) {\n // const parseContent = useMemo((): NextTableComponentProps => {\n // let content: NextTableComponentProps;\n // try {\n // content = JSON.parse(text);\n // } catch {\n // content = {} as NextTableComponentProps;\n // }\n // return content;\n // }, [text]);\n\n // return (\n // <div className=\"table-item\">\n // <WrappedNextTable pagination={false} {...parseContent} />\n // </div>\n // );\n return <div className=\"table-item\">{text}</div>;\n}\n","import React from \"react\";\n\ninterface TextItem {\n text: string;\n}\n\nexport function TextItem({ text }: TextItem) {\n return <div className=\"text-item\">{text}</div>;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { copyToClipboard as _copyToClipboard } from \"@next-bricks/basic/data-providers/copy-to-clipboard\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { MessageItem, useChatViewContext } from \"../../ChatViewContext\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport classNames from \"classnames\";\n\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst copyToClipboard = unwrapProvider<typeof _copyToClipboard>(\n \"basic.copy-to-clipboard\"\n);\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n\nexport function Toolbar({\n role,\n content,\n chatting,\n taskId,\n tag,\n}: MessageItem): React.ReactNode {\n const isAssistant = useMemo(\n () => role === \"assistant\" && content.type !== \"load\",\n [role, content.type]\n );\n const isChattingItem = useMemo(() => chatting, [chatting]);\n const { showLike, readonly, handleIsLike } = useChatViewContext();\n\n const handleCopy = () => {\n copyToClipboard(content.text)\n .then(() => showNotification({ type: \"success\", message: \"复制成功\" }))\n .catch(() => showNotification({ type: \"error\", message: \"复制失败\" }));\n };\n\n const handleLikeOrIsLike = useCallback(\n async (islike: boolean) => {\n const result = await handleIsLike(taskId!, islike);\n showNotification({\n message: `${islike ? \"点赞\" : \"操作\"}${result ? \"成功\" : \"失败\"}`,\n type: result ? \"success\" : \"error\",\n });\n },\n [taskId, handleIsLike]\n );\n\n return isAssistant && !isChattingItem ? (\n <div className=\"toolbar\">\n {showLike && !readonly && (\n <>\n <WrappedToolTip content=\"点赞\">\n <WrapperIcon\n className={classNames(\"like\", {\n active: tag?.isLike === true,\n })}\n lib=\"easyops\"\n icon=\"like\"\n onClick={() => handleLikeOrIsLike(true)}\n />\n </WrappedToolTip>\n <WrappedToolTip content=\"还不够好\">\n <WrapperIcon\n className={classNames(\"unlike\", {\n active: tag?.isLike === false,\n })}\n lib=\"easyops\"\n icon=\"unlike\"\n onClick={() => handleLikeOrIsLike(false)}\n />\n </WrappedToolTip>\n <div className=\"split\" />\n </>\n )}\n <WrappedToolTip content=\"点击复制\">\n <WrapperIcon lib=\"antd\" icon=\"copy\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import moment from \"moment\";\nimport React from \"react\";\n\nexport function Time({ time }: { time?: string | number }) {\n return (\n <div className=\"time\">\n {time\n ? typeof time === \"string\"\n ? time\n : moment(time).format(\"YYYY-MM-DD HH:mm:ss\")\n : null}\n </div>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { useChatViewContext, type MessageItem } from \"../../ChatViewContext\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrapperIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function ContentTip({ role, content }: MessageItem): React.ReactNode {\n const isUser = useMemo(() => role === \"user\", [role]);\n\n const { chatting, readonly, setSearchStr } = useChatViewContext();\n\n const handleCopy = () => {\n setSearchStr(content.text);\n };\n\n return !readonly && isUser && !chatting ? (\n <div className=\"content-tip\">\n <WrappedToolTip content=\"点击再次提问\">\n <WrapperIcon lib=\"antd\" icon=\"edit\" onClick={handleCopy} />\n </WrappedToolTip>\n </div>\n ) : null;\n}\n","import React, { useCallback, useMemo } from \"react\";\nimport { MessageItem, MessageItemContent } from \"../../ChatViewContext.js\";\nimport { GuideItem } from \"./GuideItem.js\";\nimport { MarkdownItem } from \"./Markdown/index.js\";\nimport { TableItem } from \"./TableItem.js\";\nimport { ChatItemLoading } from \"../Loading.js\";\nimport { TextItem } from \"./TextItem.js\";\nimport { Toolbar } from \"./Toolbar.js\";\nimport { Time } from \"./Time.js\";\nimport { ContentTip } from \"./ContentTip.js\";\nimport { MsgItemContext } from \"./MsgItemContext.js\";\n\nconst NOT_AGENT_MATCH = \"no_agent\";\n\nexport function MessageNode(props: MessageItem): React.ReactNode {\n const { content, created, role, agentId } = props;\n const isUser = useMemo(() => role === \"user\", [role]);\n\n const getContentNode = useCallback((content: MessageItemContent) => {\n const { type, text, examplePrompts } = content;\n switch (type) {\n case \"guide\":\n return <GuideItem text={text} prompts={examplePrompts} />;\n case \"text\":\n return <TextItem text={text} />;\n case \"table\":\n return <TableItem text={text} />;\n case \"load\":\n return <ChatItemLoading />;\n case \"markdown\":\n default:\n return <MarkdownItem text={text} />;\n }\n }, []);\n\n const messageNode = useMemo(\n () => getContentNode(content),\n [content, getContentNode]\n );\n\n return (\n <MsgItemContext.Provider value={props}>\n <div className=\"message-box\">\n <div className=\"message-top\">\n {isUser\n ? \"我\"\n : !agentId || agentId === NOT_AGENT_MATCH\n ? \"AI助手\"\n : agentId}\n <Time time={created} />\n </div>\n <div className=\"message-content\">\n <div className=\"content\">\n {messageNode}\n <ContentTip {...props} />\n <Toolbar {...props} />\n </div>\n </div>\n </div>\n </MsgItemContext.Provider>\n );\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useChatViewContext } from \"../../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport interface AgentDetailItem {\n name: string;\n description: string;\n icon: GeneralIconProps & { color: string };\n starterPrompts?: string[];\n instanceId: string;\n [key: string]: any;\n}\n\nconst CARD_ITEM_HEIGHT = 85;\nconst HEIGHT_GAP = 24;\n\nfunction QuickAnswerCardItem({\n name,\n description,\n icon,\n starterPrompts,\n}: AgentDetailItem) {\n const { setSearchStr } = useChatViewContext();\n\n const handleCardClick = () => {\n starterPrompts?.length && setSearchStr(starterPrompts[0]);\n };\n\n const iconColor = useMemo(() => icon?.color ?? \"geekblue\", [icon]);\n\n return (\n <div\n className=\"quick-answer-card-item\"\n style={{\n height: CARD_ITEM_HEIGHT,\n background: `linear-gradient(rgba(var(--theme-${iconColor}-color-rgb-channel), 0.1), rgba(var(--theme-${iconColor}-color-rgb-channel), 0.08))`,\n }}\n onClick={handleCardClick}\n >\n <div className=\"left\">\n <WrappedIcon\n className=\"icon\"\n {...(icon ?? {\n icon: \"default-app\",\n lib: \"easyops\",\n category: \"app\",\n })}\n style={{\n background: `rgba(var(--theme-${iconColor}-color-rgb-channel), 0.5)`,\n }}\n />\n </div>\n <div className=\"content\">\n <div className=\"title\">{name}</div>\n <div className=\"description\">{description}</div>\n </div>\n </div>\n );\n}\n\nexport function QuickAnswerList() {\n const { quickAnswerConfig, msgList, loading } = useChatViewContext();\n const [showMoreBtn, setShowMoreBtn] = useState<boolean>(false);\n const listRef = useRef<HTMLDivElement>(null);\n const hadClickShowMoreBtn = useRef<boolean>(false);\n\n const handleShowMoreClick = () => {\n hadClickShowMoreBtn.current = true;\n setShowMoreBtn(false);\n };\n\n useEffect(() => {\n const element = listRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (\n entry.contentRect.height >\n CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2\n ) {\n if (!hadClickShowMoreBtn.current) {\n setShowMoreBtn(true);\n }\n } else {\n setShowMoreBtn(false);\n }\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [showMoreBtn, quickAnswerConfig?.list]);\n\n return quickAnswerConfig?.list.length && msgList.length === 0 && !loading ? (\n <div className=\"quick-answer-wrapper\">\n <div className=\"tip\">\n {quickAnswerConfig.tip ??\n \"你好,我是运维数智人 — Murphy,我能为你提供以下服务:\"}\n </div>\n <div\n className=\"quick-answer-list\"\n style={{\n ...(showMoreBtn\n ? {\n maxHeight: CARD_ITEM_HEIGHT * 3 + HEIGHT_GAP * 2 + 10,\n overflow: \"hidden\",\n }\n : {}),\n }}\n ref={listRef}\n >\n {quickAnswerConfig.list.map((item) => (\n <QuickAnswerCardItem key={item.instanceId} {...item} />\n ))}\n </div>\n {showMoreBtn ? (\n <div className=\"show-more-wrapper\">\n <WrappedLink\n icon={{\n lib: \"antd\",\n icon: \"down\",\n }}\n className=\"show-more-btn\"\n onClick={handleShowMoreClick}\n >\n 显示更多\n </WrappedLink>\n </div>\n ) : null}\n </div>\n ) : null;\n}\n","import React from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function StopBtn() {\n const { stopChat } = useChatViewContext();\n\n const handleStopChat = () => {\n stopChat();\n };\n return (\n <div className=\"stop-responding-wrapper\">\n <WrappedLink className=\"stop-btn\" onClick={handleStopChat}>\n 停止生成\n </WrappedLink>\n </div>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { MessageItem, useChatViewContext } from \"../ChatViewContext\";\nimport { Avatar } from \"./MessageItem/Avatar.js\";\nimport classNames from \"classnames\";\nimport { CommonLoading, MessageListLoading } from \"./Loading.js\";\nimport { MessageNode } from \"./MessageItem/index.js\";\nimport { QuickAnswerList } from \"./QuickAnswerList/index.js\";\nimport { debounce } from \"lodash\";\nimport { StopBtn } from \"./StopBtn.js\";\n\ninterface MessageListProps {\n showAvatar?: boolean;\n}\n\nconst DEFAULT_OFFSET_HEIGHT = 80;\nconst CACHE_HEIGHT = 200;\n\nexport function MessageList({\n showAvatar = true,\n}: MessageListProps): React.ReactNode {\n const messageListRef = useRef<HTMLDivElement>(null);\n const messgetListBoxRef = useRef<HTMLDivElement>(null);\n const [preHeight, setPreHeight] = useState<number>(0);\n const isCustomScroll = useRef<boolean>(false);\n\n const {\n msgLoading,\n msgEnd,\n msgList,\n loading,\n activeSessionId,\n chatting,\n checkSession,\n } = useChatViewContext();\n\n const getMsgItemNode = useCallback(\n (item: MessageItem, index: number = 0) => {\n return (\n <div\n className={classNames(\"message-item\", { user: item.role === \"user\" })}\n key={index}\n >\n {showAvatar && <Avatar role={item.role} />}\n <MessageNode {...item} />\n </div>\n );\n },\n [showAvatar]\n );\n\n const msgListNode = useMemo(() => {\n return msgList.map((item, index) => {\n if (item.chatting) {\n return (\n <>\n {getMsgItemNode(item, index)}\n {chatting && index === msgList.length - 1 ? <StopBtn /> : null}\n </>\n );\n } else {\n return getMsgItemNode(item, index);\n }\n });\n }, [msgList, chatting, getMsgItemNode]);\n\n const handleScroll = useCallback(() => {\n const messageList = messageListRef.current;\n if (messageList) {\n const { scrollHeight, clientHeight, scrollTop } = messageList;\n // 滚动到底部所需的高度 = 总高度 - 视图高度\n const isBottom = scrollHeight - clientHeight === scrollTop;\n if (!isBottom) {\n isCustomScroll.current = true;\n } else if (isBottom && isCustomScroll.current) {\n // 自动吸低\n isCustomScroll.current = false;\n }\n if (!msgLoading && !msgEnd && scrollTop < CACHE_HEIGHT) {\n checkSession();\n }\n }\n }, [msgEnd, msgLoading, checkSession]);\n\n const debounceHandleScroll = debounce(handleScroll, 200);\n\n useEffect(() => {\n if (chatting || activeSessionId) {\n // 聊天或者会话变更时,重置滚动状态\n isCustomScroll.current = false;\n }\n }, [chatting, activeSessionId]);\n\n useEffect(() => {\n const element = messgetListBoxRef.current;\n if (element) {\n const observer = new ResizeObserver((entries) => {\n let newHeight: number = 0;\n // 如果存在用户行为,不触发自动滚动行为\n if (isCustomScroll.current) return;\n for (const entry of entries) {\n newHeight = entry.contentRect.height - DEFAULT_OFFSET_HEIGHT;\n }\n if (!loading && !chatting) {\n // 高度变化,代表消息新增,自动滚动到最下\n messageListRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n }\n if (newHeight > preHeight && chatting) {\n messageListRef.current!.scroll({\n top: Number.MAX_SAFE_INTEGER,\n });\n setPreHeight(Math.max(preHeight, newHeight));\n }\n });\n observer.observe(element);\n return () => observer.disconnect();\n }\n }, [chatting, loading, preHeight]);\n\n return (\n <div\n className=\"message-list\"\n ref={messageListRef}\n onScroll={debounceHandleScroll}\n >\n <div className=\"message-list-box\" ref={messgetListBoxRef}>\n {msgEnd && msgList.length ? (\n <div className=\"message-start-tip\">会话开始</div>\n ) : null}\n {msgLoading && <CommonLoading />}\n <QuickAnswerList />\n {msgListNode}\n </div>\n {loading && <MessageListLoading />}\n </div>\n );\n}\n","const HIDDEN_TEXTAREA_STYLE = `\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important;\n padding: 10px !important;\n pointer-events: none !important;\n`;\n\nconst SIZING_STYLE = [\n \"letter-spacing\",\n \"line-height\",\n \"padding-top\",\n \"padding-bottom\",\n \"font-family\",\n \"font-weight\",\n \"font-size\",\n \"font-variant\",\n \"text-rendering\",\n \"text-transform\",\n \"width\",\n \"text-indent\",\n \"padding-left\",\n \"padding-right\",\n \"border-width\",\n \"box-sizing\",\n \"word-break\",\n \"white-space\",\n];\nlet hiddenTextarea: HTMLTextAreaElement;\n\n/**\n * 计算 textare 高度\n * https://github.com/react-component/textarea/blob/1c0026fbe30e5f7dff1fca695b2cf262246381ca/src/calculateNodeHeight.tsx\n * */\nexport default function calculateAutoSizeStyle(\n uiTextNode: HTMLTextAreaElement,\n minRows: number | null = null,\n maxRows: number | null = null\n): React.CSSProperties {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement(\"textarea\");\n hiddenTextarea.setAttribute(\"tab-index\", \"-1\");\n hiddenTextarea.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(hiddenTextarea);\n }\n\n const uiTextNodeStyle = window.getComputedStyle(uiTextNode);\n const sizingStyle = SIZING_STYLE.map(\n (name) => `${name}:${uiTextNodeStyle.getPropertyValue(name)}`\n ).join(\";\");\n\n // equal style\n hiddenTextarea.setAttribute(\n \"style\",\n `${sizingStyle};${HIDDEN_TEXTAREA_STYLE}`\n );\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || \"\";\n\n let minHeight: number | undefined = undefined;\n let maxHeight: number | undefined = undefined;\n // let overflowY: any;\n\n const borderSize = 2;\n const paddingSize = 20;\n let height = hiddenTextarea.scrollHeight - paddingSize + borderSize;\n\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = \" \";\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows - paddingSize + borderSize;\n height = Math.max(paddingSize, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows - paddingSize + borderSize;\n // overflowY = height > maxHeight ? \"\" : \"hidden\";\n height = Math.min(maxHeight, height);\n }\n }\n\n const style: React.CSSProperties = {\n height,\n overflowY: \"scroll\",\n resize: \"none\",\n };\n\n if (minHeight) {\n style.minHeight = minHeight;\n }\n if (maxHeight) {\n style.maxHeight = maxHeight;\n }\n\n return style;\n}\n","import React, {\n ChangeEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport calculateAutoSizeStyle from \"./utils/calculateAutoSizeStyle.js\";\nimport classNames from \"classnames\";\nimport { useChatViewContext } from \"../ChatViewContext.js\";\n\nconst WrappedToolTip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport function SearchInput(): React.ReactNode {\n const [value, setValue] = useState<string>(\"\");\n const [active, setActive] = useState<boolean>(false);\n const [expand, setExpand] = useState<boolean>(false);\n const [autoSizeStyle, setAutoSizeStyle] = useState<React.CSSProperties>();\n const [isFillContent, setIsFillContent] = useState<boolean>(false);\n const searchInputBoxRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const hadExpanded = useRef<boolean>(false);\n const inputEndRef = useRef<boolean>(false);\n\n const {\n chatting,\n loading,\n searchStr,\n createSession,\n setSearchStr,\n handleChat,\n } = useChatViewContext();\n\n const hadValue = useMemo(() => !!value, [value]);\n const defaultSize = useMemo(() => [1, 5], []);\n const disabled = useMemo(() => loading || chatting, [chatting, loading]);\n\n const computedAutoSize = useCallback(\n (size = defaultSize) => {\n if (hadExpanded.current && expand) return;\n const textareaElement = textareaRef.current as HTMLTextAreaElement;\n if (textareaElement) {\n const textareaStyles = calculateAutoSizeStyle(\n textareaElement,\n size[0],\n size[1]\n );\n\n setAutoSizeStyle(textareaStyles);\n }\n hadExpanded.current = expand;\n },\n [defaultSize, expand]\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement> | string): void => {\n const value = typeof e === \"string\" ? e : e.target.value;\n setValue(value);\n textareaRef.current!.value = value;\n },\n []\n );\n\n const handleCompositionStart = () => {\n inputEndRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n inputEndRef.current = false;\n };\n\n const hanldeCreateSession = () => {\n createSession();\n };\n\n const handleExpand = useCallback(() => {\n setExpand((value) => {\n return !value;\n });\n }, []);\n\n const handleSubmit = useCallback(() => {\n if (!hadValue || !textareaRef.current || disabled) return;\n\n handleChat(value);\n\n setActive(false);\n setExpand(false);\n handleChange(\"\");\n textareaRef.current.blur();\n }, [value, hadValue, disabled, handleChat, handleChange]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey && !inputEndRef.current) {\n e.preventDefault();\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n useEffect(() => {\n if (searchStr) {\n handleChange(searchStr);\n textareaRef.current?.focus();\n setSearchStr(\"\");\n }\n }, [searchStr, disabled, setSearchStr, handleChange]);\n\n useEffect(() => {\n computedAutoSize(expand ? [20, 20] : undefined);\n }, [value, expand, computedAutoSize]);\n\n useEffect(() => {\n const searchInputBox = searchInputBoxRef.current;\n if (searchInputBox) {\n const observe = new ResizeObserver(() => {\n const { width: currentWidth } = searchInputBox.getBoundingClientRect();\n const { width: parentWidth } =\n searchInputBox.parentElement!.parentElement!.getBoundingClientRect();\n\n setIsFillContent(currentWidth === parentWidth);\n });\n\n observe.observe(searchInputBox);\n\n return () => {\n observe.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n if (!chatting && textareaRef.current) {\n textareaRef.current?.focus();\n }\n }, [chatting]);\n\n return (\n <div\n className={classNames(\"search-input-box\", {\n \"fill-content\": isFillContent,\n })}\n ref={searchInputBoxRef}\n >\n <div\n className={classNames(\"input-box\", {\n active,\n disabled,\n expand,\n })}\n >\n <textarea\n value={value}\n ref={textareaRef}\n style={{\n ...autoSizeStyle,\n paddingRight: expand ? \"50px\" : \"140px\",\n }}\n placeholder={chatting ? \"回复中,请稍等...\" : \"提出你的想法...\"}\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n />\n <span className=\"suffix-icon\">\n <WrappedToolTip content=\"新增会话\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"plus-circle\"\n onClick={hanldeCreateSession}\n />\n </WrappedToolTip>\n {!expand && (\n <WrappedToolTip content=\"放大\">\n <WrappedIcon\n lib=\"antd\"\n icon=\"arrows-alt\"\n onClick={handleExpand}\n />\n </WrappedToolTip>\n )}\n <div className=\"submit-split\"></div>\n <WrappedToolTip content=\"提交\">\n <WrappedIcon\n className={classNames(\"submit-btn\", {\n active: hadValue,\n disabled: !hadValue || disabled,\n })}\n lib={chatting ? \"antd\" : \"easyops\"}\n icon={chatting ? \"loading\" : \"release-management-fill\"}\n category={chatting ? \"\" : \"menu\"}\n spinning={chatting}\n onClick={handleSubmit}\n />\n </WrappedToolTip>\n </span>\n <span className=\"toolbar-icon\">\n {expand && (\n <WrappedToolTip content=\"缩小\">\n <WrappedIcon lib=\"antd\" icon=\"shrink\" onClick={handleExpand} />\n </WrappedToolTip>\n )}\n </span>\n </div>\n {hadValue && (\n <div className=\"search-input-toolbar\">\n <div className=\"input-tip\">Shift + Enter 换行</div>\n </div>\n )}\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { useChatViewContext } from \"../ChatViewContext\";\nimport classNames from \"classnames\";\nimport { debounce } from \"lodash\";\nimport { SessionItem as SessionItemProps } from \"../ChatService\";\nimport { CommonLoading } from \"./Loading.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nconst showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst showDialog = unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nconst SESSION_ITEM_HEIGHT = 42;\nconst BUFFER_NUMBER = 5;\nconst CACHE_HEIGHT = 100;\n\nexport function SessionList(): React.ReactNode {\n const { sessionEnd, sessionLoading, sessionList, querySessionHistory } =\n useChatViewContext();\n const sessionWrapperRef = useRef<HTMLDivElement>(null);\n const sessionListRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n // 计算视图内可以展示多少条会话历史数据\n let limit = 20;\n const sessionWrapper = sessionWrapperRef.current;\n if (sessionWrapper) {\n // limit = 视图高度 % 单条高度 + 缓冲长度\n limit =\n Math.floor(sessionWrapper.clientHeight / SESSION_ITEM_HEIGHT) +\n BUFFER_NUMBER;\n }\n querySessionHistory(limit);\n }, []);\n\n const checkSessionList = useCallback(() => {\n if (sessionLoading || sessionEnd) return;\n const sessionList = sessionListRef.current;\n if (sessionList) {\n const { scrollTop, scrollHeight, clientHeight } = sessionList;\n // 如果滚动的高度 + 视图高度 + 缓冲高度 > 视图的滚动高度,请求新的数据\n if (scrollTop + clientHeight + CACHE_HEIGHT > scrollHeight) {\n querySessionHistory();\n }\n }\n }, [querySessionHistory, sessionLoading, sessionEnd]);\n\n const handleScroll = debounce(checkSessionList, 200);\n\n return (\n <div className=\"session-list-wrapper\" ref={sessionWrapperRef}>\n <div className=\"session-title\">历史对话</div>\n <div\n className=\"session-list\"\n ref={sessionListRef}\n onScroll={handleScroll}\n >\n {sessionList.map((item, index) => {\n return <SessionItem key={index} {...item} />;\n })}\n {sessionLoading && <CommonLoading />}\n {/* {sessionEnd && <div className=\"session-end-tip\">到底啦</div>} */}\n </div>\n </div>\n );\n}\n\nfunction SessionItem({ title, conversationId }: SessionItemProps) {\n const { activeSessionId, checkSession, deleteSession } = useChatViewContext();\n\n const handleCheckSession = useCallback(() => {\n checkSession(conversationId, true);\n }, [conversationId, checkSession]);\n\n const handleDeleteSession = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n showDialog({\n type: \"confirm\",\n title: \"会话删除确认\",\n content: `请输入 {{ expect }} 以确认删除`,\n expect: title.replace(/\\s+/g, \"\"),\n }).then(async () => {\n const result = await deleteSession([conversationId]);\n showNotification({\n message: `删除会话${result ? \"成功\" : \"失败\"}`,\n type: result ? \"success\" : \"error\",\n });\n });\n },\n [conversationId, deleteSession, title]\n );\n\n return (\n <div\n key={title}\n className={classNames(\"session-item\", {\n active: conversationId === activeSessionId,\n })}\n onClick={handleCheckSession}\n >\n <div className=\"content\">\n <div className=\"title\" title={title}>\n {title}\n </div>\n </div>\n\n <div className=\"session-close-btn\" onClick={handleDeleteSession}>\n <WrappedIcon icon=\"close\" lib=\"antd\" />\n </div>\n </div>\n );\n}\n","import { fetchEventSource } from \"@microsoft/fetch-event-source\";\nimport { http } from \"@next-core/http\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport moment from \"moment\";\n\nexport interface SSEMessageItem {\n conversationId?: string;\n created: number | string;\n delta: {\n content: string;\n role: string;\n };\n taskId?: string;\n agentId?: string;\n}\n\nexport interface QueueItem {\n topic: string;\n message?: SSEMessageItem;\n}\n\nexport interface SessionItem {\n conversationId: string;\n isDelete: boolean;\n time: number;\n title: string;\n user: string;\n _row_id: string;\n}\n\nexport interface ChatItem {\n agentId: string;\n conversationId: string;\n input: string;\n output: string;\n taskId: string;\n time: number;\n inputTime: number;\n user: string;\n _row_id: string;\n tag: {\n isLike?: boolean;\n };\n}\n\nexport class ChatService {\n #ctrl?: AbortController;\n #agentId: string;\n #enterInterval: number;\n #charting = false;\n #isStartEmitEvent = false;\n #emitTimer: NodeJS.Timeout | undefined;\n #messageQueue: Array<QueueItem> = [];\n #subscribers: Record<string, Array<(msg?: SSEMessageItem) => void>> = {};\n #conversationId?: string;\n\n // 会话\n #sessionNextToken?: string;\n #cacheLimit?: number;\n\n // 消息\n #messageNextToken?: string;\n\n constructor({\n agentId,\n enterInterval = 50,\n }: {\n agentId: string;\n enterInterval: number;\n }) {\n this.#agentId = agentId;\n this.#enterInterval = enterInterval;\n }\n\n enqueue(data: QueueItem) {\n this.#messageQueue.push(data);\n this.#startEmitEvent();\n }\n\n dequeue() {\n return this.#messageQueue.shift();\n }\n\n #clear() {\n this.#messageQueue.length = 0;\n }\n\n getMessageQueue() {\n return this.#messageQueue;\n }\n\n subscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (!this.#subscribers[topic]) {\n this.#subscribers[topic] = [];\n }\n this.#subscribers[topic].push(callback);\n }\n\n unsubscribe(topic: string, callback: (msg?: SSEMessageItem) => void) {\n if (this.#subscribers[topic]) {\n this.#subscribers[topic] = this.#subscribers[topic].filter(\n (cb) => cb !== callback\n );\n }\n }\n\n notifySubscribers(data: QueueItem) {\n const topic = data.topic;\n if (this.#subscribers[topic]) {\n this.#subscribers[topic].forEach((callback) => {\n callback(data?.message);\n });\n }\n }\n\n async setChatItemIsLike(id: string, isLike: boolean): Promise<boolean> {\n let flag: boolean = false;\n try {\n const { code } = await http.request<{ code: number }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.CommentDialogue/conversation/comment`,\n {\n method: \"POST\",\n body: JSON.stringify({\n taskId: id,\n isLike,\n }),\n }\n );\n if (code === 0) {\n flag = true;\n }\n } catch {\n flag = false;\n }\n return flag;\n }\n\n setConversationId(id?: string) {\n this.#conversationId = id;\n }\n\n async getSessionHistory(limit?: number): Promise<SessionItem[]> {\n if (limit) {\n this.#cacheLimit = limit;\n }\n try {\n const {\n data: { conversations, next_token },\n } = await http.request<{\n data: {\n conversations: SessionItem[];\n next_token: string;\n previous_token: string;\n };\n }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.ListConversation/conversation/list`,\n {\n method: \"POST\",\n body: JSON.stringify({\n limit: this.#cacheLimit ?? 20,\n next_token: this.#sessionNextToken,\n }),\n }\n );\n this.#sessionNextToken = next_token;\n if (!next_token) {\n this.notifySubscribers({ topic: \"session.fetch.end\" });\n }\n return conversations;\n } catch {\n // eslint-disable-next-line no-console\n console.error(\"获取会话历史失败\");\n }\n return [];\n }\n\n async getChatHistory(id?: string): Promise<ChatItem[]> {\n if (id) {\n this.setConversationId(id);\n this.#messageNextToken = \"\";\n }\n if (!this.#conversationId) return [];\n try {\n const {\n data: { conversations, next_token },\n } = await http.request<{\n data: {\n conversations: ChatItem[];\n next_token: string;\n previous_token: string;\n };\n }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.GetAllDialogue/conversation/get/${this.#conversationId}`,\n {\n method: \"POST\",\n body: JSON.stringify({\n limit: 15,\n next_token: this.#messageNextToken,\n }),\n }\n );\n this.#messageNextToken = next_token;\n if (!next_token) {\n this.notifySubscribers({ topic: \"message.fetch.end\" });\n }\n return conversations;\n } catch {\n // eslint-disable-next-line no-console\n console.error(\"获取消息历史失败\");\n }\n return [];\n }\n\n async deleteSession(id: string[]): Promise<boolean> {\n if (!id.length) return false;\n let flag: boolean = false;\n try {\n const { code } = await http.request<{ code: number }>(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.conversation.DeleteConversation/conversation/delete`,\n {\n method: \"POST\",\n body: JSON.stringify({\n conversationIds: id,\n }),\n }\n );\n if (code === 0) {\n flag = true;\n }\n } catch {\n flag = false;\n }\n return flag;\n }\n\n splitWord(str: string) {\n if (!str) return [];\n // 单词长度小于 5 直接返回, 否则做单词分割处理\n if (str?.length < 5) return [str];\n const list = [];\n\n if (window.Intl) {\n const segmenterFr = new Intl.Segmenter(\"zh-Hans-CN\", {\n granularity: \"word\",\n });\n const iterator = segmenterFr.segment(str)[Symbol.iterator]();\n\n let nextWord = iterator.next();\n while (!nextWord.done) {\n list.push(nextWord.value.segment);\n nextWord = iterator.next();\n }\n } else {\n const customSplit = {\n [Symbol.split](str: string) {\n let pos = 0;\n const result = [];\n let cache = \"\";\n while (pos < str.length) {\n const matchStr = str.substring(pos, pos + 1);\n // 如果是中文,单个输出\n if (/[\\u4e00-\\u9fa5]/.test(matchStr)) {\n result.push(cache + matchStr);\n cache = \"\";\n } else {\n // 否则,遇到空格或者标点符号再分词\n if (!/\\s|[,。;《》?!,.:<>?!]]/.test(matchStr)) {\n cache = cache + matchStr;\n } else {\n result.push(cache + matchStr);\n cache = \"\";\n }\n }\n pos++;\n }\n if (cache) result.push(cache);\n return result;\n },\n };\n\n str.split(customSplit).forEach((word) => {\n list.push(word);\n });\n }\n\n return list;\n }\n\n async chat(str: string): Promise<void> {\n this.#ctrl = new AbortController();\n let hadMatchMessage = false;\n this.#charting = true;\n await fetchEventSource(\n `${getBasePath()}api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions`,\n {\n method: \"POST\",\n signal: this.#ctrl.signal,\n body: JSON.stringify({\n agentId: this.#agentId,\n conversationId: this.#conversationId,\n input: str,\n stream: true,\n }),\n headers: {\n \"giraffe-contract-name\": \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n onopen: async (response) => {\n if (response.ok) {\n // eslint-disable-next-line no-console\n console.log(\"open sse service success!\");\n } else {\n // eslint-disable-next-line no-console\n console.log(\"open sse service fail!\");\n }\n },\n onmessage: (msg) => {\n const { data } = msg;\n hadMatchMessage = true;\n if (data === \"[DONE]\") {\n this.#ctrl!.abort();\n return;\n }\n let result = {} as SSEMessageItem;\n try {\n result = JSON.parse(data);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\"数据格式错误\", e);\n this.enqueue({\n topic: \"add\",\n message: {\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n delta: {\n role: \"assistant\",\n content: `\\`【数据格式错误】:\\` ${e}`,\n },\n },\n });\n return;\n }\n if (!this.#conversationId) {\n this.setConversationId(result.conversationId);\n }\n const wordList = this.splitWord(result.delta.content);\n wordList.forEach((word) => {\n this.enqueue({\n topic: \"add\",\n message: {\n ...result,\n delta: {\n role: \"assistant\",\n content: word,\n },\n },\n });\n });\n // if (result.delta.content.length) {\n // // 切割单词,模拟输入效果,推入队列\n // result.delta.content.split(\"\").forEach((word) => {\n // this.enqueue({\n // topic: \"add\",\n // message: {\n // ...result,\n // delta: {\n // role: \"assistant\",\n // content: word,\n // },\n // },\n // });\n // });\n // } else {\n // this.enqueue({\n // topic: \"add\",\n // message: result,\n // });\n // }\n // this.enqueue({\n // topic: \"add\",\n // message: result,\n // });\n },\n onclose: () => {\n // eslint-disable-next-line no-console\n console.log(\"close\");\n // 兜底逻辑,连接结束,并且没有数据返回\n if (!hadMatchMessage) {\n this.enqueue({\n topic: \"add\",\n message: {\n delta: {\n role: \"assistant\",\n content: \"`无法识别`\",\n },\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n });\n }\n this.#ctrl!.abort();\n },\n onerror: (err) => {\n // eslint-disable-next-line no-console\n console.log(\"err\", err);\n this.#ctrl!.abort();\n },\n }\n );\n\n this.#charting = false;\n }\n\n stop() {\n clearInterval(this.#emitTimer);\n this.#ctrl && this.#ctrl?.abort();\n this.#charting = false;\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.#clear();\n this.notifySubscribers({ topic: \"stop\" });\n }\n\n #startEmitEvent() {\n if (this.#isStartEmitEvent) return;\n this.#isStartEmitEvent = true;\n // 轮训队列,每隔 #enterInterval(默认 50ms) 推出第一条数据,获取到 text,推送给组件,组件接受后进行渲染\n // 直到聊天结束,并且消息队列数据为空时,停止 emit\n this.#emitTimer = setInterval(() => {\n if (this.#charting || this.getMessageQueue().length) {\n const messageItem = this.dequeue()!;\n messageItem && this.notifySubscribers(messageItem);\n } else {\n clearInterval(this.#emitTimer);\n this.#emitTimer = undefined;\n this.#isStartEmitEvent = false;\n this.notifySubscribers({ topic: \"finish\" });\n }\n }, this.#enterInterval);\n }\n}\n\n// export const chartService = new ChatService();\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { MessageItem } from \"../ChatViewContext.js\";\nimport moment from \"moment\";\nimport {\n ChatItem,\n ChatService,\n SessionItem,\n SSEMessageItem,\n} from \"../ChatService.js\";\n\nconst NEW_SESSION_ID = \"new_session_id\";\n\nexport function useChatViewInfo({\n agentId,\n enterInterval = 50,\n}: {\n agentId: string;\n enterInterval?: number;\n}) {\n const [sessionEnd, setSessionEnd] = useState<boolean>(false);\n const [sessionLoading, setSessionLoading] = useState<boolean>(false);\n const [activeSessionId, setActiveSessionId] = useState<string>();\n const [loading, setLoading] = useState<boolean>(false);\n const [chatting, setChatting] = useState<boolean>(false);\n const [sessionList, setSessionList] = useState<SessionItem[]>([]);\n\n const [msgLoading, setMsgLoading] = useState<boolean>(false);\n const [msgEnd, setMsgEnd] = useState<boolean>(false);\n const [msgList, setMsgList] = useState<MessageItem[]>([]);\n const [searchStr, setSearchStr] = useState<string>(\"\");\n const chatingText = useRef<string>(\"\");\n const chatingMessageItem = useRef<MessageItem>();\n const chatService = useMemo(\n () =>\n new ChatService({\n agentId,\n enterInterval,\n }),\n [agentId, enterInterval]\n );\n\n const defaultNewSessionItem = useMemo(\n () =>\n ({\n conversationId: NEW_SESSION_ID,\n title: \"新建会话\",\n }) as SessionItem,\n []\n );\n\n const stopChat = useCallback(() => {\n chatService.stop();\n }, [chatService]);\n\n const checkSession = useCallback(\n async (id?: string, isInit = false) => {\n if (isInit && id) {\n // 切换聊天,重制状态\n setMsgEnd(false);\n setMsgLoading(false);\n setLoading(true);\n setMsgList([]);\n setActiveSessionId(id);\n if (chatting) {\n stopChat();\n }\n } else {\n setMsgLoading(true);\n }\n // 如果是新建会话,不需要查询历史\n if (id === NEW_SESSION_ID) {\n // 重置会话id\n chatService.setConversationId();\n setMsgEnd(true);\n setLoading(false);\n return;\n }\n const list = await chatService.getChatHistory(id);\n const computedList = (list: ChatItem[]) => {\n const newList: MessageItem[] = [];\n list.forEach((item) => {\n newList.unshift(\n {\n taskId: item.taskId,\n role: \"user\",\n content: {\n type: \"text\",\n text: item.input,\n },\n key: `user_${item.taskId}`,\n created: item.time,\n },\n {\n agentId: item.agentId,\n taskId: item.taskId,\n role: \"assistant\",\n content: {\n type: \"markdown\",\n text: item.output,\n },\n key: `assistant_${item.taskId}`,\n created: item.inputTime,\n tag: item.tag,\n }\n );\n });\n return newList.filter((item) => item.content.text);\n };\n setMsgList((preList) => {\n return computedList(list).concat(preList);\n });\n setMsgLoading(false);\n setLoading(false);\n },\n [chatService, chatting, stopChat]\n );\n\n const deleteSession = useCallback(\n async (ids: string[]): Promise<boolean> => {\n // 需要过滤新建会话, 因为新建会话在本地,还没上报到远端\n const filterIds = ids.filter((item) => item !== NEW_SESSION_ID);\n const result = await chatService.deleteSession(filterIds);\n if (result) {\n let deleteActiveSession = false;\n if (\n activeSessionId &&\n filterIds.includes(activeSessionId) &&\n activeSessionId !== NEW_SESSION_ID\n ) {\n // 如果删除会话包含当前会话,需要重置状态\n deleteActiveSession = true;\n // 清除会话id\n chatService.setConversationId();\n\n setMsgEnd(false);\n setMsgLoading(false);\n setMsgList([]);\n\n if (chatting) {\n stopChat();\n }\n }\n\n setSessionList((list) => {\n const newList = list.filter(\n (item) => !filterIds.includes(item.conversationId!)\n );\n if (deleteActiveSession) {\n // 已经选中的当前会话被删除,新建会话\n const hasNewOne = list.find(\n (item) => item.conversationId === NEW_SESSION_ID\n );\n setLoading(false);\n\n setActiveSessionId(NEW_SESSION_ID);\n if (hasNewOne) {\n return newList;\n } else {\n return [defaultNewSessionItem].concat(newList);\n }\n }\n return newList;\n });\n }\n return result;\n },\n [activeSessionId, chatService, chatting, defaultNewSessionItem, stopChat]\n );\n\n const querySessionHistory = useCallback(\n async (limit?: number) => {\n setSessionLoading(true);\n const list = await chatService.getSessionHistory(limit);\n if (!activeSessionId) {\n // 如果没有 activeSessionId, 默认新增会话\n setActiveSessionId(NEW_SESSION_ID);\n } else {\n await checkSession(activeSessionId);\n }\n setSessionList((preList) => {\n return !activeSessionId\n ? [defaultNewSessionItem].concat([...preList, ...list])\n : preList.concat(list);\n });\n setSessionLoading(false);\n },\n [chatService, activeSessionId, defaultNewSessionItem, checkSession]\n );\n\n const handleChat = useCallback(\n async (str: string) => {\n if (activeSessionId === NEW_SESSION_ID) {\n // 如果当前会话属于新建会话,更新会话历史数据\n setSessionList((list) => {\n return list.map((item) => ({\n ...item,\n title: item.conversationId === NEW_SESSION_ID ? str : item.title,\n }));\n });\n }\n setChatting(true);\n chatService.chat(str);\n setMsgList((list) => {\n return list.concat([\n {\n role: \"user\",\n content: {\n type: \"text\",\n text: str,\n },\n created: moment().format(\"YYYY-MM-DD HH:mm:ss\"),\n },\n {\n role: \"assistant\",\n content: {\n type: \"load\",\n text: \"\",\n },\n chatting: true,\n created: \"Now\",\n },\n ]);\n });\n },\n [chatService, activeSessionId]\n );\n\n const createSession = useCallback(() => {\n chatService.setConversationId();\n setMsgList([]);\n setActiveSessionId(NEW_SESSION_ID);\n const hasNewOne = sessionList.find(\n (item) => item.conversationId === NEW_SESSION_ID\n );\n if (!hasNewOne) {\n setSessionList((preList) => {\n return [defaultNewSessionItem].concat(preList);\n });\n }\n }, [chatService, sessionList, defaultNewSessionItem]);\n\n const handleIsLike = useCallback(\n async (id: string, isLike: boolean): Promise<boolean> => {\n const result = await chatService.setChatItemIsLike(id, isLike);\n if (result) {\n setMsgList((list) => {\n return list.map((item) => ({\n ...item,\n tag:\n id === item.taskId\n ? {\n isLike,\n }\n : item.tag,\n }));\n });\n }\n return result;\n },\n [chatService]\n );\n\n useEffect(() => {\n // session listener\n const handleSessionEnd = () => {\n setSessionEnd(true);\n };\n chatService.subscribe(\"session.fetch.end\", handleSessionEnd);\n\n return () => {\n chatService.subscribe(\"session.fetch.end\", handleSessionEnd);\n };\n }, [chatService]);\n\n useEffect(() => {\n // chat listener\n const listener = (msgItem?: SSEMessageItem) => {\n if (!msgItem) return;\n chatingText.current = chatingText.current + msgItem.delta.content;\n if (activeSessionId === NEW_SESSION_ID && msgItem.conversationId) {\n // 如果当前会话属于新建会话,更新会话历史数据\n setSessionList((list) => {\n return list.map((item) => ({\n ...item,\n conversationId:\n item.conversationId === NEW_SESSION_ID\n ? msgItem.conversationId!\n : item.conversationId,\n }));\n });\n setActiveSessionId(msgItem.conversationId);\n }\n // eslint-disable-next-line no-console\n // console.log(chatingText.current);\n chatingMessageItem.current = {\n ...msgItem,\n role: \"assistant\",\n content: {\n type: \"markdown\",\n text: chatingText.current,\n },\n chatting: true,\n created: moment(msgItem?.created).format(\"YYYY-MM-DD HH:mm:ss\"),\n };\n setMsgList((list) => {\n list.pop();\n return list.concat(chatingMessageItem.current!);\n });\n };\n const reset = () => {\n chatingText.current = \"\";\n setChatting(false);\n chatingMessageItem.current = undefined;\n };\n const finishListener = () => {\n reset();\n };\n const fetchEndListener = () => {\n setMsgEnd(true);\n };\n const stopListener = () => {\n if (chatingMessageItem.current) {\n chatingMessageItem.current.content = {\n type: \"markdown\",\n text:\n chatingMessageItem.current.content.text + \" \\\\\\n ` 对话被中断了 `\",\n };\n setMsgList(msgList.concat(chatingMessageItem.current));\n }\n reset();\n };\n chatService.subscribe(\"add\", listener);\n chatService.subscribe(\"finish\", finishListener);\n chatService.subscribe(\"stop\", stopListener);\n chatService.subscribe(\"message.fetch.end\", fetchEndListener);\n return () => {\n chatService.unsubscribe(\"add\", listener);\n chatService.unsubscribe(\"finish\", finishListener);\n chatService.unsubscribe(\"stop\", stopListener);\n chatService.unsubscribe(\"message.fetch.end\", fetchEndListener);\n };\n }, [chatService, activeSessionId, msgList]);\n\n return {\n sessionEnd,\n sessionLoading,\n loading,\n chatting,\n activeSessionId,\n sessionList,\n searchStr,\n msgEnd,\n msgLoading,\n msgList,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n handleIsLike,\n };\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--message-box-bg:#f1f3f4;--search-input-icon-hover:#ddd;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.15)}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--message-box-bg:rgba(255,255,255,0.16);--search-input-icon-hover:#383838;--quick-answer-card-item-hover:0px 7px 8px 0px rgba(0,0,0,0.24)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.progress-text{position:relative;margin-left:12px;font-size:12px;color:var(--palette-gray-7);line-height:22px;min-height:22px}.progress-text::before{content:\"·\";font-size:16px;position:absolute;left:-10px;top:-4px}.instance-list-wrapper .instance-list-table-wrapper .result-tip{margin:12px 0 2px 12px;font-size:0.875em;color:rgb(94 129 172)}.instance-list-wrapper .instance-list-table-wrapper .empty-tip{margin-left:12px;font-size:12px;color:var(--palette-gray-7)}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper{position:relative;box-sizing:border-box;margin:0;padding:0;font-size:14px;clear:both;max-width:100%;overflow:hidden}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper .table-content{width:0;overflow:scroll}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper .table-content table{margin:0}.instance-list-wrapper .instance-list-table-wrapper .table-wrapper .table-content table tr td{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.instance-list-wrapper .error-tip{padding:12px 0;font-size:12px}.instance-list-wrapper .error-tip .params{margin-top:6px;border-radius:3px;padding:4px}.instance-list-wrapper .error-tip .params .params-tip{color:rgb(94 129 172)}.instance-list-wrapper .open-more{margin-top:4px;font-size:12px;display:flex;justify-content:end}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;font-variant-ligatures:none;font-feature-settings:\"liga\" 0,none}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.ProseMirror .tableWrapper{overflow-x:auto}.ProseMirror table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.ProseMirror td,\n.ProseMirror th{vertical-align:top;box-sizing:border-box;position:relative}.ProseMirror .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;z-index:20;background-color:#adf;pointer-events:none}.ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.ProseMirror .selectedCell:after{z-index:2;position:absolute;content:\"\";left:0;right:0;top:0;bottom:0;background:rgba(200,200,255,0.4);pointer-events:none}.milkdown-theme-nord blockquote{border-left-width:4px;--tw-border-opacity:1;border-color:rgb(94 129 172/var(--tw-border-opacity));padding-left:1rem;font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif;font-style:normal}.milkdown-theme-nord code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:400;--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord pre code{color:inherit}.milkdown-theme-nord img{margin-top:0!important;margin-bottom:0!important;display:inline-block;max-width:100%}.milkdown-theme-nord.prose\n :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:400}.milkdown-theme-nord.prose\n :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker,\n.milkdown-theme-nord.prose\n :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{--tw-text-opacity:1;color:rgb(94 129 172/var(--tw-text-opacity))}.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(blockquote p:first-of-type):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):before,\n.milkdown-theme-nord.prose\n :where(code):not(:where([class~=\"not-prose\"] *)):after{content:\"\"}.milkdown-theme-nord.prose .tableWrapper{position:relative;margin-bottom:0.5rem;overflow-x:auto}.milkdown-theme-nord.prose table{font-size:0.875rem;line-height:1.25rem;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width: 640px){.milkdown-theme-nord.prose table{border-radius:0.5rem}}.milkdown-theme-nord.prose td,\n.milkdown-theme-nord.prose th{padding:0.75rem 1.5rem!important}.milkdown-theme-nord.prose tr{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.dark .milkdown-theme-nord.prose tr{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}.milkdown-theme-nord.prose :where(td, th) p{margin:0!important}.milkdown-theme-nord.prose :where(td, th):nth-child(odd){background-color:var(--color-fill-bg-base-1)}.dark .milkdown-theme-nord.prose :where(td, th):nth-child(odd){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.milkdown-theme-nord.prose.ProseMirror .selectedCell:after{background-color:#88c0d04d}.milkdown-theme-nord.prose br[data-is-inline=\"true\"],\n.milkdown-theme-nord.prose br[data-is-inline=\"true\"]:after{content:\" \"}.prose{color:var(--color-normal-text)}.prose :where(p):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=\"lead\"]):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=\"not-prose\"] *)){color:var(--color-info);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600}.prose :where(a strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(ol):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=\"A\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"A\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-alpha}.prose :where(ol[type=\"a\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-alpha}.prose :where(ol[type=\"I\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"I\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:upper-roman}.prose :where(ol[type=\"i\" s]):not(:where([class~=\"not-prose\"] *)){list-style-type:lower-roman}.prose :where(ol[type=\"1\"]):not(:where([class~=\"not-prose\"] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=\"not-prose\"] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *))::marker{color:var(--tw-prose-bullets)}.prose :where(hr):not(:where([class~=\"not-prose\"] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=\"not-prose\"] *)){font-weight:500;font-style:italic;color:var(--color-auxiliary-text);border-left-width:0.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:\"\\\\201C\" \"\\\\201D\" \"\\\\2018\" \"\\\\2019\";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose\n :where(blockquote p:first-of-type):not(\n :where([class~=\"not-prose\"] *)\n )::before{content:open-quote}.prose\n :where(blockquote p:last-of-type):not(:where([class~=\"not-prose\"] *))::after{content:close-quote}.prose :where(h1):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:0.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=\"not-prose\"] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=\"not-prose\"] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:0.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;margin-top:1.5em;margin-bottom:0.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=\"not-prose\"] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure > *):not(:where([class~=\"not-prose\"] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-captions);font-size:0.875em;line-height:1.4285714;margin-top:0.8571429em}.prose :where(code):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-code);font-weight:600;font-size:0.875em}.prose :where(code):not(:where([class~=\"not-prose\"] *))::before{content:\"\\`\"}.prose :where(code):not(:where([class~=\"not-prose\"] *))::after{content:\"\\`\"}.prose :where(a code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h1 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(h2 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.875em}.prose :where(h3 code):not(:where([class~=\"not-prose\"] *)){color:inherit;font-size:0.9em}.prose :where(h4 code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(thead th code):not(:where([class~=\"not-prose\"] *)){color:inherit}.prose :where(pre):not(:where([class~=\"not-prose\"] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:0.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:0.375rem;padding-top:0.8571429em;padding-right:1.1428571em;padding-bottom:0.8571429em;padding-left:1.1428571em}.prose :where(pre code):not(:where([class~=\"not-prose\"] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::before{content:none}.prose :where(pre code):not(:where([class~=\"not-prose\"] *))::after{content:none}.prose :where(table):not(:where([class~=\"not-prose\"] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:0.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=\"not-prose\"] *)){color:var(--color-strong-text);font-weight:600;vertical-align:bottom;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose :where(tbody tr):not(:where([class~=\"not-prose\"] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=\"not-prose\"] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=\"not-prose\"] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=\"not-prose\"] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=\"not-prose\"] *)){vertical-align:top}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgb(0 0 0/50%);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(video):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure):not(:where([class~=\"not-prose\"] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=\"not-prose\"] *)){margin-top:0.5em;margin-bottom:0.5em}.prose :where(ol > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(ul > li):not(:where([class~=\"not-prose\"] *)){padding-left:0.375em}.prose :where(.prose > ul > li p):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose\n :where(.prose > ul > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ul > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose\n :where(.prose > ol > li > *:first-child):not(:where([class~=\"not-prose\"] *)){margin-top:1.25em}.prose\n :where(.prose > ol > li > *:last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:1.25em}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~=\"not-prose\"] *)){margin-top:0.75em;margin-bottom:0.75em}.prose :where(hr + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h2 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h3 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(h4 + *):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=\"not-prose\"] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=\"not-prose\"] *)){padding-right:0}.prose :where(tbody td, tfoot td):not(:where([class~=\"not-prose\"] *)){padding-top:0.5714286em;padding-right:0.5714286em;padding-bottom:0.5714286em;padding-left:0.5714286em}.prose\n :where(tbody td:first-child, tfoot td:first-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-left:0}.prose\n :where(tbody td:last-child, tfoot td:last-child):not(\n :where([class~=\"not-prose\"] *)\n ){padding-right:0}.prose :where(.prose > :first-child):not(:where([class~=\"not-prose\"] *)){margin-top:0}.prose :where(.prose > :last-child):not(:where([class~=\"not-prose\"] *)){margin-bottom:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.isolate{isolation:isolate}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.\\\\!table{display:table!important}.table{display:table}.inline-table{display:inline-table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row-group{display:table-row-group}.table-row{display:table-row}.flow-root{display:flow-root}.grid{display:grid}.inline-grid{display:inline-grid}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.flex-shrink{flex-shrink:1}.shrink{flex-shrink:1}.flex-grow{flex-grow:1}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.\\\\!transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.break-all{word-break:break-all}.rounded{border-radius:0.25rem}.border{border-width:1px}.text-justify{text-align:justify}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.lining-nums{--tw-numeric-figure:lining-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-feature-settings:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.underline{-webkit-text-decoration-line:underline;text-decoration-line:underline}.overline{-webkit-text-decoration-line:overline;text-decoration-line:overline}.line-through{-webkit-text-decoration-line:line-through;text-decoration-line:line-through}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia:sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-text-decoration-color,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.ease-in{transition-timing-function:cubic-bezier(0.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,0.2,1)}.milkdown{border-radius:0.25rem;margin:0;padding:0}.editor{margin-left:auto;margin-right:auto}:is(.dark .dark\\\\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}code[class*=\"language-\"],\npre[class*=\"language-\"]{color:#f8f8f2;background:none;font-family:\"Fira Code\",Consolas,Monaco,\"Andale Mono\",\"Ubuntu Mono\",monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}pre[class*=\"language-\"]{padding:1em;margin:0.5em 0;overflow:auto;border-radius:0.3em}:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"]{background:#2e3440}:not(pre) > code[class*=\"language-\"]{padding:0.1em;border-radius:0.3em;white-space:normal}.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:0.7}.token.property,\n.token.tag,\n.token.constant,\n.token.symbol,\n.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted{color:#a3be8c}.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string,\n.token.variable{color:#81a1c1}.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,\n.token.important{color:#ebcb8b}.token.important,\n.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.quick-answer-wrapper{margin-top:20px;border-radius:6px;border:1px solid var(--color-border-divider-line);padding:16px 24px}.quick-answer-wrapper .tip{font-size:18px;margin-bottom:30px}.quick-answer-wrapper .quick-answer-list{display:grid;grid-gap:24px 16px;gap:24px 16px;border-radius:3px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item{position:relative;padding:16px;border-radius:6px;cursor:pointer;display:flex;padding:10px 20px;gap:12px;width:auto;box-sizing:border-box}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item:hover{box-shadow:var(--quick-answer-card-item-hover)}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .left .icon{font-size:20px;color:#fff;padding:8px;border-radius:6px;margin-top:4px}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content{flex:1;min-width:0}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .title{font-size:16px;font-weight:bold;color:var(--color-normal-text);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.quick-answer-wrapper .quick-answer-list .quick-answer-card-item .content .description{color:var(--color-auxiliary-text);font-size:12px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.quick-answer-wrapper .show-more-wrapper{text-align:center;margin-top:20px}.quick-answer-wrapper .show-more-wrapper .show-more-btn{line-height:24px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after,\n .quick-answer-wrapper .show-more-wrapper .show-more-btn::before{content:\"- - - - -\";color:var(--color-text-divider-line);position:absolute}.quick-answer-wrapper .show-more-wrapper .show-more-btn::before{margin-left:-60px}.quick-answer-wrapper .show-more-wrapper .show-more-btn::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../assets/loading.gif\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.message-list-loading-wrapper{width:140px;height:140px;background-repeat:no-repeat;margin:auto;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.chart-item-loading-wrapper{display:flex;padding:10px;font-size:40px;align-items:center;justify-content:center;color:#d2d3d4;border-radius:6px}.chart-item-loading-wrapper .load{display:inline-block;position:relative;width:64px;height:64px}.chart-item-loading-wrapper .load div{position:absolute;top:27px;width:11px;height:11px;border-radius:50%;background:#aaa8a8;animation-timing-function:cubic-bezier(0,1,1,0)}.chart-item-loading-wrapper .load div:nth-child(1){left:6px;animation:load1 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(2){left:6px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(3){left:26px;animation:load2 0.6s infinite}.chart-item-loading-wrapper .load div:nth-child(4){left:45px;animation:load3 0.6s infinite}@keyframes load1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes load2{0%{transform:translate(0,0)}100%{transform:translate(19px,0)}}@keyframes load3{0%{transform:scale(1)}100%{transform:scale(0)}}.common-loading-wrapper{text-align:center;font-size:30px;color:#ddd}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./assets/user.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./assets/robot.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;height:100%}:host([hidden]){display:none}@media only screen and (min-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1556px}}@media only screen and (min-width: 1440px) and (max-width: 1920px){.chat-view-container .chat-view-content .chat-view{width:1156px}}@media only screen and (min-width: 804px) and (max-width: 1440px){.chat-view-container .chat-view-content .chat-view{width:804px}}@media only screen and (max-width: 804px){.chat-view-container .chat-view-content .chat-view{width:100%}}.chat-view-container{display:flex;flex-direction:row;width:100%;height:100%}.chat-view-selector{width:200px;padding:14px;border-right:1px solid var(--color-border-divider-line)}.chat-view-content{flex:1;display:flex;flex-direction:column;width:100%}.chat-view-content .chat-view-toolbar{background:#e0e4e5;padding:18px;display:flex;justify-content:space-between;align-items:center}.chat-view-content .chat-view-toolbar .username{color:#333333;font-weight:500;line-height:22px;font-size:16px}.chat-view-content .chat-view-toolbar .toolbar eo-icon{cursor:pointer}.chat-view-content .chat-view{max-width:100%;position:relative;display:flex;flex:1;flex-direction:column;box-sizing:border-box;overflow-y:auto;margin:0 auto}.session-list-wrapper{display:flex;flex-direction:column;height:100%}.session-list-wrapper .session-title{font-size:16px;color:var(--color-header-text);margin-bottom:16px}.session-list-wrapper .session-list{overflow-y:auto}.session-list-wrapper .session-list .session-item{display:flex;justify-content:space-between;cursor:pointer;border-radius:var(--small-border-radius);background-color:var(--third-menu-default-bg);padding:6px 16px;color:var(--color-header-text);margin-top:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item .content{width:0;flex:1}.session-list-wrapper .session-list .session-item .content .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-list-wrapper .session-list .session-item:hover .session-close-btn eo-icon{display:block}.session-list-wrapper .session-list .session-item:first-child{margin-top:0px}.session-list-wrapper .session-list .session-item.active{background-color:var(--third-menu-item-selected-bg);color:var(--color-brand)}.session-list-wrapper .session-list .session-item:hover,\n .session-list-wrapper .session-list .session-item.active:hover{color:var(--color-header-text);background-color:var(--third-menu-item-hover-bg)}.session-list-wrapper .session-list .session-item .session-close-btn{display:flex;align-items:center;cursor:pointer;font-size:12px}.session-list-wrapper .session-list .session-item .session-close-btn:hover{color:var(--color-error)}.session-list-wrapper .session-list .session-item .session-close-btn eo-icon{display:none}.message-list{display:flex;flex-direction:column;padding-bottom:30px;padding:12px;flex:1;overflow-y:scroll}.message-list .message-list-box{display:flex;flex-direction:column;position:relative;gap:36px}.message-list .message-list-box .message-item{display:flex;gap:8px;padding-right:40px}.message-list .message-list-box .message-item.user{flex-direction:row-reverse;padding:0;padding-left:40px}.message-list .message-list-box .message-item.user .message-box{margin-bottom:0}.message-list .message-list-box .message-item.user .message-box .message-top{flex-direction:row-reverse}.message-list .message-list-box .message-item.user .message-box .message-content{justify-content:end}.message-list .message-list-box .message-item.user .message-box .message-content .content{background-color:#606f7c;color:#fff}.message-list .message-list-box .message-item.user .message-box .message-content:hover .content-tip{display:block}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip{position:absolute;left:-22px;top:0px;display:none}.message-list .message-list-box .message-item.user .message-box .message-content .content-tip eo-icon{padding:4px;color:#606f7c;cursor:pointer}.message-list .message-list-box .message-item .avatar{width:36px;height:36px;margin-top:32px}.message-list .message-list-box .message-item .avatar.user{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___})}.message-list .message-list-box .message-item .avatar.robot{background-image:url(${___CSS_LOADER_URL_REPLACEMENT_1___})}.message-list .message-list-box .message-item .message-box{position:relative;flex:1}.message-list .message-list-box .message-item .message-box .message-content{display:flex;justify-content:start;position:relative}.message-list .message-list-box .message-item .message-box .message-content .content{position:relative;padding:14px;border-radius:6px;background:var(--message-box-bg)}.message-list .message-list-box .message-item .message-box .message-content .content .text-item{white-space:pre-wrap}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar{position:absolute;bottom:-24px;right:0;display:flex;gap:12px;align-items:center}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon{cursor:pointer;color:#606f7c}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar eo-icon.active{color:var(--color-brand)}.message-list .message-list-box .message-item .message-box .message-content .content .toolbar .split{width:1px;height:16px;background-color:#d9d9d9;margin-bottom:1px}.message-list .message-list-box .message-item .message-box .message-top{display:flex;margin-bottom:4px;color:#bec8ce;gap:8px}.message-list .message-list-box .message-item .message-box .message-top .time{min-height:22px}.message-list .message-list-box .stop-responding-wrapper{position:absolute;left:44px;bottom:-28px}.search-input-box{display:flex;flex-direction:column;height:50px;padding:12px;position:relative}.search-input-box.fill-content{box-shadow:1px 0px 4px 0px rgba(197,197,197,0.5)}.search-input-box .input-box{position:absolute;bottom:20px;left:12px;right:12px;display:inline-flex;padding:var(--input-affix-wrapper-padding);border-radius:var(--small-border-radius);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;color:var(--text-color-default);background-color:var(--antd-input-bg);border:1px solid var(--color-border-divider-line);transition:border-color 0.3s;overflow:visible}.search-input-box .input-box.active{border-color:var(--antd-input-focus-border-color)}.search-input-box .input-box.disabled{pointer-events:none;background:var(--input-outline-disabled);cursor:not-allowed}.search-input-box .input-box.expand textarea{padding-right:50px;margin-bottom:50px}.search-input-box .input-box textarea{width:100%;height:22px;font-size:18px;resize:none;padding:10px 50px 10px 10px;outline:none;border:none;line-height:20px;color:var(--color-normal-text);background-color:transparent;cursor:inherit;transition:all 300ms ease-out}.search-input-box .input-box textarea::placeholder{color:#b0b1b8}.search-input-box .input-box .suffix-icon{display:flex;align-items:center;gap:8px;position:absolute;right:12px;bottom:6px}.search-input-box .input-box .suffix-icon eo-tooltip{display:flex}.search-input-box .input-box .suffix-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .suffix-icon eo-icon:not(.disabled):hover{background:var(--search-input-icon-hover)}.search-input-box .input-box .suffix-icon .submit-split{width:1px;height:20px;background:#d1d1d1}.search-input-box .input-box .suffix-icon .submit-btn.active{color:var(--color-brand)}.search-input-box .input-box .suffix-icon .submit-btn.disabled{color:var(--color-disabled-text);cursor:not-allowed}.search-input-box .input-box .toolbar-icon{position:absolute;top:12px;right:14px}.search-input-box .input-box .toolbar-icon eo-icon{font-size:20px;cursor:pointer;padding:6px;border-radius:3px}.search-input-box .input-box .toolbar-icon eo-icon:hover{background:var(--search-input-icon-hover)}.search-input-box .search-input-toolbar{display:flex;justify-content:end;position:absolute;right:12px;bottom:0px}.search-input-box .search-input-toolbar .input-tip{font-size:12px;color:var(--color-secondary-text)}.message-start-tip,\n.session-end-tip{color:var(--color-disabled-text);font-size:12px;text-align:center;margin-top:12px;position:relative}.message-start-tip::after,\n .session-end-tip::after,\n .message-start-tip::before,\n .session-end-tip::before{content:\"- - -\";color:var(--color-disabled-text);position:absolute}.message-start-tip::before, .session-end-tip::before{margin-left:-35px}.message-start-tip::after, .session-end-tip::after{margin-left:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n"],"names":["ChatViewContext","createContext","useChatViewContext","useContext","WrappedIcon","wrapBrick","MessageListLoading","React","className","ChatItemLoading","CommonLoading","icon","lib","spinning","Avatar","_ref","role","isUser","useMemo","concat","WrappedLink","GuideItem","text","prompts","map","item","index","key","TableComponent","columns","dataSource","tableContentRef","useRef","getColGroup","_","style","width","minWidth","useLayoutEffect","tableContent","current","parentElement","getBoundingClientRect","length","ref","title","column","tdIndex","value","content","JSON","stringify","Array","isArray","firstKey","resKey","slice","join","cmdbInstanceShowName","MsgItemContext","InstanceList","chatting","isLoading","setIsLoading","useState","isFetching","setIsFetching","isEnd","setIsEnd","isError","setIsError","objectId","setObjectId","tableColumn","setTableColumn","tableData","setTableData","showMore","setShowMore","fetchInstanceList","useCallback","_ref2","_asyncToGenerator","params","_request$list","_request$list2","request","InstanceApi_postSearchV3","_objectSpread","page","page_size","list","data","matchItem","_Object$keys","Object","keys","forEach","push","dataIndex","_unused","_x","_x2","apply","arguments","useEffect","parse","_unused2","match","onClick","handleClickShowMoreBtn","isShow","href","getBasePath","target","ProgressText","renderText","replace","CodeBlock","language","setLanguage","contentRef","node","useNodeViewContext","defaultContent","spellCheck","renderContent","_node$firstChild","_node$firstChild2","_node$firstChild3","firstChild","textContent","attrs","MarkdownItem","MilkdownProvider","ProsemirrorAdapterProvider","MarkdownDisplay","nodeViewFactory","useNodeViewFactory","get","useEditor","root","Editor","make","config","ctx","set","rootCtx","update","editorViewOptionsCtx","prev","editable","defaultValueCtx","nord","use","prism","gfm","commonmark","$view","codeBlockSchema","component","_get","undefined","action","replaceAll","Milkdown","TableItem","TextItem","WrapperIcon","WrappedToolTip","copyToClipboard","unwrapProvider","showNotification","Toolbar","taskId","tag","isAssistant","type","isChattingItem","showLike","readonly","handleIsLike","handleLikeOrIsLike","islike","result","message","classNames","active","isLike","handleCopy","then","catch","Time","time","moment","format","ContentTip","setSearchStr","NOT_AGENT_MATCH","MessageNode","props","created","agentId","getContentNode","examplePrompts","messageNode","Provider","CARD_ITEM_HEIGHT","HEIGHT_GAP","QuickAnswerCardItem","name","description","starterPrompts","iconColor","_icon$color","color","height","background","handleCardClick","_extends","category","QuickAnswerList","_quickAnswerConfig$ti","quickAnswerConfig","msgList","loading","showMoreBtn","setShowMoreBtn","listRef","hadClickShowMoreBtn","element","observer","ResizeObserver","entries","entry","contentRect","observe","disconnect","tip","maxHeight","overflow","instanceId","handleShowMoreClick","StopBtn","stopChat","handleStopChat","DEFAULT_OFFSET_HEIGHT","CACHE_HEIGHT","MessageList","showAvatar","messageListRef","messgetListBoxRef","preHeight","setPreHeight","isCustomScroll","msgLoading","msgEnd","activeSessionId","checkSession","getMsgItemNode","user","msgListNode","handleScroll","messageList","scrollHeight","clientHeight","scrollTop","isBottom","debounceHandleScroll","debounce","newHeight","scroll","top","Number","MAX_SAFE_INTEGER","Math","max","onScroll","hiddenTextarea","HIDDEN_TEXTAREA_STYLE","SIZING_STYLE","SearchInput","setValue","setActive","expand","setExpand","autoSizeStyle","setAutoSizeStyle","isFillContent","setIsFillContent","searchInputBoxRef","textareaRef","hadExpanded","inputEndRef","searchStr","createSession","handleChat","hadValue","defaultSize","disabled","computedAutoSize","size","textareaElement","textareaStyles","uiTextNode","minRows","maxRows","document","createElement","setAttribute","body","appendChild","uiTextNodeStyle","window","getComputedStyle","sizingStyle","getPropertyValue","placeholder","minHeight","singleRowHeight","min","overflowY","resize","calculateAutoSizeStyle","handleChange","e","handleExpand","handleSubmit","blur","handleKeyDown","shiftKey","preventDefault","_textareaRef$current","focus","searchInputBox","currentWidth","parentWidth","_textareaRef$current2","paddingRight","onFocus","onBlur","onChange","onKeyDown","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","hanldeCreateSession","showDialog","SESSION_ITEM_HEIGHT","BUFFER_NUMBER","SessionList","sessionEnd","sessionLoading","sessionList","querySessionHistory","sessionWrapperRef","sessionListRef","limit","sessionWrapper","floor","checkSessionList","SessionItem","conversationId","deleteSession","handleCheckSession","handleDeleteSession","stopPropagation","expect","_ctrl","WeakMap","_agentId","_enterInterval","_charting","_isStartEmitEvent","_emitTimer","_messageQueue","_subscribers","_conversationId","_sessionNextToken","_cacheLimit","_messageNextToken","_ChatService_brand","WeakSet","ChatService","constructor","enterInterval","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_classPrivateFieldSet","this","enqueue","_classPrivateFieldGet","_assertClassBrand","_startEmitEvent","call","dequeue","shift","getMessageQueue","subscribe","topic","callback","unsubscribe","filter","cb","notifySubscribers","setChatItemIsLike","id","flag","code","http","method","setConversationId","getSessionHistory","_this","_classPrivateFieldGet2","conversations","next_token","console","error","getChatHistory","_this2","_unused3","conversationIds","_unused4","splitWord","str","Intl","iterator","Segmenter","granularity","segment","Symbol","nextWord","next","done","customSplit","split","pos","cache","matchStr","substring","test","word","chat","_this3","AbortController","hadMatchMessage","fetchEventSource","signal","input","stream","headers","onopen","response","ok","log","onmessage","msg","delta","abort","onclose","onerror","err","stop","_classPrivateFieldGet3","clearInterval","_clear","setInterval","messageItem","NEW_SESSION_ID","useChatViewInfo","setSessionEnd","setSessionLoading","setActiveSessionId","setLoading","setChatting","setSessionList","setMsgLoading","setMsgEnd","setMsgList","chatingText","chatingMessageItem","chatService","defaultNewSessionItem","preList","newList","unshift","output","inputTime","computedList","_ref3","ids","filterIds","deleteActiveSession","includes","hasNewOne","find","_ref4","_x3","_ref5","_x4","_ref6","_x5","_x6","handleSessionEnd","listener","msgItem","pop","reset","finishListener","fetchEndListener","stopListener","___CSS_LOADER_EXPORT___","module","toString","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_REPLACEMENT_1___","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals"],"sourceRoot":""}