Co-authored-by: Joel <iamjoel007@gmail.com>tags/0.9.2
| @@ -113,6 +113,7 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator): | |||
| # always enable retriever resource in debugger mode | |||
| app_config.additional_features.show_retrieve_source = True | |||
| workflow_run_id = str(uuid.uuid4()) | |||
| # init application generate entity | |||
| application_generate_entity = AdvancedChatAppGenerateEntity( | |||
| task_id=str(uuid.uuid4()), | |||
| @@ -127,6 +128,7 @@ class AdvancedChatAppGenerator(MessageBasedAppGenerator): | |||
| invoke_from=invoke_from, | |||
| extras=extras, | |||
| trace_manager=trace_manager, | |||
| workflow_run_id=workflow_run_id, | |||
| ) | |||
| contexts.tenant_id.set(application_generate_entity.app_config.tenant_id) | |||
| @@ -149,6 +149,9 @@ class AdvancedChatAppRunner(WorkflowBasedAppRunner): | |||
| SystemVariableKey.CONVERSATION_ID: self.conversation.id, | |||
| SystemVariableKey.USER_ID: user_id, | |||
| SystemVariableKey.DIALOGUE_COUNT: conversation_dialogue_count, | |||
| SystemVariableKey.APP_ID: app_config.app_id, | |||
| SystemVariableKey.WORKFLOW_ID: app_config.workflow_id, | |||
| SystemVariableKey.WORKFLOW_RUN_ID: self.application_generate_entity.workflow_run_id, | |||
| } | |||
| # init variable pool | |||
| @@ -107,6 +107,10 @@ class AdvancedChatAppGenerateTaskPipeline(BasedGenerateTaskPipeline, WorkflowCyc | |||
| SystemVariableKey.FILES: application_generate_entity.files, | |||
| SystemVariableKey.CONVERSATION_ID: conversation.id, | |||
| SystemVariableKey.USER_ID: user_id, | |||
| SystemVariableKey.DIALOGUE_COUNT: conversation.dialogue_count, | |||
| SystemVariableKey.APP_ID: application_generate_entity.app_config.app_id, | |||
| SystemVariableKey.WORKFLOW_ID: workflow.id, | |||
| SystemVariableKey.WORKFLOW_RUN_ID: application_generate_entity.workflow_run_id, | |||
| } | |||
| self._task_state = WorkflowTaskState() | |||
| @@ -99,6 +99,7 @@ class WorkflowAppGenerator(BaseAppGenerator): | |||
| user_id = user.id if isinstance(user, Account) else user.session_id | |||
| trace_manager = TraceQueueManager(app_model.id, user_id) | |||
| workflow_run_id = str(uuid.uuid4()) | |||
| # init application generate entity | |||
| application_generate_entity = WorkflowAppGenerateEntity( | |||
| task_id=str(uuid.uuid4()), | |||
| @@ -110,6 +111,7 @@ class WorkflowAppGenerator(BaseAppGenerator): | |||
| invoke_from=invoke_from, | |||
| call_depth=call_depth, | |||
| trace_manager=trace_manager, | |||
| workflow_run_id=workflow_run_id, | |||
| ) | |||
| contexts.tenant_id.set(application_generate_entity.app_config.tenant_id) | |||
| @@ -90,6 +90,9 @@ class WorkflowAppRunner(WorkflowBasedAppRunner): | |||
| system_inputs = { | |||
| SystemVariableKey.FILES: files, | |||
| SystemVariableKey.USER_ID: user_id, | |||
| SystemVariableKey.APP_ID: app_config.app_id, | |||
| SystemVariableKey.WORKFLOW_ID: app_config.workflow_id, | |||
| SystemVariableKey.WORKFLOW_RUN_ID: self.application_generate_entity.workflow_run_id, | |||
| } | |||
| variable_pool = VariablePool( | |||
| @@ -97,6 +97,9 @@ class WorkflowAppGenerateTaskPipeline(BasedGenerateTaskPipeline, WorkflowCycleMa | |||
| self._workflow_system_variables = { | |||
| SystemVariableKey.FILES: application_generate_entity.files, | |||
| SystemVariableKey.USER_ID: user_id, | |||
| SystemVariableKey.APP_ID: application_generate_entity.app_config.app_id, | |||
| SystemVariableKey.WORKFLOW_ID: workflow.id, | |||
| SystemVariableKey.WORKFLOW_RUN_ID: application_generate_entity.workflow_run_id, | |||
| } | |||
| self._task_state = WorkflowTaskState() | |||
| @@ -152,6 +152,7 @@ class AdvancedChatAppGenerateEntity(AppGenerateEntity): | |||
| conversation_id: Optional[str] = None | |||
| parent_message_id: Optional[str] = None | |||
| workflow_run_id: Optional[str] = None | |||
| query: str | |||
| class SingleIterationRunEntity(BaseModel): | |||
| @@ -172,6 +173,7 @@ class WorkflowAppGenerateEntity(AppGenerateEntity): | |||
| # app config | |||
| app_config: WorkflowUIBasedAppConfig | |||
| workflow_run_id: Optional[str] = None | |||
| class SingleIterationRunEntity(BaseModel): | |||
| """ | |||
| @@ -85,6 +85,9 @@ class WorkflowCycleManage: | |||
| # init workflow run | |||
| workflow_run = WorkflowRun() | |||
| workflow_run_id = self._workflow_system_variables[SystemVariableKey.WORKFLOW_RUN_ID] | |||
| if workflow_run_id: | |||
| workflow_run.id = workflow_run_id | |||
| workflow_run.tenant_id = self._workflow.tenant_id | |||
| workflow_run.app_id = self._workflow.app_id | |||
| workflow_run.sequence_number = new_sequence_number | |||
| @@ -11,3 +11,6 @@ class SystemVariableKey(str, Enum): | |||
| CONVERSATION_ID = "conversation_id" | |||
| USER_ID = "user_id" | |||
| DIALOGUE_COUNT = "dialogue_count" | |||
| APP_ID = "app_id" | |||
| WORKFLOW_ID = "workflow_id" | |||
| WORKFLOW_RUN_ID = "workflow_run_id" | |||
| @@ -405,9 +405,9 @@ const WorkflowWrap = memo(() => { | |||
| const initialFeatures: FeaturesData = { | |||
| file: { | |||
| image: { | |||
| enabled: !!features.file_upload?.image.enabled, | |||
| number_limits: features.file_upload?.image.number_limits || 3, | |||
| transfer_methods: features.file_upload?.image.transfer_methods || ['local_file', 'remote_url'], | |||
| enabled: !!features.file_upload?.image?.enabled, | |||
| number_limits: features.file_upload?.image?.number_limits || 3, | |||
| transfer_methods: features.file_upload?.image?.transfer_methods || ['local_file', 'remote_url'], | |||
| }, | |||
| }, | |||
| opening: { | |||
| @@ -116,6 +116,19 @@ const formatItem = ( | |||
| variable: 'sys.files', | |||
| type: VarType.arrayFile, | |||
| }) | |||
| res.vars.push({ | |||
| variable: 'sys.app_id', | |||
| type: VarType.string, | |||
| }) | |||
| res.vars.push({ | |||
| variable: 'sys.workflow_id', | |||
| type: VarType.string, | |||
| }) | |||
| res.vars.push({ | |||
| variable: 'sys.workflow_run_id', | |||
| type: VarType.string, | |||
| }) | |||
| break | |||
| } | |||
| @@ -121,6 +121,39 @@ const Panel: FC<NodePanelProps<StartNodeType>> = ({ | |||
| </div> | |||
| } | |||
| /> | |||
| <VarItem | |||
| readonly | |||
| payload={{ | |||
| variable: 'sys.app_id', | |||
| } as any} | |||
| rightContent={ | |||
| <div className='text-xs font-normal text-gray-500'> | |||
| String | |||
| </div> | |||
| } | |||
| /> | |||
| <VarItem | |||
| readonly | |||
| payload={{ | |||
| variable: 'sys.workflow_id', | |||
| } as any} | |||
| rightContent={ | |||
| <div className='text-xs font-normal text-gray-500'> | |||
| String | |||
| </div> | |||
| } | |||
| /> | |||
| <VarItem | |||
| readonly | |||
| payload={{ | |||
| variable: 'sys.workflow_run_id', | |||
| } as any} | |||
| rightContent={ | |||
| <div className='text-xs font-normal text-gray-500'> | |||
| String | |||
| </div> | |||
| } | |||
| /> | |||
| </div> | |||
| </> | |||