@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/cli.js +24 -3
- package/dist/cli.js.map +1 -1
- package/dist/engine/coordinator.js +24 -3
- package/dist/engine/coordinator.js.map +1 -1
- package/dist/server.js +24 -3
- package/dist/server.js.map +1 -1
- package/dist/static/index.html +1132 -0
- package/package.json +1 -1
|
@@ -467,8 +467,10 @@ function extractFilePaths(text) {
|
|
|
467
467
|
return [...new Set(paths)];
|
|
468
468
|
}
|
|
469
469
|
function checkReadBeforeWrite(actionType, actionDetail, actionHistory, reason, cwd) {
|
|
470
|
+
if (NON_WRITE_TOOL_PREFIXES.some((p) => actionType.startsWith(p))) return null;
|
|
470
471
|
if (NON_WRITE_TOOLS.has(actionType)) return null;
|
|
471
|
-
|
|
472
|
+
const isBashLike = actionType === "bash" || actionType === "executebash" || actionType === "terminal-executebash";
|
|
473
|
+
let isWrite = isBashLike ? WRITE_KEYWORDS.some((kw) => actionType.includes(kw) || actionDetail.includes(kw)) : WRITE_KEYWORDS.some((kw) => actionType.includes(kw));
|
|
472
474
|
if (!isWrite && actionDetail.includes(">")) {
|
|
473
475
|
const detailWithoutDevnull = actionDetail.replace(/(?:2|&|1)?\s*>\s*\/dev\/null\b/g, "");
|
|
474
476
|
if (detailWithoutDevnull.includes(">")) {
|
|
@@ -634,7 +636,7 @@ function checkIndirectFileAccess(actionType, actionDetail, cwd) {
|
|
|
634
636
|
violatedLayers: ["2"]
|
|
635
637
|
};
|
|
636
638
|
}
|
|
637
|
-
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;
|
|
639
|
+
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;
|
|
638
640
|
var init_logic_rules = __esm({
|
|
639
641
|
"src/engine/logic-rules.ts"() {
|
|
640
642
|
"use strict";
|
|
@@ -686,7 +688,26 @@ var init_logic_rules = __esm({
|
|
|
686
688
|
{ path: "secrets.yaml", riskLevel: "high", desc: "\u5BC6\u94A5\u914D\u7F6E\u6587\u4EF6" },
|
|
687
689
|
{ path: ".env", riskLevel: "high", desc: "\u73AF\u5883\u53D8\u91CF/\u51ED\u636E\u914D\u7F6E\u6587\u4EF6" }
|
|
688
690
|
];
|
|
689
|
-
NON_WRITE_TOOLS = /* @__PURE__ */ new Set([
|
|
691
|
+
NON_WRITE_TOOLS = /* @__PURE__ */ new Set([
|
|
692
|
+
"ask_user_question",
|
|
693
|
+
"glob",
|
|
694
|
+
"grep",
|
|
695
|
+
"list_dir",
|
|
696
|
+
"count_text_length",
|
|
697
|
+
"search",
|
|
698
|
+
// filemgr 只读三件套(globfiles 在 coordinator FULLY_SAFE_TOOLS 提前放行,此处兜底防御非 coordinator 入口)
|
|
699
|
+
"filemgr-globfiles",
|
|
700
|
+
"filemgr-readfile",
|
|
701
|
+
"filemgr-grepfiles",
|
|
702
|
+
// 通用只读工具名
|
|
703
|
+
"read",
|
|
704
|
+
"read_file",
|
|
705
|
+
"file_read",
|
|
706
|
+
"head",
|
|
707
|
+
"tail",
|
|
708
|
+
"cat"
|
|
709
|
+
]);
|
|
710
|
+
NON_WRITE_TOOL_PREFIXES = ["memory-", "skill-manager-", "mailbox-", "app-"];
|
|
690
711
|
READ_ONLY_REDIR_CMDS = /* @__PURE__ */ new Set(["cat", "head", "tail", "less", "more", "grep", "find", "awk", "sed", "sort", "uniq", "wc", "cut", "strings", "od", "xxd", "hexdump"]);
|
|
691
712
|
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"];
|
|
692
713
|
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"];
|