@next-bricks/ai 1.23.24 → 1.25.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/types.json CHANGED
@@ -8,12 +8,26 @@
8
8
  "value": "string"
9
9
  }
10
10
  },
11
+ {
12
+ "name": "robotId",
13
+ "annotation": {
14
+ "type": "keyword",
15
+ "value": "string"
16
+ }
17
+ },
11
18
  {
12
19
  "name": "conversationId",
13
20
  "annotation": {
14
21
  "type": "keyword",
15
22
  "value": "string"
16
23
  }
24
+ },
25
+ {
26
+ "name": "alwaysUseNewConversation",
27
+ "annotation": {
28
+ "type": "keyword",
29
+ "value": "boolean"
30
+ }
17
31
  }
18
32
  ],
19
33
  "events": [
@@ -78,12 +92,84 @@
78
92
  "name": "sendRequest",
79
93
  "params": [
80
94
  {
81
- "name": "content",
95
+ "name": "leadingMessages",
96
+ "annotation": {
97
+ "type": "union",
98
+ "types": [
99
+ {
100
+ "type": "keyword",
101
+ "value": "string"
102
+ },
103
+ {
104
+ "type": "array",
105
+ "elementType": {
106
+ "type": "reference",
107
+ "typeName": {
108
+ "type": "identifier",
109
+ "name": "BaseMessage"
110
+ }
111
+ }
112
+ }
113
+ ]
114
+ }
115
+ },
116
+ {
117
+ "name": "url",
82
118
  "annotation": {
83
119
  "type": "keyword",
84
120
  "value": "string"
85
121
  }
86
122
  },
123
+ {
124
+ "name": "options",
125
+ "annotation": {
126
+ "type": "reference",
127
+ "typeName": {
128
+ "type": "identifier",
129
+ "name": "Options"
130
+ },
131
+ "typeParameters": {
132
+ "type": "typeParameterInstantiation",
133
+ "params": [
134
+ {
135
+ "type": "reference",
136
+ "typeName": {
137
+ "type": "identifier",
138
+ "name": "MessageChunk"
139
+ }
140
+ }
141
+ ]
142
+ }
143
+ }
144
+ }
145
+ ],
146
+ "returns": {}
147
+ },
148
+ {
149
+ "name": "lowLevelSendRequest",
150
+ "params": [
151
+ {
152
+ "name": "leadingMessages",
153
+ "annotation": {
154
+ "type": "union",
155
+ "types": [
156
+ {
157
+ "type": "keyword",
158
+ "value": "string"
159
+ },
160
+ {
161
+ "type": "array",
162
+ "elementType": {
163
+ "type": "reference",
164
+ "typeName": {
165
+ "type": "identifier",
166
+ "name": "BaseMessage"
167
+ }
168
+ }
169
+ }
170
+ ]
171
+ }
172
+ },
87
173
  {
88
174
  "name": "url",
89
175
  "annotation": {
@@ -125,20 +211,26 @@
125
211
  "types": [
126
212
  {
127
213
  "type": "interface",
128
- "name": "MessageChunk",
214
+ "name": "BaseMessage",
129
215
  "body": [
130
216
  {
131
217
  "type": "propertySignature",
132
218
  "key": {
133
219
  "type": "identifier",
134
- "name": "delta"
220
+ "name": "role"
135
221
  },
136
222
  "annotation": {
137
- "type": "reference",
138
- "typeName": {
139
- "type": "identifier",
140
- "name": "BaseMessage"
141
- }
223
+ "type": "union",
224
+ "types": [
225
+ {
226
+ "type": "jsLiteral",
227
+ "value": "user"
228
+ },
229
+ {
230
+ "type": "jsLiteral",
231
+ "value": "assistant"
232
+ }
233
+ ]
142
234
  },
143
235
  "computed": false
144
236
  },
@@ -146,24 +238,32 @@
146
238
  "type": "propertySignature",
147
239
  "key": {
148
240
  "type": "identifier",
149
- "name": "conversationId"
241
+ "name": "content"
150
242
  },
151
243
  "annotation": {
152
244
  "type": "keyword",
153
245
  "value": "string"
154
246
  },
155
- "optional": true,
156
247
  "computed": false
157
- },
248
+ }
249
+ ]
250
+ },
251
+ {
252
+ "type": "interface",
253
+ "name": "MessageChunk",
254
+ "body": [
158
255
  {
159
256
  "type": "propertySignature",
160
257
  "key": {
161
258
  "type": "identifier",
162
- "name": "key"
259
+ "name": "delta"
163
260
  },
164
261
  "annotation": {
165
- "type": "keyword",
166
- "value": "number"
262
+ "type": "reference",
263
+ "typeName": {
264
+ "type": "identifier",
265
+ "name": "BaseMessage"
266
+ }
167
267
  },
168
268
  "computed": false
169
269
  },
@@ -171,39 +271,24 @@
171
271
  "type": "propertySignature",
172
272
  "key": {
173
273
  "type": "identifier",
174
- "name": "partial"
274
+ "name": "conversationId"
175
275
  },
176
276
  "annotation": {
177
277
  "type": "keyword",
178
- "value": "boolean"
278
+ "value": "string"
179
279
  },
180
280
  "optional": true,
181
281
  "computed": false
182
- }
183
- ]
184
- },
185
- {
186
- "type": "interface",
187
- "name": "BaseMessage",
188
- "body": [
282
+ },
189
283
  {
190
284
  "type": "propertySignature",
191
285
  "key": {
192
286
  "type": "identifier",
193
- "name": "role"
287
+ "name": "key"
194
288
  },
195
289
  "annotation": {
196
- "type": "union",
197
- "types": [
198
- {
199
- "type": "jsLiteral",
200
- "value": "user"
201
- },
202
- {
203
- "type": "jsLiteral",
204
- "value": "assistant"
205
- }
206
- ]
290
+ "type": "keyword",
291
+ "value": "number"
207
292
  },
208
293
  "computed": false
209
294
  },
@@ -211,12 +296,13 @@
211
296
  "type": "propertySignature",
212
297
  "key": {
213
298
  "type": "identifier",
214
- "name": "content"
299
+ "name": "partial"
215
300
  },
216
301
  "annotation": {
217
302
  "type": "keyword",
218
- "value": "string"
303
+ "value": "boolean"
219
304
  },
305
+ "optional": true,
220
306
  "computed": false
221
307
  }
222
308
  ]
@@ -348,6 +434,13 @@
348
434
  "value": "boolean"
349
435
  }
