2025-05-17 12:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  API_PREFIX ,  IS_CE_EDITION ,  PUBLIC_API_PREFIX  }  from  '@/config'  
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  refreshAccessTokenOrRelogin  }  from  './refresh-token'  
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  Toast  from  '@/app/components/base/toast'  
						 
					
						
							
								
									
										
										
										
											2025-05-17 12:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  basePath  }  from  '@/utils/var'  
						 
					
						
							
								
									
										
										
										
											2024-06-24 12:29:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  type  {  AnnotationReply ,  MessageEnd ,  MessageReplace ,  ThoughtItem  }  from  '@/app/components/base/chat/chat/type'  
						 
					
						
							
								
									
										
										
										
											2024-01-23 19:31:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  type  {  VisionFile  }  from  '@/types/app'  
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  type  {  
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  AgentLogResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IterationFinishedResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-08 12:14:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IterationNextResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  IterationStartedResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  LoopFinishedResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LoopNextResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LoopStartedResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  NodeFinishedResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  NodeStartedResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 15:23:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  ParallelBranchFinishedResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ParallelBranchStartedResponse , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  TextChunkResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  TextReplaceResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  WorkflowFinishedResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  WorkflowStartedResponse , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  from  '@/types/workflow'  
						 
					
						
							
								
									
										
										
										
											2024-05-15 16:14:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  removeAccessToken  }  from  '@/app/components/share/utils'  
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  type  {  FetchOptionType ,  ResponseError  }  from  './fetch'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  {  ContentType ,  base ,  baseOptions ,  getAccessToken  }  from  './fetch'  
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  asyncRunSafe  }  from  '@/utils'  
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								const  TIME_OUT  =  100000  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnDataMoreInfo  =  {  
						 
					
						
							
								
									
										
										
										
											2023-06-12 16:37:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  conversationId? : string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  taskId? : string 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  messageId : string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  errorMessage? : string 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-18 10:39:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  errorCode? : string 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnData  =  ( message : string ,  isFirstMessage : boolean ,  moreInfo : IOnDataMoreInfo )  = >  void  
						 
					
						
							
								
									
										
										
										
											2023-07-27 13:27:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnThought  =  ( though : ThoughtItem )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-01-23 19:31:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnFile  =  ( file : VisionFile )  = >  void  
						 
					
						
							
								
									
										
										
										
											2023-09-09 19:17:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnMessageEnd  =  ( messageEnd : MessageEnd )  = >  void  
						 
					
						
							
								
									
										
										
										
											2023-11-06 19:36:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnMessageReplace  =  ( messageReplace : MessageReplace )  = >  void  
						 
					
						
							
								
									
										
										
										
											2023-12-18 15:41:24 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnAnnotationReply  =  ( messageReplace : AnnotationReply )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnCompleted  =  ( hasError? : boolean ,  errorMessage? : string )  = >  void  
						 
					
						
							
								
									
										
										
										
											2023-08-18 10:39:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnError  =  ( msg : string ,  code? : string )  = >  void  
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnWorkflowStarted  =  ( workflowStarted : WorkflowStartedResponse )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnWorkflowFinished  =  ( workflowFinished : WorkflowFinishedResponse )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnNodeStarted  =  ( nodeStarted : NodeStartedResponse )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnNodeFinished  =  ( nodeFinished : NodeFinishedResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnIterationStarted  =  ( workflowStarted : IterationStartedResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-09-08 12:14:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnIterationNext  =  ( workflowStarted : IterationNextResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-12-20 15:44:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnNodeRetry  =  ( nodeFinished : NodeFinishedResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnIterationFinished  =  ( workflowFinished : IterationFinishedResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-09-10 15:23:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnParallelBranchStarted  =  ( parallelBranchStarted : ParallelBranchStartedResponse )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnParallelBranchFinished  =  ( parallelBranchFinished : ParallelBranchFinishedResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnTextChunk  =  ( textChunk : TextChunkResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-07-09 11:33:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnTTSChunk  =  ( messageId : string ,  audioStr : string ,  audioType? : string )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnTTSEnd  =  ( messageId : string ,  audioStr : string ,  audioType? : string )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnTextReplace  =  ( textReplace : TextReplaceResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnLoopStarted  =  ( workflowStarted : LoopStartedResponse )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnLoopNext  =  ( workflowStarted : LoopNextResponse )  = >  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOnLoopFinished  =  ( workflowFinished : LoopFinishedResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  type  IOnAgentLog  =  ( agentLog : AgentLogResponse )  = >  void  
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  type  IOtherOptions  =  {  
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  isPublicAPI? : boolean 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  isMarketplaceAPI? : boolean 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-07 17:50:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  bodyStringify? : boolean 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  needAllResponseContent? : boolean 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-07 17:50:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  deleteContentType? : boolean 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  silent? : boolean 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  onData? : IOnData  // for stream
 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-27 13:27:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onThought? : IOnThought 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 19:31:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onFile? : IOnFile 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-09 19:17:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onMessageEnd? : IOnMessageEnd 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-06 19:36:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onMessageReplace? : IOnMessageReplace 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  onError? : IOnError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onCompleted? : IOnCompleted  // for stream
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  getAbortController ? :  ( abortController : AbortController )  = >  void 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onWorkflowStarted? : IOnWorkflowStarted 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onWorkflowFinished? : IOnWorkflowFinished 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onNodeStarted? : IOnNodeStarted 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onNodeFinished? : IOnNodeFinished 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onIterationStart? : IOnIterationStarted 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-08 12:14:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onIterationNext? : IOnIterationNext 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onIterationFinish? : IOnIterationFinished 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-20 15:44:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onNodeRetry? : IOnNodeRetry 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 15:23:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onParallelBranchStarted? : IOnParallelBranchStarted 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onParallelBranchFinished? : IOnParallelBranchFinished 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onTextChunk? : IOnTextChunk 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 11:33:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onTTSChunk? : IOnTTSChunk 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onTTSEnd? : IOnTTSEnd 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onTextReplace? : IOnTextReplace 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onLoopStart? : IOnLoopStarted 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onLoopNext? : IOnLoopNext 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onLoopFinish? : IOnLoopFinished 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onAgentLog? : IOnAgentLog 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  unicodeToChar ( text : string )  {  
						 
					
						
							
								
									
										
										
										
											2023-07-27 13:27:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( ! text ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  '' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  return  text . replace ( /\\u[0-9a-f]{4}/g ,  ( _match ,  p1 )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  String . fromCharCode ( Number . parseInt ( p1 ,  16 ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  requiredWebSSOLogin ( message? : string ,  code? : number )  {  
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  params  =  new  URLSearchParams ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  params . append ( 'redirect_url' ,  globalThis . location . pathname ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( message ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    params . append ( 'message' ,  message ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( code ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    params . append ( 'code' ,  String ( code ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  globalThis . location . href  =  ` /webapp-signin? ${ params . toString ( ) } ` 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-15 16:14:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								export  function  format ( text : string )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let  res  =  text . trim ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( res . startsWith ( '\n' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    res  =  res . replace ( '\n' ,  '' ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  return  res . replaceAll ( '\n' ,  '<br/>' ) . replaceAll ( '```' ,  '' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  handleStream  =  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  response : Response , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onData : IOnData , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onCompleted? : IOnCompleted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onThought? : IOnThought , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onMessageEnd? : IOnMessageEnd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onMessageReplace? : IOnMessageReplace , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onFile? : IOnFile , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onWorkflowStarted? : IOnWorkflowStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onWorkflowFinished? : IOnWorkflowFinished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onNodeStarted? : IOnNodeStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onNodeFinished? : IOnNodeFinished , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onIterationStart? : IOnIterationStarted , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-08 12:14:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onIterationNext? : IOnIterationNext , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onIterationFinish? : IOnIterationFinished , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onLoopStart? : IOnLoopStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onLoopNext? : IOnLoopNext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onLoopFinish? : IOnLoopFinished , 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-20 15:44:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onNodeRetry? : IOnNodeRetry , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 15:23:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onParallelBranchStarted? : IOnParallelBranchStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onParallelBranchFinished? : IOnParallelBranchFinished , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onTextChunk? : IOnTextChunk , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 11:33:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onTTSChunk? : IOnTTSChunk , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  onTTSEnd? : IOnTTSEnd , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onTextReplace? : IOnTextReplace , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  onAgentLog? : IOnAgentLog , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  = >  {  
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  if  ( ! response . ok ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    throw  new  Error ( 'Network response was not ok' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  reader  =  response . body ? . getReader ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  const  decoder  =  new  TextDecoder ( 'utf-8' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  let  buffer  =  '' 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  let  bufferObj : Record < string ,  any > 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  let  isFirstMessage  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  function  read() { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    let  hasError  =  false 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    reader ? . read ( ) . then ( ( result : any )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      if  ( result . done )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onCompleted  &&  onCompleted ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      buffer  +=  decoder . decode ( result . value ,  {  stream : true  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  lines  =  buffer . split ( '\n' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        lines . forEach ( ( message )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( message . startsWith ( 'data: ' ) )  {  // check if it starts with data:
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            try  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              bufferObj  =  JSON . parse ( message . substring ( 6 ) )  as  Record < string ,  any > // remove data: and parse as json
 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-14 11:27:14 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            catch  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              // mute handle message cut off
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onData ( '' ,  isFirstMessage ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                conversationId : bufferObj?.conversation_id , 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-26 15:08:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                messageId : bufferObj?.message_id , 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-22 16:05:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( bufferObj . status  ===  400  ||  ! bufferObj . event )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								              onData ( '' ,  false ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                conversationId : undefined , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                messageId :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                errorMessage : bufferObj?.message , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                errorCode : bufferObj?.code , 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								              } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              hasError  =  true 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              onCompleted ? . ( true ,  bufferObj ? . message ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								              return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 19:31:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( bufferObj . event  ===  'message'  ||  bufferObj . event  ===  'agent_message' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-08 12:14:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              // can not use format here. Because message is splitted.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-27 13:27:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              onData ( unicodeToChar ( bufferObj . answer ) ,  isFirstMessage ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                conversationId : bufferObj.conversation_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                taskId : bufferObj.task_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                messageId : bufferObj.id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              isFirstMessage  =  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'agent_thought' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              onThought ? . ( bufferObj  as  ThoughtItem ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-27 13:27:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-23 19:31:56 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'message_file' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onFile ? . ( bufferObj  as  VisionFile ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-09 19:17:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'message_end' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-20 12:27:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              onMessageEnd ? . ( bufferObj  as  MessageEnd ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-09 19:17:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-06 19:36:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'message_replace' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onMessageReplace ? . ( bufferObj  as  MessageReplace ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'workflow_started' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onWorkflowStarted ? . ( bufferObj  as  WorkflowStartedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'workflow_finished' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onWorkflowFinished ? . ( bufferObj  as  WorkflowFinishedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'node_started' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onNodeStarted ? . ( bufferObj  as  NodeStartedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'node_finished' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onNodeFinished ? . ( bufferObj  as  NodeFinishedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'iteration_started' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onIterationStart ? . ( bufferObj  as  IterationStartedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'iteration_next' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-08 12:14:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              onIterationNext ? . ( bufferObj  as  IterationNextResponse ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'iteration_completed' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onIterationFinish ? . ( bufferObj  as  IterationFinishedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'loop_started' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onLoopStart ? . ( bufferObj  as  LoopStartedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'loop_next' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onLoopNext ? . ( bufferObj  as  LoopNextResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'loop_completed' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onLoopFinish ? . ( bufferObj  as  LoopFinishedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-20 15:44:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'node_retry' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onNodeRetry ? . ( bufferObj  as  NodeFinishedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 15:23:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'parallel_branch_started' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onParallelBranchStarted ? . ( bufferObj  as  ParallelBranchStartedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'parallel_branch_finished' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onParallelBranchFinished ? . ( bufferObj  as  ParallelBranchFinishedResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'text_chunk' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onTextChunk ? . ( bufferObj  as  TextChunkResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'text_replace' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onTextReplace ? . ( bufferObj  as  TextReplaceResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'agent_log' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onAgentLog ? . ( bufferObj  as  AgentLogResponse ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 11:33:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'tts_message' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onTTSChunk ? . ( bufferObj . message_id ,  bufferObj . audio ,  bufferObj . audio_type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else  if  ( bufferObj . event  ===  'tts_message_end' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              onTTSEnd ? . ( bufferObj . message_id ,  bufferObj . audio ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        buffer  =  lines [ lines . length  -  1 ] 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      catch  ( e )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        onData ( '' ,  false ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          conversationId : undefined , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          messageId :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          errorMessage :  ` ${ e } ` , 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        hasError  =  true 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        onCompleted ? . ( true ,  e  as  string ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! hasError ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        read ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  read ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  baseFetch  =  base  
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-16 21:08:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  upload  =  async  ( options : any ,  isPublicAPI? : boolean ,  url? : string ,  searchParams? : string ) :  Promise < any >  = >  {  
						 
					
						
							
								
									
										
										
										
											2023-11-13 22:32:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  urlPrefix  =  isPublicAPI  ?  PUBLIC_API_PREFIX  : API_PREFIX 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-16 21:08:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  token  =  await  getAccessToken ( isPublicAPI ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  const  defaultOptions  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    method :  'POST' , 
							 
						 
					
						
							
								
									
										
										
										
											2024-03-03 12:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    url :  ( url  ?  ` ${ urlPrefix } ${ url } `  :  ` ${ urlPrefix } /files/upload ` )  +  ( searchParams  ||  '' ) , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-25 12:49:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    headers :  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-11-13 22:32:39 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Authorization :  ` Bearer  ${ token } ` , 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-25 12:49:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    data :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  options  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    . . . defaultOptions , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    . . . options , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    headers :  {  . . . defaultOptions . headers ,  . . . options . headers  } , 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  new  Promise ( ( resolve ,  reject )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  xhr  =  options . xhr 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    xhr . open ( options . method ,  options . url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( const  key  in  options . headers ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      xhr . setRequestHeader ( key ,  options . headers [ key ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    xhr . withCredentials  =  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . responseType  =  'json' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . onreadystatechange  =  function  ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( xhr . readyState  ===  4 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( xhr . status  ===  201 ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          resolve ( xhr . response ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-06-05 09:55:03 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          reject ( xhr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . upload . onprogress  =  options . onprogress 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    xhr . send ( options . data ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-16 21:08:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  ssePost  =  async  (  
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  url : string , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fetchOptions : FetchOptionType , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  otherOptions : IOtherOptions , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    isPublicAPI  =  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onData , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onCompleted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onThought , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onFile , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onMessageEnd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onMessageReplace , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onWorkflowStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onWorkflowFinished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onNodeStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onNodeFinished , 
							 
						 
					
						
							
								
									
										
										
										
											2024-05-27 21:57:08 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onIterationStart , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onIterationNext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onIterationFinish , 
							 
						 
					
						
							
								
									
										
										
										
											2024-12-20 15:44:37 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onNodeRetry , 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-10 15:23:16 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onParallelBranchStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onParallelBranchFinished , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onTextChunk , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-09 11:33:58 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onTTSChunk , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onTTSEnd , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onTextReplace , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onAgentLog , 
							 
						 
					
						
							
								
									
										
										
										
											2024-04-08 18:51:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getAbortController , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    onLoopStart , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onLoopNext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    onLoopFinish , 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }  =  otherOptions 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  const  abortController  =  new  AbortController ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  token  =  localStorage . getItem ( 'console_token' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  const  options  =  Object . assign ( { } ,  baseOptions ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    method :  'POST' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    signal : abortController.signal , 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    headers : new  Headers ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Authorization :  ` Bearer  ${ token } ` , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  as  RequestInit ,  fetchOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  contentType  =  ( options . headers  as  Headers ) . get ( 'Content-Type' ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-07 17:50:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( ! contentType ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ( options . headers  as  Headers ) . set ( 'Content-Type' ,  ContentType . json ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-07 17:50:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  getAbortController ? . ( abortController ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  urlPrefix  =  isPublicAPI  ?  PUBLIC_API_PREFIX  : API_PREFIX 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-08 17:17:34 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  urlWithPrefix  =  ( url . startsWith ( 'http://' )  ||  url . startsWith ( 'https://' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ?  url 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    :  ` ${ urlPrefix } ${ url . startsWith ( '/' )  ?  url  :  ` / ${ url } ` } ` 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  {  body  }  =  options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  ( body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    options . body  =  JSON . stringify ( body ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-04-16 21:08:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  const  accessToken  =  await  getAccessToken ( isPublicAPI ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-14 15:28:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ;  ( options . headers  as  Headers ) . set ( 'Authorization' ,  ` Bearer  ${ accessToken } ` ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-20 16:11:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  globalThis . fetch ( urlWithPrefix ,  options  as  RequestInit ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    . then ( ( res )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-04-14 15:28:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! /^[23]\d{2}$/ . test ( String ( res . status ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( res . status  ===  401 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          refreshAccessTokenOrRelogin ( TIME_OUT ) . then ( ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ssePost ( url ,  fetchOptions ,  otherOptions ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) . catch ( ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            res . json ( ) . then ( ( data : any )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              if  ( isPublicAPI )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( data . code  ===  'web_app_access_denied' ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                  requiredWebSSOLogin ( data . message ,  403 ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( data . code  ===  'web_sso_auth_required' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  removeAccessToken ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-17 11:33:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                  requiredWebSSOLogin ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( data . code  ===  'unauthorized' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  removeAccessToken ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  globalThis . location . reload ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          res . json ( ) . then ( ( data )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            Toast . notify ( {  type :  'error' ,  message : data.message  ||  'Server Error'  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          onError ? . ( 'Server Error' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  handleStream ( res ,  ( str : string ,  isFirstMessage : boolean ,  moreInfo : IOnDataMoreInfo )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( moreInfo . errorMessage )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-18 10:39:05 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          onError ? . ( moreInfo . errorMessage ,  moreInfo . errorCode ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-12 11:25:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          // TypeError: Cannot assign to read only property ... will happen in page leave, so it should be ignored.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( moreInfo . errorMessage  !==  'AbortError: The user aborted a request.'  &&  ! moreInfo . errorMessage . includes ( 'TypeError: Cannot assign to read only property' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-13 10:32:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            Toast . notify ( {  type :  'error' ,  message : moreInfo.errorMessage  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onData ? . ( str ,  isFirstMessage ,  moreInfo ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } , 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        onCompleted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onThought , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onMessageEnd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onMessageReplace , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onFile , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onWorkflowStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onWorkflowFinished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onNodeStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onNodeFinished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onIterationStart , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onIterationNext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onIterationFinish , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onLoopStart , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onLoopNext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onLoopFinish , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onNodeRetry , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onParallelBranchStarted , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onParallelBranchFinished , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onTextChunk , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onTTSChunk , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onTTSEnd , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onTextReplace , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        onAgentLog , 
							 
						 
					
						
							
								
									
										
										
										
											2025-03-05 17:41:15 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) . catch ( ( e )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-08-12 11:25:10 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( e . toString ( )  !==  'AbortError: The user aborted a request.'  &&  ! e . toString ( ) . errorMessage . includes ( 'TypeError: Cannot assign to read only property' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-07-13 10:32:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Toast . notify ( {  type :  'error' ,  message : e  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      onError ? . ( e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// base request
  
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  request  =  async < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  try  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  otherOptionsForBaseFetch  =  otherOptions  ||  { } 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  [ err ,  resp ]  =  await  asyncRunSafe < T > ( baseFetch ( url ,  options ,  otherOptionsForBaseFetch ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err  ===  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  resp 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  errResp : Response  =  err  as  any 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( errResp . status  ===  401 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  [ parseErr ,  errRespData ]  =  await  asyncRunSafe < ResponseError > ( errResp . json ( ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-17 12:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      const  loginUrl  =  ` ${ globalThis . location . origin } ${ basePath } /signin ` 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( parseErr )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        globalThis . location . href  =  loginUrl 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // special code
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  {  code ,  message  }  =  errRespData 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      // webapp sso
 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( code  ===  'web_app_access_denied' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        requiredWebSSOLogin ( message ,  403 ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-20 12:07:50 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( code  ===  'web_sso_auth_required' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-09 15:44:49 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        removeAccessToken ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-06-17 11:33:46 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        requiredWebSSOLogin ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( code  ===  'unauthorized_and_force_logout' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        localStorage . removeItem ( 'console_token' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        localStorage . removeItem ( 'refresh_token' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        globalThis . location . reload ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        isPublicAPI  =  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        silent , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  =  otherOptionsForBaseFetch 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( isPublicAPI  &&  code  ===  'unauthorized' )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        removeAccessToken ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        globalThis . location . reload ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( code  ===  'init_validate_failed'  &&  IS_CE_EDITION  &&  ! silent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Toast . notify ( {  type :  'error' ,  message ,  duration : 4000  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( code  ===  'not_init_validated'  &&  IS_CE_EDITION )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-17 12:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        globalThis . location . href  =  ` ${ globalThis . location . origin } ${ basePath } /init ` 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( code  ===  'not_setup'  &&  IS_CE_EDITION )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-17 12:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        globalThis . location . href  =  ` ${ globalThis . location . origin } ${ basePath } /install ` 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      // refresh token
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      const  [ refreshErr ]  =  await  asyncRunSafe ( refreshAccessTokenOrRelogin ( TIME_OUT ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( refreshErr  ===  null ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  baseFetch < T > ( url ,  options ,  otherOptionsForBaseFetch ) 
							 
						 
					
						
							
								
									
										
										
										
											2025-05-17 12:32:27 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( location . pathname  !==  ` ${ basePath } /signin `  ||  ! IS_CE_EDITION )  { 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        globalThis . location . href  =  loginUrl 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( ! silent )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Toast . notify ( {  type :  'error' ,  message  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  Promise . reject ( err ) 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-05 12:38:31 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2024-11-15 17:59:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      globalThis . location . href  =  loginUrl 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return  Promise . reject ( err ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  catch  ( error )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    console . error ( error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  Promise . reject ( error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// request methods
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  const  get  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  request < T > ( url ,  Object . assign ( { } ,  options ,  {  method :  'GET'  } ) ,  otherOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// For public API
  
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  getPublic  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  get < T > ( url ,  options ,  {  . . . otherOptions ,  isPublicAPI : true  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// For Marketplace API
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  const  getMarketplace  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  get < T > ( url ,  options ,  {  . . . otherOptions ,  isMarketplaceAPI : true  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  post  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  request < T > ( url ,  Object . assign ( { } ,  options ,  {  method :  'POST'  } ) ,  otherOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-02-17 17:05:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// For Marketplace API
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  const  postMarketplace  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  post < T > ( url ,  options ,  {  . . . otherOptions ,  isMarketplaceAPI : true  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  postPublic  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  post < T > ( url ,  options ,  {  . . . otherOptions ,  isPublicAPI : true  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  put  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  request < T > ( url ,  Object . assign ( { } ,  options ,  {  method :  'PUT'  } ) ,  otherOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  putPublic  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  put < T > ( url ,  options ,  {  . . . otherOptions ,  isPublicAPI : true  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  del  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  request < T > ( url ,  Object . assign ( { } ,  options ,  {  method :  'DELETE'  } ) ,  otherOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  delPublic  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  del < T > ( url ,  options ,  {  . . . otherOptions ,  isPublicAPI : true  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  patch  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  request < T > ( url ,  Object . assign ( { } ,  options ,  {  method :  'PATCH'  } ) ,  otherOptions ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-15 20:54:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								export  const  patchPublic  =  < T > ( url : string ,  options  =  { } ,  otherOptions? : IOtherOptions )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  patch < T > ( url ,  options ,  {  . . . otherOptions ,  isPublicAPI : true  } ) 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-15 08:51:32 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}