@next-bricks/ai 1.16.2 → 1.17.0
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/{2159.78a33336.js → 2159.efbfe3f1.js} +2 -2
- package/dist/chunks/{2159.78a33336.js.map → 2159.efbfe3f1.js.map} +1 -1
- package/dist/chunks/3205.db7d6c59.js +3 -0
- package/dist/chunks/3205.db7d6c59.js.map +1 -0
- package/dist/chunks/5425.77169956.js +2 -0
- package/dist/chunks/5425.77169956.js.map +1 -0
- package/dist/chunks/{7041.6b19ff9b.js → 7041.1c3e361e.js} +2 -2
- package/dist/chunks/7041.1c3e361e.js.map +1 -0
- package/dist/chunks/{774.b65640d6.js → 774.f12cf7d3.js} +2 -2
- package/dist/chunks/{774.b65640d6.js.map → 774.f12cf7d3.js.map} +1 -1
- package/dist/chunks/chat-agent.51f2ad39.js +2 -0
- package/dist/chunks/chat-agent.51f2ad39.js.map +1 -0
- package/dist/chunks/main.7344e9c1.js +2 -0
- package/dist/chunks/{main.ba01c37c.js.map → main.7344e9c1.js.map} +1 -1
- package/dist/index.6840b76e.js +2 -0
- package/dist/{index.09ae6f20.js.map → index.6840b76e.js.map} +1 -1
- package/dist/manifest.json +5 -1
- package/dist/types.json +6 -1
- package/dist-types/chat-agent/index.d.ts +7 -5
- package/package.json +2 -2
- package/dist/chunks/1466.674a3c7a.js +0 -3
- package/dist/chunks/1466.674a3c7a.js.map +0 -1
- package/dist/chunks/5425.00e59631.js +0 -2
- package/dist/chunks/5425.00e59631.js.map +0 -1
- package/dist/chunks/7041.6b19ff9b.js.map +0 -1
- package/dist/chunks/chat-agent.732a50fd.js +0 -2
- package/dist/chunks/chat-agent.732a50fd.js.map +0 -1
- package/dist/chunks/main.ba01c37c.js +0 -2
- package/dist/index.09ae6f20.js +0 -2
- /package/dist/chunks/{1466.674a3c7a.js.LICENSE.txt → 3205.db7d6c59.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_ai=self.webpackChunk_next_bricks_ai||[]).push([[5425],{5425:(e,t,n)=>{n.r(t);var s,r,a,i,o,h,l,u,c,d,v,A,g,p,y,w,f,k,m,I,S,C=n(918),E=n(6121),L=n(829),M=n(2740),b=n(8769),W=n.n(b),x=n(3741),R=n(6430),q=n(15),P=n(1465),N=n(2442),_=n(3830),B=n(205),T=n(8894),j=n(5679),O=n(1123),U=n(6780),D=n(6567),{defineElement:H,property:F}=(n(6329),n(2896),(0,x.createDecorators)()),J=new WeakMap,Z=new WeakMap,z=new WeakMap,G=new WeakMap,K=new WeakMap,Q=new WeakMap,V=new WeakMap,X=new WeakMap,Y=new WeakMap;class $ extends R.ReactNextElement{constructor(){super(...arguments),(0,C.A)(this,J,a(this)),(0,C.A)(this,Z,(i(this),o(this))),(0,C.A)(this,z,(h(this),l(this))),(0,C.A)(this,G,(u(this),c(this))),(0,C.A)(this,K,(d(this),v(this))),(0,C.A)(this,Q,(A(this),g(this))),(0,C.A)(this,V,(p(this),y(this))),(0,C.A)(this,X,(w(this),f(this))),(0,C.A)(this,Y,(k(this),m(this))),I(this)}get sessionId(){return(0,L.A)(J,this)}set sessionId(e){(0,E.A)(J,this,e)}get agentId(){return(0,L.A)(Z,this)}set agentId(e){(0,E.A)(Z,this,e)}get debug(){return(0,L.A)(z,this)}set debug(e){(0,E.A)(z,this,e)}get showAvatar(){return(0,L.A)(G,this)}set showAvatar(e){(0,E.A)(G,this,e)}get showSessionList(){return(0,L.A)(K,this)}set showSessionList(e){(0,E.A)(K,this,e)}get readonly(){return(0,L.A)(Q,this)}set readonly(e){(0,E.A)(Q,this,e)}get showLike(){return(0,L.A)(V,this)}set showLike(e){(0,E.A)(V,this,e)}get enterInterval(){return(0,L.A)(X,this)}set enterInterval(e){(0,E.A)(X,this,e)}get quickAnswerConfig(){return(0,L.A)(Y,this)}set quickAnswerConfig(e){(0,E.A)(Y,this,e)}render(){return W().createElement(ee,{agentId:this.agentId,debug:this.debug,sessionId:this.sessionId,readonly:this.readonly,showAvatar:this.showAvatar,showSessionList:this.showSessionList,showLike:this.showLike,quickAnswerConfig:this.quickAnswerConfig,enterInterval:this.enterInterval})}}function ee(e){var{agentId:t,sessionId:n,showAvatar:s,showSessionList:r=!0,readonly:a=!1,showLike:i=!0,quickAnswerConfig:o,enterInterval:h,debug:l=!1}=e,{sessionEnd:u,sessionLoading:c,activeSessionId:d,msgEnd:v,msgLoading:A,msgList:g,sessionList:p,loading:y,chatting:w,searchStr:f,setAgent:k,handleIsLike:m,handleChat:I,stopChat:S,createSession:C,deleteSession:E,checkSession:L,setSearchStr:M,querySessionHistory:b}=(0,N.F)({agentId:t,sessionId:n,enterInterval:h,debug:l});return W().createElement(q.t.Provider,{value:{sessionEnd:u,sessionLoading:c,activeSessionId:d,sessionList:p,msgEnd:v,msgLoading:A,msgList:g,chatting:w,loading:y,searchStr:f,showLike:i,readonly:a,quickAnswerConfig:o,setAgent:k,handleIsLike:m,handleChat:I,stopChat:S,createSession:C,deleteSession:E,checkSession:L,setSearchStr:M,querySessionHistory:b}},W().createElement("div",{className:"chat-view-container"},r&&W().createElement("div",{className:"chat-view-selector"},W().createElement(_.Z,null)),W().createElement("div",{className:"chat-view-content"},W().createElement(P.M,{showAvatar:s}),!a&&W().createElement(B.D,null))))}s=$,({e:[a,i,o,h,l,u,c,d,v,A,g,p,y,w,f,k,m,I],c:[S,r]}=(0,M.A)(s,[H("ai.chat-view",{styleTexts:[T.A,j.A,O.A,U.A,D.A]})],[[F(),1,"sessionId"],[F(),1,"agentId"],[F({type:Boolean}),1,"debug"],[F({type:Boolean}),1,"showAvatar"],[F({type:Boolean}),1,"showSessionList"],[F({type:Boolean}),1,"readonly"],[F({type:Boolean}),1,"showLike"],[F({type:Number}),1,"enterInterval"],[F({attribute:!1}),1,"quickAnswerConfig"]],0,void 0,R.ReactNextElement)),r();var te=n(6330),ne=n(9740),se=n(4635),re=n(6902),ae=n(2559);function ie(e,t,n){return n((0,ae.A)(e,t))}var oe,he,le,ue,ce,de,ve,Ae,ge,pe,ye,we,fe,ke,me,Ie,Se,Ce,Ee,Le,Me=n(1148),be=n(8369),We=n(3757),xe=n(356),{defineElement:Re,property:qe,event:Pe,method:Ne}=(0,x.createDecorators)(),_e=(0,b.forwardRef)(Ge),Be=new WeakMap,Te=new WeakMap,je=new WeakMap,Oe=new WeakSet,Ue=new WeakMap,De=new WeakMap,He=new WeakMap,Fe=new WeakMap,Je=new WeakMap,Ze=new WeakMap;class ze extends R.ReactNextElement{constructor(){super(...arguments),(0,se.A)(this,Oe),(0,C.A)(this,Be,(he(this),ue(this))),(0,C.A)(this,Te,(ce(this),de(this))),(0,C.A)(this,je,(ve(this),Ae(this))),(0,C.A)(this,Ue,(ye(this),e=>{ie(Oe,this,ge).emit(e)})),(0,C.A)(this,De,we(this)),(0,C.A)(this,He,(me(this),e=>{ie(Oe,this,fe).emit(e)})),(0,C.A)(this,Fe,Ie(this)),(0,C.A)(this,Je,(Ee(this),e=>{ie(Oe,this,Se).emit(e)})),(0,C.A)(this,Ze,(0,b.createRef)())}get agentId(){return(0,L.A)(Be,this)}set agentId(e){(0,E.A)(Be,this,e)}get conversationId(){return(0,L.A)(Te,this)}set conversationId(e){(0,E.A)(Te,this,e)}postMessage(e){var t;return null===(t=(0,L.A)(Ze,this).current)||void 0===t?void 0:t.postMessage(e)}sendRequest(e,t,n){var s;return null===(s=(0,L.A)(Ze,this).current)||void 0===s?void 0:s.sendRequest(e,t,n)}newConversation(){var e;null===(e=(0,L.A)(Ze,this).current)||void 0===e||e.newConversation()}render(){return W().createElement(_e,{ref:(0,L.A)(Ze,this),agentId:this.agentId,conversationId:this.conversationId,onMessagesUpdate:(0,L.A)(Ue,this),onBusyChange:(0,L.A)(He,this),onConversationIdChange:(0,L.A)(Je,this)})}}function Ge(e,t){var{agentId:n,conversationId:s,onMessageChunkPush:r,onMessagesUpdate:a,onBusyChange:i,onConversationIdChange:o}=e,h=(0,b.useRef)(!1),l=(0,b.useRef)(1),u=(0,b.useRef)(!1),[c,d]=(0,b.useState)(null);(0,b.useEffect)((()=>{d(null!=s?s:null)}),[s]),(0,b.useEffect)((()=>{h.current&&(null==o||o(c))}),[c,o]);var v=(0,b.useRef)(0),A=(0,b.useCallback)((()=>v.current++),[]),[g,p]=(0,b.useState)([]),y=(0,b.useCallback)((e=>{null==r||r(e),p((t=>{var n=t[t.length-1];return n&&n.key===e.key?(n.content+=e.delta.content,[...t]):(null!=n&&n.partial&&(n.partial=!1),[...t,(0,ne.A)((0,ne.A)({},e.delta),{},{key:e.key,partial:e.partial})])}))}),[r]),w=(0,b.useCallback)(function(){var e=(0,te.A)((function*(e,t,n){if(u.current)return null;var s,r=l.current,a=function(){var e=(0,te.A)((function*(){if(r!==l.current)throw s||(s=new Error("New conversation started")),s}));return function(){return e.apply(this,arguments)}}(),o=A(),h=A(),v=c;null==i||i(u.current=!0);try{null==y||y({key:o,delta:{content:e,role:"user"}});var g=(0,We.createSSEStream)(new URL(t,"".concat(location.origin).concat((0,be.getBasePath)())).toString(),n);yield Promise.race([g,new Promise((e=>setTimeout(e,1e3)))]),yield a(),null==y||y({key:h,delta:{content:"",role:"assistant"},partial:!0});var w,f=yield g,k=!1,m=!1;try{for(var I,S=(0,Me.A)(f);k=!(I=yield S.next()).done;k=!1){var C=I.value;yield a(),null==y||y({delta:C.delta,key:h,partial:!0}),C.conversationId&&!v&&d(v=C.conversationId)}}catch(e){m=!0,w=e}finally{try{k&&null!=S.return&&(yield S.return())}finally{if(m)throw w}}yield a(),p((e=>{var t=e[e.length-1];return null!=t&&t.partial&&(t.partial=!1),[...e]}))}catch(e){if(e&&e===s)throw e;console.error("stream failed:",e),yield a(),p((e=>{var t=e[e.length-1],n=e;return(null==t?void 0:t.key)===h&&(t.content?(t.partial=!1,t.failed=!0):n=e.slice(0,-1)),[...n,{role:"assistant",content:"系统错误",key:A(),failed:!0}]}))}return yield a(),null==i||i(u.current=!1),v}));return function(t,n,s){return e.apply(this,arguments)}}(),[c,A,i,y]);return(0,b.useImperativeHandle)(t,(()=>({sendRequest:w,postMessage:e=>w(e,"api/gateway/easyops.api.aiops_chat.manage.LLMChatProxy@1.0.0/api/aiops_chat/v1/chat/completions",{method:"POST",body:JSON.stringify({agentId:n,input:e,stream:!0,conversationId:c}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"}}),newConversation(){l.current++,d(null),p((e=>0===e.length?e:[])),u.current&&(null==i||i(u.current=!1))}})),[n,c,i,w]),(0,b.useEffect)((()=>{h.current&&(null==a||a(g))}),[g,a]),(0,b.useEffect)((()=>{h.current=!0}),[]),null}oe=ze,({e:[ue,ce,de,ve,Ae,ge,pe,ye,we,fe,ke,me,Ie,Se,Ce,Ee,he],c:[Le,le]}=(0,M.A)(oe,[Re("ai.chat-agent",{styleTexts:[xe.A]})],[[qe(),1,"agentId"],[qe(),1,"conversationId"],[Ne(),2,"postMessage"],[Ne(),2,"sendRequest"],[Ne(),2,"newConversation"],[Pe({type:"messages.update"}),1,"messagesUpdate",e=>(0,L.A)(je,e),(e,t)=>(0,E.A)(je,e,t)],[Pe({type:"busy.change"}),1,"busyChangeEvent",e=>(0,L.A)(De,e),(e,t)=>(0,E.A)(De,e,t)],[Pe({type:"conversationId.change"}),1,"conversationIdChangeEvent",e=>(0,L.A)(Fe,e),(e,t)=>(0,E.A)(Fe,e,t)]],0,(e=>Ze.has((0,re.A)(e))),R.ReactNextElement)),le()},356:(e,t,n)=>{n.d(t,{A:()=>o});var s=n(6758),r=n.n(s),a=n(935),i=n.n(a)()(r());i.push([e.id,":host{display:none}",""]);const o=i.toString()},1148:(e,t,n)=>{function s(e){var t,n,s,a=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,s=Symbol.iterator);a--;){if(n&&null!=(t=e[n]))return t.call(e);if(s&&null!=(t=e[s]))return new r(t.call(e));n="@@asyncIterator",s="@@iterator"}throw new TypeError("Object is not async iterable")}function r(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return r=function(e){this.s=e,this.n=e.next},r.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new r(e)}n.d(t,{A:()=>s})}}]);
|
|
2
|
+
//# sourceMappingURL=5425.77169956.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/5425.77169956.js","mappings":"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","sources":["webpack:///./src/chat-view/index.tsx","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js","webpack:///./src/chat-agent/index.tsx","webpack:///./src/chat-agent/styles.shadow.css","webpack:///../../node_modules/@babel/runtime/helpers/esm/asyncIterator.js"],"sourcesContent":["import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { ChatViewContext, QuickAnswerConfig } from \"./ChatViewContext.js\";\nimport { MessageList } from \"./components/MessageList.js\";\nimport { useChatViewInfo } from \"./hooks/useChatViewInfo.js\";\nimport { SessionList } from \"./components/SessionList.js\";\nimport { SearchInput } from \"./components/SearchInput.js\";\nimport styleText from \"./styles.shadow.css\";\nimport loadStyleText from \"./components/loading.shadow.css\";\nimport markdownStyleText from \"./components/MessageItem/Markdown/markdown.shadow.css\";\nimport quickAnswerListStyleText from \"./components/QuickAnswerList/quickAnswerList.shadow.css\";\nimport CodeBlockStyleText from \"./components/MessageItem/Markdown/CodeBlock/CodeBlock.shadow.css\";\nimport \"@next-core/theme\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * AI 对话终端\n */\nexport\n@defineElement(\"ai.chat-view\", {\n styleTexts: [\n styleText,\n loadStyleText,\n markdownStyleText,\n quickAnswerListStyleText,\n CodeBlockStyleText,\n ],\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 * 是否为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 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 render() {\n return (\n <ChatViewComponent\n agentId={this.agentId}\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 quickAnswerConfig={this.quickAnswerConfig}\n enterInterval={this.enterInterval}\n />\n );\n }\n}\n\nexport interface ChatViewProps {\n agentId: string;\n sessionId?: string;\n readonly?: boolean;\n showAvatar?: boolean;\n showSessionList?: boolean;\n showLike?: boolean;\n quickAnswerConfig?: QuickAnswerConfig;\n enterInterval?: number;\n debug?: boolean;\n}\n\nexport function ChatViewComponent({\n agentId,\n sessionId,\n showAvatar,\n showSessionList = true,\n readonly = false,\n showLike = true,\n quickAnswerConfig,\n enterInterval,\n debug = false,\n}: ChatViewProps) {\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 checkSession,\n setSearchStr,\n querySessionHistory,\n } = useChatViewInfo({\n agentId,\n sessionId,\n enterInterval,\n debug,\n });\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 readonly,\n quickAnswerConfig,\n setAgent,\n handleIsLike,\n handleChat,\n stopChat,\n createSession,\n deleteSession,\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 && <SearchInput />}\n </div>\n </div>\n </ChatViewContext.Provider>\n );\n}\n","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateGetter(s, r, a) {\n return a(assertClassBrand(s, r));\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","export default function _asyncIterator(r) {\n var n,\n t,\n o,\n e = 2;\n for (\"undefined\" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {\n if (t && null != (n = r[t])) return n.call(r);\n if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));\n t = \"@@asyncIterator\", o = \"@@iterator\";\n }\n throw new TypeError(\"Object is not async iterable\");\n}\nfunction AsyncFromSyncIterator(r) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var n = r.done;\n return Promise.resolve(r.value).then(function (r) {\n return {\n value: r,\n done: n\n };\n });\n }\n return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {\n this.s = r, this.n = r.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function next() {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n \"return\": function _return(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.resolve({\n value: r,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n },\n \"throw\": function _throw(r) {\n var n = this.s[\"return\"];\n return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(r);\n}"],"names":["_ChatView","defineElement","property","createDecorators","_A","WeakMap","_B","_C","_D","_E","_F","_G","_H","_I","ChatView","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","_init_sessionId","_init_extra_sessionId","_init_agentId","_init_extra_agentId","_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_enterInterval","_init_extra_enterInterval","_init_quickAnswerConfig","_init_extra_quickAnswerConfig","sessionId","_classPrivateFieldGet","v","_classPrivateFieldSet","agentId","debug","showAvatar","showSessionList","readonly","showLike","enterInterval","quickAnswerConfig","render","React","ChatViewComponent","this","_ref","sessionEnd","sessionLoading","activeSessionId","msgEnd","msgLoading","msgList","sessionList","loading","chatting","searchStr","setAgent","handleIsLike","handleChat","stopChat","createSession","deleteSession","checkSession","setSearchStr","querySessionHistory","useChatViewInfo","ChatViewContext","Provider","value","className","SessionList","MessageList","SearchInput","_ChatView2","e","c","_initClass","_applyDecs","styleTexts","styleText","loadStyleText","markdownStyleText","quickAnswerListStyleText","CodeBlockStyleText","type","Boolean","Number","attribute","_classPrivateGetter","s","r","a","assertClassBrand","_ChatAgent","event","method","ChatAgentComponent","forwardRef","LegacyChatAgentComponent","_ChatAgent_brand","WeakSet","_handleMessagesUpdate","_handleBusyChange","_handleConversationIdChange","ChatAgent","_classPrivateMethodInitSpec","_initProto","_init_conversationId","_init_extra_conversationId","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_get_messagesUpdate","emit","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","conversationId","_get_conversationIdChangeEvent","createRef","postMessage","content","_classPrivateFieldGet2","current","sendRequest","url","options","_classPrivateFieldGet3","newConversation","_classPrivateFieldGet4","ref","onMessagesUpdate","onBusyChange","onConversationIdChange","_ref2","propConversationId","onMessageChunkPush","didMountRef","useRef","chatIdRef","busyRef","setConversationId","useState","useEffect","counterRef","getMessageChunkKey","useCallback","fullMessages","setFullMessages","pushPartialMessage","chunk","prev","last","length","key","delta","partial","_objectSpread","_ref3","_asyncToGenerator","newConversationError","thisChatId","checkNewConversation","_ref4","Error","apply","userKey","assistantKey","currentConversationId","role","request","createSSEStream","URL","concat","location","origin","getBasePath","toString","Promise","race","resolve","setTimeout","_iteratorError","stream","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","_asyncIterator","next","done","err","return","error","console","keep","failed","slice","_x","_x2","_x3","useImperativeHandle","body","JSON","stringify","input","headers","_ChatAgent2","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","o","_","has","_checkInRHS","___CSS_LOADER_EXPORT___","push","module","id","n","t","Symbol","asyncIterator","iterator","call","AsyncFromSyncIterator","TypeError","AsyncFromSyncIteratorContinuation","Object","reject","then","prototype"],"sourceRoot":""}
|