@next-bricks/ai 1.23.24 → 1.24.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/4145.e3a7c00e.js +2 -0
- package/dist/chunks/4145.e3a7c00e.js.map +1 -0
- package/dist/chunks/chat-agent.a05ca328.js +2 -0
- package/dist/chunks/chat-agent.a05ca328.js.map +1 -0
- package/dist/chunks/{main.76fb0d4d.js → main.0dfeef16.js} +2 -2
- package/dist/chunks/{main.76fb0d4d.js.map → main.0dfeef16.js.map} +1 -1
- package/dist/{index.d77c8cbc.js → index.46181209.js} +2 -2
- package/dist/{index.d77c8cbc.js.map → index.46181209.js.map} +1 -1
- package/dist/manifest.json +34 -3
- package/dist/types.json +123 -37
- package/dist-types/chat-agent/index.d.ts +27 -3
- package/package.json +2 -2
- package/dist/chunks/4145.16c0e4ac.js +0 -2
- package/dist/chunks/4145.16c0e4ac.js.map +0 -1
- package/dist/chunks/chat-agent.981ea628.js +0 -2
- package/dist/chunks/chat-agent.981ea628.js.map +0 -1
|
@@ -3,7 +3,9 @@ import { ReactNextElement } from "@next-core/react-element";
|
|
|
3
3
|
import { type Options } from "@next-core/utils/general";
|
|
4
4
|
export interface ChatAgentProps {
|
|
5
5
|
agentId?: string;
|
|
6
|
+
robotId?: string;
|
|
6
7
|
conversationId?: string;
|
|
8
|
+
alwaysUseNewConversation?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export interface Message extends BaseMessage {
|
|
9
11
|
key: number;
|
|
@@ -20,6 +22,15 @@ export interface MessageChunk {
|
|
|
20
22
|
key: number;
|
|
21
23
|
partial?: boolean;
|
|
22
24
|
}
|
|
25
|
+
export interface LowLevelMessageChunk {
|
|
26
|
+
choices: LowLevelChoice[];
|
|
27
|
+
}
|
|
28
|
+
export interface LowLevelChoice {
|
|
29
|
+
delta: {
|
|
30
|
+
role: "assistant";
|
|
31
|
+
content?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
23
34
|
export declare const ChatAgentComponent: React.ForwardRefExoticComponent<ChatAgentComponentProps & React.RefAttributes<ChatAgentRef>>;
|
|
24
35
|
/**
|
|
25
36
|
* 用于与 AI 机器人进行对话的代理构件,处理通信并整合消息。
|
|
@@ -27,9 +38,21 @@ export declare const ChatAgentComponent: React.ForwardRefExoticComponent<ChatAge
|
|
|
27
38
|
export declare class ChatAgent extends ReactNextElement implements ChatAgentProps {
|
|
28
39
|
#private;
|
|
29
40
|
accessor agentId: string | undefined;
|
|
41
|
+
accessor robotId: string | undefined;
|
|
30
42
|
accessor conversationId: string | undefined;
|
|
43
|
+
accessor alwaysUseNewConversation: boolean | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* 发送消息到默认的聊天 API
|
|
46
|
+
*/
|
|
31
47
|
postMessage(content: string): Promise<string | null> | undefined;
|
|
32
|
-
|
|
48
|
+
/**
|
|
49
|
+
* 发送聊天请求到指定的 URL
|
|
50
|
+
*/
|
|
51
|
+
sendRequest(leadingMessages: string | BaseMessage[], url: string, options: Options<MessageChunk>): Promise<string | null> | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* 发送底层聊天请求到指定的 URL。接口的请求和响应的数据结构和 OpenAI 聊天接口一致。
|
|
54
|
+
*/
|
|
55
|
+
lowLevelSendRequest(leadingMessages: string | BaseMessage[], url: string, options: Options<MessageChunk>): Promise<string | null> | undefined;
|
|
33
56
|
newConversation(): void;
|
|
34
57
|
render(): React.JSX.Element;
|
|
35
58
|
}
|
|
@@ -41,7 +64,8 @@ export interface ChatAgentComponentProps extends ChatAgentProps {
|
|
|
41
64
|
}
|
|
42
65
|
export interface ChatAgentRef {
|
|
43
66
|
postMessage(content: string): Promise<string | null>;
|
|
44
|
-
sendRequest(
|
|
67
|
+
sendRequest(leadingMessages: string | BaseMessage[], url: string, options: Options<MessageChunk>): Promise<string | null>;
|
|
68
|
+
lowLevelSendRequest(leadingMessages: string | BaseMessage[], url: string, options: Options<MessageChunk>): Promise<string | null>;
|
|
45
69
|
newConversation(): void;
|
|
46
70
|
}
|
|
47
|
-
export declare function LegacyChatAgentComponent({ agentId, conversationId: propConversationId, onMessageChunkPush, onMessagesUpdate, onBusyChange, onConversationIdChange, }: ChatAgentComponentProps, ref: React.Ref<ChatAgentRef>): null;
|
|
71
|
+
export declare function LegacyChatAgentComponent({ agentId, robotId, conversationId: propConversationId, alwaysUseNewConversation, onMessageChunkPush, onMessagesUpdate, onBusyChange, onConversationIdChange, }: ChatAgentComponentProps, ref: React.Ref<ChatAgentRef>): null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-bricks/ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.24.0",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-bricks/tree/master/bricks/ai",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"@next-bricks/form": "*",
|
|
51
51
|
"@next-bricks/icons": "*"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "3cd2a1a5c23ea4fa3565a2aaf6a3cd62a8fa146c"
|
|
54
54
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
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(6477),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(1816),Pe=s(279),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.16c0e4ac.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/4145.16c0e4ac.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,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_ai=globalThis.webpackChunk_next_bricks_ai||[]).push([[5125],{9099:(t,e,n)=>{n.r(e),n.d(e,{ChatAgent:()=>B,ChatAgentComponent:()=>U,LegacyChatAgentComponent:()=>Z});var r,a=n(4635),o=n(918),i=n(6902),s=n(5536),c=n(6121),u=n(829),l=n(2740),h=n(8769),f=n.n(h),d=n(4782),p=n(1389),v=n(1816),g=n(279),y=n(356);let m,A,w,b,k,C,I,E,S,M,j,P,R,T,x,W,_,O;const{defineElement:L,property:q,event:z,method:N}=(0,d.createDecorators)(),U=(0,h.forwardRef)(Z);let B;var D=new WeakMap,$=new WeakMap,H=new WeakMap,J=new WeakSet,F=new WeakMap,G=new WeakMap,K=new WeakMap,Q=new WeakMap,V=new WeakMap,X=new WeakMap;class Y extends p.ReactNextElement{constructor(){super(...arguments),(0,a.A)(this,J),(0,o.A)(this,D,(m(this),w(this))),(0,o.A)(this,$,(b(this),k(this))),(0,o.A)(this,H,(C(this),I(this))),(0,o.A)(this,F,(M(this),t=>{(0,s.A)(J,this,E).emit(t)})),(0,o.A)(this,G,j(this)),(0,o.A)(this,K,(T(this),t=>{(0,s.A)(J,this,P).emit(t)})),(0,o.A)(this,Q,x(this)),(0,o.A)(this,V,(O(this),t=>{(0,s.A)(J,this,W).emit(t)})),(0,o.A)(this,X,(0,h.createRef)())}get agentId(){return(0,u.A)(D,this)}set agentId(t){(0,c.A)(D,this,t)}get conversationId(){return(0,u.A)($,this)}set conversationId(t){(0,c.A)($,this,t)}postMessage(t){var e;return null===(e=(0,u.A)(X,this).current)||void 0===e?void 0:e.postMessage(t)}sendRequest(t,e,n){var r;return null===(r=(0,u.A)(X,this).current)||void 0===r?void 0:r.sendRequest(t,e,n)}newConversation(){var t;null===(t=(0,u.A)(X,this).current)||void 0===t||t.newConversation()}render(){return f().createElement(U,{ref:(0,u.A)(X,this),agentId:this.agentId,conversationId:this.conversationId,onMessagesUpdate:(0,u.A)(F,this),onBusyChange:(0,u.A)(K,this),onConversationIdChange:(0,u.A)(V,this)})}}function Z(t,e){let{agentId:n,conversationId:r,onMessageChunkPush:a,onMessagesUpdate:o,onBusyChange:i,onConversationIdChange:s}=t;const c=(0,h.useRef)(!1),u=(0,h.useRef)(1),l=(0,h.useRef)(!1),[f,d]=(0,h.useState)(null);(0,h.useEffect)((()=>{d(r??null)}),[r]),(0,h.useEffect)((()=>{c.current&&(null==s||s(f))}),[f,s]);const p=(0,h.useRef)(0),y=(0,h.useCallback)((()=>p.current++),[]),[m,A]=(0,h.useState)([]),w=(0,h.useCallback)((t=>{null==a||a(t),A((e=>{const n=e[e.length-1];return n&&n.key===t.key?(n.content+=t.delta.content,[...e]):(null!=n&&n.partial&&(n.partial=!1),[...e,{...t.delta,key:t.key,partial:t.partial}])}))}),[a]),b=(0,h.useCallback)((async(t,e,n)=>{if(l.current)return null;const r=u.current;let a;const o=async()=>{if(r!==u.current)throw a||(a=new Error("New conversation started")),a},s=y(),c=y();let h=f;null==i||i(l.current=!0);try{null==w||w({key:s,delta:{content:t,role:"user"}});const r=(0,g.createSSEStream)(new URL(e,`${location.origin}${(0,v.getBasePath)()}`).toString(),n);await Promise.race([r,new Promise((t=>setTimeout(t,1e3)))]),await o(),null==w||w({key:c,delta:{content:"",role:"assistant"},partial:!0});const a=await r;for await(const t of a)await o(),null==w||w({delta:t.delta,key:c,partial:!0}),t.conversationId&&!h&&d(h=t.conversationId);await o(),A((t=>{const e=t[t.length-1];return null!=e&&e.partial&&(e.partial=!1),[...t]}))}catch(t){if(t&&t===a)throw t;console.error("stream failed:",t),await o(),A((t=>{const e=t[t.length-1];let n=t;return(null==e?void 0:e.key)===c&&(e.content?(e.partial=!1,e.failed=!0):n=t.slice(0,-1)),[...n,{role:"assistant",content:"系统错误",key:y(),failed:!0}]}))}return await o(),null==i||i(l.current=!1),h}),[f,y,i,w]);return(0,h.useImperativeHandle)(e,(()=>({sendRequest:b,postMessage:t=>b(t,"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:t,stream:!0,conversationId:f}),headers:{"giraffe-contract-name":"easyops.api.aiops_chat.manage.LLMChatProxy"}}),newConversation(){u.current++,d(null),A((t=>0===t.length?t:[])),l.current&&(null==i||i(l.current=!1))}})),[n,f,i,b]),(0,h.useEffect)((()=>{c.current&&(null==o||o(m))}),[m,o]),(0,h.useEffect)((()=>{c.current=!0}),[]),null}r=Y,({e:[w,b,k,C,I,E,S,M,j,P,R,T,x,W,_,O,m],c:[B,A]}=(0,l.A)(r,[L("ai.chat-agent",{styleTexts:[y.A]})],[[q(),1,"agentId"],[q(),1,"conversationId"],[N(),2,"postMessage"],[N(),2,"sendRequest"],[N(),2,"newConversation"],[z({type:"messages.update"}),1,"messagesUpdate",t=>(0,u.A)(H,t),(t,e)=>(0,c.A)(H,t,e)],[z({type:"busy.change"}),1,"busyChangeEvent",t=>(0,u.A)(G,t),(t,e)=>(0,c.A)(G,t,e)],[z({type:"conversationId.change"}),1,"conversationIdChangeEvent",t=>(0,u.A)(Q,t),(t,e)=>(0,c.A)(Q,t,e)]],0,(t=>X.has((0,i.A)(t))),p.ReactNextElement)),A()},356:(t,e,n)=>{n.d(e,{A:()=>s});var r=n(6758),a=n.n(r),o=n(935),i=n.n(o)()(a());i.push([t.id,":host{display:none}",""]);const s=i.toString()},935:t=>{t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",r=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),r&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),r&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,r,a,o){"string"==typeof t&&(t=[[null,t,void 0]]);var i={};if(r)for(var s=0;s<this.length;s++){var c=this[s][0];null!=c&&(i[c]=!0)}for(var u=0;u<t.length;u++){var l=[].concat(t[u]);r&&i[l[0]]||(void 0!==o&&(void 0===l[5]||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=o),n&&(l[2]?(l[1]="@media ".concat(l[2]," {").concat(l[1],"}"),l[2]=n):l[2]=n),a&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=a):l[4]="".concat(a)),e.push(l))}},e}},6758:t=>{t.exports=function(t){return t[1]}},2740:(t,e,n)=>{n.d(e,{A:()=>s});var r=n(7545),a=n(6902);function o(t,e,n){"symbol"==(0,r.A)(e)&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:n?n+" "+e:e})}catch(t){}return t}var i=n(1369);function s(t,e,n,s,c,u){var l,h,f,d,p,v,g,y=Symbol.metadata||Symbol.for("Symbol.metadata"),m=Object.defineProperty,A=Object.create,w=[A(null),A(null)],b=e.length;function k(e,n,r){return function(a,o){n&&(o=a,a=t);for(var i=0;i<e.length;i++)o=e[i].apply(a,r?[o]:[]);return r?o:a}}function C(t,e,n,r){if("function"!=typeof t&&(r||void 0!==t))throw new TypeError(e+" must "+(n||"be")+" a function"+(r?"":" or undefined"));return t}function I(t,e,n,a,i,s,c,u,f,d,p){function v(t){if(!p(t))throw new TypeError("Attempted to access private element on non-instance")}var g=[].concat(e[0]),y=e[3],A=!c,b=1===i,I=3===i,E=4===i,S=2===i;function M(e,n,r){return function(a,o){return n&&(o=a,a=t),r&&r(a),j[e].call(a,o)}}if(!A){var j={},P=[],R=I?"get":E||b?"set":"value";if(f?(d||b?j={get:o((function(){return y(this)}),a,"get"),set:function(t){e[4](this,t)}}:j[R]=y,d||o(j[R],a,S?"":R)):d||(j=Object.getOwnPropertyDescriptor(t,a)),!d&&!f){if((h=w[+u][a])&&7!=(h^i))throw Error("Decorating two elements with the same name ("+j[R].name+") is not supported yet");w[+u][a]=i<3?1:i}}for(var T=t,x=g.length-1;x>=0;x-=n?2:1){var W=C(g[x],"A decorator","be",!0),_=n?g[x-1]:void 0,O={},L={kind:["field","accessor","method","getter","setter","class"][i],name:a,metadata:l,addInitializer:function(t,e){if(t.v)throw Error("attempted to call addInitializer after decoration was finished");C(e,"An initializer","be",!0),s.push(e)}.bind(null,O)};if(A)h=W.call(_,T,L),O.v=1,C(h,"class decorators","return")&&(T=h);else if(L.static=u,L.private=f,h=L.access={has:f?p.bind():function(t){return a in t}},E||(h.get=f?S?function(t){return v(t),j.value}:M("get",0,v):function(t){return t[a]}),S||I||(h.set=f?M("set",0,v):function(t,e){t[a]=e}),T=W.call(_,b?{get:j.get,set:j.set}:j[R],L),O.v=1,b){if("object"==(0,r.A)(T)&&T)(h=C(T.get,"accessor.get"))&&(j.get=h),(h=C(T.set,"accessor.set"))&&(j.set=h),(h=C(T.init,"accessor.init"))&&P.unshift(h);else if(void 0!==T)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else C(T,(d?"field":"method")+" decorators","return")&&(d?P.unshift(T):j[R]=T)}return i<2&&c.push(k(P,u,1),k(s,u,0)),d||A||(f?b?c.splice(-1,0,M("get",u),M("set",u)):c.push(S?j[R]:C.call.bind(j[R])):m(t,a,j)),T}function E(t){return m(t,y,{configurable:!0,enumerable:!0,value:l})}return void 0!==u&&(l=u[y]),l=A(null==l?null:l),p=[],v=function(t){t&&p.push(k(t))},g=function(e,r){for(var o=0;o<n.length;o++){var s=n[o],u=s[1],l=7&u;if((8&u)==e&&!l==r){var h=s[2],v=!!s[3],g=16&u;I(e?t:t.prototype,s,g,v?"#"+h:(0,i.A)(h),l,l<2?[]:e?d=d||[]:f=f||[],p,!!e,v,r,e&&v?function(e){return(0,a.A)(e)===t}:c)}}},g(8,0),g(0,0),g(8,1),g(0,1),v(f),v(d),h=p,b||E(t),{e:h,get c(){var n=[];return b&&[E(t=I(t,[e],s,t.name,5,n)),k(n,1)]}}}},2559:(t,e,n)=>{function r(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}n.d(e,{A:()=>r})},6902:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(7545);function a(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==t?(0,r.A)(t):"null"));return t}},2016:(t,e,n)=>{function r(t,e){if(e.has(t))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(e,{A:()=>r})},829:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(2559);function a(t,e){return t.get((0,r.A)(t,e))}},918:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(2016);function a(t,e,n){(0,r.A)(t,e),e.set(t,n)}},6121:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(2559);function a(t,e,n){return t.set((0,r.A)(t,e),n),n}},5536:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(2559);function a(t,e,n){return n((0,r.A)(t,e))}},4635:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(2016);function a(t,e){(0,r.A)(t,e),e.add(t)}},1369:(t,e,n)=>{n.d(e,{A:()=>a});var r=n(7545);function a(t){var e=function(t,e){if("object"!=(0,r.A)(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var a=n.call(t,"string");if("object"!=(0,r.A)(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==(0,r.A)(e)?e:e+""}},7545:(t,e,n)=>{function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}n.d(e,{A:()=>r})}}]);
|
|
2
|
-
//# sourceMappingURL=chat-agent.981ea628.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/chat-agent.981ea628.js","mappings":"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","sources":["webpack:///./src/chat-agent/index.tsx","webpack:///./src/chat-agent/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/api.js","webpack:///../../node_modules/css-loader/dist/runtime/noSourceMaps.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/setFunctionName.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/applyDecs2311.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/assertClassBrand.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkInRHS.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/typeof.js"],"sourcesContent":["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","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","import _typeof from \"./typeof.js\";\nexport default function setFunctionName(e, t, n) {\n \"symbol\" == _typeof(t) && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\");\n try {\n Object.defineProperty(e, \"name\", {\n configurable: !0,\n value: n ? n + \" \" + t : t\n });\n } catch (e) {}\n return e;\n}","import _typeof from \"./typeof.js\";\nimport checkInRHS from \"./checkInRHS.js\";\nimport setFunctionName from \"./setFunctionName.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nexport default function applyDecs2311(e, t, n, r, o, i) {\n var a,\n c,\n u,\n s,\n f,\n l,\n p,\n d = Symbol.metadata || Symbol[\"for\"](\"Symbol.metadata\"),\n m = Object.defineProperty,\n h = Object.create,\n y = [h(null), h(null)],\n v = t.length;\n function g(t, n, r) {\n return function (o, i) {\n n && (i = o, o = e);\n for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);\n return r ? i : o;\n };\n }\n function b(e, t, n, r) {\n if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\"));\n return e;\n }\n function applyDec(e, t, n, r, o, i, u, s, f, l, p) {\n function d(e) {\n if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\");\n }\n var h = [].concat(t[0]),\n v = t[3],\n w = !u,\n D = 1 === o,\n S = 3 === o,\n j = 4 === o,\n E = 2 === o;\n function I(t, n, r) {\n return function (o, i) {\n return n && (i = o, o = e), r && r(o), P[t].call(o, i);\n };\n }\n if (!w) {\n var P = {},\n k = [],\n F = S ? \"get\" : j || D ? \"set\" : \"value\";\n if (f ? (l || D ? P = {\n get: setFunctionName(function () {\n return v(this);\n }, r, \"get\"),\n set: function set(e) {\n t[4](this, e);\n }\n } : P[F] = v, l || setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {\n if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\");\n y[+s][r] = o < 3 ? 1 : o;\n }\n }\n for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {\n var z = b(h[O], \"A decorator\", \"be\", !0),\n A = n ? h[O - 1] : void 0,\n H = {},\n K = {\n kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o],\n name: r,\n metadata: a,\n addInitializer: function (e, t) {\n if (e.v) throw Error(\"attempted to call addInitializer after decoration was finished\");\n b(t, \"An initializer\", \"be\", !0), i.push(t);\n }.bind(null, H)\n };\n if (w) c = z.call(A, N, K), H.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (K[\"static\"] = s, K[\"private\"] = f, c = K.access = {\n has: f ? p.bind() : function (e) {\n return r in e;\n }\n }, j || (c.get = f ? E ? function (e) {\n return d(e), P.value;\n } : I(\"get\", 0, d) : function (e) {\n return e[r];\n }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) {\n e[r] = t;\n }), N = z.call(A, D ? {\n get: P.get,\n set: P.set\n } : P[F], K), H.v = 1, D) {\n if (\"object\" == _typeof(N) && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\");\n } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N);\n }\n return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;\n }\n function w(e) {\n return m(e, d, {\n configurable: !0,\n enumerable: !0,\n value: a\n });\n }\n return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {\n e && f.push(g(e));\n }, p = function p(t, r) {\n for (var i = 0; i < n.length; i++) {\n var a = n[i],\n c = a[1],\n l = 7 & c;\n if ((8 & c) == t && !l == r) {\n var p = a[2],\n d = !!a[3],\n m = 16 & c;\n applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {\n return checkInRHS(t) === e;\n } : o);\n }\n }\n }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {\n e: c,\n get c() {\n var n = [];\n return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];\n }\n };\n}","export default function _assertClassBrand(e, t, n) {\n if (\"function\" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;\n throw new TypeError(\"Private element is not present on this object\");\n}","import _typeof from \"./typeof.js\";\nexport default function _checkInRHS(e) {\n if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? _typeof(e) : \"null\"));\n return e;\n}","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldGet2(s, a) {\n return s.get(assertClassBrand(s, a));\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateFieldSet2(s, a, r) {\n return s.set(assertClassBrand(s, a), r), r;\n}","import assertClassBrand from \"./assertClassBrand.js\";\nexport default function _classPrivateGetter(s, r, a) {\n return a(assertClassBrand(s, r));\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateMethodInitSpec(obj, privateSet) {\n checkPrivateRedeclaration(obj, privateSet);\n privateSet.add(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}"],"names":["defineElement","property","event","method","createDecorators","ChatAgentComponent","forwardRef","LegacyChatAgentComponent","_ChatAgent","_A","WeakMap","_B","_C","_ChatAgent_brand","WeakSet","_handleMessagesUpdate","_D","_handleBusyChange","_E","_handleConversationIdChange","_ref","ChatAgent","ReactNextElement","constructor","arguments","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","_initProto","_init_agentId","_init_extra_agentId","_init_conversationId","_init_extra_conversationId","_init_messagesUpdate","_init_extra_messagesUpdate","messages","_classPrivateGetter","this","_get_messagesUpdate","emit","_init_busyChangeEvent","_init_extra_busyChangeEvent","busy","_get_busyChangeEvent","_init_conversationIdChangeEvent","_init_extra_conversationIdChangeEvent","conversationId","_get_conversationIdChangeEvent","createRef","agentId","_classPrivateFieldGet","v","_classPrivateFieldSet","postMessage","content","_classPrivateFieldGet2","current","sendRequest","url","options","_classPrivateFieldGet3","newConversation","_classPrivateFieldGet4","render","React","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","async","thisChatId","newConversationError","checkNewConversation","Error","userKey","assistantKey","currentConversationId","role","request","createSSEStream","URL","location","origin","getBasePath","toString","Promise","race","resolve","setTimeout","stream","value","error","console","keep","failed","slice","useImperativeHandle","body","JSON","stringify","input","headers","_ChatAgent2","e","_set_messagesUpdate","_set_busyChangeEvent","_set_conversationIdChangeEvent","c","_initClass","_applyDecs","styleTexts","styleText","type","o","_","has","_checkInRHS","___CSS_LOADER_EXPORT___","push","module","id","exports","cssWithMappingToString","list","map","item","needLayer","concat","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","setFunctionName","t","n","description","Object","defineProperty","configurable","applyDecs2311","r","a","u","s","f","l","p","d","Symbol","metadata","m","h","create","y","g","apply","b","TypeError","applyDec","w","D","S","j","E","I","P","call","F","get","set","getOwnPropertyDescriptor","name","N","O","z","A","H","K","kind","addInitializer","bind","access","init","unshift","splice","enumerable","prototype","toPropertyKey","checkInRHS","_assertClassBrand","_checkPrivateRedeclaration","obj","privateCollection","privateMap","_classPrivateFieldSet2","privateSet","add","toPrimitive","String","_typeof","iterator"],"sourceRoot":""}
|