| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | import type { ValueSelector } from '../../workflow/types' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-12 23:14:28 +08:00
										 |  |  | export const CONTEXT_PLACEHOLDER_TEXT = '{{#context#}}' | 
					
						
							|  |  |  | export const HISTORY_PLACEHOLDER_TEXT = '{{#histories#}}' | 
					
						
							|  |  |  | export const QUERY_PLACEHOLDER_TEXT = '{{#query#}}' | 
					
						
							|  |  |  | export const PRE_PROMPT_PLACEHOLDER_TEXT = '{{#pre_prompt#}}' | 
					
						
							|  |  |  | export const UPDATE_DATASETS_EVENT_EMITTER = 'prompt-editor-context-block-update-datasets' | 
					
						
							|  |  |  | export const UPDATE_HISTORY_EVENT_EMITTER = 'prompt-editor-history-block-update-role' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const checkHasContextBlock = (text: string) => { | 
					
						
							|  |  |  |   if (!text) | 
					
						
							|  |  |  |     return false | 
					
						
							|  |  |  |   return text.includes(CONTEXT_PLACEHOLDER_TEXT) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const checkHasHistoryBlock = (text: string) => { | 
					
						
							|  |  |  |   if (!text) | 
					
						
							|  |  |  |     return false | 
					
						
							|  |  |  |   return text.includes(HISTORY_PLACEHOLDER_TEXT) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const checkHasQueryBlock = (text: string) => { | 
					
						
							|  |  |  |   if (!text) | 
					
						
							|  |  |  |     return false | 
					
						
							|  |  |  |   return text.includes(QUERY_PLACEHOLDER_TEXT) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  | * {{#1711617514996.name#}} => [1711617514996, name] | 
					
						
							|  |  |  | * {{#1711617514996.sys.query#}} => [sys, query] | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | export const getInputVars = (text: string): ValueSelector[] => { | 
					
						
							| 
									
										
										
										
											2024-04-25 18:01:53 +08:00
										 |  |  |   if (!text) | 
					
						
							|  |  |  |     return [] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |   const allVars = text.match(/{{#([^#]*)#}}/g) | 
					
						
							|  |  |  |   if (allVars && allVars?.length > 0) { | 
					
						
							|  |  |  |     // {{#context#}}, {{#query#}} is not input vars
 | 
					
						
							|  |  |  |     const inputVars = allVars | 
					
						
							|  |  |  |       .filter(item => item.includes('.')) | 
					
						
							|  |  |  |       .map((item) => { | 
					
						
							|  |  |  |         const valueSelector = item.replace('{{#', '').replace('#}}', '').split('.') | 
					
						
							|  |  |  |         if (valueSelector[1] === 'sys' && /^\d+$/.test(valueSelector[0])) | 
					
						
							|  |  |  |           return valueSelector.slice(1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return valueSelector | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  |     return inputVars | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   return [] | 
					
						
							|  |  |  | } |