@next-bricks/ai 1.23.19 → 1.23.21
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 +1 -1
- package/dist/chunks/1889.36116d87.js +2 -0
- package/dist/chunks/1889.36116d87.js.map +1 -0
- package/dist/chunks/1922.e5be763d.js +2 -0
- package/dist/chunks/1922.e5be763d.js.map +1 -0
- package/dist/chunks/{3533.159153f5.js → 3533.df590d60.js} +3 -3
- package/dist/chunks/3533.df590d60.js.map +1 -0
- package/dist/chunks/{4145.b622fc58.js → 4145.61b2afdc.js} +2 -2
- package/dist/chunks/{4145.b622fc58.js.map → 4145.61b2afdc.js.map} +1 -1
- package/dist/chunks/4437.2f868ad4.js +3 -0
- package/dist/chunks/{3738.3913be8a.js.LICENSE.txt → 4437.2f868ad4.js.LICENSE.txt} +2 -0
- package/dist/chunks/4437.2f868ad4.js.map +1 -0
- package/dist/chunks/{4837.2738fc00.js → 4837.d6d6ce1c.js} +2 -2
- package/dist/chunks/{4837.2738fc00.js.map → 4837.d6d6ce1c.js.map} +1 -1
- package/dist/chunks/{7218.0d2ec63e.js → 7218.f7ec9fd4.js} +2 -2
- package/dist/chunks/{7218.0d2ec63e.js.map → 7218.f7ec9fd4.js.map} +1 -1
- package/dist/chunks/7304.5921f13b.js +2 -0
- package/dist/chunks/7304.5921f13b.js.map +1 -0
- package/dist/chunks/{chat-agent.ac3f5d47.js → chat-agent.7d5d3be2.js} +2 -2
- package/dist/chunks/{chat-agent.ac3f5d47.js.map → chat-agent.7d5d3be2.js.map} +1 -1
- package/dist/chunks/{chat-view.adb6efe7.js → chat-view.6e7eedfe.js} +2 -2
- package/dist/chunks/{chat-view.adb6efe7.js.map → chat-view.6e7eedfe.js.map} +1 -1
- package/dist/chunks/main.757bf03a.js +2 -0
- package/dist/chunks/{main.5c27fda4.js.map → main.757bf03a.js.map} +1 -1
- package/dist/index.0a19f051.js +2 -0
- package/dist/{index.8ab94901.js.map → index.0a19f051.js.map} +1 -1
- package/package.json +2 -2
- package/dist/chunks/1889.13958cc1.js +0 -2
- package/dist/chunks/1889.13958cc1.js.map +0 -1
- package/dist/chunks/2605.739bae4e.js +0 -2
- package/dist/chunks/2605.739bae4e.js.map +0 -1
- package/dist/chunks/3533.159153f5.js.map +0 -1
- package/dist/chunks/3738.3913be8a.js +0 -3
- package/dist/chunks/3738.3913be8a.js.map +0 -1
- package/dist/chunks/7304.b72de53e.js +0 -2
- package/dist/chunks/7304.b72de53e.js.map +0 -1
- package/dist/chunks/main.5c27fda4.js +0 -2
- package/dist/index.8ab94901.js +0 -2
- /package/dist/chunks/{3533.159153f5.js.LICENSE.txt → 3533.df590d60.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[4145],{4145:(e,t,s)=>{s.r(t);var n,a=s(4635),i=s(918),r=s(6902),o=s(5536),h=s(6121),c=s(829),l=s(2740),u=s(8769),d=s.n(u),g=s(4782),A=s(1389),p=s(15),w=s(24),k=s(2442),v=s(3830),m=s(205);let I,y,f,S,L,M,b,C,W,E,B,R,q,T,x,N,_,P,Q,F,U,D,H,O,$,J,Z,j,z,G,K,V,X,Y,ee,te,se,ne,ae,ie;s(9583),s(2896),s(3262);const{defineElement:re,property:oe,method:he,event:ce}=(0,g.createDecorators)();function le(e,t){let{agentId:s,robotId:n,sessionId:a,showAvatar:i,showSessionList:r=!0,readonly:o=!1,showLike:h=!0,showShare:c=!0,quickAnswerConfig:l,snippetList:g,enterInterval:A,debug:I=!1,commandBricks:y,answerLanguage:f,inputToolbarBrick:S,onSessionIdChange:L,onQaFinish:M}=e;const{sessionEnd:b,sessionLoading:C,activeSessionId:W,msgEnd:E,msgLoading:B,msgList:R,sessionList:q,loading:T,chatting:x,searchStr:N,setAgent:_,handleIsLike:P,handleChat:Q,stopChat:F,createSession:U,deleteSession:D,updateSession:H,checkSession:O,setSearchStr:$,querySessionHistory:J}=(0,k.Fn)({agentId:s,robotId:n,sessionId:a,enterInterval:A,debug:I,answerLanguage:f});return(0,u.useEffect)((()=>{W&&L(W)}),[W]),(0,u.useEffect)((()=>{!x&&W&&M(W)}),[x]),d().createElement(p.t.Provider,{value:{sessionEnd:b,sessionLoading:C,activeSessionId:W,sessionList:q,msgEnd:E,msgLoading:B,msgList:R,chatting:x,loading:T,searchStr:N,showLike:h,showShare:c,readonly:o,quickAnswerConfig:l,snippetList:g,commandBricks:y,setAgent:_,handleIsLike:P,handleChat:Q,stopChat:F,createSession:U,deleteSession:D,updateSession:H,checkSession:O,setSearchStr:$,querySessionHistory:J}},d().createElement("div",{className:"chat-view-container"},r&&d().createElement("div",{className:"chat-view-selector"},d().createElement(v.Z,null)),d().createElement("div",{className:"chat-view-content"},d().createElement(w.M,{showAvatar:i}),!o&&d().createElement(m.D,{inputToolbarBrick:S,ref:t}))))}const ue=(0,u.forwardRef)(le);let de;var ge=new WeakMap,Ae=new WeakMap,pe=new WeakMap,we=new WeakMap,ke=new WeakMap,ve=new WeakMap,me=new WeakMap,Ie=new WeakMap,ye=new WeakMap,fe=new WeakMap,Se=new WeakMap,Le=new WeakMap,Me=new WeakMap,be=new WeakMap,Ce=new WeakMap,We=new WeakMap,Ee=new WeakMap,Be=new WeakSet,Re=new WeakMap,qe=new WeakMap,Te=new WeakMap;class xe extends A.ReactNextElement{constructor(){super(...arguments),(0,a.A)(this,Be),(0,i.A)(this,ge,(I(this),f(this))),(0,i.A)(this,Ae,(S(this),L(this))),(0,i.A)(this,pe,(M(this),b(this))),(0,i.A)(this,we,(C(this),W(this))),(0,i.A)(this,ke,(E(this),B(this))),(0,i.A)(this,ve,(R(this),q(this))),(0,i.A)(this,me,(T(this),x(this))),(0,i.A)(this,Ie,(N(this),_(this))),(0,i.A)(this,ye,(P(this),Q(this))),(0,i.A)(this,fe,(F(this),U(this))),(0,i.A)(this,Se,(D(this),H(this))),(0,i.A)(this,Le,(O(this),$(this))),(0,i.A)(this,Me,(J(this),Z(this))),(0,i.A)(this,be,(j(this),z(this))),(0,i.A)(this,Ce,(G(this),K(this))),(0,i.A)(this,We,(V(this),d().createRef())),(0,i.A)(this,Ee,X(this)),(0,i.A)(this,Re,(te(this),e=>{(0,o.A)(Be,this,Y).emit(e)})),(0,i.A)(this,qe,se(this)),(0,i.A)(this,Te,(ie(this),e=>{(0,o.A)(Be,this,ne).emit(e)}))}get sessionId(){return(0,c.A)(ge,this)}set sessionId(e){(0,h.A)(ge,this,e)}get agentId(){return(0,c.A)(Ae,this)}set agentId(e){(0,h.A)(Ae,this,e)}get robotId(){return(0,c.A)(pe,this)}set robotId(e){(0,h.A)(pe,this,e)}get answerLanguage(){return(0,c.A)(we,this)}set answerLanguage(e){(0,h.A)(we,this,e)}get debug(){return(0,c.A)(ke,this)}set debug(e){(0,h.A)(ke,this,e)}get showAvatar(){return(0,c.A)(ve,this)}set showAvatar(e){(0,h.A)(ve,this,e)}get showSessionList(){return(0,c.A)(me,this)}set showSessionList(e){(0,h.A)(me,this,e)}get readonly(){return(0,c.A)(Ie,this)}set readonly(e){(0,h.A)(Ie,this,e)}get showLike(){return(0,c.A)(ye,this)}set showLike(e){(0,h.A)(ye,this,e)}get showShare(){return(0,c.A)(fe,this)}set showShare(e){(0,h.A)(fe,this,e)}get enterInterval(){return(0,c.A)(Se,this)}set enterInterval(e){(0,h.A)(Se,this,e)}get quickAnswerConfig(){return(0,c.A)(Le,this)}set quickAnswerConfig(e){(0,h.A)(Le,this,e)}get snippetList(){return(0,c.A)(Me,this)}set snippetList(e){(0,h.A)(Me,this,e)}get commandBricks(){return(0,c.A)(be,this)}set commandBricks(e){(0,h.A)(be,this,e)}get inputToolbarBrick(){return(0,c.A)(Ce,this)}set inputToolbarBrick(e){(0,h.A)(Ce,this,e)}insertQuestion(e){var t;const{value:s}=e;s&&(null===(t=(0,c.A)(We,this).current)||void 0===t||t.handleInsertQuestion(s))}sendMsg(e){var t;null===(t=(0,c.A)(We,this).current)||void 0===t||t.sendMsg(e)}render(){return d().createElement(ue,{agentId:this.agentId,robotId:this.robotId,debug:this.debug,sessionId:this.sessionId,readonly:this.readonly,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,showShare:this.showShare,quickAnswerConfig:this.quickAnswerConfig,snippetList:this.snippetList,enterInterval:this.enterInterval,commandBricks:this.commandBricks,answerLanguage:this.answerLanguage,inputToolbarBrick:this.inputToolbarBrick,onSessionIdChange:(0,c.A)(Re,this),onQaFinish:(0,c.A)(Te,this),ref:(0,c.A)(We,this)})}}n=xe,({e:[f,S,L,M,b,C,W,E,B,R,q,T,x,N,_,P,Q,F,U,D,H,O,$,J,Z,j,z,G,K,V,X,Y,ee,te,se,ne,ae,ie,I],c:[de,y]}=(0,l.A)(n,[re("ai.chat-view",{shadowOptions:!1})],[[oe(),1,"sessionId"],[oe(),1,"agentId"],[oe(),1,"robotId"],[oe(),1,"answerLanguage"],[oe({type:Boolean}),1,"debug"],[oe({type:Boolean}),1,"showAvatar"],[oe({type:Boolean}),1,"showSessionList"],[oe({type:Boolean}),1,"readonly"],[oe({type:Boolean}),1,"showLike"],[oe({type:Boolean}),1,"showShare"],[oe({type:Number}),1,"enterInterval"],[oe({attribute:!1}),1,"quickAnswerConfig"],[oe({attribute:!1}),1,"snippetList"],[oe({attribute:!1}),1,"commandBricks"],[oe({attribute:!1}),1,"inputToolbarBrick"],[ce({type:"sessionId.change"}),1,"sessionIdChange",e=>(0,c.A)(Ee,e),(e,t)=>(0,h.A)(Ee,e,t)],[ce({type:"qa.finish"}),1,"qaFinish",e=>(0,c.A)(qe,e),(e,t)=>(0,h.A)(qe,e,t)],[he(),2,"insertQuestion"],[he(),2,"sendMsg"]],0,(e=>Te.has((0,r.A)(e))),A.ReactNextElement)),y();var Ne,_e=s(1094),Pe=s(3518),Qe=s(356);let Fe,Ue,De,He,Oe,$e,Je,Ze,je,ze,Ge,Ke,Ve,Xe,Ye,et,tt,st;const{defineElement:nt,property:at,event:it,method:rt}=(0,g.createDecorators)(),ot=(0,u.forwardRef)(It);let ht;var ct=new WeakMap,lt=new WeakMap,ut=new WeakMap,dt=new WeakSet,gt=new WeakMap,At=new WeakMap,pt=new WeakMap,wt=new WeakMap,kt=new WeakMap,vt=new WeakMap;class mt extends A.ReactNextElement{constructor(){super(...arguments),(0,a.A)(this,dt),(0,i.A)(this,ct,(Fe(this),De(this))),(0,i.A)(this,lt,(He(this),Oe(this))),(0,i.A)(this,ut,($e(this),Je(this))),(0,i.A)(this,gt,(ze(this),e=>{(0,o.A)(dt,this,Ze).emit(e)})),(0,i.A)(this,At,Ge(this)),(0,i.A)(this,pt,(Xe(this),e=>{(0,o.A)(dt,this,Ke).emit(e)})),(0,i.A)(this,wt,Ye(this)),(0,i.A)(this,kt,(st(this),e=>{(0,o.A)(dt,this,et).emit(e)})),(0,i.A)(this,vt,(0,u.createRef)())}get agentId(){return(0,c.A)(ct,this)}set agentId(e){(0,h.A)(ct,this,e)}get conversationId(){return(0,c.A)(lt,this)}set conversationId(e){(0,h.A)(lt,this,e)}postMessage(e){var t;return null===(t=(0,c.A)(vt,this).current)||void 0===t?void 0:t.postMessage(e)}sendRequest(e,t,s){var n;return null===(n=(0,c.A)(vt,this).current)||void 0===n?void 0:n.sendRequest(e,t,s)}newConversation(){var e;null===(e=(0,c.A)(vt,this).current)||void 0===e||e.newConversation()}render(){return d().createElement(ot,{ref:(0,c.A)(vt,this),agentId:this.agentId,conversationId:this.conversationId,onMessagesUpdate:(0,c.A)(gt,this),onBusyChange:(0,c.A)(pt,this),onConversationIdChange:(0,c.A)(kt,this)})}}function It(e,t){let{agentId:s,conversationId:n,onMessageChunkPush:a,onMessagesUpdate:i,onBusyChange:r,onConversationIdChange:o}=e;const h=(0,u.useRef)(!1),c=(0,u.useRef)(1),l=(0,u.useRef)(!1),[d,g]=(0,u.useState)(null);(0,u.useEffect)((()=>{g(n??null)}),[n]),(0,u.useEffect)((()=>{h.current&&(null==o||o(d))}),[d,o]);const A=(0,u.useRef)(0),p=(0,u.useCallback)((()=>A.current++),[]),[w,k]=(0,u.useState)([]),v=(0,u.useCallback)((e=>{null==a||a(e),k((t=>{const s=t[t.length-1];return s&&s.key===e.key?(s.content+=e.delta.content,[...t]):(null!=s&&s.partial&&(s.partial=!1),[...t,{...e.delta,key:e.key,partial:e.partial}])}))}),[a]),m=(0,u.useCallback)((async(e,t,s)=>{if(l.current)return null;const n=c.current;let a;const i=async()=>{if(n!==c.current)throw a||(a=new Error("New conversation started")),a},o=p(),h=p();let u=d;null==r||r(l.current=!0);try{null==v||v({key:o,delta:{content:e,role:"user"}});const n=(0,Pe.createSSEStream)(new URL(t,`${location.origin}${(0,_e.getBasePath)()}`).toString(),s);await Promise.race([n,new Promise((e=>setTimeout(e,1e3)))]),await i(),null==v||v({key:h,delta:{content:"",role:"assistant"},partial:!0});const a=await n;for await(const e of a)await i(),null==v||v({delta:e.delta,key:h,partial:!0}),e.conversationId&&!u&&g(u=e.conversationId);await i(),k((e=>{const t=e[e.length-1];return null!=t&&t.partial&&(t.partial=!1),[...e]}))}catch(e){if(e&&e===a)throw e;console.error("stream failed:",e),await i(),k((e=>{const t=e[e.length-1];let s=e;return(null==t?void 0:t.key)===h&&(t.content?(t.partial=!1,t.failed=!0):s=e.slice(0,-1)),[...s,{role:"assistant",content:"系统错误",key:p(),failed:!0}]}))}return await i(),null==r||r(l.current=!1),u}),[d,p,r,v]);return(0,u.useImperativeHandle)(t,(()=>({sendRequest:m,postMessage:e=>m(e,"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions",{method:"POST",body:JSON.stringify({agentId:s,input:e,stream:!0,conversationId:d}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"}}),newConversation(){c.current++,g(null),k((e=>0===e.length?e:[])),l.current&&(null==r||r(l.current=!1))}})),[s,d,r,m]),(0,u.useEffect)((()=>{h.current&&(null==i||i(w))}),[w,i]),(0,u.useEffect)((()=>{h.current=!0}),[]),null}Ne=mt,({e:[De,He,Oe,$e,Je,Ze,je,ze,Ge,Ke,Ve,Xe,Ye,et,tt,st,Fe],c:[ht,Ue]}=(0,l.A)(Ne,[nt("ai.chat-agent",{styleTexts:[Qe.A]})],[[at(),1,"agentId"],[at(),1,"conversationId"],[rt(),2,"postMessage"],[rt(),2,"sendRequest"],[rt(),2,"newConversation"],[it({type:"messages.update"}),1,"messagesUpdate",e=>(0,c.A)(ut,e),(e,t)=>(0,h.A)(ut,e,t)],[it({type:"busy.change"}),1,"busyChangeEvent",e=>(0,c.A)(At,e),(e,t)=>(0,h.A)(At,e,t)],[it({type:"conversationId.change"}),1,"conversationIdChangeEvent",e=>(0,c.A)(wt,e),(e,t)=>(0,h.A)(wt,e,t)]],0,(e=>vt.has((0,r.A)(e))),A.ReactNextElement)),Ue()},356:(e,t,s)=>{s.d(t,{A:()=>o});var n=s(6758),a=s.n(n),i=s(935),r=s.n(i)()(a());r.push([e.id,":host{display:none}",""]);const o=r.toString()}}]);
|
|
2
|
-
//# sourceMappingURL=4145.
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[4145],{4145:(e,t,s)=>{s.r(t);var n,a=s(4635),i=s(918),r=s(6902),o=s(5536),h=s(6121),c=s(829),l=s(2740),u=s(8769),d=s.n(u),g=s(4782),A=s(1389),p=s(15),w=s(24),k=s(2442),v=s(3830),m=s(205);let I,y,f,S,L,M,b,C,W,E,B,R,q,T,x,N,_,P,Q,F,U,D,H,O,$,J,Z,j,z,G,K,V,X,Y,ee,te,se,ne,ae,ie;s(9772),s(2896),s(3262);const{defineElement:re,property:oe,method:he,event:ce}=(0,g.createDecorators)();function le(e,t){let{agentId:s,robotId:n,sessionId:a,showAvatar:i,showSessionList:r=!0,readonly:o=!1,showLike:h=!0,showShare:c=!0,quickAnswerConfig:l,snippetList:g,enterInterval:A,debug:I=!1,commandBricks:y,answerLanguage:f,inputToolbarBrick:S,onSessionIdChange:L,onQaFinish:M}=e;const{sessionEnd:b,sessionLoading:C,activeSessionId:W,msgEnd:E,msgLoading:B,msgList:R,sessionList:q,loading:T,chatting:x,searchStr:N,setAgent:_,handleIsLike:P,handleChat:Q,stopChat:F,createSession:U,deleteSession:D,updateSession:H,checkSession:O,setSearchStr:$,querySessionHistory:J}=(0,k.Fn)({agentId:s,robotId:n,sessionId:a,enterInterval:A,debug:I,answerLanguage:f});return(0,u.useEffect)((()=>{W&&L(W)}),[W]),(0,u.useEffect)((()=>{!x&&W&&M(W)}),[x]),d().createElement(p.t.Provider,{value:{sessionEnd:b,sessionLoading:C,activeSessionId:W,sessionList:q,msgEnd:E,msgLoading:B,msgList:R,chatting:x,loading:T,searchStr:N,showLike:h,showShare:c,readonly:o,quickAnswerConfig:l,snippetList:g,commandBricks:y,setAgent:_,handleIsLike:P,handleChat:Q,stopChat:F,createSession:U,deleteSession:D,updateSession:H,checkSession:O,setSearchStr:$,querySessionHistory:J}},d().createElement("div",{className:"chat-view-container"},r&&d().createElement("div",{className:"chat-view-selector"},d().createElement(v.Z,null)),d().createElement("div",{className:"chat-view-content"},d().createElement(w.M,{showAvatar:i}),!o&&d().createElement(m.D,{inputToolbarBrick:S,ref:t}))))}const ue=(0,u.forwardRef)(le);let de;var ge=new WeakMap,Ae=new WeakMap,pe=new WeakMap,we=new WeakMap,ke=new WeakMap,ve=new WeakMap,me=new WeakMap,Ie=new WeakMap,ye=new WeakMap,fe=new WeakMap,Se=new WeakMap,Le=new WeakMap,Me=new WeakMap,be=new WeakMap,Ce=new WeakMap,We=new WeakMap,Ee=new WeakMap,Be=new WeakSet,Re=new WeakMap,qe=new WeakMap,Te=new WeakMap;class xe extends A.ReactNextElement{constructor(){super(...arguments),(0,a.A)(this,Be),(0,i.A)(this,ge,(I(this),f(this))),(0,i.A)(this,Ae,(S(this),L(this))),(0,i.A)(this,pe,(M(this),b(this))),(0,i.A)(this,we,(C(this),W(this))),(0,i.A)(this,ke,(E(this),B(this))),(0,i.A)(this,ve,(R(this),q(this))),(0,i.A)(this,me,(T(this),x(this))),(0,i.A)(this,Ie,(N(this),_(this))),(0,i.A)(this,ye,(P(this),Q(this))),(0,i.A)(this,fe,(F(this),U(this))),(0,i.A)(this,Se,(D(this),H(this))),(0,i.A)(this,Le,(O(this),$(this))),(0,i.A)(this,Me,(J(this),Z(this))),(0,i.A)(this,be,(j(this),z(this))),(0,i.A)(this,Ce,(G(this),K(this))),(0,i.A)(this,We,(V(this),d().createRef())),(0,i.A)(this,Ee,X(this)),(0,i.A)(this,Re,(te(this),e=>{(0,o.A)(Be,this,Y).emit(e)})),(0,i.A)(this,qe,se(this)),(0,i.A)(this,Te,(ie(this),e=>{(0,o.A)(Be,this,ne).emit(e)}))}get sessionId(){return(0,c.A)(ge,this)}set sessionId(e){(0,h.A)(ge,this,e)}get agentId(){return(0,c.A)(Ae,this)}set agentId(e){(0,h.A)(Ae,this,e)}get robotId(){return(0,c.A)(pe,this)}set robotId(e){(0,h.A)(pe,this,e)}get answerLanguage(){return(0,c.A)(we,this)}set answerLanguage(e){(0,h.A)(we,this,e)}get debug(){return(0,c.A)(ke,this)}set debug(e){(0,h.A)(ke,this,e)}get showAvatar(){return(0,c.A)(ve,this)}set showAvatar(e){(0,h.A)(ve,this,e)}get showSessionList(){return(0,c.A)(me,this)}set showSessionList(e){(0,h.A)(me,this,e)}get readonly(){return(0,c.A)(Ie,this)}set readonly(e){(0,h.A)(Ie,this,e)}get showLike(){return(0,c.A)(ye,this)}set showLike(e){(0,h.A)(ye,this,e)}get showShare(){return(0,c.A)(fe,this)}set showShare(e){(0,h.A)(fe,this,e)}get enterInterval(){return(0,c.A)(Se,this)}set enterInterval(e){(0,h.A)(Se,this,e)}get quickAnswerConfig(){return(0,c.A)(Le,this)}set quickAnswerConfig(e){(0,h.A)(Le,this,e)}get snippetList(){return(0,c.A)(Me,this)}set snippetList(e){(0,h.A)(Me,this,e)}get commandBricks(){return(0,c.A)(be,this)}set commandBricks(e){(0,h.A)(be,this,e)}get inputToolbarBrick(){return(0,c.A)(Ce,this)}set inputToolbarBrick(e){(0,h.A)(Ce,this,e)}insertQuestion(e){var t;const{value:s}=e;s&&(null===(t=(0,c.A)(We,this).current)||void 0===t||t.handleInsertQuestion(s))}sendMsg(e){var t;null===(t=(0,c.A)(We,this).current)||void 0===t||t.sendMsg(e)}render(){return d().createElement(ue,{agentId:this.agentId,robotId:this.robotId,debug:this.debug,sessionId:this.sessionId,readonly:this.readonly,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,showShare:this.showShare,quickAnswerConfig:this.quickAnswerConfig,snippetList:this.snippetList,enterInterval:this.enterInterval,commandBricks:this.commandBricks,answerLanguage:this.answerLanguage,inputToolbarBrick:this.inputToolbarBrick,onSessionIdChange:(0,c.A)(Re,this),onQaFinish:(0,c.A)(Te,this),ref:(0,c.A)(We,this)})}}n=xe,({e:[f,S,L,M,b,C,W,E,B,R,q,T,x,N,_,P,Q,F,U,D,H,O,$,J,Z,j,z,G,K,V,X,Y,ee,te,se,ne,ae,ie,I],c:[de,y]}=(0,l.A)(n,[re("ai.chat-view",{shadowOptions:!1})],[[oe(),1,"sessionId"],[oe(),1,"agentId"],[oe(),1,"robotId"],[oe(),1,"answerLanguage"],[oe({type:Boolean}),1,"debug"],[oe({type:Boolean}),1,"showAvatar"],[oe({type:Boolean}),1,"showSessionList"],[oe({type:Boolean}),1,"readonly"],[oe({type:Boolean}),1,"showLike"],[oe({type:Boolean}),1,"showShare"],[oe({type:Number}),1,"enterInterval"],[oe({attribute:!1}),1,"quickAnswerConfig"],[oe({attribute:!1}),1,"snippetList"],[oe({attribute:!1}),1,"commandBricks"],[oe({attribute:!1}),1,"inputToolbarBrick"],[ce({type:"sessionId.change"}),1,"sessionIdChange",e=>(0,c.A)(Ee,e),(e,t)=>(0,h.A)(Ee,e,t)],[ce({type:"qa.finish"}),1,"qaFinish",e=>(0,c.A)(qe,e),(e,t)=>(0,h.A)(qe,e,t)],[he(),2,"insertQuestion"],[he(),2,"sendMsg"]],0,(e=>Te.has((0,r.A)(e))),A.ReactNextElement)),y();var Ne,_e=s(6203),Pe=s(3518),Qe=s(356);let Fe,Ue,De,He,Oe,$e,Je,Ze,je,ze,Ge,Ke,Ve,Xe,Ye,et,tt,st;const{defineElement:nt,property:at,event:it,method:rt}=(0,g.createDecorators)(),ot=(0,u.forwardRef)(It);let ht;var ct=new WeakMap,lt=new WeakMap,ut=new WeakMap,dt=new WeakSet,gt=new WeakMap,At=new WeakMap,pt=new WeakMap,wt=new WeakMap,kt=new WeakMap,vt=new WeakMap;class mt extends A.ReactNextElement{constructor(){super(...arguments),(0,a.A)(this,dt),(0,i.A)(this,ct,(Fe(this),De(this))),(0,i.A)(this,lt,(He(this),Oe(this))),(0,i.A)(this,ut,($e(this),Je(this))),(0,i.A)(this,gt,(ze(this),e=>{(0,o.A)(dt,this,Ze).emit(e)})),(0,i.A)(this,At,Ge(this)),(0,i.A)(this,pt,(Xe(this),e=>{(0,o.A)(dt,this,Ke).emit(e)})),(0,i.A)(this,wt,Ye(this)),(0,i.A)(this,kt,(st(this),e=>{(0,o.A)(dt,this,et).emit(e)})),(0,i.A)(this,vt,(0,u.createRef)())}get agentId(){return(0,c.A)(ct,this)}set agentId(e){(0,h.A)(ct,this,e)}get conversationId(){return(0,c.A)(lt,this)}set conversationId(e){(0,h.A)(lt,this,e)}postMessage(e){var t;return null===(t=(0,c.A)(vt,this).current)||void 0===t?void 0:t.postMessage(e)}sendRequest(e,t,s){var n;return null===(n=(0,c.A)(vt,this).current)||void 0===n?void 0:n.sendRequest(e,t,s)}newConversation(){var e;null===(e=(0,c.A)(vt,this).current)||void 0===e||e.newConversation()}render(){return d().createElement(ot,{ref:(0,c.A)(vt,this),agentId:this.agentId,conversationId:this.conversationId,onMessagesUpdate:(0,c.A)(gt,this),onBusyChange:(0,c.A)(pt,this),onConversationIdChange:(0,c.A)(kt,this)})}}function It(e,t){let{agentId:s,conversationId:n,onMessageChunkPush:a,onMessagesUpdate:i,onBusyChange:r,onConversationIdChange:o}=e;const h=(0,u.useRef)(!1),c=(0,u.useRef)(1),l=(0,u.useRef)(!1),[d,g]=(0,u.useState)(null);(0,u.useEffect)((()=>{g(n??null)}),[n]),(0,u.useEffect)((()=>{h.current&&(null==o||o(d))}),[d,o]);const A=(0,u.useRef)(0),p=(0,u.useCallback)((()=>A.current++),[]),[w,k]=(0,u.useState)([]),v=(0,u.useCallback)((e=>{null==a||a(e),k((t=>{const s=t[t.length-1];return s&&s.key===e.key?(s.content+=e.delta.content,[...t]):(null!=s&&s.partial&&(s.partial=!1),[...t,{...e.delta,key:e.key,partial:e.partial}])}))}),[a]),m=(0,u.useCallback)((async(e,t,s)=>{if(l.current)return null;const n=c.current;let a;const i=async()=>{if(n!==c.current)throw a||(a=new Error("New conversation started")),a},o=p(),h=p();let u=d;null==r||r(l.current=!0);try{null==v||v({key:o,delta:{content:e,role:"user"}});const n=(0,Pe.createSSEStream)(new URL(t,`${location.origin}${(0,_e.getBasePath)()}`).toString(),s);await Promise.race([n,new Promise((e=>setTimeout(e,1e3)))]),await i(),null==v||v({key:h,delta:{content:"",role:"assistant"},partial:!0});const a=await n;for await(const e of a)await i(),null==v||v({delta:e.delta,key:h,partial:!0}),e.conversationId&&!u&&g(u=e.conversationId);await i(),k((e=>{const t=e[e.length-1];return null!=t&&t.partial&&(t.partial=!1),[...e]}))}catch(e){if(e&&e===a)throw e;console.error("stream failed:",e),await i(),k((e=>{const t=e[e.length-1];let s=e;return(null==t?void 0:t.key)===h&&(t.content?(t.partial=!1,t.failed=!0):s=e.slice(0,-1)),[...s,{role:"assistant",content:"系统错误",key:p(),failed:!0}]}))}return await i(),null==r||r(l.current=!1),u}),[d,p,r,v]);return(0,u.useImperativeHandle)(t,(()=>({sendRequest:m,postMessage:e=>m(e,"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions",{method:"POST",body:JSON.stringify({agentId:s,input:e,stream:!0,conversationId:d}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"}}),newConversation(){c.current++,g(null),k((e=>0===e.length?e:[])),l.current&&(null==r||r(l.current=!1))}})),[s,d,r,m]),(0,u.useEffect)((()=>{h.current&&(null==i||i(w))}),[w,i]),(0,u.useEffect)((()=>{h.current=!0}),[]),null}Ne=mt,({e:[De,He,Oe,$e,Je,Ze,je,ze,Ge,Ke,Ve,Xe,Ye,et,tt,st,Fe],c:[ht,Ue]}=(0,l.A)(Ne,[nt("ai.chat-agent",{styleTexts:[Qe.A]})],[[at(),1,"agentId"],[at(),1,"conversationId"],[rt(),2,"postMessage"],[rt(),2,"sendRequest"],[rt(),2,"newConversation"],[it({type:"messages.update"}),1,"messagesUpdate",e=>(0,c.A)(ut,e),(e,t)=>(0,h.A)(ut,e,t)],[it({type:"busy.change"}),1,"busyChangeEvent",e=>(0,c.A)(At,e),(e,t)=>(0,h.A)(At,e,t)],[it({type:"conversationId.change"}),1,"conversationIdChangeEvent",e=>(0,c.A)(wt,e),(e,t)=>(0,h.A)(wt,e,t)]],0,(e=>vt.has((0,r.A)(e))),A.ReactNextElement)),Ue()},356:(e,t,s)=>{s.d(t,{A:()=>o});var n=s(6758),a=s.n(n),i=s(935),r=s.n(i)()(a());r.push([e.id,":host{display:none}",""]);const o=r.toString()}}]);
|
|
2
|
+
//# sourceMappingURL=4145.61b2afdc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/4145.b622fc58.js","mappings":"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","sources":["webpack:///./src/chat-view/index.tsx","webpack:///./src/chat-agent/index.tsx","webpack:///./src/chat-agent/styles.shadow.css"],"sourcesContent":["import React, { forwardRef, useEffect } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport {\n ChatViewContext,\n QuickAnswerConfig,\n snippet,\n} from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput, SearchInputRef } from \"./components/SearchInput.js\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\nimport \"./index.css\";\nimport { commandBrickConf } from \"./ChatViewContext\";\nimport { UseBrickConf } from \"@next-core/types\";\nimport { ChatBody } from \"./ChatService.js\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\ntype InputToolbarBrick = { useBrick: UseBrickConf };\n\nexport interface ChatViewProps {\n agentId: string;\n robotId: string;\n sessionId?: string;\n readonly?: boolean;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n showShare?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n snippetList?: snippet[];\n enterInterval?: number;\n debug?: boolean;\n commandBricks?: commandBrickConf;\n answerLanguage?: string;\n inputToolbarBrick?: InputToolbarBrick;\n onSessionIdChange: (sessionId: string | undefined) => void;\n onQaFinish: (sessionId: string | undefined) => void;\n}\n\nexport function LegacyChatViewComponent(\n {\n agentId,\n robotId,\n sessionId,\n showAvatar,\n showSessionList = true,\n readonly = false,\n showLike = true,\n showShare = true,\n quickAnswerConfig,\n snippetList,\n enterInterval,\n debug = false,\n commandBricks,\n answerLanguage,\n inputToolbarBrick,\n onSessionIdChange,\n onQaFinish,\n }: ChatViewProps,\n ref: React.Ref<SearchInputRef>\n) {\n const {\n sessionEnd,\n sessionLoading,\n activeSessionId,\n msgEnd,\n msgLoading,\n msgList,\n sessionList,\n loading,\n chatting,\n searchStr,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n } = useChatViewInfo({\n agentId,\n robotId,\n sessionId,\n enterInterval,\n debug,\n answerLanguage,\n });\n\n useEffect(() => {\n if (activeSessionId) {\n onSessionIdChange(activeSessionId);\n }\n }, [activeSessionId]);\n\n useEffect(() => {\n if (!chatting && activeSessionId) {\n // 当此时存在activeSessionId,且chatting是从true变为false时触发,不需要加入activeSessionId的依赖判断\n onQaFinish(activeSessionId);\n }\n }, [chatting]);\n\n return (\n <ChatViewContext.Provider\n value={{\n sessionEnd,\n sessionLoading,\n activeSessionId,\n sessionList,\n msgEnd,\n msgLoading,\n msgList,\n chatting,\n loading,\n searchStr,\n showLike,\n showShare,\n readonly,\n quickAnswerConfig,\n snippetList,\n commandBricks,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <MessageList showAvatar={showAvatar} />\n {!readonly && (\n <SearchInput inputToolbarBrick={inputToolbarBrick} ref={ref} />\n )}\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n\nexport const ChatViewComponent = forwardRef(LegacyChatViewComponent);\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n // shadow 模式下,会导致 useBrick 样式丢失\n // 如:commandBricks 配置 cmdb-instances.instance-list\n shadowOptions: false,\n})\nclass ChatView extends ReactNextElement {\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 机器人id\n */\n @property()\n accessor robotId!: string;\n\n /**\n * 指定智能体回答代码时所使用的语言\n */\n @property()\n accessor answerLanguage: string | undefined;\n\n /**\n * 是否为debug模式\n */\n @property({\n type: Boolean,\n })\n accessor debug: boolean | undefined;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 只读模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 是否展示分享能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showShare: boolean | undefined;\n\n /**\n * 输入间隔,设置为 -1 使用新的方式对大段消息进行模拟打字效果节流输出\n *\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n /**\n * 常用语列表\n */\n @property({\n attribute: false,\n })\n accessor snippetList: snippet[] | undefined;\n\n /**\n * 自定义语言配置\n */\n @property({\n attribute: false,\n })\n accessor commandBricks: commandBrickConf | undefined;\n\n /**\n * 输入框工具栏 useBrick\n */\n @property({\n attribute: false,\n })\n accessor inputToolbarBrick: InputToolbarBrick | undefined;\n\n #ref = React.createRef<SearchInputRef>();\n\n @event({ type: \"sessionId.change\" })\n accessor #sessionIdChange!: EventEmitter<string | undefined>;\n\n #handleSessionIdChange = (activeSessionId: string | undefined) => {\n this.#sessionIdChange.emit(activeSessionId);\n };\n\n @event({ type: \"qa.finish\" })\n accessor #qaFinish!: EventEmitter<string | undefined>;\n\n #handleQaFinish = (activeSessionId: string | undefined) => {\n this.#qaFinish.emit(activeSessionId);\n };\n\n /**\n *\n * @description 调用方法进行提问\n */\n @method()\n insertQuestion(args: { value: string }): void {\n const { value } = args;\n if (!value) return;\n this.#ref.current?.handleInsertQuestion(value);\n }\n\n /**\n * @description 外部提问\n */\n @method()\n sendMsg(msg: string | ChatBody): void {\n this.#ref.current?.sendMsg(msg);\n }\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n robotId={this.robotId}\n debug={this.debug}\n sessionId={this.sessionId}\n readonly={this.readonly}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n showShare={this.showShare}\n quickAnswerConfig={this.quickAnswerConfig}\n snippetList={this.snippetList}\n enterInterval={this.enterInterval}\n commandBricks={this.commandBricks}\n answerLanguage={this.answerLanguage}\n inputToolbarBrick={this.inputToolbarBrick}\n onSessionIdChange={this.#handleSessionIdChange}\n onQaFinish={this.#handleQaFinish}\n ref={this.#ref}\n />\n );\n }\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { createSSEStream, type Options } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatAgentProps {\n agentId?: string;\n conversationId?: string;\n}\n\nexport interface Message extends BaseMessage {\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface BaseMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface MessageChunk {\n delta: BaseMessage;\n conversationId?: string;\n key: number;\n partial?: boolean;\n}\n\nexport const ChatAgentComponent = forwardRef(LegacyChatAgentComponent);\n\n/**\n * 用于与 AI 机器人进行对话的代理构件,处理通信并整合消息。\n */\nexport\n@defineElement(\"ai.chat-agent\", {\n styleTexts: [styleText],\n})\nclass ChatAgent extends ReactNextElement implements ChatAgentProps {\n @property()\n accessor agentId: string | undefined;\n\n @property()\n accessor conversationId: string | undefined;\n\n @method()\n postMessage(content: string) {\n return this.#ref.current?.postMessage(content);\n }\n\n @method()\n sendRequest(content: string, url: string, options: Options<MessageChunk>) {\n return this.#ref.current?.sendRequest(content, url, options);\n }\n\n @method()\n newConversation() {\n this.#ref.current?.newConversation();\n }\n\n // @event({ type: \"messageChunk.push\" })\n // accessor #messageChunkPushEvent!: EventEmitter<MessageChunk>;\n\n // #handleMessageChunkPush = (msg: MessageChunk) => {\n // this.#messageChunkPushEvent.emit(msg);\n // };\n\n @event({ type: \"messages.update\" })\n accessor #messagesUpdate!: EventEmitter<Message[]>;\n\n #handleMessagesUpdate = (messages: Message[]) => {\n this.#messagesUpdate.emit(messages);\n };\n\n @event({ type: \"busy.change\" })\n accessor #busyChangeEvent!: EventEmitter<boolean>;\n\n #handleBusyChange = (busy: boolean) => {\n this.#busyChangeEvent.emit(busy);\n };\n\n @event({ type: \"conversationId.change\" })\n accessor #conversationIdChangeEvent!: EventEmitter<string | null>;\n\n #handleConversationIdChange = (conversationId: string | null) => {\n this.#conversationIdChangeEvent.emit(conversationId);\n };\n\n #ref = createRef<ChatAgentRef>();\n\n render() {\n return (\n <ChatAgentComponent\n ref={this.#ref}\n agentId={this.agentId}\n conversationId={this.conversationId}\n // onMessageChunkPush={this.#handleMessageChunkPush}\n onMessagesUpdate={this.#handleMessagesUpdate}\n onBusyChange={this.#handleBusyChange}\n onConversationIdChange={this.#handleConversationIdChange}\n />\n );\n }\n}\n\nexport interface ChatAgentComponentProps extends ChatAgentProps {\n onMessageChunkPush?(msg: MessageChunk): void;\n onMessagesUpdate?(messages: Message[]): void;\n onBusyChange?(busy: boolean): void;\n onConversationIdChange?(conversationId: string | null): void;\n}\n\nexport interface ChatAgentRef {\n postMessage(content: string): Promise<string | null>;\n sendRequest(\n content: string,\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n newConversation(): void;\n}\n\nexport function LegacyChatAgentComponent(\n {\n agentId,\n conversationId: propConversationId,\n onMessageChunkPush,\n onMessagesUpdate,\n onBusyChange,\n onConversationIdChange,\n }: ChatAgentComponentProps,\n ref: React.Ref<ChatAgentRef>\n) {\n const didMountRef = useRef(false);\n const chatIdRef = useRef(1);\n const busyRef = useRef(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n\n useEffect(() => {\n setConversationId(propConversationId ?? null);\n }, [propConversationId]);\n\n useEffect(() => {\n didMountRef.current && onConversationIdChange?.(conversationId);\n }, [conversationId, onConversationIdChange]);\n\n const counterRef = useRef(0);\n const getMessageChunkKey = useCallback(() => counterRef.current++, []);\n\n const [fullMessages, setFullMessages] = useState<Message[]>([]);\n\n const pushPartialMessage = useCallback(\n (chunk: MessageChunk) => {\n onMessageChunkPush?.(chunk);\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last && last.key === chunk.key) {\n last.content += chunk.delta.content;\n return [...prev];\n }\n if (last?.partial) {\n last.partial = false;\n }\n return [\n ...prev,\n { ...chunk.delta, key: chunk.key, partial: chunk.partial },\n ];\n });\n },\n [onMessageChunkPush]\n );\n\n const sendRequest = useCallback(\n async (content: string, url: string, options: Options<MessageChunk>) => {\n // Use ref instead of state to handle sync sequential calls.\n if (busyRef.current) {\n return null;\n }\n const thisChatId = chatIdRef.current;\n let newConversationError: Error | undefined;\n const checkNewConversation = async () => {\n if (thisChatId !== chatIdRef.current) {\n // istanbul ignore else: should never happen\n if (!newConversationError) {\n newConversationError = new Error(\"New conversation started\");\n }\n throw newConversationError;\n }\n };\n\n const userKey = getMessageChunkKey();\n const assistantKey = getMessageChunkKey();\n let currentConversationId = conversationId;\n\n onBusyChange?.((busyRef.current = true));\n\n try {\n pushPartialMessage?.({\n key: userKey,\n delta: {\n content: content,\n role: \"user\",\n },\n });\n const request = createSSEStream<MessageChunk>(\n new URL(url, `${location.origin}${getBasePath()}`).toString(),\n options\n );\n\n // Put a placeholder assistant message to indicate that the assistant\n // is processing if the request takes longer than one second.\n await Promise.race([\n request,\n new Promise((resolve) => setTimeout(resolve, 1000)),\n ]);\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n key: assistantKey,\n delta: {\n content: \"\",\n role: \"assistant\",\n },\n partial: true,\n });\n\n const stream = await request;\n for await (const value of stream) {\n // istanbul ignore next\n // if (process.env.NODE_ENV === \"development\") {\n // // eslint-disable-next-line no-console\n // console.log(\"stream iterated:\", value);\n // }\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n delta: value.delta,\n key: assistantKey,\n partial: true,\n });\n if (value.conversationId && !currentConversationId) {\n setConversationId((currentConversationId = value.conversationId));\n }\n }\n\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last?.partial) {\n last.partial = false;\n }\n return [...prev];\n });\n } catch (error) {\n if (error && error === newConversationError) {\n throw error;\n }\n\n // eslint-disable-next-line no-console\n console.error(\"stream failed:\", error);\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n let keep = prev;\n if (last?.key === assistantKey) {\n if (last.content) {\n last.partial = false;\n last.failed = true;\n } else {\n // Ignore the empty assistant message.\n keep = prev.slice(0, -1);\n }\n }\n return [\n ...keep,\n {\n role: \"assistant\",\n content: \"系统错误\",\n key: getMessageChunkKey(),\n failed: true,\n },\n ];\n });\n }\n\n await checkNewConversation();\n\n onBusyChange?.((busyRef.current = false));\n\n return currentConversationId;\n },\n [conversationId, getMessageChunkKey, onBusyChange, pushPartialMessage]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n sendRequest,\n postMessage(content: string) {\n return sendRequest(\n content,\n \"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions\",\n {\n method: \"POST\",\n body: JSON.stringify({\n agentId,\n input: content,\n stream: true,\n conversationId,\n }),\n headers: {\n \"giraffe-contract-name\":\n \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n }\n );\n },\n newConversation() {\n chatIdRef.current++;\n setConversationId(null);\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n if (busyRef.current) {\n onBusyChange?.((busyRef.current = false));\n }\n },\n }),\n [agentId, conversationId, onBusyChange, sendRequest]\n );\n\n useEffect(() => {\n didMountRef.current && onMessagesUpdate?.(fullMessages);\n }, [fullMessages, onMessagesUpdate]);\n\n useEffect(() => {\n didMountRef.current = true;\n }, []);\n\n return null;\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, `:host{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["defineElement","property","method","event","createDecorators","LegacyChatViewComponent","_ref","ref","agentId","robotId","sessionId","showAvatar","showSessionList","readonly","showLike","showShare","quickAnswerConfig","snippetList","enterInterval","debug","commandBricks","answerLanguage","inputToolbarBrick","onSessionIdChange","onQaFinish","sessionEnd","sessionLoading","activeSessionId","msgEnd","msgLoading","msgList","sessionList","loading","chatting","searchStr","setAgent","handleIsLike","handleChat","stopChat","createSession","deleteSession","updateSession","checkSession","setSearchStr","querySessionHistory","useChatViewInfo","useEffect","React","ChatViewContext","Provider","value","className","SessionList","MessageList","SearchInput","ChatViewComponent","forwardRef","_ChatView","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_ref2","_P","_ChatView_brand","WeakSet","_handleSessionIdChange","_Q","_handleQaFinish","ChatView","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_robotId","_init_extra_robotId","_init_answerLanguage","_init_extra_answerLanguage","_init_debug","_init_extra_debug","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_readonly","_init_extra_readonly","_init_showLike","_init_extra_showLike","_init_showShare","_init_extra_showShare","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","_init_snippetList","_init_extra_snippetList","_init_commandBricks","_init_extra_commandBricks","_init_inputToolbarBrick","_init_extra_inputToolbarBrick","_init_sessionIdChange","_init_extra_sessionIdChange","_classPrivateGetter","this","_get_sessionIdChange","emit","_init_qaFinish","_init_extra_qaFinish","_get_qaFinish","_classPrivateFieldGet","v","_classPrivateFieldSet","insertQuestion","args","_classPrivateFieldGet2","current","handleInsertQuestion","sendMsg","msg","_classPrivateFieldGet3","render","_ChatView2","e","_set_sessionIdChange","_set_qaFinish","c","_initClass","_applyDecs","shadowOptions","type","Boolean","Number","attribute","o","_","has","_checkInRHS","ChatAgentComponent","LegacyChatAgentComponent","_ChatAgent","_ChatAgent_brand","_handleMessagesUpdate","_handleBusyChange","_handleConversationIdChange","ChatAgent","_init_conversationId","_init_extra_conversationId","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_get_messagesUpdate","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","conversationId","_get_conversationIdChangeEvent","createRef","postMessage","content","sendRequest","url","options","newConversation","_classPrivateFieldGet4","onMessagesUpdate","onBusyChange","onConversationIdChange","propConversationId","onMessageChunkPush","didMountRef","useRef","chatIdRef","busyRef","setConversationId","useState","counterRef","getMessageChunkKey","useCallback","fullMessages","setFullMessages","pushPartialMessage","chunk","prev","last","length","key","delta","partial","async","thisChatId","newConversationError","checkNewConversation","Error","userKey","assistantKey","currentConversationId","role","request","createSSEStream","URL","location","origin","getBasePath","toString","Promise","race","resolve","setTimeout","stream","error","console","keep","failed","slice","useImperativeHandle","body","JSON","stringify","input","headers","_ChatAgent2","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","styleTexts","styleText","___CSS_LOADER_EXPORT___","push","module","id"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/4145.61b2afdc.js","mappings":"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","sources":["webpack:///./src/chat-view/index.tsx","webpack:///./src/chat-agent/index.tsx","webpack:///./src/chat-agent/styles.shadow.css"],"sourcesContent":["import React, { forwardRef, useEffect } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport {\n ChatViewContext,\n QuickAnswerConfig,\n snippet,\n} from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput, SearchInputRef } from \"./components/SearchInput.js\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\nimport \"./index.css\";\nimport { commandBrickConf } from \"./ChatViewContext\";\nimport { UseBrickConf } from \"@next-core/types\";\nimport { ChatBody } from \"./ChatService.js\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\ntype InputToolbarBrick = { useBrick: UseBrickConf };\n\nexport interface ChatViewProps {\n agentId: string;\n robotId: string;\n sessionId?: string;\n readonly?: boolean;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n showShare?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n snippetList?: snippet[];\n enterInterval?: number;\n debug?: boolean;\n commandBricks?: commandBrickConf;\n answerLanguage?: string;\n inputToolbarBrick?: InputToolbarBrick;\n onSessionIdChange: (sessionId: string | undefined) => void;\n onQaFinish: (sessionId: string | undefined) => void;\n}\n\nexport function LegacyChatViewComponent(\n {\n agentId,\n robotId,\n sessionId,\n showAvatar,\n showSessionList = true,\n readonly = false,\n showLike = true,\n showShare = true,\n quickAnswerConfig,\n snippetList,\n enterInterval,\n debug = false,\n commandBricks,\n answerLanguage,\n inputToolbarBrick,\n onSessionIdChange,\n onQaFinish,\n }: ChatViewProps,\n ref: React.Ref<SearchInputRef>\n) {\n const {\n sessionEnd,\n sessionLoading,\n activeSessionId,\n msgEnd,\n msgLoading,\n msgList,\n sessionList,\n loading,\n chatting,\n searchStr,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n } = useChatViewInfo({\n agentId,\n robotId,\n sessionId,\n enterInterval,\n debug,\n answerLanguage,\n });\n\n useEffect(() => {\n if (activeSessionId) {\n onSessionIdChange(activeSessionId);\n }\n }, [activeSessionId]);\n\n useEffect(() => {\n if (!chatting && activeSessionId) {\n // 当此时存在activeSessionId,且chatting是从true变为false时触发,不需要加入activeSessionId的依赖判断\n onQaFinish(activeSessionId);\n }\n }, [chatting]);\n\n return (\n <ChatViewContext.Provider\n value={{\n sessionEnd,\n sessionLoading,\n activeSessionId,\n sessionList,\n msgEnd,\n msgLoading,\n msgList,\n chatting,\n loading,\n searchStr,\n showLike,\n showShare,\n readonly,\n quickAnswerConfig,\n snippetList,\n commandBricks,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\n updateSession,\n checkSession,\n setSearchStr,\n querySessionHistory,\n }}\n >\n <div className=\"chat-view-container\">\n {showSessionList && (\n <div className=\"chat-view-selector\">\n <SessionList />\n </div>\n )}\n <div className=\"chat-view-content\">\n <MessageList showAvatar={showAvatar} />\n {!readonly && (\n <SearchInput inputToolbarBrick={inputToolbarBrick} ref={ref} />\n )}\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n\nexport const ChatViewComponent = forwardRef(LegacyChatViewComponent);\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n // shadow 模式下,会导致 useBrick 样式丢失\n // 如:commandBricks 配置 cmdb-instances.instance-list\n shadowOptions: false,\n})\nclass ChatView extends ReactNextElement {\n @property()\n accessor sessionId: string | undefined;\n\n /**\n * 智能体id\n */\n @property()\n accessor agentId!: string;\n\n /**\n * 机器人id\n */\n @property()\n accessor robotId!: string;\n\n /**\n * 指定智能体回答代码时所使用的语言\n */\n @property()\n accessor answerLanguage: string | undefined;\n\n /**\n * 是否为debug模式\n */\n @property({\n type: Boolean,\n })\n accessor debug: boolean | undefined;\n\n /**\n * 是否展示对话用户头像\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showAvatar: boolean | undefined;\n\n /**\n * 是否展示历史会话信息\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showSessionList: boolean | undefined;\n\n /**\n * 只读模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n /**\n * 是否展示点赞能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showLike: boolean | undefined;\n\n /**\n * 是否展示分享能力\n * @default true\n */\n @property({\n type: Boolean,\n })\n accessor showShare: boolean | undefined;\n\n /**\n * 输入间隔,设置为 -1 使用新的方式对大段消息进行模拟打字效果节流输出\n *\n * @default 50\n */\n @property({\n type: Number,\n })\n accessor enterInterval: number | undefined;\n\n /**\n * 快速入口列表\n */\n @property({\n attribute: false,\n })\n accessor quickAnswerConfig: QuickAnswerConfig | undefined;\n\n /**\n * 常用语列表\n */\n @property({\n attribute: false,\n })\n accessor snippetList: snippet[] | undefined;\n\n /**\n * 自定义语言配置\n */\n @property({\n attribute: false,\n })\n accessor commandBricks: commandBrickConf | undefined;\n\n /**\n * 输入框工具栏 useBrick\n */\n @property({\n attribute: false,\n })\n accessor inputToolbarBrick: InputToolbarBrick | undefined;\n\n #ref = React.createRef<SearchInputRef>();\n\n @event({ type: \"sessionId.change\" })\n accessor #sessionIdChange!: EventEmitter<string | undefined>;\n\n #handleSessionIdChange = (activeSessionId: string | undefined) => {\n this.#sessionIdChange.emit(activeSessionId);\n };\n\n @event({ type: \"qa.finish\" })\n accessor #qaFinish!: EventEmitter<string | undefined>;\n\n #handleQaFinish = (activeSessionId: string | undefined) => {\n this.#qaFinish.emit(activeSessionId);\n };\n\n /**\n *\n * @description 调用方法进行提问\n */\n @method()\n insertQuestion(args: { value: string }): void {\n const { value } = args;\n if (!value) return;\n this.#ref.current?.handleInsertQuestion(value);\n }\n\n /**\n * @description 外部提问\n */\n @method()\n sendMsg(msg: string | ChatBody): void {\n this.#ref.current?.sendMsg(msg);\n }\n\n render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\n robotId={this.robotId}\n debug={this.debug}\n sessionId={this.sessionId}\n readonly={this.readonly}\n showAvatar={this.showAvatar}\n showSessionList={this.showSessionList}\n showLike={this.showLike}\n showShare={this.showShare}\n quickAnswerConfig={this.quickAnswerConfig}\n snippetList={this.snippetList}\n enterInterval={this.enterInterval}\n commandBricks={this.commandBricks}\n answerLanguage={this.answerLanguage}\n inputToolbarBrick={this.inputToolbarBrick}\n onSessionIdChange={this.#handleSessionIdChange}\n onQaFinish={this.#handleQaFinish}\n ref={this.#ref}\n />\n );\n }\n}\n","import React, {\n createRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators, type EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { getBasePath } from \"@next-core/runtime\";\nimport { createSSEStream, type Options } from \"@next-core/utils/general\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event, method } = createDecorators();\n\nexport interface ChatAgentProps {\n agentId?: string;\n conversationId?: string;\n}\n\nexport interface Message extends BaseMessage {\n key: number;\n partial?: boolean;\n failed?: boolean;\n}\n\nexport interface BaseMessage {\n role: \"user\" | \"assistant\";\n content: string;\n}\n\nexport interface MessageChunk {\n delta: BaseMessage;\n conversationId?: string;\n key: number;\n partial?: boolean;\n}\n\nexport const ChatAgentComponent = forwardRef(LegacyChatAgentComponent);\n\n/**\n * 用于与 AI 机器人进行对话的代理构件,处理通信并整合消息。\n */\nexport\n@defineElement(\"ai.chat-agent\", {\n styleTexts: [styleText],\n})\nclass ChatAgent extends ReactNextElement implements ChatAgentProps {\n @property()\n accessor agentId: string | undefined;\n\n @property()\n accessor conversationId: string | undefined;\n\n @method()\n postMessage(content: string) {\n return this.#ref.current?.postMessage(content);\n }\n\n @method()\n sendRequest(content: string, url: string, options: Options<MessageChunk>) {\n return this.#ref.current?.sendRequest(content, url, options);\n }\n\n @method()\n newConversation() {\n this.#ref.current?.newConversation();\n }\n\n // @event({ type: \"messageChunk.push\" })\n // accessor #messageChunkPushEvent!: EventEmitter<MessageChunk>;\n\n // #handleMessageChunkPush = (msg: MessageChunk) => {\n // this.#messageChunkPushEvent.emit(msg);\n // };\n\n @event({ type: \"messages.update\" })\n accessor #messagesUpdate!: EventEmitter<Message[]>;\n\n #handleMessagesUpdate = (messages: Message[]) => {\n this.#messagesUpdate.emit(messages);\n };\n\n @event({ type: \"busy.change\" })\n accessor #busyChangeEvent!: EventEmitter<boolean>;\n\n #handleBusyChange = (busy: boolean) => {\n this.#busyChangeEvent.emit(busy);\n };\n\n @event({ type: \"conversationId.change\" })\n accessor #conversationIdChangeEvent!: EventEmitter<string | null>;\n\n #handleConversationIdChange = (conversationId: string | null) => {\n this.#conversationIdChangeEvent.emit(conversationId);\n };\n\n #ref = createRef<ChatAgentRef>();\n\n render() {\n return (\n <ChatAgentComponent\n ref={this.#ref}\n agentId={this.agentId}\n conversationId={this.conversationId}\n // onMessageChunkPush={this.#handleMessageChunkPush}\n onMessagesUpdate={this.#handleMessagesUpdate}\n onBusyChange={this.#handleBusyChange}\n onConversationIdChange={this.#handleConversationIdChange}\n />\n );\n }\n}\n\nexport interface ChatAgentComponentProps extends ChatAgentProps {\n onMessageChunkPush?(msg: MessageChunk): void;\n onMessagesUpdate?(messages: Message[]): void;\n onBusyChange?(busy: boolean): void;\n onConversationIdChange?(conversationId: string | null): void;\n}\n\nexport interface ChatAgentRef {\n postMessage(content: string): Promise<string | null>;\n sendRequest(\n content: string,\n url: string,\n options: Options<MessageChunk>\n ): Promise<string | null>;\n newConversation(): void;\n}\n\nexport function LegacyChatAgentComponent(\n {\n agentId,\n conversationId: propConversationId,\n onMessageChunkPush,\n onMessagesUpdate,\n onBusyChange,\n onConversationIdChange,\n }: ChatAgentComponentProps,\n ref: React.Ref<ChatAgentRef>\n) {\n const didMountRef = useRef(false);\n const chatIdRef = useRef(1);\n const busyRef = useRef(false);\n const [conversationId, setConversationId] = useState<string | null>(null);\n\n useEffect(() => {\n setConversationId(propConversationId ?? null);\n }, [propConversationId]);\n\n useEffect(() => {\n didMountRef.current && onConversationIdChange?.(conversationId);\n }, [conversationId, onConversationIdChange]);\n\n const counterRef = useRef(0);\n const getMessageChunkKey = useCallback(() => counterRef.current++, []);\n\n const [fullMessages, setFullMessages] = useState<Message[]>([]);\n\n const pushPartialMessage = useCallback(\n (chunk: MessageChunk) => {\n onMessageChunkPush?.(chunk);\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last && last.key === chunk.key) {\n last.content += chunk.delta.content;\n return [...prev];\n }\n if (last?.partial) {\n last.partial = false;\n }\n return [\n ...prev,\n { ...chunk.delta, key: chunk.key, partial: chunk.partial },\n ];\n });\n },\n [onMessageChunkPush]\n );\n\n const sendRequest = useCallback(\n async (content: string, url: string, options: Options<MessageChunk>) => {\n // Use ref instead of state to handle sync sequential calls.\n if (busyRef.current) {\n return null;\n }\n const thisChatId = chatIdRef.current;\n let newConversationError: Error | undefined;\n const checkNewConversation = async () => {\n if (thisChatId !== chatIdRef.current) {\n // istanbul ignore else: should never happen\n if (!newConversationError) {\n newConversationError = new Error(\"New conversation started\");\n }\n throw newConversationError;\n }\n };\n\n const userKey = getMessageChunkKey();\n const assistantKey = getMessageChunkKey();\n let currentConversationId = conversationId;\n\n onBusyChange?.((busyRef.current = true));\n\n try {\n pushPartialMessage?.({\n key: userKey,\n delta: {\n content: content,\n role: \"user\",\n },\n });\n const request = createSSEStream<MessageChunk>(\n new URL(url, `${location.origin}${getBasePath()}`).toString(),\n options\n );\n\n // Put a placeholder assistant message to indicate that the assistant\n // is processing if the request takes longer than one second.\n await Promise.race([\n request,\n new Promise((resolve) => setTimeout(resolve, 1000)),\n ]);\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n key: assistantKey,\n delta: {\n content: \"\",\n role: \"assistant\",\n },\n partial: true,\n });\n\n const stream = await request;\n for await (const value of stream) {\n // istanbul ignore next\n // if (process.env.NODE_ENV === \"development\") {\n // // eslint-disable-next-line no-console\n // console.log(\"stream iterated:\", value);\n // }\n\n await checkNewConversation();\n\n pushPartialMessage?.({\n delta: value.delta,\n key: assistantKey,\n partial: true,\n });\n if (value.conversationId && !currentConversationId) {\n setConversationId((currentConversationId = value.conversationId));\n }\n }\n\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n if (last?.partial) {\n last.partial = false;\n }\n return [...prev];\n });\n } catch (error) {\n if (error && error === newConversationError) {\n throw error;\n }\n\n // eslint-disable-next-line no-console\n console.error(\"stream failed:\", error);\n await checkNewConversation();\n\n setFullMessages((prev) => {\n const last = prev[prev.length - 1];\n let keep = prev;\n if (last?.key === assistantKey) {\n if (last.content) {\n last.partial = false;\n last.failed = true;\n } else {\n // Ignore the empty assistant message.\n keep = prev.slice(0, -1);\n }\n }\n return [\n ...keep,\n {\n role: \"assistant\",\n content: \"系统错误\",\n key: getMessageChunkKey(),\n failed: true,\n },\n ];\n });\n }\n\n await checkNewConversation();\n\n onBusyChange?.((busyRef.current = false));\n\n return currentConversationId;\n },\n [conversationId, getMessageChunkKey, onBusyChange, pushPartialMessage]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n sendRequest,\n postMessage(content: string) {\n return sendRequest(\n content,\n \"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions\",\n {\n method: \"POST\",\n body: JSON.stringify({\n agentId,\n input: content,\n stream: true,\n conversationId,\n }),\n headers: {\n \"giraffe-contract-name\":\n \"easyops.api.aiops_chat.manage.LLMChatProxy\",\n },\n }\n );\n },\n newConversation() {\n chatIdRef.current++;\n setConversationId(null);\n setFullMessages((prev) => (prev.length === 0 ? prev : []));\n if (busyRef.current) {\n onBusyChange?.((busyRef.current = false));\n }\n },\n }),\n [agentId, conversationId, onBusyChange, sendRequest]\n );\n\n useEffect(() => {\n didMountRef.current && onMessagesUpdate?.(fullMessages);\n }, [fullMessages, onMessagesUpdate]);\n\n useEffect(() => {\n didMountRef.current = true;\n }, []);\n\n return null;\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, `:host{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["defineElement","property","method","event","createDecorators","LegacyChatViewComponent","_ref","ref","agentId","robotId","sessionId","showAvatar","showSessionList","readonly","showLike","showShare","quickAnswerConfig","snippetList","enterInterval","debug","commandBricks","answerLanguage","inputToolbarBrick","onSessionIdChange","onQaFinish","sessionEnd","sessionLoading","activeSessionId","msgEnd","msgLoading","msgList","sessionList","loading","chatting","searchStr","setAgent","handleIsLike","handleChat","stopChat","createSession","deleteSession","updateSession","checkSession","setSearchStr","querySessionHistory","useChatViewInfo","useEffect","React","ChatViewContext","Provider","value","className","SessionList","MessageList","SearchInput","ChatViewComponent","forwardRef","_ChatView","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_ref2","_P","_ChatView_brand","WeakSet","_handleSessionIdChange","_Q","_handleQaFinish","ChatView","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_init_robotId","_init_extra_robotId","_init_answerLanguage","_init_extra_answerLanguage","_init_debug","_init_extra_debug","_init_showAvatar","_init_extra_showAvatar","_init_showSessionList","_init_extra_showSessionList","_init_readonly","_init_extra_readonly","_init_showLike","_init_extra_showLike","_init_showShare","_init_extra_showShare","_init_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","_init_snippetList","_init_extra_snippetList","_init_commandBricks","_init_extra_commandBricks","_init_inputToolbarBrick","_init_extra_inputToolbarBrick","_init_sessionIdChange","_init_extra_sessionIdChange","_classPrivateGetter","this","_get_sessionIdChange","emit","_init_qaFinish","_init_extra_qaFinish","_get_qaFinish","_classPrivateFieldGet","v","_classPrivateFieldSet","insertQuestion","args","_classPrivateFieldGet2","current","handleInsertQuestion","sendMsg","msg","_classPrivateFieldGet3","render","_ChatView2","e","_set_sessionIdChange","_set_qaFinish","c","_initClass","_applyDecs","shadowOptions","type","Boolean","Number","attribute","o","_","has","_checkInRHS","ChatAgentComponent","LegacyChatAgentComponent","_ChatAgent","_ChatAgent_brand","_handleMessagesUpdate","_handleBusyChange","_handleConversationIdChange","ChatAgent","_init_conversationId","_init_extra_conversationId","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_get_messagesUpdate","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","conversationId","_get_conversationIdChangeEvent","createRef","postMessage","content","sendRequest","url","options","newConversation","_classPrivateFieldGet4","onMessagesUpdate","onBusyChange","onConversationIdChange","propConversationId","onMessageChunkPush","didMountRef","useRef","chatIdRef","busyRef","setConversationId","useState","counterRef","getMessageChunkKey","useCallback","fullMessages","setFullMessages","pushPartialMessage","chunk","prev","last","length","key","delta","partial","async","thisChatId","newConversationError","checkNewConversation","Error","userKey","assistantKey","currentConversationId","role","request","createSSEStream","URL","location","origin","getBasePath","toString","Promise","race","resolve","setTimeout","stream","error","console","keep","failed","slice","useImperativeHandle","body","JSON","stringify","input","headers","_ChatAgent2","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","styleTexts","styleText","___CSS_LOADER_EXPORT___","push","module","id"],"sourceRoot":""}
|