|  | @@ -30,34 +30,24 @@ class CodeExecutionResponse(BaseModel):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class CodeExecutor:
 | 
	
		
			
				|  |  |      @classmethod
 | 
	
		
			
				|  |  | -    def execute_code(cls, language: Literal['python3', 'javascript', 'jinja2'], code: str, inputs: dict) -> dict:
 | 
	
		
			
				|  |  | +    def execute_code(cls, language: Literal['python3', 'javascript', 'jinja2'], preload: str, code: str) -> str:
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  |          Execute code
 | 
	
		
			
				|  |  |          :param language: code language
 | 
	
		
			
				|  |  |          :param code: code
 | 
	
		
			
				|  |  | -        :param inputs: inputs
 | 
	
		
			
				|  |  |          :return:
 | 
	
		
			
				|  |  |          """
 | 
	
		
			
				|  |  | -        template_transformer = None
 | 
	
		
			
				|  |  | -        if language == 'python3':
 | 
	
		
			
				|  |  | -            template_transformer = PythonTemplateTransformer
 | 
	
		
			
				|  |  | -        elif language == 'jinja2':
 | 
	
		
			
				|  |  | -            template_transformer = Jinja2TemplateTransformer
 | 
	
		
			
				|  |  | -        elif language == 'javascript':
 | 
	
		
			
				|  |  | -            template_transformer = NodeJsTemplateTransformer
 | 
	
		
			
				|  |  | -        else:
 | 
	
		
			
				|  |  | -            raise CodeExecutionException('Unsupported language')
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        runner, preload = template_transformer.transform_caller(code, inputs)
 | 
	
		
			
				|  |  |          url = URL(CODE_EXECUTION_ENDPOINT) / 'v1' / 'sandbox' / 'run'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          headers = {
 | 
	
		
			
				|  |  |              'X-Api-Key': CODE_EXECUTION_API_KEY
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          data = {
 | 
	
		
			
				|  |  |              'language': 'python3' if language == 'jinja2' else
 | 
	
		
			
				|  |  |                          'nodejs' if language == 'javascript' else
 | 
	
		
			
				|  |  |                          'python3' if language == 'python3' else None,
 | 
	
		
			
				|  |  | -            'code': runner,
 | 
	
		
			
				|  |  | +            'code': code,
 | 
	
		
			
				|  |  |              'preload': preload
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -85,4 +75,32 @@ class CodeExecutor:
 | 
	
		
			
				|  |  |          if response.data.error:
 | 
	
		
			
				|  |  |              raise CodeExecutionException(response.data.error)
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  | -        return template_transformer.transform_response(response.data.stdout)
 | 
	
		
			
				|  |  | +        return response.data.stdout
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @classmethod
 | 
	
		
			
				|  |  | +    def execute_workflow_code_template(cls, language: Literal['python3', 'javascript', 'jinja2'], code: str, inputs: dict) -> dict:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        Execute code
 | 
	
		
			
				|  |  | +        :param language: code language
 | 
	
		
			
				|  |  | +        :param code: code
 | 
	
		
			
				|  |  | +        :param inputs: inputs
 | 
	
		
			
				|  |  | +        :return:
 | 
	
		
			
				|  |  | +        """
 | 
	
		
			
				|  |  | +        template_transformer = None
 | 
	
		
			
				|  |  | +        if language == 'python3':
 | 
	
		
			
				|  |  | +            template_transformer = PythonTemplateTransformer
 | 
	
		
			
				|  |  | +        elif language == 'jinja2':
 | 
	
		
			
				|  |  | +            template_transformer = Jinja2TemplateTransformer
 | 
	
		
			
				|  |  | +        elif language == 'javascript':
 | 
	
		
			
				|  |  | +            template_transformer = NodeJsTemplateTransformer
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            raise CodeExecutionException('Unsupported language')
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        runner, preload = template_transformer.transform_caller(code, inputs)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            response = cls.execute_code(language, preload, runner)
 | 
	
		
			
				|  |  | +        except CodeExecutionException as e:
 | 
	
		
			
				|  |  | +            raise e
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return template_transformer.transform_response(response)
 |