From 6bcf6b5ee406f142390cd2785cfc6958ea856ab9 Mon Sep 17 00:00:00 2001 From: matevip Date: Fri, 8 May 2026 15:07:25 +0800 Subject: [PATCH] feat(ui/triggers): structured per-pattern form for all 6 pattern types --- .../components/workflow/StepPropertyPanel.vue | 24 +- .../workflow/TriggerPatternForm.vue | 386 ++++++++++++++++++ mateclaw-ui/src/i18n/locales/en-US.ts | 31 ++ mateclaw-ui/src/i18n/locales/zh-CN.ts | 37 +- mateclaw-ui/src/views/Triggers.vue | 38 +- 5 files changed, 493 insertions(+), 23 deletions(-) create mode 100644 mateclaw-ui/src/components/workflow/TriggerPatternForm.vue diff --git a/mateclaw-ui/src/components/workflow/StepPropertyPanel.vue b/mateclaw-ui/src/components/workflow/StepPropertyPanel.vue index 51e739a3..732b2e72 100644 --- a/mateclaw-ui/src/components/workflow/StepPropertyPanel.vue +++ b/mateclaw-ui/src/components/workflow/StepPropertyPanel.vue @@ -93,13 +93,13 @@ @@ -265,11 +265,15 @@ const { t } = useI18n() const modeType = computed(() => (props.step?.mode?.type ?? 'sequential') as string) const localizedModeLabel = computed(() => { - const key = `workflows.canvas.modeLabels.${modeType.value}` - const localized = t(key, '') - return localized && localized !== key ? localized : modeType.value + return modeOptionLabel(modeType.value) }) +function modeOptionLabel(type: string): string { + const key = `workflows.canvas.modeLabels.${type}` + const localized = t(key, '') + return localized && localized !== key ? localized : type +} + const modeNeedsAgent = computed(() => { // fan_out / collect / await_approval / dispatch_channel / write_memory // don't take an agent — the runtime calls a service adapter instead. diff --git a/mateclaw-ui/src/components/workflow/TriggerPatternForm.vue b/mateclaw-ui/src/components/workflow/TriggerPatternForm.vue new file mode 100644 index 00000000..4be40a78 --- /dev/null +++ b/mateclaw-ui/src/components/workflow/TriggerPatternForm.vue @@ -0,0 +1,386 @@ +