feat: introduce trigger functionality (#27644)

Signed-off-by: lyzno1 <yuanyouhuilyz@gmail.com>
Co-authored-by: Stream <Stream_2@qq.com>
Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com>
Co-authored-by: zhsama <torvalds@linux.do>
Co-authored-by: Harry <xh001x@hotmail.com>
Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com>
Co-authored-by: yessenia <yessenia.contact@gmail.com>
Co-authored-by: hjlarry <hjlarry@163.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: WTW0313 <twwu@dify.ai>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Yeuoly
2025-11-12 17:59:37 +08:00
committed by GitHub
parent ca7794305b
commit b76e17b25d
785 changed files with 41186 additions and 3725 deletions

View File

@@ -8,16 +8,53 @@ import Item from './item'
import { useStore } from '@/app/components/workflow/store'
import cn from '@/utils/classnames'
import { useTranslation } from 'react-i18next'
import { useIsChatMode } from '../../hooks'
import { isInWorkflowPage } from '../../constants'
const Panel = () => {
const { t } = useTranslation()
const isChatMode = useIsChatMode()
const setShowPanel = useStore(s => s.setShowGlobalVariablePanel)
const isWorkflowPage = isInWorkflowPage()
const globalVariableList: GlobalVariable[] = [
{
...(isChatMode ? [{
name: 'conversation_id',
value_type: 'string',
description: 'conversation id',
value_type: 'string' as const,
description: t('workflow.globalVar.fieldsDescription.conversationId'),
},
{
name: 'dialog_count',
value_type: 'number' as const,
description: t('workflow.globalVar.fieldsDescription.dialogCount'),
}] : []),
{
name: 'user_id',
value_type: 'string',
description: t('workflow.globalVar.fieldsDescription.userId'),
},
{
name: 'app_id',
value_type: 'string',
description: t('workflow.globalVar.fieldsDescription.appId'),
},
{
name: 'workflow_id',
value_type: 'string',
description: t('workflow.globalVar.fieldsDescription.workflowId'),
},
{
name: 'workflow_run_id',
value_type: 'string',
description: t('workflow.globalVar.fieldsDescription.workflowRunId'),
},
// is workflow
...((isWorkflowPage && !isChatMode) ? [{
name: 'timestamp',
value_type: 'number' as const,
description: t('workflow.globalVar.fieldsDescription.triggerTimestamp'),
}] : []),
]
return (
@@ -27,7 +64,7 @@ const Panel = () => {
)}
>
<div className='system-xl-semibold flex shrink-0 items-center justify-between p-4 pb-0 text-text-primary'>
Global Variables(Current not show)
{t('workflow.globalVar.title')}
<div className='flex items-center'>
<div
className='flex h-6 w-6 cursor-pointer items-center justify-center'
@@ -37,9 +74,9 @@ const Panel = () => {
</div>
</div>
</div>
<div className='system-sm-regular shrink-0 px-4 py-1 text-text-tertiary'>...</div>
<div className='system-sm-regular shrink-0 px-4 py-1 text-text-tertiary'>{t('workflow.globalVar.description')}</div>
<div className='grow overflow-y-auto rounded-b-2xl px-4'>
<div className='mt-4 grow overflow-y-auto rounded-b-2xl px-4'>
{globalVariableList.map(item => (
<Item
key={item.name}

View File

@@ -1,6 +1,7 @@
import { memo } from 'react'
import { capitalize } from 'lodash-es'
import { Env } from '@/app/components/base/icons/src/vender/line/others'
import { GlobalVariable as GlobalVariableIcon } from '@/app/components/base/icons/src/vender/line/others'
import type { GlobalVariable } from '@/app/components/workflow/types'
import cn from '@/utils/classnames'
@@ -17,12 +18,15 @@ const Item = ({
)}>
<div className='flex items-center justify-between'>
<div className='flex grow items-center gap-1'>
<Env className='h-4 w-4 text-util-colors-violet-violet-600' />
<div className='system-sm-medium text-text-primary'>{payload.name}</div>
<GlobalVariableIcon className='h-4 w-4 text-util-colors-orange-orange-600' />
<div className='system-sm-medium text-text-primary'>
<span className='text-text-tertiary'>sys.</span>
{payload.name}
</div>
<div className='system-xs-medium text-text-tertiary'>{capitalize(payload.value_type)}</div>
</div>
</div>
<div className='system-xs-regular truncate text-text-tertiary'>{payload.description}</div>
<div className='system-xs-regular mt-1.5 truncate text-text-tertiary'>{payload.description}</div>
</div>
)
}