新增: 审批超时可配置 + ScriptNode 命令白/黑名单

- 审批超时: Settings 下拉选择(不限时/5/15/30/60min),默认 15min
- getApprovalTimeoutMs() 从 KV 读取,startApprovalTimer 动态取值
- ScriptNode: 黑名单 > 白名单策略,从环境变量读取
- Settings 加命令执行安全面板(白/黑名单文本框)
- i18n 中英文案 + 搜索索引补全
This commit is contained in:
2026-06-28 13:49:19 +08:00
parent b157bc9077
commit 6ffcba7e4d
7 changed files with 216 additions and 3 deletions

View File

@@ -125,6 +125,15 @@ export default {
labelLogLevel: 'Log level',
descLogLevel: 'Verbosity of workflow logs',
// ===== Approval timeout =====
labelApprovalTimeout: 'Approval timeout',
descApprovalTimeout: 'Auto-reject threshold when user does not respond to an approval prompt (only affects approvals started after the change)',
approvalTimeoutUnlimited: 'No limit',
approvalTimeout5m: '5 minutes',
approvalTimeout15m: '15 minutes (default)',
approvalTimeout30m: '30 minutes',
approvalTimeout60m: '60 minutes',
labelShowTokenUsage: 'Show token usage',
descShowTokenUsage: 'Show token consumption of each reply in conversations',
@@ -159,6 +168,17 @@ export default {
allowedDirsAddFail: 'Failed to add authorized directory',
allowedDirsRemoveFail: 'Failed to remove authorized directory',
// ===== ScriptNode command execution safety =====
panelScriptSafety: '🛡️ Command Execution Safety',
descScriptSafety: 'Configure ScriptNode command whitelist/blacklist. Command name is the first token (e.g. `rm -rf /` -> `rm`), compared trimmed and lowercase. Blacklist takes precedence over whitelist.',
labelScriptWhitelist: 'Command whitelist',
descScriptWhitelist: 'Comma-separated command names (e.g. git,npm,cargo); empty = unrestricted. When non-empty, only listed commands are allowed.',
labelScriptBlacklist: 'Command blacklist',
descScriptBlacklist: 'Comma-separated command names (e.g. rm,format,shutdown); any match rejects execution.',
placeholderScriptWhitelist: 'Leave empty for no restriction, or: git,npm,cargo',
placeholderScriptBlacklist: 'Leave empty for no blacklist, or: rm,format',
noteScriptSafety: 'Note: backend ScriptNode currently reads DF_SCRIPT_WHITELIST / DF_SCRIPT_BLACKLIST env vars (same comma-separated semantics). This UI only persists on the frontend; wiring to backend is planned for a later release.',
// ===== Knowledge base panel =====
panelKnowledge: '📚 Knowledge base',
labelAutoExtract: 'Auto-distill knowledge',

View File

@@ -125,6 +125,15 @@ export default {
labelLogLevel: '日志级别',
descLogLevel: '工作流日志详细程度',
// ===== 审批超时 =====
labelApprovalTimeout: '审批超时',
descApprovalTimeout: '用户未处理审批弹窗时的自动拒绝阅值(只影响下一笔发起的审批)',
approvalTimeoutUnlimited: '不限时',
approvalTimeout5m: '5 分钟',
approvalTimeout15m: '15 分钟(默认)',
approvalTimeout30m: '30 分钟',
approvalTimeout60m: '60 分钟',
labelShowTokenUsage: '显示 Token 用量',
descShowTokenUsage: '在对话中展示每次回复的 token 消耗',
@@ -159,6 +168,17 @@ export default {
allowedDirsAddFail: '添加授权目录失败',
allowedDirsRemoveFail: '删除授权目录失败',
// ===== ScriptNode 命令执行安全 =====
panelScriptSafety: '🛡️ 命令执行安全',
descScriptSafety: '配置 ScriptNode 命令白/黑名单。命令名取首词(如 `rm -rf /` 取 `rm`),按 trim + 小写比较。黑名单优先于白名单。',
labelScriptWhitelist: '命令白名单',
descScriptWhitelist: '逗号分隔命令名(如 git,npm,cargo);留空表示不限制。非空时仅允许名单内命令执行。',
labelScriptBlacklist: '命令黑名单',
descScriptBlacklist: '逗号分隔命令名(如 rm,format,shutdown);命中任一项即拒绝执行。',
placeholderScriptWhitelist: '留空不限制,或输入:git,npm,cargo',
placeholderScriptBlacklist: '留空表示无黑名单,或输入:rm,format',
noteScriptSafety: '注:后端 ScriptNode 当前从环境变量 DF_SCRIPT_WHITELIST / DF_SCRIPT_BLACKLIST 读取,与同语义逗号分隔。此处配置仅前端持久化,与后端打通待后续版本。',
// ===== 知识库面板 =====
panelKnowledge: '📚 知识库',
labelAutoExtract: '自动提炼知识',