@kenhkl/agent-moss 0.10.1 → 0.10.3
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 +32 -5
- 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 +32 -5
- package/dist/server.js.map +1 -1
- package/dist/static/index.html +1132 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -478,8 +478,10 @@ function extractFilePaths(text) {
|
|
|
478
478
|
return [...new Set(paths)];
|
|
479
479
|
}
|
|
480
480
|
function checkReadBeforeWrite(actionType, actionDetail, actionHistory, reason, cwd) {
|
|
481
|
+
if (NON_WRITE_TOOL_PREFIXES.some((p) => actionType.startsWith(p))) return null;
|
|
481
482
|
if (NON_WRITE_TOOLS.has(actionType)) return null;
|
|
482
|
-
|
|
483
|
+
const isBashLike = actionType === "bash" || actionType === "executebash" || actionType === "terminal-executebash";
|
|
484
|
+
let isWrite = isBashLike ? WRITE_KEYWORDS.some((kw) => actionType.includes(kw) || actionDetail.includes(kw)) : WRITE_KEYWORDS.some((kw) => actionType.includes(kw));
|
|
483
485
|
if (!isWrite && actionDetail.includes(">")) {
|
|
484
486
|
const detailWithoutDevnull = actionDetail.replace(/(?:2|&|1)?\s*>\s*\/dev\/null\b/g, "");
|
|
485
487
|
if (detailWithoutDevnull.includes(">")) {
|
|
@@ -645,7 +647,7 @@ function checkIndirectFileAccess(actionType, actionDetail, cwd) {
|
|
|
645
647
|
violatedLayers: ["2"]
|
|
646
648
|
};
|
|
647
649
|
}
|
|
648
|
-
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;
|
|
650
|
+
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;
|
|
649
651
|
var init_logic_rules = __esm({
|
|
650
652
|
"src/engine/logic-rules.ts"() {
|
|
651
653
|
"use strict";
|
|
@@ -697,7 +699,26 @@ var init_logic_rules = __esm({
|
|
|
697
699
|
{ path: "secrets.yaml", riskLevel: "high", desc: "\u5BC6\u94A5\u914D\u7F6E\u6587\u4EF6" },
|
|
698
700
|
{ path: ".env", riskLevel: "high", desc: "\u73AF\u5883\u53D8\u91CF/\u51ED\u636E\u914D\u7F6E\u6587\u4EF6" }
|
|
699
701
|
];
|
|
700
|
-
NON_WRITE_TOOLS = /* @__PURE__ */ new Set([
|
|
702
|
+
NON_WRITE_TOOLS = /* @__PURE__ */ new Set([
|
|
703
|
+
"ask_user_question",
|
|
704
|
+
"glob",
|
|
705
|
+
"grep",
|
|
706
|
+
"list_dir",
|
|
707
|
+
"count_text_length",
|
|
708
|
+
"search",
|
|
709
|
+
// filemgr 只读三件套(globfiles 在 coordinator FULLY_SAFE_TOOLS 提前放行,此处兜底防御非 coordinator 入口)
|
|
710
|
+
"filemgr-globfiles",
|
|
711
|
+
"filemgr-readfile",
|
|
712
|
+
"filemgr-grepfiles",
|
|
713
|
+
// 通用只读工具名
|
|
714
|
+
"read",
|
|
715
|
+
"read_file",
|
|
716
|
+
"file_read",
|
|
717
|
+
"head",
|
|
718
|
+
"tail",
|
|
719
|
+
"cat"
|
|
720
|
+
]);
|
|
721
|
+
NON_WRITE_TOOL_PREFIXES = ["memory-", "skill-manager-", "mailbox-", "app-"];
|
|
701
722
|
READ_ONLY_REDIR_CMDS = /* @__PURE__ */ new Set(["cat", "head", "tail", "less", "more", "grep", "find", "awk", "sed", "sort", "uniq", "wc", "cut", "strings", "od", "xxd", "hexdump"]);
|
|
702
723
|
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"];
|
|
703
724
|
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"];
|
|
@@ -4565,7 +4586,11 @@ var AnalyzeResponseSchema = z.object({
|
|
|
4565
4586
|
});
|
|
4566
4587
|
var HealthResponseSchema = z.object({
|
|
4567
4588
|
status: z.string().default("healthy"),
|
|
4568
|
-
version: z.string().default(version)
|
|
4589
|
+
version: z.string().default(version),
|
|
4590
|
+
// 归属实例标识:值来自 env AGENT_MOSS_INSTANCE(spawn/systemd 注入),默认空串。
|
|
4591
|
+
// 多个 agentmoss 同机并存时,调用方按 instance 过滤避免连到别人的进程。
|
|
4592
|
+
// 空=未配置(独立部署或旧版),调用方可选择兼容或严格过滤。
|
|
4593
|
+
instance: z.string().default("")
|
|
4569
4594
|
});
|
|
4570
4595
|
|
|
4571
4596
|
// src/routes.ts
|
|
@@ -4674,7 +4699,9 @@ function reportEnforcementEvent(opts) {
|
|
|
4674
4699
|
|
|
4675
4700
|
// src/routes.ts
|
|
4676
4701
|
async function healthRoute(c) {
|
|
4677
|
-
return c.json(HealthResponseSchema.parse({
|
|
4702
|
+
return c.json(HealthResponseSchema.parse({
|
|
4703
|
+
instance: process.env.AGENT_MOSS_INSTANCE || ""
|
|
4704
|
+
}));
|
|
4678
4705
|
}
|
|
4679
4706
|
async function analyzeRoute(c) {
|
|
4680
4707
|
const t0 = performance.now();
|