refactor: consolidate bot event routing

This commit is contained in:
Junyan Qin
2026-07-01 21:04:21 +08:00
committed by huanghuoguoguo
parent 995888f6b2
commit 0d6aa8dcd4
26 changed files with 427 additions and 370 deletions
@@ -84,8 +84,8 @@ export default function AgentCreateContent({
{
kind: 'agent',
icon: Bot,
title: t('agents.agentOrchestration'),
description: t('agents.agentOrchestrationDescription'),
title: t('agents.agentType'),
description: t('agents.agentTypeDescription'),
badge: t('agents.allEvents'),
},
{
@@ -148,7 +148,7 @@ export default function AgentFormComponent({
const sections: SectionItem[] = [
{ label: t('agents.basicInfo'), name: 'basic', icon: Info },
{ label: t('agents.runnerSettings'), name: 'runner', icon: Brain },
{ label: t('agents.eventCapability'), name: 'events', icon: FileJson2 },
{ label: t('agents.advanced'), name: 'events', icon: FileJson2 },
];
const currentRunner = (form.watch('runner') as Record<string, any>)?.id;
@@ -450,9 +450,9 @@ export default function AgentFormComponent({
{activeSection === 'events' && (
<Card>
<CardHeader>
<CardTitle>{t('agents.eventCapability')}</CardTitle>
<CardTitle>{t('agents.bindableEvents')}</CardTitle>
<CardDescription>
{t('agents.eventCapabilityDescription')}
{t('agents.bindableEventsDescription')}
</CardDescription>
</CardHeader>
<CardContent>
@@ -444,13 +444,13 @@ export default function BotForm({
</CardContent>
</Card>
{/* Card 2: Event Orchestration (edit mode only) */}
{/* Card 2: Event Routing (edit mode only) */}
{initBotId && (
<Card>
<CardHeader>
<CardTitle>{t('bots.eventOrchestration')}</CardTitle>
<CardTitle>{t('bots.eventRouting')}</CardTitle>
<CardDescription>
{t('bots.eventOrchestrationDescription')}
{t('bots.eventRoutingDescription')}
</CardDescription>
</CardHeader>
<CardContent>
@@ -59,7 +59,7 @@ import {
} from '@dnd-kit/sortable';
import { CSS } from '@dnd-kit/utilities';
import { Input } from '@/components/ui/input';
import { EventBinding, Agent, AgentKind } from '@/app/infra/entities/api';
import { EventBinding, Agent } from '@/app/infra/entities/api';
export const PIPELINE_DISCARD = '__discard__';
@@ -496,18 +496,6 @@ function BindingCardContent({
const isExpanded = expandedIds.has(id);
const filterCount = (binding.filters as FilterRow[] | undefined)?.length ?? 0;
const pipelineAllowed = isMessageEventPattern(binding.event_pattern);
const targetType = binding.target_type || 'agent';
function getTargetOptions(kind: AgentKind): Agent[] {
return agentOptions.filter((agent) => {
if (agent.kind !== kind) return false;
if (kind === 'pipeline')
return isMessageEventPattern(binding.event_pattern);
if (kind === 'agent')
return agentSupportsEventPattern(agent, binding.event_pattern);
return true;
});
}
return (
<div className="rounded-lg border bg-card">
@@ -29,7 +29,7 @@ export interface SidebarEntityItem {
debug?: boolean;
// Set when this item appears in the unified extensions list
extensionType?: 'plugin' | 'mcp' | 'skill';
// Agent-specific: distinguishes Agent orchestration from legacy Pipeline
// Agent-specific: distinguishes Agent processors from Pipelines
kind?: 'agent' | 'pipeline';
}
-22
View File
@@ -228,34 +228,12 @@ export interface Bot {
enable?: boolean;
adapter: string;
adapter_config: object;
use_pipeline_name?: string;
use_pipeline_uuid?: string;
pipeline_routing_rules?: PipelineRoutingRule[];
event_bindings?: EventBinding[];
created_at?: string;
updated_at?: string;
adapter_runtime_values?: object;
}
export type RoutingRuleOperator =
| 'eq'
| 'neq'
| 'contains'
| 'not_contains'
| 'starts_with'
| 'regex';
export interface PipelineRoutingRule {
type:
| 'launcher_type'
| 'launcher_id'
| 'message_content'
| 'message_has_element';
operator: RoutingRuleOperator;
value: string;
pipeline_uuid: string;
}
export interface EventBinding {
id?: string;
event_pattern: string;
+11 -1
View File
@@ -478,7 +478,17 @@ export default function WizardPage() {
adapter: existingBot.adapter,
adapter_config: existingBot.adapter_config,
enable: existingBot.enable,
use_pipeline_uuid: pipelineResp.uuid,
event_bindings: [
{
event_pattern: 'message.received',
target_type: 'pipeline',
target_uuid: pipelineResp.uuid,
filters: [],
priority: 0,
enabled: true,
description: '',
},
],
});
setCurrentStep(3);
+26 -28
View File
@@ -331,8 +331,7 @@ const enUS = {
getBotConfigError: 'Failed to get bot configuration: ',
saveSuccess: 'Saved successfully',
saveError: 'Save failed: ',
createSuccess:
'Created successfully. Please enable or modify the bound pipeline',
createSuccess: 'Created successfully. Please configure event routing',
createError: 'Creation failed: ',
deleteSuccess: 'Deleted successfully',
deleteError: 'Delete failed: ',
@@ -363,25 +362,25 @@ const enUS = {
routingConnection: 'Routing & Connection',
routingConnectionDescription:
'Bind the pipeline that processes messages for this bot',
eventOrchestration: 'Event Orchestration',
eventOrchestrationDescription:
'Bind different handling logic to different bot events. Pipelines only support message events.',
eventBindings: 'Event Bindings',
addEventBinding: 'Add Event Binding',
eventRouting: 'Event Routing',
eventRoutingDescription:
'Choose which processor handles each event received by this bot. Edit the processing logic on the Agent page. Pipelines only support message events.',
eventBindings: 'Event Routes',
addEventBinding: 'Add Route',
eventPattern: 'Event',
eventPatternPlaceholder: 'Select event',
targetType: 'Target Type',
target: 'Handling Logic',
targetAgent: 'Agent Orchestration',
target: 'Processor',
targetAgent: 'Agent',
targetPipeline: 'Pipeline',
targetDiscard: 'Discard',
selectTarget: 'Select handling logic',
searchTarget: 'Search…',
noTargetFound: 'No results found',
selectTarget: 'Select processor',
searchTarget: 'Search processors…',
noTargetFound: 'No compatible processors found',
priority: 'Priority',
enabled: 'Enabled',
eventBindingDescriptionPlaceholder: 'Rule description',
noEventBindings: 'No event bindings',
noEventBindings: 'No event routes',
unsupportedPipelineEvent: 'Pipelines can only be used for message.* events',
disable: 'Disable',
enable: 'Enable',
@@ -529,14 +528,13 @@ const enUS = {
},
agents: {
title: 'Agent',
description:
'Manage Agent orchestrations and Pipelines, then bind them to bot events',
create: 'Create Agent',
editAgent: 'Edit Agent Orchestration',
description: 'Create reusable processors and use them in bot event routing',
create: 'Create Processor',
editAgent: 'Edit Agent',
selectFromSidebar: 'Select an Agent or Pipeline from the sidebar',
agentOrchestration: 'Agent Orchestration',
agentOrchestrationDescription:
'Event-first handling logic for messages, group members, friends, feedback, and other platform events.',
agentType: 'Agent',
agentTypeDescription:
'Use a runner to handle messages, group members, friends, feedback, and other platform events.',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'Pipeline',
@@ -549,12 +547,13 @@ const enUS = {
basicInfo: 'Basic Information',
basicInfoDescription: 'Set the name, icon, description and enabled state',
runnerSettings: 'Runner',
eventCapability: 'Event Capability',
eventCapabilityDescription:
'Declare which events this Agent orchestration can be bound to. Use one event pattern per line; * and namespace.* are supported.',
supportedEvents: 'Supported Events',
advanced: 'Advanced',
bindableEvents: 'Bindable Event Range',
bindableEventsDescription:
'Limit which bot event routes can select this Agent. The default is suitable for most cases.',
supportedEvents: 'Event Range',
supportedEventsDescription:
'Examples: *, message.received, group.*. Pipelines are fixed to message.*.',
'Use one event pattern per line, for example *, message.received, group.*. Pipelines are fixed to message.*.',
enabled: 'Enable Agent',
enabledDescription:
'When disabled, this Agent should not be selected by event routing.',
@@ -566,11 +565,10 @@ const enUS = {
saveError: 'Save failed: ',
deleteSuccess: 'Deleted successfully',
deleteError: 'Delete failed: ',
deleteConfirmation:
'Are you sure you want to delete this Agent orchestration?',
deleteConfirmation: 'Are you sure you want to delete this Agent?',
dangerZone: 'Danger Zone',
dangerZoneDescription: 'Irreversible and destructive actions',
deleteAgentAction: 'Delete this Agent orchestration',
deleteAgentAction: 'Delete this Agent',
deleteAgentHint:
'Once deleted, events bound to it can no longer be executed.',
noRunnerMetadata: 'No AgentRunner metadata is currently available.',
+18 -16
View File
@@ -342,8 +342,7 @@ const esES = {
getBotConfigError: 'Error al obtener la configuración del Bot: ',
saveSuccess: 'Guardado correctamente',
saveError: 'Error al guardar: ',
createSuccess:
'Creado correctamente. Por favor, activa o modifica el Pipeline vinculado',
createSuccess: 'Creado correctamente. Configura el enrutamiento de eventos',
createError: 'Error al crear: ',
deleteSuccess: 'Eliminado correctamente',
deleteError: 'Error al eliminar: ',
@@ -374,6 +373,9 @@ const esES = {
routingConnection: 'Enrutamiento y conexión',
routingConnectionDescription:
'Vincula el Pipeline que procesa los mensajes de este Bot',
eventRouting: 'Enrutamiento de eventos',
eventRoutingDescription:
'Elige qué procesador maneja cada evento recibido por este Bot. Edita la lógica de procesamiento en la página Agent. Los Pipelines solo admiten eventos de mensaje.',
routingRules: 'Reglas de enrutamiento condicional',
routingRulesDescription:
'Las reglas se evalúan en orden; la primera coincidencia enruta a su pipeline. Si ninguna coincide, se usa el pipeline predeterminado.',
@@ -484,13 +486,13 @@ const esES = {
agents: {
title: 'Agent',
description:
'Gestiona orquestaciones de Agent y Pipelines, y vincúlalos a eventos de bot',
create: 'Crear Agent',
editAgent: 'Editar orquestación de Agent',
'Crea procesadores reutilizables y úsalos en el enrutamiento de eventos del bot',
create: 'Crear procesador',
editAgent: 'Editar Agent',
selectFromSidebar: 'Selecciona un Agent o Pipeline desde la barra lateral',
agentOrchestration: 'Orquestación de Agent',
agentOrchestrationDescription:
'Lógica de procesamiento orientada a eventos para mensajes, miembros de grupo, amigos, retroalimentación y otros eventos de plataforma.',
agentType: 'Agent',
agentTypeDescription:
'Usa un runner para procesar mensajes, miembros de grupo, amigos, retroalimentación y otros eventos de plataforma.',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'Pipeline',
@@ -504,12 +506,13 @@ const esES = {
basicInfoDescription:
'Establece el nombre, icono, descripción y estado de habilitación',
runnerSettings: 'Runner',
eventCapability: 'Capacidad de eventos',
eventCapabilityDescription:
'Declara a qué eventos puede vincularse esta orquestación de Agent. Un patrón de evento por línea; se admiten * y namespace.*.',
supportedEvents: 'Eventos admitidos',
advanced: 'Avanzado',
bindableEvents: 'Rango de eventos vinculables',
bindableEventsDescription:
'Limita qué rutas de eventos del bot pueden seleccionar este Agent. El valor predeterminado sirve para la mayoría de los casos.',
supportedEvents: 'Rango de eventos',
supportedEventsDescription:
'Ejemplos: *, message.received, group.*. Los Pipelines están fijos en message.*.',
'Usa un patrón de evento por línea, por ejemplo *, message.received, group.*. Los Pipelines están fijos en message.*.',
enabled: 'Habilitar Agent',
enabledDescription:
'Cuando está deshabilitado, este Agent no debe ser seleccionado por el enrutamiento de eventos.',
@@ -521,11 +524,10 @@ const esES = {
saveError: 'Error al guardar: ',
deleteSuccess: 'Eliminado correctamente',
deleteError: 'Error al eliminar: ',
deleteConfirmation:
'¿Estás seguro de que deseas eliminar esta orquestación de Agent?',
deleteConfirmation: '¿Estás seguro de que deseas eliminar este Agent?',
dangerZone: 'Zona de peligro',
dangerZoneDescription: 'Acciones irreversibles y destructivas',
deleteAgentAction: 'Eliminar esta orquestación de Agent',
deleteAgentAction: 'Eliminar este Agent',
deleteAgentHint:
'Una vez eliminado, los eventos vinculados a él ya no podrán ejecutarse.',
noRunnerMetadata:
+25 -24
View File
@@ -337,8 +337,7 @@ const jaJP = {
getBotConfigError: 'ボット設定の取得に失敗しました:',
saveSuccess: '保存に成功しました',
saveError: '保存に失敗しました:',
createSuccess:
'作成が完了しました。有効化するか、パイプラインの設定を行ってください',
createSuccess: '作成が完了しました。イベントルーティングを設定してください',
createError: '作成に失敗しました:',
deleteSuccess: '削除に成功しました',
deleteError: '削除に失敗しました:',
@@ -369,23 +368,23 @@ const jaJP = {
routingConnection: 'ルーティングと接続',
routingConnectionDescription:
'このボットのメッセージを処理するパイプラインを紐付け',
eventOrchestration: 'イベント編成',
eventOrchestrationDescription:
'このボットのイベントごとに異なる処理ロジックを紐付けます。Pipeline はメッセージイベントのみ対応します。',
eventBindings: 'イベントバインディング',
addEventBinding: 'イベントバインディングを追加',
eventRouting: 'イベントルーティング',
eventRoutingDescription:
'このボットが受信した各イベントをどのプロセッサーに渡すかを選択します。処理ロジックは Agent ページで編集します。Pipeline はメッセージイベントのみ対応します。',
eventBindings: 'イベントルート',
addEventBinding: 'ルートを追加',
eventPattern: 'イベント',
eventPatternPlaceholder: 'イベントを選択',
targetType: 'ターゲットタイプ',
target: '処理ロジック',
targetAgent: 'Agent 編成',
target: 'プロセッサー',
targetAgent: 'Agent',
targetPipeline: 'Pipeline',
targetDiscard: '破棄',
selectTarget: '処理ロジックを選択',
selectTarget: 'プロセッサーを選択',
priority: '優先度',
enabled: '有効',
eventBindingDescriptionPlaceholder: 'ルール説明',
noEventBindings: 'イベントバインディングはありません',
noEventBindings: 'イベントルートはありません',
unsupportedPipelineEvent:
'Pipeline は message.* イベントにのみ使用できます',
eventCustom: 'カスタムイベント',
@@ -516,14 +515,15 @@ const jaJP = {
},
agents: {
title: 'Agent',
description: 'Agent 編成と Pipeline を管理し、ボットのイベントに紐付けます',
create: 'Agent を作成',
editAgent: 'Agent 編成を編集',
description:
'再利用可能なプロセッサーを作成し、ボットのイベントルーティングで使用します',
create: 'プロセッサーを作成',
editAgent: 'Agent を編集',
selectFromSidebar:
'サイドバーから Agent または Pipeline を選択してください',
agentOrchestration: 'Agent 編成',
agentOrchestrationDescription:
'メッセージ、グループメンバー、友だち、フィードバックなどのプラットフォームイベント向けの処理ロジックです。',
agentType: 'Agent',
agentTypeDescription:
'Runner を使ってメッセージ、グループメンバー、友だち、フィードバックなどのプラットフォームイベントを処理します。',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'パイプライン',
@@ -536,12 +536,13 @@ const jaJP = {
basicInfo: '基本情報',
basicInfoDescription: '名前、アイコン、説明、有効状態を設定します',
runnerSettings: 'Runner',
eventCapability: 'イベント能力',
eventCapabilityDescription:
'この Agent 編成をどのイベントに紐付けられるかを宣言します。1 行に 1 つのイベントパターンを指定し、* と namespace.* を利用できます。',
supportedEvents: '対応イベント',
advanced: '詳細',
bindableEvents: '紐付け可能なイベント範囲',
bindableEventsDescription:
'この Agent を選択できるボットイベントルートの範囲を制限します。通常は既定値のままで問題ありません。',
supportedEvents: 'イベント範囲',
supportedEventsDescription:
'例: *、message.received、group.*。Pipeline は message.* 固定です。',
'1 行に 1 つのイベントパターンを指定します。例: *、message.received、group.*。Pipeline は message.* 固定です。',
enabled: 'Agent を有効化',
enabledDescription:
'無効化すると、この Agent はイベントルーティングで選択されません。',
@@ -553,10 +554,10 @@ const jaJP = {
saveError: '保存に失敗しました:',
deleteSuccess: '削除に成功しました',
deleteError: '削除に失敗しました:',
deleteConfirmation: 'この Agent 編成を削除してもよろしいですか?',
deleteConfirmation: 'この Agent を削除してもよろしいですか?',
dangerZone: '危険ゾーン',
dangerZoneDescription: '元に戻せない操作',
deleteAgentAction: 'この Agent 編成を削除',
deleteAgentAction: 'この Agent を削除',
deleteAgentHint: '削除すると、紐付けられたイベントは実行できなくなります。',
noRunnerMetadata: '現在利用可能な AgentRunner メタデータはありません。',
},
+18 -15
View File
@@ -341,8 +341,7 @@ const ruRU = {
getBotConfigError: 'Не удалось получить конфигурацию бота: ',
saveSuccess: 'Успешно сохранено',
saveError: 'Ошибка сохранения: ',
createSuccess:
'Успешно создано. Пожалуйста, включите или измените привязанный конвейер',
createSuccess: 'Успешно создано. Настройте маршрутизацию событий',
createError: 'Ошибка создания: ',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
@@ -373,6 +372,9 @@ const ruRU = {
routingConnection: 'Маршрутизация и подключение',
routingConnectionDescription:
'Привяжите конвейер, обрабатывающий сообщения для этого бота',
eventRouting: 'Маршрутизация событий',
eventRoutingDescription:
'Выберите, какой обработчик будет получать каждое событие этого бота. Логика обработки редактируется на странице Agent. Pipeline поддерживает только события сообщений.',
routingRules: 'Правила условной маршрутизации',
routingRulesDescription:
'Правила проверяются по порядку; первое совпадение направляет в соответствующий конвейер. При отсутствии совпадений используется конвейер по умолчанию.',
@@ -482,13 +484,13 @@ const ruRU = {
agents: {
title: 'Agent',
description:
'Управляйте оркестровками Agent и Pipeline, привязывая их к событиям бота',
create: 'Создать Agent',
editAgent: 'Редактировать оркестровку Agent',
'Создавайте переиспользуемые обработчики и используйте их в маршрутизации событий бота',
create: 'Создать обработчик',
editAgent: 'Редактировать Agent',
selectFromSidebar: 'Выберите Agent или Pipeline на боковой панели',
agentOrchestration: 'Оркестровка Agent',
agentOrchestrationDescription:
'Логика обработки сообщений, участников групп, друзей, обратной связи и других событий платформы.',
agentType: 'Agent',
agentTypeDescription:
'Используйте runner для обработки сообщений, участников групп, друзей, обратной связи и других событий платформы.',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'Pipeline',
@@ -501,12 +503,13 @@ const ruRU = {
basicInfo: 'Основная информация',
basicInfoDescription: 'Задайте имя, иконку, описание и статус активации',
runnerSettings: 'Runner',
eventCapability: 'Возможности событий',
eventCapabilityDescription:
'Объявите, к каким событиям может быть привязана эта оркестровка Agent. Один шаблон события в строке; поддерживаются * и namespace.*.',
supportedEvents: 'Поддерживаемые события',
advanced: 'Дополнительно',
bindableEvents: 'Диапазон привязываемых событий',
bindableEventsDescription:
'Ограничьте, какие маршруты событий бота могут выбирать этот Agent. Обычно достаточно значения по умолчанию.',
supportedEvents: 'Диапазон событий',
supportedEventsDescription:
'Примеры: *, message.received, group.*. Pipeline фиксирован на message.*.',
'Один шаблон события в строке, например *, message.received, group.*. Pipeline фиксирован на message.*.',
enabled: 'Включить Agent',
enabledDescription:
'При отключении этот Agent не должен выбираться маршрутизацией событий.',
@@ -518,10 +521,10 @@ const ruRU = {
saveError: 'Ошибка сохранения: ',
deleteSuccess: 'Успешно удалено',
deleteError: 'Ошибка удаления: ',
deleteConfirmation: 'Вы уверены, что хотите удалить эту оркестровку Agent?',
deleteConfirmation: 'Вы уверены, что хотите удалить этот Agent?',
dangerZone: 'Опасная зона',
dangerZoneDescription: 'Необратимые и деструктивные действия',
deleteAgentAction: 'Удалить эту оркестровку Agent',
deleteAgentAction: 'Удалить этот Agent',
deleteAgentHint:
'После удаления события, привязанные к ней, больше не смогут выполняться.',
noRunnerMetadata: 'Метаданные AgentRunner в данный момент недоступны.',
+18 -15
View File
@@ -328,7 +328,7 @@ const thTH = {
getBotConfigError: 'ไม่สามารถดึงการกำหนดค่า Bot ได้: ',
saveSuccess: 'บันทึกสำเร็จ',
saveError: 'บันทึกล้มเหลว: ',
createSuccess: 'สร้างสำเร็จ กรุณาเปิดใช้งานหรือแก้ไข Pipeline ที่ผูกไว้',
createSuccess: 'สร้างสำเร็จ กรุณากำหนดเส้นทางเหตุการณ์',
createError: 'สร้างล้มเหลว: ',
deleteSuccess: 'ลบสำเร็จ',
deleteError: 'ลบล้มเหลว: ',
@@ -359,6 +359,9 @@ const thTH = {
routingConnection: 'การกำหนดเส้นทางและการเชื่อมต่อ',
routingConnectionDescription:
'ผูก Pipeline ที่ประมวลผลข้อความสำหรับ Bot นี้',
eventRouting: 'การกำหนดเส้นทางเหตุการณ์',
eventRoutingDescription:
'เลือกตัวประมวลผลที่จะจัดการแต่ละเหตุการณ์ที่ Bot นี้ได้รับ แก้ไขตรรกะการประมวลผลในหน้า Agent และ Pipeline รองรับเฉพาะเหตุการณ์ข้อความ',
routingRules: 'กฎการกำหนดเส้นทางตามเงื่อนไข',
routingRulesDescription:
'กฎจะถูกประเมินตามลำดับ การจับคู่แรกจะกำหนดเส้นทางไปยัง Pipeline ที่เกี่ยวข้อง หากไม่ตรงกันจะใช้ Pipeline เริ่มต้นด้านบน',
@@ -467,14 +470,13 @@ const thTH = {
},
agents: {
title: 'Agent',
description:
'จัดการการประสาน Agent และ Pipeline แล้วเชื่อมกับเหตุการณ์ของบอท',
create: 'สร้าง Agent',
editAgent: 'แก้ไขการประสาน Agent',
description: 'สร้างตัวประมวลผลที่ใช้ซ้ำได้และใช้ในเส้นทางเหตุการณ์ของบอท',
create: 'สร้างตัวประมวลผล',
editAgent: 'แก้ไข Agent',
selectFromSidebar: 'เลือก Agent หรือ Pipeline จากแถบด้านข้าง',
agentOrchestration: 'การประสาน Agent',
agentOrchestrationDescription:
'ตรรกะการประมวลผลที่เน้นเหตุการณ์สำหรับข้อความ สมาชิกกลุ่ม เพื่อน ฟีดแบ็ก และเหตุการณ์แพลตฟอร์มอื่นๆ',
agentType: 'Agent',
agentTypeDescription:
'ใช้ runner เพื่อประมวลผลข้อความ สมาชิกกลุ่ม เพื่อน ฟีดแบ็ก และเหตุการณ์แพลตฟอร์มอื่นๆ',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'Pipeline',
@@ -487,12 +489,13 @@ const thTH = {
basicInfo: 'ข้อมูลพื้นฐาน',
basicInfoDescription: 'ตั้งชื่อ ไอคอน คำอธิบาย และสถานะการเปิดใช้งาน',
runnerSettings: 'Runner',
eventCapability: 'ความสามารถด้านเหตุการณ์',
eventCapabilityDescription:
'ประกาศว่าการประสาน Agent นี้สามารถเชื่อมกับเหตุการณ์ใดได้บ้าง หนึ่งรูปแบบเหตุการณ์ต่อบรรทัด รองรับ * และ namespace.*',
supportedEvents: 'เหตุการณ์ที่รองรับ',
advanced: 'ขั้นสูง',
bindableEvents: 'ช่วงเหตุการณ์ที่ผูกได้',
bindableEventsDescription:
'จำกัดว่าเส้นทางเหตุการณ์ของบอทใดสามารถเลือก Agent นี้ได้ ค่าเริ่มต้นเหมาะกับกรณีส่วนใหญ่',
supportedEvents: 'ช่วงเหตุการณ์',
supportedEventsDescription:
'ตัวอย่าง: *, message.received, group.* Pipeline ถูกกำหนดไว้ที่ message.*',
'หนึ่งรูปแบบเหตุการณ์ต่อบรรทัด เช่น *, message.received, group.* Pipeline ถูกกำหนดไว้ที่ message.*',
enabled: 'เปิดใช้งาน Agent',
enabledDescription:
'เมื่อปิดใช้งาน Agent นี้จะไม่ถูกเลือกโดยการกำหนดเส้นทางเหตุการณ์',
@@ -504,10 +507,10 @@ const thTH = {
saveError: 'บันทึกล้มเหลว: ',
deleteSuccess: 'ลบสำเร็จ',
deleteError: 'ลบล้มเหลว: ',
deleteConfirmation: 'คุณแน่ใจหรือว่าต้องการลบการประสาน Agent นี้?',
deleteConfirmation: 'คุณแน่ใจหรือว่าต้องการลบ Agent นี้?',
dangerZone: 'โซนอันตราย',
dangerZoneDescription: 'การดำเนินการที่ไม่สามารถย้อนกลับและทำลายข้อมูล',
deleteAgentAction: 'ลบการประสาน Agent นี้',
deleteAgentAction: 'ลบ Agent นี้',
deleteAgentHint:
'เมื่อลบแล้ว เหตุการณ์ที่เชื่อมกับมันจะไม่สามารถดำเนินการต่อได้',
noRunnerMetadata: 'ขณะนี้ไม่มีข้อมูลเมตา AgentRunner ที่พร้อมใช้งาน',
+18 -15
View File
@@ -337,8 +337,7 @@ const viVN = {
getBotConfigError: 'Lấy cấu hình Bot thất bại: ',
saveSuccess: 'Lưu thành công',
saveError: 'Lưu thất bại: ',
createSuccess:
'Tạo thành công. Vui lòng bật hoặc sửa đổi Pipeline đã liên kết',
createSuccess: 'Tạo thành công. Vui lòng cấu hình định tuyến sự kiện',
createError: 'Tạo thất bại: ',
deleteSuccess: 'Xóa thành công',
deleteError: 'Xóa thất bại: ',
@@ -369,6 +368,9 @@ const viVN = {
routingConnection: 'Định tuyến & Kết nối',
routingConnectionDescription:
'Liên kết Pipeline xử lý tin nhắn cho Bot này',
eventRouting: 'Định tuyến sự kiện',
eventRoutingDescription:
'Chọn bộ xử lý sẽ nhận từng sự kiện của Bot này. Chỉnh sửa logic xử lý trong trang Agent. Pipeline chỉ hỗ trợ sự kiện tin nhắn.',
routingRules: 'Quy tắc định tuyến có điều kiện',
routingRulesDescription:
'Các quy tắc được đánh giá theo thứ tự; kết quả khớp đầu tiên sẽ định tuyến đến pipeline tương ứng. Nếu không khớp, pipeline mặc định ở trên sẽ được sử dụng.',
@@ -478,13 +480,13 @@ const viVN = {
agents: {
title: 'Agent',
description:
'Quản lý dàn dng Agent và Pipeline, sau đó gắn chúng vào sự kiện của bot',
create: 'Tạo Agent',
editAgent: 'Chỉnh sửa dàn dựng Agent',
'Tạo bộ xử lý có thể tái sử dng và dùng chúng trong định tuyến sự kiện của bot',
create: 'Tạo bộ xử lý',
editAgent: 'Chỉnh sửa Agent',
selectFromSidebar: 'Chọn một Agent hoặc Pipeline từ thanh bên',
agentOrchestration: 'Dàn dựng Agent',
agentOrchestrationDescription:
'Logic xử lý hướng sự kiện cho tin nhắn, thành viên nhóm, bạn bè, phản hồi và các sự kiện nền tảng khác.',
agentType: 'Agent',
agentTypeDescription:
'Dùng runner để xử lý tin nhắn, thành viên nhóm, bạn bè, phản hồi và các sự kiện nền tảng khác.',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: 'Pipeline',
@@ -497,12 +499,13 @@ const viVN = {
basicInfo: 'Thông tin cơ bản',
basicInfoDescription: 'Đặt tên, biểu tượng, mô tả và trạng thái kích hoạt',
runnerSettings: 'Runner',
eventCapability: 'Khả năng sự kiện',
eventCapabilityDescription:
'Khai báo những sự kiện mà dàn dựng Agent này có thể được gắn vào. Mỗi dòng một mẫu sự kiện; hỗ trợ * và namespace.*.',
supportedEvents: 'Sự kiện được hỗ trợ',
advanced: 'Nâng cao',
bindableEvents: 'Phạm vi sự kiện có thể gắn',
bindableEventsDescription:
'Giới hạn những tuyến sự kiện bot có thể chọn Agent này. Mặc định phù hợp với hầu hết trường hợp.',
supportedEvents: 'Phạm vi sự kiện',
supportedEventsDescription:
'Ví dụ: *, message.received, group.*. Pipeline cố định ở message.*.',
'Mỗi dòng một mẫu sự kiện, ví dụ *, message.received, group.*. Pipeline cố định ở message.*.',
enabled: 'Kích hoạt Agent',
enabledDescription:
'Khi bị tắt, Agent này sẽ không được định tuyến sự kiện chọn.',
@@ -514,10 +517,10 @@ const viVN = {
saveError: 'Lưu thất bại: ',
deleteSuccess: 'Xóa thành công',
deleteError: 'Xóa thất bại: ',
deleteConfirmation: 'Bạn có chắc muốn xóa dàn dựng Agent này không?',
deleteConfirmation: 'Bạn có chắc muốn xóa Agent này không?',
dangerZone: 'Vùng nguy hiểm',
dangerZoneDescription: 'Hành động không thể hoàn tác và mang tính phá hủy',
deleteAgentAction: 'Xóa dàn dựng Agent này',
deleteAgentAction: 'Xóa Agent này',
deleteAgentHint:
'Sau khi xóa, các sự kiện đã gắn vào nó sẽ không thể thực thi được nữa.',
noRunnerMetadata: 'Hiện chưa có siêu dữ liệu AgentRunner khả dụng.',
+25 -25
View File
@@ -317,7 +317,7 @@ const zhHans = {
getBotConfigError: '获取机器人配置失败:',
saveSuccess: '保存成功',
saveError: '保存失败:',
createSuccess: '创建成功 请启用或修改绑定流水线',
createSuccess: '创建成功,请配置事件路由',
createError: '创建失败:',
deleteSuccess: '删除成功',
deleteError: '删除失败:',
@@ -347,25 +347,25 @@ const zhHans = {
basicInfoDescription: '设置机器人名称和描述',
routingConnection: '路由与连接',
routingConnectionDescription: '绑定处理此机器人消息的流水线',
eventOrchestration: '事件编排',
eventOrchestrationDescription:
'此机器人不同事件绑定不同处理逻辑。Pipeline 仅支持消息事件。',
eventBindings: '事件绑定',
addEventBinding: '添加事件绑定',
eventRouting: '事件路由',
eventRoutingDescription:
'选择此机器人收到不同事件时交给哪个处理器。具体处理逻辑在 Agent 页面编辑,Pipeline 仅支持消息事件。',
eventBindings: '事件路由',
addEventBinding: '添加路由',
eventPattern: '事件',
eventPatternPlaceholder: '选择事件',
targetType: '目标类型',
target: '处理逻辑',
targetAgent: 'Agent 编排',
target: '处理',
targetAgent: 'Agent',
targetPipeline: 'Pipeline',
targetDiscard: '丢弃',
selectTarget: '选择处理逻辑',
searchTarget: '搜索处理逻辑…',
noTargetFound: '未找到匹配项',
selectTarget: '选择处理',
searchTarget: '搜索处理…',
noTargetFound: '未找到兼容处理器',
priority: '优先级',
enabled: '启用',
eventBindingDescriptionPlaceholder: '规则说明',
noEventBindings: '暂无事件绑定',
noEventBindings: '暂无事件路由',
unsupportedPipelineEvent: 'Pipeline 仅可用于 message.* 事件',
disable: '禁用',
enable: '启用',
@@ -509,13 +509,12 @@ const zhHans = {
},
agents: {
title: 'Agent',
description: '管理 Agent 编排与 Pipeline,并将它们绑定到机器人事件',
create: '创建 Agent',
editAgent: '编辑 Agent 编排',
description: '创建可复用的处理器,并在机器人事件路由中使用',
create: '创建处理器',
editAgent: '编辑 Agent',
selectFromSidebar: '从侧边栏选择一个 Agent 或 Pipeline',
agentOrchestration: 'Agent 编排',
agentOrchestrationDescription:
'面向平台事件的处理逻辑,可用于消息、群成员、好友、反馈等事件。',
agentType: 'Agent',
agentTypeDescription: '通过运行器处理消息、群成员、好友、反馈等平台事件。',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: '流水线',
@@ -528,12 +527,13 @@ const zhHans = {
basicInfo: '基础信息',
basicInfoDescription: '设置名称、图标、描述和启用状态',
runnerSettings: '运行器',
eventCapability: '事件能力',
eventCapabilityDescription:
'声明此 Agent 编排可被绑定到哪些事件。每行一个事件模式,支持 * 与 namespace.*。',
supportedEvents: '支持的事件',
advanced: '高级',
bindableEvents: '可绑定事件范围',
bindableEventsDescription:
'限制此 Agent 可被机器人事件路由选择的事件范围。通常保持默认即可。',
supportedEvents: '事件范围',
supportedEventsDescription:
'例如 *、message.received、group.*。Pipeline 固定仅支持 message.*。',
'每行一个事件模式,例如 *、message.received、group.*。Pipeline 固定仅支持 message.*。',
enabled: '启用 Agent',
enabledDescription: '禁用后,此 Agent 不应被事件路由选中。',
nameRequired: '名称不能为空',
@@ -544,10 +544,10 @@ const zhHans = {
saveError: '保存失败:',
deleteSuccess: '删除成功',
deleteError: '删除失败:',
deleteConfirmation: '你确定要删除这个 Agent 编排吗?',
deleteConfirmation: '你确定要删除这个 Agent 吗?',
dangerZone: '危险区域',
dangerZoneDescription: '不可逆的操作',
deleteAgentAction: '删除此 Agent 编排',
deleteAgentAction: '删除此 Agent',
deleteAgentHint: '删除后,绑定到它的事件将无法继续执行。',
noRunnerMetadata: '当前没有可用的 AgentRunner 元数据。',
},
+17 -14
View File
@@ -317,7 +317,7 @@ const zhHant = {
getBotConfigError: '取得機器人設定失敗:',
saveSuccess: '儲存成功',
saveError: '儲存失敗:',
createSuccess: '建立成功 請啟用或修改綁定流程線',
createSuccess: '建立成功,請設定事件路由',
createError: '建立失敗:',
deleteSuccess: '刪除成功',
deleteError: '刪除失敗:',
@@ -347,6 +347,9 @@ const zhHant = {
basicInfoDescription: '設定機器人名稱和描述',
routingConnection: '路由與連接',
routingConnectionDescription: '綁定處理此機器人訊息的流程線',
eventRouting: '事件路由',
eventRoutingDescription:
'選擇此機器人收到不同事件時交給哪個處理器。具體處理邏輯在 Agent 頁面編輯,Pipeline 僅支援訊息事件。',
routingRules: '條件路由規則',
routingRulesDescription:
'按順序匹配,命中第一條規則後路由到對應流程線;都不匹配時使用上方預設流程線',
@@ -452,13 +455,12 @@ const zhHant = {
},
agents: {
title: 'Agent',
description: '管理 Agent 編排與 Pipeline,並將它們綁定到機器人事件',
create: '建立 Agent',
editAgent: '編輯 Agent 編排',
description: '建立可重用的處理器,並在機器人事件路由中使用',
create: '建立處理器',
editAgent: '編輯 Agent',
selectFromSidebar: '從側邊欄選擇一個 Agent 或 Pipeline',
agentOrchestration: 'Agent 編排',
agentOrchestrationDescription:
'面向平台事件的處理邏輯,可用於訊息、群成員、好友、回饋等事件。',
agentType: 'Agent',
agentTypeDescription: '透過執行器處理訊息、群成員、好友、回饋等平台事件。',
pipelineType: 'Pipeline',
kindBadgeAgent: 'Agent',
kindBadgePipeline: '流水線',
@@ -471,12 +473,13 @@ const zhHant = {
basicInfo: '基本資訊',
basicInfoDescription: '設定名稱、圖示、描述和啟用狀態',
runnerSettings: '執行器',
eventCapability: '事件能力',
eventCapabilityDescription:
'宣告此 Agent 編排可被綁定到哪些事件。每行一個事件模式,支援 * 與 namespace.*。',
supportedEvents: '支援的事件',
advanced: '進階',
bindableEvents: '可綁定事件範圍',
bindableEventsDescription:
'限制此 Agent 可被機器人事件路由選擇的事件範圍。通常保持預設即可。',
supportedEvents: '事件範圍',
supportedEventsDescription:
'例如 *、message.received、group.*。Pipeline 固定僅支援 message.*。',
'每行一個事件模式,例如 *、message.received、group.*。Pipeline 固定僅支援 message.*。',
enabled: '啟用 Agent',
enabledDescription: '停用後,此 Agent 不應被事件路由選中。',
nameRequired: '名稱不能為空',
@@ -487,10 +490,10 @@ const zhHant = {
saveError: '儲存失敗:',
deleteSuccess: '刪除成功',
deleteError: '刪除失敗:',
deleteConfirmation: '你確定要刪除這個 Agent 編排嗎?',
deleteConfirmation: '你確定要刪除這個 Agent 嗎?',
dangerZone: '危險區域',
dangerZoneDescription: '不可逆的操作',
deleteAgentAction: '刪除此 Agent 編排',
deleteAgentAction: '刪除此 Agent',
deleteAgentHint: '刪除後,綁定到它的事件將無法繼續執行。',
noRunnerMetadata: '目前沒有可用的 AgentRunner 中繼資料。',
},