feihong-code 8.0.0 → 8.0.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.
Files changed (128) hide show
  1. package/.github/workflows/ci.yml +193 -193
  2. package/CHANGELOG.md +140 -117
  3. package/README.md +656 -636
  4. package/agent-team/.env.example +13 -0
  5. package/agent-team/README.md +42 -0
  6. package/agent-team/agents/__init__.py +0 -0
  7. package/agent-team/agents/l1_acquisition.py +207 -0
  8. package/agent-team/agents/l2_content.py +237 -0
  9. package/agent-team/agents/l3_conversion.py +148 -0
  10. package/agent-team/agents/l4_analysis.py +118 -0
  11. package/agent-team/agents/l5_management.py +52 -0
  12. package/agent-team/agents/registry.py +60 -0
  13. package/agent-team/config.py +39 -0
  14. package/agent-team/core/__init__.py +0 -0
  15. package/agent-team/core/agent.py +73 -0
  16. package/agent-team/core/models.py +347 -0
  17. package/agent-team/core/scheduler.py +150 -0
  18. package/agent-team/core/task.py +121 -0
  19. package/agent-team/feihongzhi.db +0 -0
  20. package/agent-team/llm/__init__.py +12 -0
  21. package/agent-team/llm/base.py +22 -0
  22. package/agent-team/llm/doubao_llm.py +52 -0
  23. package/agent-team/llm/mock_llm.py +42 -0
  24. package/agent-team/main.py +235 -0
  25. package/agent-team/requirements.txt +2 -0
  26. package/agent-team/skill_packager.py +248 -0
  27. package/agent-team/skills/01_AI/350/216/267/345/256/242/347/272/277/347/264/242/351/233/267/350/276/276/SKILL.md +40 -0
  28. package/agent-team/skills/01_AI/350/216/267/345/256/242/347/272/277/347/264/242/351/233/267/350/276/276/run.py +111 -0
  29. package/agent-team/skills/02_AI/351/224/200/345/224/256/350/267/237/350/277/233/351/224/200/345/206/240/SKILL.md +38 -0
  30. package/agent-team/skills/02_AI/351/224/200/345/224/256/350/267/237/350/277/233/351/224/200/345/206/240/run.py +108 -0
  31. package/agent-team/skills/03_/350/257/204/350/256/272/345/214/272/345/225/206/346/234/272/350/257/206/345/210/253/345/256/230/SKILL.md +38 -0
  32. package/agent-team/skills/03_/350/257/204/350/256/272/345/214/272/345/225/206/346/234/272/350/257/206/345/210/253/345/256/230/run.py +106 -0
  33. package/agent-team/skills/04_/345/256/242/346/210/267/350/201/212/345/244/251/346/210/220/344/272/244/345/210/206/346/236/220/345/256/230/SKILL.md +37 -0
  34. package/agent-team/skills/04_/345/256/242/346/210/267/350/201/212/345/244/251/346/210/220/344/272/244/345/210/206/346/236/220/345/256/230/run.py +107 -0
  35. package/agent-team/skills/05_/345/220/214/350/241/214/347/210/206/346/254/276/351/233/267/350/276/276/SKILL.md +38 -0
  36. package/agent-team/skills/05_/345/220/214/350/241/214/347/210/206/346/254/276/351/233/267/350/276/276/run.py +99 -0
  37. package/agent-team/skills/06_/346/257/217/346/227/245/347/262/276/345/207/206/350/216/267/345/256/242/351/200/211/351/242/230/345/256/230/SKILL.md +39 -0
  38. package/agent-team/skills/06_/346/257/217/346/227/245/347/262/276/345/207/206/350/216/267/345/256/242/351/200/211/351/242/230/345/256/230/run.py +103 -0
  39. package/agent-team/skills/07_AI/345/244/226/350/264/270/345/274/200/345/217/221/345/256/242/346/210/267/345/221/230/345/267/245/SKILL.md +39 -0
  40. package/agent-team/skills/07_AI/345/244/226/350/264/270/345/274/200/345/217/221/345/256/242/346/210/267/345/221/230/345/267/245/run.py +103 -0
  41. package/agent-team/skills/08_/345/260/217/347/272/242/344/271/246/347/262/276/345/207/206/350/216/267/345/256/242/345/221/230/345/267/245/SKILL.md +40 -0
  42. package/agent-team/skills/08_/345/260/217/347/272/242/344/271/246/347/262/276/345/207/206/350/216/267/345/256/242/345/221/230/345/267/245/run.py +97 -0
  43. package/agent-team/skills/09_/347/247/201/345/237/237/345/256/242/346/210/267/345/210/206/345/261/202/350/267/237/350/277/233/345/256/230/SKILL.md +38 -0
  44. package/agent-team/skills/09_/347/247/201/345/237/237/345/256/242/346/210/267/345/210/206/345/261/202/350/267/237/350/277/233/345/256/230/run.py +106 -0
  45. package/agent-team/skills/10_GEO/345/225/206/346/234/272/350/257/212/346/226/255/345/256/230/SKILL.md +38 -0
  46. package/agent-team/skills/10_GEO/345/225/206/346/234/272/350/257/212/346/226/255/345/256/230/run.py +108 -0
  47. package/agent-team/skills/11_/344/270/200/344/272/272/345/205/254/345/217/270AI/345/221/230/345/267/245/350/260/203/345/272/246/345/256/230/SKILL.md +37 -0
  48. package/agent-team/skills/11_/344/270/200/344/272/272/345/205/254/345/217/270AI/345/221/230/345/267/245/350/260/203/345/272/246/345/256/230/run.py +111 -0
  49. package/agent-team/skills/12_/350/200/201/346/235/277/347/237/255/350/247/206/351/242/221/350/216/267/345/256/242/350/204/232/346/234/254/345/256/230/SKILL.md +39 -0
  50. package/agent-team/skills/12_/350/200/201/346/235/277/347/237/255/350/247/206/351/242/221/350/216/267/345/256/242/350/204/232/346/234/254/345/256/230/run.py +104 -0
  51. package/agent-team/skills/13_/345/215/232/344/270/273/350/264/246/345/217/267/346/267/261/345/272/246/346/213/206/350/247/243/345/256/230/SKILL.md +37 -0
  52. package/agent-team/skills/13_/345/215/232/344/270/273/350/264/246/345/217/267/346/267/261/345/272/246/346/213/206/350/247/243/345/256/230/run.py +105 -0
  53. package/agent-team/skills/14_AI/347/237/255/350/247/206/351/242/221/350/207/252/345/212/250/345/211/252/350/276/221/345/270/210/SKILL.md +39 -0
  54. package/agent-team/skills/14_AI/347/237/255/350/247/206/351/242/221/350/207/252/345/212/250/345/211/252/350/276/221/345/270/210/run.py +108 -0
  55. package/agent-team/skills/15_/345/205/254/344/274/227/345/217/267/350/207/252/345/212/250/350/277/220/350/220/245/345/217/221/345/270/203/345/256/230/SKILL.md +38 -0
  56. package/agent-team/skills/15_/345/205/254/344/274/227/345/217/267/350/207/252/345/212/250/350/277/220/350/220/245/345/217/221/345/270/203/345/256/230/run.py +105 -0
  57. package/agent-team/skills/16_/350/241/214/344/270/232/346/267/261/345/272/246/345/210/206/346/236/220/345/270/210/SKILL.md +38 -0
  58. package/agent-team/skills/16_/350/241/214/344/270/232/346/267/261/345/272/246/345/210/206/346/236/220/345/270/210/run.py +108 -0
  59. package/agent-team/skills/17_/346/212/225/350/265/204/347/240/224/347/251/266/345/222/250/350/257/242/345/256/230/SKILL.md +38 -0
  60. package/agent-team/skills/17_/346/212/225/350/265/204/347/240/224/347/251/266/345/222/250/350/257/242/345/256/230/run.py +106 -0
  61. package/agent-team/tests/__init__.py +0 -0
  62. package/agent-team/tests/test_core.py +156 -0
  63. package/dist/agent/agent-session.js +103 -0
  64. package/dist/agent/agent-session.js.map +1 -0
  65. package/dist/agent/orchestrator.js +8 -0
  66. package/dist/agent/orchestrator.js.map +1 -1
  67. package/dist/agent/steer.js +52 -0
  68. package/dist/agent/steer.js.map +1 -0
  69. package/dist/cli/index.js +1 -0
  70. package/dist/cli/index.js.map +1 -1
  71. package/dist/cli/node-guard.js +17 -0
  72. package/dist/cli/node-guard.js.map +1 -0
  73. package/dist/cli/run.js +2 -0
  74. package/dist/cli/run.js.map +1 -1
  75. package/dist/cli/version.js +1 -1
  76. package/dist/enterprise/policy.js +40 -17
  77. package/dist/enterprise/policy.js.map +1 -1
  78. package/dist/tools/agents/agents-bridge.js +144 -0
  79. package/dist/tools/agents/agents-bridge.js.map +1 -0
  80. package/dist/tools/desktop/desktop-guard.js +81 -0
  81. package/dist/tools/desktop/desktop-guard.js.map +1 -0
  82. package/dist/tools/desktop/desktop.tool.js +201 -0
  83. package/dist/tools/desktop/desktop.tool.js.map +1 -0
  84. package/dist/tools/desktop/feihong-win.js +163 -0
  85. package/dist/tools/desktop/feihong-win.js.map +1 -0
  86. package/dist/tools/desktop/index.js +37 -0
  87. package/dist/tools/desktop/index.js.map +1 -0
  88. package/dist/tools/index.js +2 -0
  89. package/dist/tools/index.js.map +1 -1
  90. package/dist/tools/mcp/index.js +10 -2
  91. package/dist/tools/mcp/index.js.map +1 -1
  92. package/dist/tools/mcp/mcp-client.js +4 -0
  93. package/dist/tools/mcp/mcp-client.js.map +1 -1
  94. package/dist/tools/sandbox.js +28 -0
  95. package/dist/tools/sandbox.js.map +1 -1
  96. package/dist/web/public/public/css/style.css +1756 -0
  97. package/dist/web/public/public/favicon.svg +11 -0
  98. package/dist/web/public/public/index.html +1246 -0
  99. package/dist/web/public/public/js/api.js +558 -0
  100. package/dist/web/public/public/js/app.js +2233 -0
  101. package/dist/web/public/public/js/mock-api.js +259 -0
  102. package/dist/web/public/public/js/monaco-editor.js +363 -0
  103. package/dist/web/public/public/js/ui.js +2217 -0
  104. package/dist/web/public/public/js/utils.js +214 -0
  105. package/dist/web/public/public/manifest.json +59 -0
  106. package/dist/web/public/public/robots.txt +14 -0
  107. package/dist/web/public/public/service-worker.js +149 -0
  108. package/docs/AI/345/221/230/345/267/245/345/206/233/345/233/242-/346/225/264/345/220/210/350/257/264/346/230/216.md +68 -0
  109. package/docs/API.md +1 -1
  110. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +3 -3
  111. package/docs/P1.1-P3-P5/345/267/245/347/250/213/345/256/236/346/226/275/346/200/273/347/273/223.md +328 -0
  112. package/docs/P5-Pi/345/257/271/347/205/247/350/257/204/346/265/213/346/212/245/345/221/212-mock/346/250/241/345/274/217.json +125 -0
  113. package/docs/P5-Pi/345/257/271/347/205/247/350/257/204/346/265/213/346/212/245/345/221/212-/347/234/237/345/256/236/346/250/241/345/236/213.json +138 -0
  114. package/docs/P5-pi-compare-real-report.json +138 -0
  115. package/docs/P5-pi-compare-report.json +125 -0
  116. package/docs/Pi-Agent/346/216/245/345/205/245/351/243/236/350/231/271Code-MVP/351/233/206/346/210/220/344/272/244/344/273/230/347/211/251.md +355 -0
  117. package/docs/Pi-Agent/346/216/245/345/205/245/351/243/236/350/231/271Code/344/273/267/345/200/274/345/210/206/346/236/220-/345/274/200/345/217/221/346/226/207/346/241/243.md +291 -0
  118. package/docs/Pi-Agent/346/216/245/345/205/245/351/243/236/350/231/271Code/344/273/267/345/200/274/351/207/215/344/274/260-/345/217/257/350/247/206/345/214/226.html +84 -0
  119. package/docs/SWE-bench-300-agnes-2.5-flash-/346/234/200/347/273/210/346/212/245/345/221/212.json +2012 -0
  120. package/docs/SWE-bench-300-agnes-2.5-flash-/350/267/221/345/210/206/346/212/245/345/221/212.md +74 -0
  121. package/docs/SWE-bench-Lite-DeepSeek-V4-Flash-/350/267/221/345/210/206/346/212/245/345/221/212.md +102 -0
  122. package/docs/TECHNICAL-SPECIFICATION.md +66 -0
  123. package/docs/TECHNICAL-SPECIFICATION.pdf +0 -0
  124. package/docs/Windows/346/211/213/350/204/232-POC/346/274/224/347/244/272/350/204/232/346/234/254.md +131 -0
  125. package/docs/Windows/346/211/213/350/204/232/346/216/245/345/205/245/346/214/207/345/215/227.md +181 -0
  126. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246-v8.0.1.md +146 -0
  127. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +1 -1
  128. package/package.json +6 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-guard.js","sourceRoot":"","sources":["../../../src/tools/desktop/desktop-guard.ts"],"names":[],"mappings":";;;AA4DA,sDASC;AAUD,8CAkCC;AAxFY,QAAA,eAAe,GAAoB;IAC9C,MAAM;IACN,OAAO;IACP,aAAa;IACb,MAAM;IACN,QAAQ;IACR,eAAe;IACf,QAAQ;CACT,CAAC;AAEF;;;;GAIG;AACU,QAAA,uBAAuB,GAAa;IAC/C,OAAO;IACP,cAAc;IACd,QAAQ;IACR,iBAAiB;IACjB,QAAQ;IACR,sBAAsB;IACtB,cAAc;IACd,kBAAkB;IAClB,MAAM;IACN,sBAAsB;IACtB,OAAO;IACP,gBAAgB;IAChB,MAAM;IACN,iBAAiB;IACjB,QAAQ;IACR,OAAO;CACR,CAAC;AAEF,oDAAoD;AACpD,SAAgB,qBAAqB,CAAC,KAAc;IAClD,MAAM,IAAI,GAAG,CAAC,GAAG,+BAAuB,CAAC,CAAC;IAC1C,IAAI,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAOD;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,KAAsB,EACtB,iBAA2B,+BAAuB;IAElD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/C,WAAW;IACX,IAAI,CAAC,uBAAe,CAAC,QAAQ,CAAC,MAAuB,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,WAAW,MAAM,IAAI,KAAK,WAAW,uBAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;SAC1E,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,sCAAsC;SAC/C,CAAC;IACJ,CAAC;IAED,aAAa;IACb,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,KAAK,eAAe,GAAG,GAAG,EAAE,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.feihongDesktopTools = exports.feihongDesktopVerifyTool = exports.feihongDesktopActTool = exports.feihongDesktopSeeTool = void 0;
