@kenhkl/agent-moss 0.10.0 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -477,8 +477,10 @@ function extractFilePaths(text) {
477
477
  return [...new Set(paths)];
478
478
  }
479
479
  function checkReadBeforeWrite(actionType, actionDetail, actionHistory, reason, cwd) {
480
+ if (NON_WRITE_TOOL_PREFIXES.some((p) => actionType.startsWith(p))) return null;
480
481
  if (NON_WRITE_TOOLS.has(actionType)) return null;
481
- let isWrite = WRITE_KEYWORDS.some((kw) => actionType.includes(kw) || actionDetail.includes(kw));
482
+ const isBashLike = actionType === "bash" || actionType === "executebash" || actionType === "terminal-executebash";
483
+ let isWrite = isBashLike ? WRITE_KEYWORDS.some((kw) => actionType.includes(kw) || actionDetail.includes(kw)) : WRITE_KEYWORDS.some((kw) => actionType.includes(kw));
482
484
  if (!isWrite && actionDetail.includes(">")) {
483
485
  const detailWithoutDevnull = actionDetail.replace(/(?:2|&|1)?\s*>\s*\/dev\/null\b/g, "");
484
486
  if (detailWithoutDevnull.includes(">")) {
@@ -644,7 +646,7 @@ function checkIndirectFileAccess(actionType, actionDetail, cwd) {
644
646
  violatedLayers: ["2"]
645
647
  };
646
648
  }
647
- var ROOT_SENSITIVE_PATHS, HOME_SENSITIVE_PATHS, CREDENTIAL_PATHS, NON_WRITE_TOOLS, READ_ONLY_REDIR_CMDS, WRITE_KEYWORDS, READ_KEYWORDS, CREATE_KEYWORDS, PASSWORD_MODIFY_PATTERNS, USER_DELETION_PATTERNS, INTENT_DEVIATION_PATTERNS, INLINE_SCRIPT_RE, DIR_TRAVERSAL_KW;
649
+ var ROOT_SENSITIVE_PATHS, HOME_SENSITIVE_PATHS, CREDENTIAL_PATHS, NON_WRITE_TOOLS, NON_WRITE_TOOL_PREFIXES, READ_ONLY_REDIR_CMDS, WRITE_KEYWORDS, READ_KEYWORDS, CREATE_KEYWORDS, PASSWORD_MODIFY_PATTERNS, USER_DELETION_PATTERNS, INTENT_DEVIATION_PATTERNS, INLINE_SCRIPT_RE, DIR_TRAVERSAL_KW;
648
650
  var init_logic_rules = __esm({
649
651
  "src/engine/logic-rules.ts"() {
650
652
  "use strict";
@@ -696,7 +698,26 @@ var init_logic_rules = __esm({
696
698
  { path: "secrets.yaml", riskLevel: "high", desc: "\u5BC6\u94A5\u914D\u7F6E\u6587\u4EF6" },
697
699
  { path: ".env", riskLevel: "high", desc: "\u73AF\u5883\u53D8\u91CF/\u51ED\u636E\u914D\u7F6E\u6587\u4EF6" }
698
700
  ];
699
- NON_WRITE_TOOLS = /* @__PURE__ */ new Set(["ask_user_question", "glob", "grep", "list_dir", "count_text_length", "search"]);
701
+ NON_WRITE_TOOLS = /* @__PURE__ */ new Set([
702
+ "ask_user_question",
703
+ "glob",
704
+ "grep",
705
+ "list_dir",
706
+ "count_text_length",
707
+ "search",
708
+ // filemgr 只读三件套(globfiles 在 coordinator FULLY_SAFE_TOOLS 提前放行,此处兜底防御非 coordinator 入口)
709
+ "filemgr-globfiles",
710
+ "filemgr-readfile",
711
+ "filemgr-grepfiles",
712
+ // 通用只读工具名
713
+ "read",
714
+ "read_file",
715
+ "file_read",
716
+ "head",
717
+ "tail",
718
+ "cat"
719
+ ]);
720
+ NON_WRITE_TOOL_PREFIXES = ["memory-", "skill-manager-", "mailbox-", "app-"];
700
721
  READ_ONLY_REDIR_CMDS = /* @__PURE__ */ new Set(["cat", "head", "tail", "less", "more", "grep", "find", "awk", "sed", "sort", "uniq", "wc", "cut", "strings", "od", "xxd", "hexdump"]);
701
722
  WRITE_KEYWORDS = ["write", "\u5199\u5165", "save", "\u4FDD\u5B58", "modify", "\u4FEE\u6539", "update", "\u66F4\u65B0", "delete", "\u5220\u9664", "remove", "\u79FB\u9664", "create", "\u521B\u5EFA", "append", "\u8FFD\u52A0", "truncate", "\u622A\u65AD", "overwrite", "\u8986\u76D6", "replace", "\u66FF\u6362"];
702
723
  READ_KEYWORDS = ["read", "\u8BFB\u53D6", "cat", "head", "tail", "less", "more", "view", "\u67E5\u770B", "open", "\u6253\u5F00", "load", "\u52A0\u8F7D", "grep", "search", "\u641C\u7D22", "find", "\u67E5\u627E"];