@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/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
|
-
|
|
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([
|
|
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"];
|
|
@@ -3257,7 +3278,11 @@ var AnalyzeResponseSchema = z.object({
|
|
|
3257
3278
|
});
|
|
3258
3279
|
var HealthResponseSchema = z.object({
|
|
3259
3280
|
status: z.string().default("healthy"),
|
|
3260
|
-
version: z.string().default(version)
|
|
3281
|
+
version: z.string().default(version),
|
|
3282
|
+
// 归属实例标识:值来自 env AGENT_MOSS_INSTANCE(spawn/systemd 注入),默认空串。
|
|
3283
|
+
// 多个 agentmoss 同机并存时,调用方按 instance 过滤避免连到别人的进程。
|
|
3284
|
+
// 空=未配置(独立部署或旧版),调用方可选择兼容或严格过滤。
|
|
3285
|
+
instance: z.string().default("")
|
|
3261
3286
|
});
|
|
3262
3287
|
|
|
3263
3288
|
// src/engine/coordinator.ts
|
|
@@ -4631,7 +4656,9 @@ function reportEnforcementEvent(opts) {
|
|
|
4631
4656
|
|
|
4632
4657
|
// src/routes.ts
|
|
4633
4658
|
async function healthRoute(c) {
|
|
4634
|
-
return c.json(HealthResponseSchema.parse({
|
|
4659
|
+
return c.json(HealthResponseSchema.parse({
|
|
4660
|
+
instance: process.env.AGENT_MOSS_INSTANCE || ""
|
|
4661
|
+
}));
|
|
4635
4662
|
}
|
|
4636
4663
|
async function analyzeRoute(c) {
|
|
4637
4664
|
const t0 = performance.now();
|