@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/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"];
@@ -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();