350
436
  },
437
+ {
438
+ "name": "useSpiltWord",
439
+ "annotation": {
440
+ "type": "keyword",
441
+ "value": "boolean"
442
+ }
443
+ },
351
444
  {
352
445
  "name": "enterInterval",
353
446
  "annotation": {
@@ -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
- sendRequest(content: string, url: string, options: Options<MessageChunk>): Promise<string | null> | undefined;
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(content: string, url: string, options: Options<MessageChunk>): Promise<string | null>;
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;
@@ -49,12 +49,13 @@ export interface ChatBody {
49
49
  }
50
50
  export declare class ChatService {
51
51
  #private;
52
- constructor({ agentId, robotId, enterInterval, debug, answerLanguage, }: {
52
+ constructor({ agentId, robotId, enterInterval, debug, answerLanguage, useSpiltWord, }: {
53
53
  agentId: string;
54
54
  robotId: string;
55
55
  enterInterval: number;
56
56
  debug: boolean;
57
57
  answerLanguage?: string;
58
+ useSpiltWord?: boolean;
58
59
  });
59
60
  enqueue(data: QueueItem): void;
60
61
  dequeue(): QueueItem | undefined;
@@ -3,13 +3,14 @@ import { ChatBody, SessionItem } from "../ChatService.js";
3
3
  export declare const NEW_SESSION_ID = "new_session_id";
4
4
  export declare const RELATED_QUESTIONS_TYPE = "RELATED_QUESTIONS";
5
5
  export declare const DEFAULT_TYPE = "TEXT";
6
- export declare function useChatViewInfo({ agentId, robotId, sessionId, enterInterval, debug, answerLanguage, }: {
6
+ export declare function useChatViewInfo({ agentId, robotId, sessionId, enterInterval, debug, answerLanguage, useSpiltWord, }: {
7
7
  agentId: string;
8
8
  robotId: string;
9
9
  sessionId?: string;
10
10
  enterInterval?: number;
11
11
  debug: boolean;
12
12
  answerLanguage?: string;
13
+ useSpiltWord?: boolean;
13
14
  }): {
14
15
  sessionEnd: boolean;
15
16
  sessionLoading: boolean;
@@ -20,6 +20,7 @@ export interface ChatViewProps {
20
20
  showSessionList?: boolean;
21
21
  showLike?: boolean;
22
22
  showShare?: boolean;
23
+ useSpiltWord?: boolean;
23
24
  quickAnswerConfig?: QuickAnswerConfig;
24
25
  snippetList?: snippet[];
25
26
  enterInterval?: number;
@@ -30,7 +31,7 @@ export interface ChatViewProps {
30
31
  onSessionIdChange: (sessionId: string | undefined) => void;
31
32
  onQaFinish: (sessionId: string | undefined) => void;
32
33
  }
33
- export declare function LegacyChatViewComponent({ agentId, robotId, sessionId, showAvatar, showSessionList, readonly, showLike, showShare, quickAnswerConfig, snippetList, enterInterval, debug, commandBricks, answerLanguage, inputToolbarBrick, onSessionIdChange, onQaFinish, }: ChatViewProps, ref: React.Ref<SearchInputRef>): React.JSX.Element;
34
+ export declare function LegacyChatViewComponent({ agentId, robotId, sessionId, showAvatar, showSessionList, readonly, showLike, showShare, quickAnswerConfig, snippetList, enterInterval, debug, useSpiltWord, commandBricks, answerLanguage, inputToolbarBrick, onSessionIdChange, onQaFinish, }: ChatViewProps, ref: React.Ref<SearchInputRef>): React.JSX.Element;
34
35
  export declare const ChatViewComponent: React.ForwardRefExoticComponent<ChatViewProps & React.RefAttributes<SearchInputRef>>;
35
36
  /**
36
37
  * AI 对话终端
@@ -78,6 +79,11 @@ export declare class ChatView extends ReactNextElement {
78
79
  * @default true
79
80
  */
80
81
  accessor showShare: boolean | undefined;
82
+ /**
83
+ * 是否开启前端分词
84
+ * @default false
85
+ */
86
+ accessor useSpiltWord: boolean | undefined;
81
87
  /**
82
88
  * 输入间隔,设置为 -1 使用新的方式对大段消息进行模拟打字效果节流输出
83
89
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-bricks/ai",
3
- "version": "1.23.24",
3
+ "version": "1.25.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": "0dc80f976bbe10992b895eae022c6f86fab7507c"
53
+ "gitHead": "76a2d35073f4d5ba6c621719ef5113e4e48b94a9"
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":""}