chore: initial commit

This commit is contained in:
2026-10-22 17:07:08 +08:00
commit 0acef64f48
200 changed files with 35546 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
import type {NodeHandler} from '../../../types/bot/workflow/runtime.ts';
import type {WorkflowNodeTemplate} from '../../../types/bot/workflow/metadata.ts';
import {describe, failure_port, output, success_port} from '../metadata.ts';
import {resolve_value} from '../runtime/value.ts';
export const config_template: WorkflowNodeTemplate = {
name: 'log', version: '1.0.0',
i18n: describe('记录日志', '解析消息值并按指定级别记录日志,同时输出解析后的原始值。'),
config: [
{name: 'level', type: 'select', required: true, default: 'info',
i18n: describe('日志级别', '选择日志的记录级别;错误级别本身不会使节点执行失败。'),
options: [
{value: 'info', i18n: describe('信息', '记录一般运行信息。')},
{value: 'warning', i18n: describe('警告', '记录需要关注的情况。')},
{value: 'error', i18n: describe('错误', '记录错误信息,仍按正常日志节点继续执行。')},
]},
{name: 'message', type: 'value_source', required: true,
i18n: describe('日志消息', '使用字面量或状态引用;字符串直接记录,其他 JSON 值序列化后记录。')},
],
output: output('json', '消息原值', '解析 message 得到的原始 JSON 值,非字符串值不会因日志序列化而改变输出类型。'),
ports: [success_port, failure_port],
};
export const execute: NodeHandler = async (node, state, signal, deps) => {
if (node.type !== 'log') throw new Error('Expected a log node');
signal.throwIfAborted();
const output = resolve_value(node.config.message, state);
deps.log(node.config.level, typeof output === 'string' ? output : JSON.stringify(output));
signal.throwIfAborted();
return {port: 'success', result: {status: 'success', output}};
};