|  | @@ -5,7 +5,12 @@ from typing import Any, Optional, Union
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_serializer, field_validator
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -from core.entities.parameter_entities import AppSelectorScope, CommonParameterType, ModelConfigScope
 | 
	
		
			
				|  |  | +from core.entities.parameter_entities import (
 | 
	
		
			
				|  |  | +    AppSelectorScope,
 | 
	
		
			
				|  |  | +    CommonParameterType,
 | 
	
		
			
				|  |  | +    ModelSelectorScope,
 | 
	
		
			
				|  |  | +    ToolSelectorScope,
 | 
	
		
			
				|  |  | +)
 | 
	
		
			
				|  |  |  from core.entities.provider_entities import ProviderConfig
 | 
	
		
			
				|  |  |  from core.tools.entities.common_entities import I18nObject
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -209,6 +214,9 @@ class ToolParameter(BaseModel):
 | 
	
		
			
				|  |  |          SECRET_INPUT = CommonParameterType.SECRET_INPUT.value
 | 
	
		
			
				|  |  |          FILE = CommonParameterType.FILE.value
 | 
	
		
			
				|  |  |          FILES = CommonParameterType.FILES.value
 | 
	
		
			
				|  |  | +        APP_SELECTOR = CommonParameterType.APP_SELECTOR.value
 | 
	
		
			
				|  |  | +        TOOL_SELECTOR = CommonParameterType.TOOL_SELECTOR.value
 | 
	
		
			
				|  |  | +        MODEL_SELECTOR = CommonParameterType.MODEL_SELECTOR.value
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          # deprecated, should not use.
 | 
	
		
			
				|  |  |          SYSTEM_FILES = CommonParameterType.SYSTEM_FILES.value
 | 
	
	
		
			
				|  | @@ -271,6 +279,14 @@ class ToolParameter(BaseModel):
 | 
	
		
			
				|  |  |                              else:
 | 
	
		
			
				|  |  |                                  return value[0]
 | 
	
		
			
				|  |  |                          return value
 | 
	
		
			
				|  |  | +                    case (
 | 
	
		
			
				|  |  | +                        ToolParameter.ToolParameterType.TOOL_SELECTOR
 | 
	
		
			
				|  |  | +                        | ToolParameter.ToolParameterType.MODEL_SELECTOR
 | 
	
		
			
				|  |  | +                        | ToolParameter.ToolParameterType.APP_SELECTOR
 | 
	
		
			
				|  |  | +                    ):
 | 
	
		
			
				|  |  | +                        if not isinstance(value, dict):
 | 
	
		
			
				|  |  | +                            raise ValueError("The selector must be a dictionary.")
 | 
	
		
			
				|  |  | +                        return value
 | 
	
		
			
				|  |  |                      case _:
 | 
	
		
			
				|  |  |                          return str(value)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -287,7 +303,7 @@ class ToolParameter(BaseModel):
 | 
	
		
			
				|  |  |      human_description: Optional[I18nObject] = Field(default=None, description="The description presented to the user")
 | 
	
		
			
				|  |  |      placeholder: Optional[I18nObject] = Field(default=None, description="The placeholder presented to the user")
 | 
	
		
			
				|  |  |      type: ToolParameterType = Field(..., description="The type of the parameter")
 | 
	
		
			
				|  |  | -    scope: AppSelectorScope | ModelConfigScope | None = None
 | 
	
		
			
				|  |  | +    scope: AppSelectorScope | ModelSelectorScope | ToolSelectorScope | None = None
 | 
	
		
			
				|  |  |      form: ToolParameterForm = Field(..., description="The form of the parameter, schema/form/llm")
 | 
	
		
			
				|  |  |      llm_description: Optional[str] = None
 | 
	
		
			
				|  |  |      required: Optional[bool] = False
 |