4
+ /**
5
+ * 飞虹 Code (对标 Muse Code · 自研内核)
6
+ * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
7
+ *
8
+ * C 层 · feihong-desktop 原生工具(模型可见的强类型入口)
9
+ *
10
+ * 三个工具,对应「看 → 动 → 验」闭环:
11
+ * feihong_desktop_see 只读:桌面状态勘察(焦点/窗口/光标)
12
+ * feihong_desktop_act 写:标准动作序列(guard → focus → act → 取证)
13
+ * feihong_desktop_verify 只读:截图+状态回读,验证动作是否生效
14
+ *
15
+ * 与 MCP 直通工具(desktop_*)的区别:
16
+ * - zod 强类型参数(不再是 z.record 宽松透传)
17
+ * - 内置停手线 + 强制取证(MCP 直通没有)
18
+ * - 语义化动作名(type/click/launch…),模型心智负担更低
19
+ */
20
+ const zod_1 = require("zod");
21
+ const feihong_win_1 = require("./feihong-win");
22
+ const desktop_guard_1 = require("./desktop-guard");
23
+ /** 从 ToolContext 取 runId(构造取证目录用) */
24
+ function runIdOf(ctx) {
25
+ return typeof ctx.runId === 'string' ? ctx.runId : String(ctx.runId ?? 'session');
26
+ }
27
+ /* ================= feihong_desktop_see(只读勘察) ================= */
28
+ const seeSchema = zod_1.z.object({
29
+ /** 可选:按窗口标题/进程名过滤可见窗口(子串匹配) */
30
+ filter: zod_1.z.string().optional(),
31
+ });
32
+ exports.feihongDesktopSeeTool = {
33
+ name: 'feihong_desktop_see',
34
+ description: '只读勘察当前 Windows 桌面:焦点窗口、可见窗口、光标位置。不改变任何状态。',
35
+ jsonSchema: {
36
+ type: 'object',
37
+ properties: {
38
+ filter: { type: 'string', description: '可选:按窗口标题/进程名过滤(子串匹配)' },
39
+ },
40
+ },
41
+ schema: seeSchema,
42
+ async execute(args, ctx) {
43
+ const client = ctx._desktopClient;
44
+ if (!client) {
45
+ return { ok: false, output: '', error: 'feihong-desktop 未挂载(当前会话无 desktop MCP)' };
46
+ }
47
+ const { filter } = seeSchema.parse(args);
48
+ try {
49
+ const state = await client.callTool('desktop_state', {});
50
+ if (!state.ok)
51
+ return { ok: false, output: '', error: `desktop_state 失败: ${state.error ?? state.output}` };
52
+ let out = state.output;
53
+ if (filter) {
54
+ try {
55
+ const parsed = JSON.parse(state.output);
56
+ const hits = (parsed.visibleWindows ?? []).filter((w) => (w.title ?? '').toLowerCase().includes(filter.toLowerCase()) ||
57
+ (w.processName ?? '').toLowerCase().includes(filter.toLowerCase()));
58
+ out = JSON.stringify({ ...parsed, visibleWindows: hits, filteredBy: filter });
59
+ }
60
+ catch {
61
+ // 服务器返回非 JSON 时不强行解析,原样返回
62
+ }
63
+ }
64
+ return { ok: true, output: out };
65
+ }
66
+ catch (e) {
67
+ return { ok: false, output: '', error: e instanceof Error ? e.message : String(e) };
68
+ }
69
+ },
70
+ };
71
+ /* ================= feihong_desktop_act(写 · 标准动作序列) ================= */
72
+ const actSchema = zod_1.z.object({
73
+ /** 目标窗口标题(type/click/mouse_click/drag/scroll/terminal_send 必填;launch 豁免) */
74
+ windowTitle: zod_1.z.string().optional(),
75
+ /** 动作类型 */
76
+ action: zod_1.z.enum(desktop_guard_1.ALLOWED_ACTIONS),
77
+ /** type/terminal_send 的文本内容 */
78
+ text: zod_1.z.string().optional(),
79
+ /** click 的 UIA 元素名/automationId */
80
+ element: zod_1.z.string().optional(),
81
+ /** mouse_click / drag 起点坐标 */
82
+ x: zod_1.z.number().optional(),
83
+ y: zod_1.z.number().optional(),
84
+ /** drag 终点坐标 */
85
+ endX: zod_1.z.number().optional(),
86
+ endY: zod_1.z.number().optional(),
87
+ /** scroll 增量 */
88
+ deltaX: zod_1.z.number().optional(),
89
+ deltaY: zod_1.z.number().optional(),
90
+ /** launch 的应用命令 */
91
+ command: zod_1.z.string().optional(),
92
+ /** launch 等待窗口出现毫秒数(默认 5000) */
93
+ waitMs: zod_1.z.number().optional(),
94
+ });
95
+ exports.feihongDesktopActTool = {
96
+ name: 'feihong_desktop_act',
97
+ description: '对 Windows 桌面执行动作(需审批):type 键盘输入 / click UIA 点击 / mouse_click 坐标点击 / drag 拖拽 / scroll 滚动 / terminal_send 终端命令 / launch 启动应用。自动执行:停手线检查 → 聚焦目标窗口 → 动作 → 截图取证。',
98
+ jsonSchema: {
99
+ type: 'object',
100
+ properties: {
101
+ windowTitle: { type: 'string', description: '目标窗口标题(写操作必填)' },
102
+ action: { type: 'string', enum: desktop_guard_1.ALLOWED_ACTIONS, description: '动作类型' },
103
+ text: { type: 'string', description: 'type/terminal_send 的文本' },
104
+ element: { type: 'string', description: 'click 的 UIA 元素名' },
105
+ x: { type: 'number', description: 'mouse_click/drag 起点 x' },
106
+ y: { type: 'number', description: 'mouse_click/drag 起点 y' },
107
+ endX: { type: 'number', description: 'drag 终点 x' },
108
+ endY: { type: 'number', description: 'drag 终点 y' },
109
+ deltaX: { type: 'number', description: 'scroll 水平增量' },
110
+ deltaY: { type: 'number', description: 'scroll 垂直增量(负=向上)' },
111
+ command: { type: 'string', description: 'launch 的应用命令' },
112
+ waitMs: { type: 'number', description: 'launch 等待毫秒数' },
113
+ },
114
+ required: ['action'],
115
+ },
116
+ schema: actSchema,
117
+ async execute(args, ctx) {
118
+ const client = ctx._desktopClient;
119
+ if (!client) {
120
+ return { ok: false, output: '', error: 'feihong-desktop 未挂载(当前会话无 desktop MCP)' };
121
+ }
122
+ const p = actSchema.parse(args);
123
+ const forensics = new feihong_win_1.ForensicsLogger((0, feihong_win_1.resolveForensicsDir)(runIdOf(ctx)), client);
124
+ const r = await (0, feihong_win_1.feihongDesktopAct)(client, forensics, p);
125
+ if (!r.ok) {
126
+ return { ok: false, output: '', error: r.error, ...(r.forensicsPath ? { output: `取证: ${r.forensicsPath}` } : {}) };
127
+ }
128
+ return {
129
+ ok: true,
130
+ output: `${r.output}\n[取证] ${r.forensicsPath ?? ''}\n[提示] 若需确认效果,调用 feihong_desktop_verify`,
131
+ };
132
+ },
133
+ };
134
+ /* ================= feihong_desktop_verify(只读回读验证) ================= */
135
+ const verifySchema = zod_1.z.object({
136
+ /** 期望出现的文本(在截图 OCR / 状态输出中匹配,子串) */
137
+ expectText: zod_1.z.string().optional(),
138
+ /** 期望处于焦点的窗口标题(子串) */
139
+ expectWindow: zod_1.z.string().optional(),
140
+ });
141
+ exports.feihongDesktopVerifyTool = {
142
+ name: 'feihong_desktop_verify',
143
+ description: '只读回读验证:截图 + 桌面状态,检查动作是否生效(期望文本是否出现/期望窗口是否聚焦)。',
144
+ jsonSchema: {
145
+ type: 'object',
146
+ properties: {
147
+ expectText: { type: 'string', description: '期望出现的文本(子串匹配)' },
148
+ expectWindow: { type: 'string', description: '期望聚焦的窗口标题(子串)' },
149
+ },
150
+ },
151
+ schema: verifySchema,
152
+ async execute(args, ctx) {
153
+ const client = ctx._desktopClient;
154
+ if (!client) {
155
+ return { ok: false, output: '', error: 'feihong-desktop 未挂载(当前会话无 desktop MCP)' };
156
+ }
157
+ const { expectText, expectWindow } = verifySchema.parse(args);
158
+ try {
159
+ const [shot, state] = await Promise.all([
160
+ client.callTool('screenshot', {}),
161
+ client.callTool('desktop_state', {}),
162
+ ]);
163
+ const checks = [];
164
+ let passed = true;
165
+ if (expectWindow) {
166
+ try {
167
+ const st = JSON.parse(state.output);
168
+ const focused = st.focusedWindow?.title ?? '';
169
+ const hit = focused.toLowerCase().includes(expectWindow.toLowerCase());
170
+ checks.push(`窗口焦点: ${hit ? '命中' : '未命中'}(当前焦点: ${focused || '(无)'})`);
171
+ if (!hit)
172
+ passed = false;
173
+ }
174
+ catch { /* 解析失败跳过该项 */ }
175
+ }
176
+ if (expectText) {
177
+ const ocrText = (shot.output ?? '') + (state.output ?? '');
178
+ const hit = ocrText.includes(expectText);
179
+ checks.push(`文本匹配: ${hit ? '命中' : '未命中'}(在截图/状态输出中检索 "${expectText}")`);
180
+ if (!hit)
181
+ passed = false;
182
+ }
183
+ if (checks.length === 0) {
184
+ checks.push('未提供期望条件,仅返回截图与状态(请用 expectText/expectWindow 做断言)');
185
+ }
186
+ return {
187
+ ok: true,
188
+ output: `验证${passed ? '通过' : '未通过'}:\n- ${checks.join('\n- ')}\n--- 状态 ---\n${state.output.slice(0, 400)}\n--- 截图返回 ---\n${shot.output.slice(0, 200)}`,
189
+ };
190
+ }
191
+ catch (e) {
192
+ return { ok: false, output: '', error: e instanceof Error ? e.message : String(e) };
193
+ }
194
+ },
195
+ };
196
+ exports.feihongDesktopTools = [
197
+ exports.feihongDesktopSeeTool,
198
+ exports.feihongDesktopActTool,
199
+ exports.feihongDesktopVerifyTool,
200
+ ];
201
+ //# sourceMappingURL=desktop.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.tool.js","sourceRoot":"","sources":["../../../src/tools/desktop/desktop.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForensicsLogger = void 0;
4
+ exports.resolveForensicsDir = resolveForensicsDir;
5
+ exports.feihongDesktopAct = feihongDesktopAct;
6
+ exports.forensicsDirExists = forensicsDirExists;
7
+ exports.touchFile = touchFile;
8
+ /**
9
+ * 飞虹 Code (对标 Muse Code · 自研内核)
10
+ * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
11
+ *
12
+ * C 层 · feihong-win 内化核心(Windows 手脚标准动作序列)
13
+ *
14
+ * 把 desktop-touch-mcp 的零散 MCP 调用固化成一条纪律化流水线:
15
+ * probe(可选)→ guard(停手线)→ focus(验证目标窗口)→ act(执行动作)
16
+ * → verify(截图回读)→ forensics(取证落盘)
17
+ *
18
+ * 设计要点:
19
+ * - 复用主流程 attachMcpTools 创建的 McpClient(不重复 spawn 进程)
20
+ * - 取证目录:FH_HOME/forensics/<runId>/manifest.jsonl + shots/,与审计链同源
21
+ * - 每次写操作后强制截图取证,保证「操作留痕、可复盘、可甩锅」
22
+ */
23
+ const fs_1 = require("fs");
24
+ const path_1 = require("path");
25
+ const os_1 = require("os");
26
+ const desktop_guard_1 = require("./desktop-guard");
27
+ /** 取证目录解析:FH_FORENSICS_DIR 覆盖,缺省 FH_HOME/forensics */
28
+ function resolveForensicsDir(runId) {
29
+ const base = process.env.FH_FORENSICS_DIR || (0, path_1.join)((0, os_1.homedir)(), '.feihong-code', 'forensics');
30
+ const dir = (0, path_1.join)(base, runId.replace(/[^a-zA-Z0-9_-]/g, '_'));
31
+ (0, fs_1.mkdirSync)(dir, { recursive: true });
32
+ (0, fs_1.mkdirSync)((0, path_1.join)(dir, 'shots'), { recursive: true });
33
+ return dir;
34
+ }
35
+ /** 取证记录器:JSONL manifest + 截图目录 */
36
+ class ForensicsLogger {
37
+ dir;
38
+ client;
39
+ constructor(dir, client) {
40
+ this.dir = dir;
41
+ this.client = client;
42
+ }
43
+ /** 追加一条动作记录(工具/入参摘要/结果摘要/时间) */
44
+ record(entry) {
45
+ try {
46
+ (0, fs_1.appendFileSync)((0, path_1.join)(this.dir, 'manifest.jsonl'), JSON.stringify({ ts: new Date().toISOString(), ...entry }) + '\n', 'utf8');
47
+ }
48
+ catch (e) {
49
+ // 取证写入失败不阻断主流程,但把错误带进返回(调用方可见)
50
+ // eslint-disable-next-line no-console
51
+ console.warn('[forensics] manifest 写入失败:', e instanceof Error ? e.message : String(e));
52
+ }
53
+ }
54
+ /** 执行后强制截图取证:截图返回全文记入 manifest;desktop-touch 磁盘缓存保留原图 */
55
+ async snapshot(note) {
56
+ const res = await this.client.callTool('screenshot', {});
57
+ this.record({ event: 'snapshot', note, screenshotOutput: res.output?.slice(0, 500) || '' });
58
+ return res;
59
+ }
60
+ get manifestPath() {
61
+ return (0, path_1.join)(this.dir, 'manifest.jsonl');
62
+ }
63
+ }
64
+ exports.ForensicsLogger = ForensicsLogger;
65
+ /** 动作 → desktop-touch MCP 工具调用映射(入参对齐已实测的工具 schema) */
66
+ function mapAction(p) {
67
+ switch (p.action) {
68
+ // type 用 '@active':feihong 层已 focus 目标窗口(停手线校验过标题),
69
+ // keyboard 直接瞄准当前前台窗口,规避「标题中英文差异导致 AutoGuard 拦截」。
70
+ case 'type':
71
+ return { tool: 'keyboard', args: { action: 'type', text: p.text ?? '', windowTitle: '@active' } };
72
+ case 'click':
73
+ return { tool: 'click_element', args: { name: p.element ?? '', windowTitle: p.windowTitle } };
74
+ case 'mouse_click':
75
+ return { tool: 'mouse_click', args: { x: p.x ?? 0, y: p.y ?? 0, windowTitle: p.windowTitle } };
76
+ case 'drag':
77
+ return {
78
+ tool: 'mouse_drag',
79
+ args: { startX: p.x ?? 0, startY: p.y ?? 0, endX: p.endX ?? 0, endY: p.endY ?? 0, windowTitle: p.windowTitle },
80
+ };
81
+ case 'scroll':
82
+ return { tool: 'scroll', args: { deltaX: p.deltaX ?? 0, deltaY: p.deltaY ?? -100, windowTitle: p.windowTitle } };
83
+ case 'terminal_send':
84
+ return { tool: 'terminal', args: { action: 'send', text: p.text ?? '', windowTitle: p.windowTitle } };
85
+ case 'launch':
86
+ return { tool: 'workspace_launch', args: { command: p.command ?? '', waitMs: p.waitMs ?? 5000 } };
87
+ }
88
+ }
89
+ /**
90
+ * MCP 结果语义判定:desktop-touch 的感知守卫/错误码会以"正常返回"携带错误文本,
91
+ * 仅看 MCP 层 ok 会漏判。命中错误码 → 视为失败,并保留原始输出供模型复盘。
92
+ */
93
+ const DESKTOP_ERROR_CODES = [
94
+ 'AutoGuardBlocked',
95
+ 'GuardFailed',
96
+ 'DestinationRequired',
97
+ 'ElementDisabled',
98
+ 'InvokePatternNotSupported',
99
+ 'WindowNotFound',
100
+ 'FocusFailed',
101
+ ];
102
+ function isDesktopError(output) {
103
+ for (const code of DESKTOP_ERROR_CODES) {
104
+ if (output.includes(code))
105
+ return true;
106
+ }
107
+ return false;
108
+ }
109
+ /**
110
+ * 标准动作序列:guard → focus(launch 豁免)→ act → 取证截图
111
+ * 返回结构化结果:动作输出 + 取证 manifest 路径 + 截图回读
112
+ */
113
+ async function feihongDesktopAct(client, forensics, params) {
114
+ // 1) 停手线(硬编码,任何角色不可绕过)
115
+ const guard = (0, desktop_guard_1.checkDesktopGuard)({ windowTitle: params.windowTitle, action: params.action });
116
+ if (guard.blocked) {
117
+ forensics.record({ event: 'act_blocked', action: params.action, windowTitle: params.windowTitle, reason: guard.reason });
118
+ return { ok: false, output: '', error: guard.reason, forensicsPath: forensics.manifestPath };
119
+ }
120
+ // 2) 聚焦目标窗口(launch 无既有窗口,豁免)
121
+ if (params.action !== 'launch' && params.windowTitle) {
122
+ const f = await client.callTool('focus_window', { title: params.windowTitle });
123
+ if (!f.ok) {
124
+ forensics.record({ event: 'focus_failed', windowTitle: params.windowTitle, error: f.error });
125
+ return { ok: false, output: '', error: `聚焦窗口失败: ${f.error ?? f.output}`, forensicsPath: forensics.manifestPath };
126
+ }
127
+ }
128
+ // 3) 执行动作
129
+ const { tool, args } = mapAction(params);
130
+ const res = await client.callTool(tool, args);
131
+ // 3.5) 结果语义判定:MCP 层 ok 但输出携带感知守卫错误码 → 视为失败
132
+ const semanticallyFailed = res.ok && isDesktopError(res.output ?? '');
133
+ // 4) 取证截图(无论成败都截图——失败现场同样可复盘)
134
+ const shot = await forensics.snapshot(`${params.action}@${params.windowTitle ?? params.command ?? ''}`);
135
+ forensics.record({
136
+ event: 'act',
137
+ action: params.action,
138
+ windowTitle: params.windowTitle,
139
+ command: params.command,
140
+ tool,
141
+ args: JSON.stringify(args).slice(0, 300),
142
+ resultOk: res.ok,
143
+ result: res.output?.slice(0, 300) || res.error || '',
144
+ shotOk: shot.ok,
145
+ });
146
+ if (!res.ok || semanticallyFailed) {
147
+ const errText = res.error ?? res.output ?? '';
148
+ const hint = semanticallyFailed
149
+ ? '(desktop-touch 感知守卫拦截,请根据输出中的 suggest 调整后重试)'
150
+ : '';
151
+ return { ok: false, output: '', error: `${errText.slice(0, 400)}${hint}`, forensicsPath: forensics.manifestPath };
152
+ }
153
+ return { ok: true, output: res.output, forensicsPath: forensics.manifestPath };
154
+ }
155
+ /** 目录是否已存在(测试辅助) */
156
+ function forensicsDirExists(dir) {
157
+ return (0, fs_1.existsSync)((0, path_1.join)(dir, 'manifest.jsonl')) || (0, fs_1.existsSync)(dir);
158
+ }
159
+ /** 写一个空占位文件(测试辅助,正常流程由 resolveForensicsDir 创建) */
160
+ function touchFile(p) {
161
+ (0, fs_1.writeFileSync)(p, '', 'utf8');
162
+ }
163
+ //# sourceMappingURL=feihong-win.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feihong-win.js","sourceRoot":"","sources":["../../../src/tools/desktop/feihong-win.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attachDesktopTools = attachDesktopTools;
4
+ const desktop_tool_1 = require("./desktop.tool");
5
+ const logger_1 = require("../../shared/logger");
6
+ const DESKTOP_SERVER = 'desktop';
7
+ /**
8
+ * 找到已连接的 desktop MCP client 并注册 feihong 原生工具。
9
+ * 未连接(未配置/attach 失败)时静默跳过——不影响主流程。
10
+ * 返回是否成功挂载。
11
+ */
12
+ function attachDesktopTools(registry, clients) {
13
+ const client = clients.find((c) => c.serverName === DESKTOP_SERVER);
14
+ if (!client) {
15
+ logger_1.logger.info('feihong-desktop 未挂载(未找到 desktop MCP client)');
16
+ return false;
17
+ }
18
+ const desktopClient = {
19
+ callTool: (name, args) => client.callTool(name, args),
20
+ };
21
+ for (const t of desktop_tool_1.feihongDesktopTools) {
22
+ registry.register(withClient(t, desktopClient));
23
+ }
24
+ logger_1.logger.info('feihong-desktop 已挂载', { tools: desktop_tool_1.feihongDesktopTools.map((t) => t.name).join(',') });
25
+ return true;
26
+ }
27
+ /** 包装:把 desktopClient 注入 execute 的 ctx */
28
+ function withClient(tool, client) {
29
+ const base = { ...tool };
30
+ return {
31
+ ...base,
32
+ async execute(args, ctx) {
33
+ return tool.execute(args, { ...ctx, _desktopClient: client });
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/desktop/index.ts"],"names":[],"mappings":";;AAoBA,gDAiBC;AA3BD,iDAAqD;AACrD,gDAA6C;AAE7C,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC;;;;GAIG;AACH,SAAgB,kBAAkB,CAChC,QAAqC,EACrC,OAAoB;IAEpB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,CAAC,IAAY,EAAE,IAA6B,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;KACvF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,kCAAmB,EAAE,CAAC;QACpC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,eAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,kCAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0CAA0C;AAC1C,SAAS,UAAU,CAAC,IAAU,EAAE,MAAmF;IACjH,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IACzB,OAAO;QACL,GAAG,IAAI;QACP,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,cAAc,EAAE,MAAM,EAAW,CAAC,CAAC;QACzE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -34,6 +34,7 @@ const build_check_tool_1 = require("./verify/build-check.tool");
34
34
  const load_skill_tool_1 = require("./skills/load-skill.tool");
35
35
  const web_tool_1 = require("./web/web.tool");
36
36
  const browser_tool_1 = require("./browser/browser.tool");
37
+ const agents_bridge_1 = require("./agents/agents-bridge");
37
38
  function createDefaultRegistry() {
38
39
  const reg = new tool_registry_1.ToolRegistry();
39
40
  for (const t of [
@@ -49,6 +50,7 @@ function createDefaultRegistry() {
49
50
  web_tool_1.webFetchTool,
50
51
  web_tool_1.webSearchTool,
51
52
  ...browser_tool_1.browserTools,
53
+ ...agents_bridge_1.agentsTools,
52
54
  ]) {
53
55
  reg.register(t);
54
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBA,sDAmBC;AAtCD;;;;;GAKG;AACH,mDAA+C;AAC/C,gDAAgD;AAChD,kDAAkD;AAClD,gDAAgD;AAChD,gDAA+C;AAC/C,kDAA8C;AAC9C,2DAAsD;AACtD,0DAAsD;AACtD,gEAA2D;AAC3D,8DAAyD;AACzD,6CAA6D;AAC7D,yDAAsD;AAEtD,SAAgB,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,4BAAY,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI;QACd,wBAAY;QACZ,0BAAa;QACb,wBAAY;QACZ,uBAAW;QACX,oBAAQ;QACR,6BAAY;QACZ,4BAAY;QACZ,iCAAc;QACd,+BAAa;QACb,uBAAY;QACZ,wBAAa;QACb,GAAG,2BAAY;KAChB,EAAE,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoBA,sDAoBC;AAxCD;;;;;GAKG;AACH,mDAA+C;AAC/C,gDAAgD;AAChD,kDAAkD;AAClD,gDAAgD;AAChD,gDAA+C;AAC/C,kDAA8C;AAC9C,2DAAsD;AACtD,0DAAsD;AACtD,gEAA2D;AAC3D,8DAAyD;AACzD,6CAA6D;AAC7D,yDAAsD;AACtD,0DAAqD;AAErD,SAAgB,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,4BAAY,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI;QACd,wBAAY;QACZ,0BAAa;QACb,wBAAY;QACZ,uBAAW;QACX,oBAAQ;QACR,6BAAY;QACZ,4BAAY;QACZ,iCAAc;QACd,+BAAa;QACb,uBAAY;QACZ,wBAAa;QACb,GAAG,2BAAY;QACf,GAAG,2BAAW;KACf,EAAE,CAAC;QACF,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,mDAAiC"}
@@ -62,11 +62,19 @@ async function attachMcpTools(registry, servers) {
62
62
  try {
63
63
  const client = await (0, mcp_client_1.connectMcp)(cfg);
64
64
  const tools = await client.listTools();
65
- for (const t of tools) {
65
+ // tools 白名单:按原始工具名过滤(desktop 配置 11 个原始名),未命中工具不注册
66
+ const filtered = cfg.tools && cfg.tools.length > 0
67
+ ? tools.filter((t) => cfg.tools.includes(t.name))
68
+ : tools;
69
+ for (const t of filtered) {
66
70
  registry.register(wrapMcpTool(cfg.name, t, client));
67
71
  }
68
72
  clients.push(client);
69
- logger_1.logger.info('MCP server attached', { name: cfg.name, tools: tools.length });
73
+ logger_1.logger.info('MCP server attached', {
74
+ name: cfg.name,
75
+ tools: filtered.length,
76
+ filtered: tools.length - filtered.length,
77
+ });
70
78
  }
71
79
  catch (e) {
72
80
  logger_1.logger.warn('MCP server attach failed(跳过,不影响主流程)', {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,10 @@ class McpClient {
36
36
  constructor(cfg) {
37
37
  this.cfg = cfg;
38
38
  }
39
+ /** 服务器名(供上层按名查找客户端) */
40
+ get serverName() {
41
+ return this.cfg.name;
42
+ }
39
43
  /** 启动子进程并完成 initialize 握手 */
40
44
  async connect() {
41
45
  if (this.connected)
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../src/tools/mcp/mcp-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../../src/tools/mcp/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,31 @@ function normalizeSandboxMode(raw) {
18
18
  }
19
19
  /** 写类工具:read-only 模式下禁止 */
20
20
  const WRITE_TOOLS = new Set(['write_file', 'edit_file']);
21
+ /** desktop-touch 写工具 + feihong 原生桌面写工具 + AI 员工军团提交(read-only 一律拦截) */
22
+ const DESKTOP_WRITE_TOOLS = new Set([
23
+ 'desktop_launch',
24
+ 'desktop_focus',
25
+ 'desktop_click',
26
+ 'desktop_type',
27
+ 'desktop_keyboard',
28
+ 'desktop_shell',
29
+ 'desktop_terminal',
30
+ 'desktop_terminal_send',
31
+ 'desktop_workspace_launch',
32
+ 'desktop_click_element',
33
+ 'desktop_drag',
34
+ 'desktop_scroll',
35
+ 'desktop_double_click',
36
+ 'desktop_right_click',
37
+ 'desktop_select',
38
+ 'desktop_hover',
39
+ 'desktop_hotkey',
40
+ 'desktop_open_url',
41
+ 'desktop_close_window',
42
+ 'desktop_desktop_act',
43
+ 'feihong_desktop_act',
44
+ 'feihong_agents_submit',
45
+ ]);
21
46
  /** 提取命令中出现的 http(s) 目标主机名(简单解析,不做 DNS 解析) */
22
47
  function extractNetworkHosts(cmd) {
23
48
  const hosts = new Set();
@@ -81,6 +106,9 @@ function checkSandbox(mode, tool, args, rules) {
81
106
  if (WRITE_TOOLS.has(tool)) {
82
107
  return { blocked: true, reason: 'read-only 模式禁止写文件(仅允许 read/list/grep)' };
83
108
  }
109
+ if (DESKTOP_WRITE_TOOLS.has(tool)) {
110
+ return { blocked: true, reason: 'read-only 模式禁止桌面写操作与 AI 员工任务提交' };
111
+ }
84
112
  if (tool === 'run_shell') {
85
113
  return { blocked: true, reason: 'read-only 模式禁止执行 shell 命令' };
86
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/tools/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/tools/sandbox.ts"],"names":[],"mappings":"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"}