import type {WorkflowI18n, WorkflowOutputTemplate, WorkflowPortTemplate} from '../../types/bot/workflow/metadata.ts'; export const describe = (name: string, description: string): WorkflowI18n[] => [{lang: 'zh-CN', name, description}]; export const output = (type: WorkflowOutputTemplate['type'], name: string, description: string): WorkflowOutputTemplate => ({type, i18n: describe(name, description)}); export const port = (name: string, label: string, description: string): WorkflowPortTemplate => ({name, i18n: describe(label, description)}); export const failure_port = port('failure', '失败', '参数解析、执行或节点超时失败时执行此分支。'); export const success_port = port('success', '成功', '节点执行成功后继续执行。'); export const result_output: WorkflowOutputTemplate = { ...output('object', '执行结果', '节点执行状态、输出和可选错误。'), properties: { status: output('string', '执行状态', 'success 或 failure。'), output: output('json', '节点输出', '具体结构由对应节点描述定义。'), execution: {...output('number', '执行序号', 'outputs 中保存的本次运行节点执行序号。'), optional: true}, node_id: {...output('string', '节点 ID', 'last_result 中提供的最近执行节点 ID。'), optional: true}, error: {...output('object', '错误', '失败时可能提供的错误详情。'), optional: true, properties: { code: output('string', '错误代码', '用于异常分流的稳定错误代码。'), message: output('string', '错误说明', '本次失败的可读说明。'), node_id: output('string', '错误节点', '产生错误的节点实例 ID。'), }}, }, }; export const edge_input_output: WorkflowOutputTemplate = { ...output('object', '入线数据', '一条连线传递的来源与执行结果。'), properties: { source: output('string', '来源节点', '上游节点实例 ID。'), port: output('string', '来源出口', '上游节点选择的出口名称。'), result: result_output, }, }; export const event_args_output: WorkflowOutputTemplate = { ...output('array', '原始参数', '按事件参数顺序复制的安全 JSON 数据,不可序列化的参数为 null。'), items: {...output('json', '参数值', '事件原始参数的 JSON 副本。'), nullable: true}, };