// 共享常量:工具白名单、黑名单、bash 安全策略等 /** 在受限模式下允许的内置工具白名单 */ export const SAFE_BUILTIN_TOOLS = new Set([ "read", "bash", "grep", "find", "ls", ]); /** 在受限模式下被禁用的内置工具黑名单 */ export const BLOCKED_BUILTIN_TOOLS = new Set(["edit", "write"]); /** 退出受限模式时若无历史可恢复时的默认工具集合 */ export const DEFAULT_TOOLS = ["read", "bash", "edit", "write"]; /** 工具选择器分页大小 */ export const TOOL_SELECTOR_PAGE_SIZE = 10; /** 匹配可能造成文件/系统变更的 bash 命令 */ export const MUTATING_BASH_PATTERNS = [ /\brm\b/i, /\brmdir\b/i, /\bmv\b/i, /\bcp\b/i, /\bmkdir\b/i, /\btouch\b/i, /\bchmod\b/i, /\bchown\b/i, /\bchgrp\b/i, /\bln\b/i, /\btee\b/i, /\btruncate\b/i, /\bdd\b/i, /(^|[^<])>(?!>)/, />>/, /\bnpm\s+(install|uninstall|update|ci|link|publish|version)\b/i, /\byarn\s+(add|remove|install|publish|upgrade)\b/i, /\bpnpm\s+(add|remove|install|publish|update)\b/i, /\bbun\s+(add|remove|install|update|publish)\b/i, /\bpip\s+(install|uninstall)\b/i, /\buv\s+(add|remove|sync|lock|pip\s+install)\b/i, /\bgit\s+(add|commit|push|pull|merge|rebase|reset|checkout|switch|stash|cherry-pick|revert|tag|init|clone)\b/i, /\bsudo\b/i, /\bsu\b/i, /\bkill\b/i, /\bpkill\b/i, /\bkillall\b/i, /\breboot\b/i, /\bshutdown\b/i, /\bsystemctl\s+(start|stop|restart|enable|disable)\b/i, /\bservice\s+\S+\s+(start|stop|restart)\b/i, /\b(vim?|nano|emacs|code|subl)\b/i, ]; /** 在受限模式下允许的只读 bash 命令模式 */ export const SAFE_BASH_PATTERNS = [ /^\s*(cd|cat|head|tail|less|more|grep|find|ls|pwd|echo|printf|wc|sort|uniq|diff|file|stat|du|df|tree|which|whereis|type|env|printenv|uname|whoami|id|date|uptime|ps|jq|awk|rg|fd|bat|eza)\b/i, /^\s*sed\s+-n\b/i, /^\s*git\s+(status|log|diff|show|branch|remote|config\s+--get|ls-files|grep)\b/i, /^\s*npm\s+(list|ls|view|info|search|outdated|audit)\b/i, /^\s*(node|python|python3|npm|tsc|biome|ruff|ty)\s+--version\b/i, ];