feihong-code 7.0.0 → 7.5.0
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/.github/workflows/ci.yml +180 -140
- package/.github/workflows/release.yml +200 -0
- package/CHANGELOG.md +94 -65
- package/README.md +609 -586
- package/dist/agent/browser-agent.js +354 -0
- package/dist/agent/browser-agent.js.map +1 -0
- package/dist/agent/change-manager.js +433 -0
- package/dist/agent/change-manager.js.map +1 -0
- package/dist/agent/code-rag.js +293 -0
- package/dist/agent/code-rag.js.map +1 -0
- package/dist/agent/code-writer.js +13 -1
- package/dist/agent/code-writer.js.map +1 -1
- package/dist/agent/completion-engine.js +553 -0
- package/dist/agent/completion-engine.js.map +1 -0
- package/dist/agent/completion-postprocess.js +109 -0
- package/dist/agent/completion-postprocess.js.map +1 -0
- package/dist/agent/context-budget.js +121 -0
- package/dist/agent/context-budget.js.map +1 -0
- package/dist/agent/context-compactor.js +235 -10
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/custom-agent.js +368 -0
- package/dist/agent/custom-agent.js.map +1 -0
- package/dist/agent/design-to-code.js +218 -0
- package/dist/agent/design-to-code.js.map +1 -0
- package/dist/agent/event-driven-agent.js +359 -0
- package/dist/agent/event-driven-agent.js.map +1 -0
- package/dist/agent/git-integration.js +324 -0
- package/dist/agent/git-integration.js.map +1 -0
- package/dist/agent/layered-memory.js +329 -0
- package/dist/agent/layered-memory.js.map +1 -0
- package/dist/agent/lint.js +121 -0
- package/dist/agent/lint.js.map +1 -0
- package/dist/agent/multi-agent.js +359 -0
- package/dist/agent/multi-agent.js.map +1 -0
- package/dist/agent/orchestrator.js +136 -25
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/prompts.js +54 -54
- package/dist/agent/quality-gate.js +139 -0
- package/dist/agent/quality-gate.js.map +1 -1
- package/dist/agent/self-correction.js +274 -0
- package/dist/agent/self-correction.js.map +1 -0
- package/dist/agent/self-heal.js +47 -17
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/agent/solo-agent.js +321 -0
- package/dist/agent/solo-agent.js.map +1 -0
- package/dist/agent/symbol-index.js +258 -28
- package/dist/agent/symbol-index.js.map +1 -1
- package/dist/agent/team-collaboration.js +252 -0
- package/dist/agent/team-collaboration.js.map +1 -0
- package/dist/agent/type-checker.js +229 -0
- package/dist/agent/type-checker.js.map +1 -0
- package/dist/cli/commands.js +9 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/multi-pane-tui.js +217 -0
- package/dist/cli/multi-pane-tui.js.map +1 -0
- package/dist/cli/run.js +130 -40
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui-run.js +79 -0
- package/dist/cli/tui-run.js.map +1 -0
- package/dist/cli/tui.js.map +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/integrations/collaboration.js +219 -0
- package/dist/integrations/collaboration.js.map +1 -0
- package/dist/integrations/figma.js +307 -0
- package/dist/integrations/figma.js.map +1 -0
- package/dist/integrations/sso.js +327 -0
- package/dist/integrations/sso.js.map +1 -0
- package/dist/knowledge/library.js +301 -0
- package/dist/knowledge/library.js.map +1 -0
- package/dist/lsp/lsp-client.js +183 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-service.js +159 -0
- package/dist/lsp/lsp-service.js.map +1 -0
- package/dist/plugins/manager.js +380 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/runtime/event-log.js.map +1 -1
- package/dist/shared/i18n.js +108 -100
- package/dist/shared/i18n.js.map +1 -1
- package/dist/tools/browser/browser.tool.js +217 -0
- package/dist/tools/browser/browser.tool.js.map +1 -0
- package/dist/tools/generator/code-generator.js +40 -40
- package/dist/tools/generator/test-generator.js +9 -9
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/shell/exec.js +73 -11
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +8 -2
- package/dist/tools/shell/run-shell.tool.js.map +1 -1
- package/dist/training/completion-evaluator.js +213 -0
- package/dist/training/completion-evaluator.js.map +1 -0
- package/dist/training/fim-data.js +248 -0
- package/dist/training/fim-data.js.map +1 -0
- package/dist/voice/voice-programming.js +223 -0
- package/dist/voice/voice-programming.js.map +1 -0
- package/dist/web/extra-apis.js +440 -0
- package/dist/web/extra-apis.js.map +1 -0
- package/dist/web/public/css/style.css +1729 -1671
- package/dist/web/public/index.html +1242 -990
- package/dist/web/public/js/api.js +555 -382
- package/dist/web/public/js/app.js +2210 -2210
- package/dist/web/public/js/mock-api.js +234 -0
- package/dist/web/public/js/monaco-editor.js +363 -0
- package/dist/web/public/js/ui.js +2251 -1059
- package/dist/web/public/js/utils.js +214 -214
- package/dist/web/public/manifest.json +59 -0
- package/dist/web/public/service-worker.js +173 -0
- package/dist/web/server.js +1116 -45
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +22 -2
- package/dist/web/task-queue.js.map +1 -1
- package/docs/BENCHMARK_REPORT_en.md +386 -329
- package/docs/BENCHMARK_REPORT_zh.md +386 -329
- package/docs/DPA.md +63 -0
- package/docs/DPA/346/225/260/346/215/256/345/244/204/347/220/206/345/215/217/350/256/256/346/250/241/346/235/277_v1.0.md +67 -0
- package/docs/SECURITY_WHITEPAPER.md +74 -0
- package/docs/SWE_BENCH_REPORT.md +55 -0
- package/docs/TECHNICAL_SPEC_en.md +292 -292
- package/docs/TECHNICAL_SPEC_zh.md +292 -292
- package/docs/UPDATE_NOTES_en.md +159 -159
- package/docs/UPDATE_NOTES_zh.md +159 -159
- package/docs/UPGRADE_7.2.0.md +309 -0
- package/docs/UPGRADE_GUIDE_7_5.md +86 -0
- package/docs/geo-feihong-code.html +391 -0
- package/docs//345/205/250/351/235/242/345/244/215/347/233/230_50/350/275/256/346/267/261/345/272/246/345/256/241/350/256/241_v7.2.0.md +208 -0
- package/docs//345/205/250/351/235/242/345/244/215/347/233/230_6/351/241/271/351/207/215/347/202/271/346/240/270/346/237/245_v7.2.0.md +152 -0
- package/docs//345/205/250/351/235/242/345/244/215/347/233/230_/350/277/220/350/241/214/346/227/266/345/256/236/346/265/213/347/211/210_v7.2.0.md +271 -0
- package/docs//345/220/210/350/247/204/350/256/244/350/257/201/345/207/206/345/244/207/346/270/205/345/215/225_v7.2.0.md +59 -0
- package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +82 -0
- package/electron/main.js +404 -404
- package/package.json +175 -167
- package/templates/skills/api-design/SKILL.md +27 -0
- package/templates/skills/code-review/SKILL.md +35 -0
- package/templates/skills/dependency-upgrade/SKILL.md +29 -0
- package/templates/skills/doc-gen/SKILL.md +29 -0
- package/templates/skills/git-flow/SKILL.md +26 -0
- package/templates/skills/onboarding/SKILL.md +27 -0
- package/templates/skills/performance/SKILL.md +29 -0
- package/templates/skills/refactor/SKILL.md +28 -0
- package/templates/skills/security-audit/SKILL.md +28 -0
- package/templates/skills/test-gen/SKILL.md +30 -0
- package/tool-schema.json +197 -197
- package/dist/hello.js +0 -14
- package/dist/hello.js.map +0 -1
- package/dist/self-evolve/hook.ts +0 -80
- package/dist/self-evolve/manager.d.ts +0 -8
- package/dist/web/web-config.js +0 -143
- package/dist/web/web-config.js.map +0 -1
package/dist/shared/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/shared/i18n.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/shared/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.browserTools = exports.browserCloseTool = exports.browserEvaluateTool = exports.browserScreenshotTool = exports.browserExtractTool = exports.browserPressTool = exports.browserTypeTool = exports.browserClickTool = exports.browserNavigateTool = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 飞虹 Code - 浏览器自动化工具 (P1-3)
|
|
6
|
+
* 基于 Playwright,为 Agent 提供真实浏览器操作能力
|
|
7
|
+
*
|
|
8
|
+
* 工具列表:
|
|
9
|
+
* - browser_navigate 导航到 URL(自动检测搜索关键词)
|
|
10
|
+
* - browser_click 点击 CSS 选择器匹配的元素
|
|
11
|
+
* - browser_type 在输入框中输入文本
|
|
12
|
+
* - browser_press 按下键盘按键
|
|
13
|
+
* - browser_extract 提取页面文本内容
|
|
14
|
+
* - browser_screenshot 截图(返回 base64)
|
|
15
|
+
* - browser_evaluate 执行 JavaScript
|
|
16
|
+
* - browser_close 关闭页面
|
|
17
|
+
*/
|
|
18
|
+
const zod_1 = require("zod");
|
|
19
|
+
const browser_agent_1 = require("../../agent/browser-agent");
|
|
20
|
+
const logger_1 = require("../../shared/logger");
|
|
21
|
+
exports.browserNavigateTool = {
|
|
22
|
+
name: 'browser_navigate',
|
|
23
|
+
description: '在浏览器中导航到指定 URL。如果输入的是搜索关键词(含空格或无域名),自动用 Bing 搜索。返回页面标题和 pageId。',
|
|
24
|
+
jsonSchema: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
properties: {
|
|
27
|
+
url: { type: 'string', description: '目标 URL 或搜索关键词' },
|
|
28
|
+
pageId: { type: 'string', description: '可选,复用已有页面 ID;不填则新建页面' },
|
|
29
|
+
},
|
|
30
|
+
required: ['url'],
|
|
31
|
+
},
|
|
32
|
+
schema: zod_1.z.object({ url: zod_1.z.string().min(1), pageId: zod_1.z.string().optional() }),
|
|
33
|
+
async execute(args, _ctx) {
|
|
34
|
+
const { url, pageId } = args;
|
|
35
|
+
try {
|
|
36
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
37
|
+
const result = await manager.navigate(url, pageId);
|
|
38
|
+
if (result.success) {
|
|
39
|
+
return {
|
|
40
|
+
ok: true,
|
|
41
|
+
output: `[浏览器] 已导航到 ${result.url}\n标题: ${result.title || '(无)'}\npageId: ${result.pageId}\n\n后续操作请使用此 pageId。`,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return { ok: false, output: '', error: result.message };
|
|
45
|
+
}
|
|
46
|
+
catch (e) {
|
|
47
|
+
return { ok: false, output: '', error: `browser_navigate 失败: ${e instanceof Error ? e.message : String(e)}` };
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
exports.browserClickTool = {
|
|
52
|
+
name: 'browser_click',
|
|
53
|
+
description: '点击页面中匹配 CSS 选择器的元素。需要先调用 browser_navigate 获取 pageId。',
|
|
54
|
+
jsonSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
selector: { type: 'string', description: 'CSS 选择器,如 button.submit、a.login、#search-button' },
|
|
58
|
+
pageId: { type: 'string', description: '页面 ID(从 browser_navigate 返回)' },
|
|
59
|
+
},
|
|
60
|
+
required: ['selector', 'pageId'],
|
|
61
|
+
},
|
|
62
|
+
schema: zod_1.z.object({ selector: zod_1.z.string().min(1), pageId: zod_1.z.string().min(1) }),
|
|
63
|
+
async execute(args) {
|
|
64
|
+
const { selector, pageId } = args;
|
|
65
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
66
|
+
const result = await manager.click(selector, pageId);
|
|
67
|
+
return result.success
|
|
68
|
+
? { ok: true, output: `[浏览器] ${result.message}` }
|
|
69
|
+
: { ok: false, output: '', error: result.message };
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
exports.browserTypeTool = {
|
|
73
|
+
name: 'browser_type',
|
|
74
|
+
description: '在页面输入框中输入文本(先清空再输入)。需要先调用 browser_navigate。',
|
|
75
|
+
jsonSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
selector: { type: 'string', description: '输入框的 CSS 选择器,如 input[name=q]、textarea#comment' },
|
|
79
|
+
text: { type: 'string', description: '要输入的文本' },
|
|
80
|
+
pageId: { type: 'string', description: '页面 ID' },
|
|
81
|
+
},
|
|
82
|
+
required: ['selector', 'text', 'pageId'],
|
|
83
|
+
},
|
|
84
|
+
schema: zod_1.z.object({ selector: zod_1.z.string().min(1), text: zod_1.z.string(), pageId: zod_1.z.string().min(1) }),
|
|
85
|
+
async execute(args) {
|
|
86
|
+
const { selector, text, pageId } = args;
|
|
87
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
88
|
+
const result = await manager.type(selector, text, pageId);
|
|
89
|
+
return result.success
|
|
90
|
+
? { ok: true, output: `[浏览器] ${result.message}` }
|
|
91
|
+
: { ok: false, output: '', error: result.message };
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
exports.browserPressTool = {
|
|
95
|
+
name: 'browser_press',
|
|
96
|
+
description: '按下键盘按键,如 Enter、Escape、ArrowDown、Control+a。',
|
|
97
|
+
jsonSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
key: { type: 'string', description: '按键名称,如 Enter、Escape、Tab、ArrowDown、Control+c' },
|
|
101
|
+
pageId: { type: 'string', description: '页面 ID' },
|
|
102
|
+
},
|
|
103
|
+
required: ['key', 'pageId'],
|
|
104
|
+
},
|
|
105
|
+
schema: zod_1.z.object({ key: zod_1.z.string().min(1), pageId: zod_1.z.string().min(1) }),
|
|
106
|
+
async execute(args) {
|
|
107
|
+
const { key, pageId } = args;
|
|
108
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
109
|
+
const result = await manager.press(key, pageId);
|
|
110
|
+
return result.success
|
|
111
|
+
? { ok: true, output: `[浏览器] ${result.message}` }
|
|
112
|
+
: { ok: false, output: '', error: result.message };
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
exports.browserExtractTool = {
|
|
116
|
+
name: 'browser_extract',
|
|
117
|
+
description: '提取页面文本内容。不指定 selector 时提取整个 body 文本(最多 10000 字符)。',
|
|
118
|
+
jsonSchema: {
|
|
119
|
+
type: 'object',
|
|
120
|
+
properties: {
|
|
121
|
+
selector: { type: 'string', description: '可选,只提取指定元素的文本,如 div.article、#content' },
|
|
122
|
+
pageId: { type: 'string', description: '页面 ID' },
|
|
123
|
+
},
|
|
124
|
+
required: ['pageId'],
|
|
125
|
+
},
|
|
126
|
+
schema: zod_1.z.object({ selector: zod_1.z.string().optional(), pageId: zod_1.z.string().min(1) }),
|
|
127
|
+
async execute(args) {
|
|
128
|
+
const { selector, pageId } = args;
|
|
129
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
130
|
+
const result = await manager.extractText(pageId, selector);
|
|
131
|
+
if (result.success) {
|
|
132
|
+
return { ok: true, output: `[浏览器] 页面文本:\n${result.text}` };
|
|
133
|
+
}
|
|
134
|
+
return { ok: false, output: '', error: result.message || '提取失败' };
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
exports.browserScreenshotTool = {
|
|
138
|
+
name: 'browser_screenshot',
|
|
139
|
+
description: '对当前页面截图,返回 base64 编码的 PNG 图片(可用于多模态分析)。',
|
|
140
|
+
jsonSchema: {
|
|
141
|
+
type: 'object',
|
|
142
|
+
properties: {
|
|
143
|
+
pageId: { type: 'string', description: '页面 ID' },
|
|
144
|
+
fullPage: { type: 'boolean', description: '是否截取整页(默认 false,只截视口)' },
|
|
145
|
+
},
|
|
146
|
+
required: ['pageId'],
|
|
147
|
+
},
|
|
148
|
+
schema: zod_1.z.object({ pageId: zod_1.z.string().min(1), fullPage: zod_1.z.boolean().optional() }),
|
|
149
|
+
async execute(args) {
|
|
150
|
+
const { pageId, fullPage } = args;
|
|
151
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
152
|
+
const result = await manager.screenshot(pageId, { fullPage });
|
|
153
|
+
if (result.success && result.base64) {
|
|
154
|
+
return {
|
|
155
|
+
ok: true,
|
|
156
|
+
output: `[浏览器] 截图成功 (${Math.round(result.base64.length / 1024)} KB)\n保存路径: ${result.path}\nBase64 前缀: ${result.base64.slice(0, 50)}...`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return { ok: false, output: '', error: result.message || '截图失败' };
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
exports.browserEvaluateTool = {
|
|
163
|
+
name: 'browser_evaluate',
|
|
164
|
+
description: '在页面上下文中执行 JavaScript 代码,返回执行结果。可用于提取数据、操作 DOM、调试。',
|
|
165
|
+
jsonSchema: {
|
|
166
|
+
type: 'object',
|
|
167
|
+
properties: {
|
|
168
|
+
script: { type: 'string', description: '要执行的 JavaScript 代码,如 document.title、JSON.stringify({url: location.href})' },
|
|
169
|
+
pageId: { type: 'string', description: '页面 ID' },
|
|
170
|
+
},
|
|
171
|
+
required: ['script', 'pageId'],
|
|
172
|
+
},
|
|
173
|
+
schema: zod_1.z.object({ script: zod_1.z.string().min(1), pageId: zod_1.z.string().min(1) }),
|
|
174
|
+
async execute(args) {
|
|
175
|
+
const { script, pageId } = args;
|
|
176
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
177
|
+
const result = await manager.evaluate(pageId, script);
|
|
178
|
+
if (result.success) {
|
|
179
|
+
const output = typeof result.result === 'string' ? result.result : JSON.stringify(result.result, null, 2);
|
|
180
|
+
return { ok: true, output: `[浏览器] JS 执行结果:\n${output || '(无返回值)'}` };
|
|
181
|
+
}
|
|
182
|
+
return { ok: false, output: '', error: result.message || '执行失败' };
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
exports.browserCloseTool = {
|
|
186
|
+
name: 'browser_close',
|
|
187
|
+
description: '关闭指定浏览器页面,释放资源。任务完成后应调用此工具。',
|
|
188
|
+
jsonSchema: {
|
|
189
|
+
type: 'object',
|
|
190
|
+
properties: {
|
|
191
|
+
pageId: { type: 'string', description: '页面 ID' },
|
|
192
|
+
},
|
|
193
|
+
required: ['pageId'],
|
|
194
|
+
},
|
|
195
|
+
schema: zod_1.z.object({ pageId: zod_1.z.string().min(1) }),
|
|
196
|
+
async execute(args) {
|
|
197
|
+
const { pageId } = args;
|
|
198
|
+
const manager = (0, browser_agent_1.getBrowserManager)();
|
|
199
|
+
const result = await manager.closePage(pageId);
|
|
200
|
+
return result.success
|
|
201
|
+
? { ok: true, output: `[浏览器] ${result.message}` }
|
|
202
|
+
: { ok: false, output: '', error: result.message };
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
/** 所有浏览器工具 */
|
|
206
|
+
exports.browserTools = [
|
|
207
|
+
exports.browserNavigateTool,
|
|
208
|
+
exports.browserClickTool,
|
|
209
|
+
exports.browserTypeTool,
|
|
210
|
+
exports.browserPressTool,
|
|
211
|
+
exports.browserExtractTool,
|
|
212
|
+
exports.browserScreenshotTool,
|
|
213
|
+
exports.browserEvaluateTool,
|
|
214
|
+
exports.browserCloseTool,
|
|
215
|
+
];
|
|
216
|
+
logger_1.logger.info('browser tools loaded', { count: exports.browserTools.length });
|
|
217
|
+
//# sourceMappingURL=browser.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.tool.js","sourceRoot":"","sources":["../../../src/tools/browser/browser.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,62 +21,62 @@ const path_1 = require("path");
|
|
|
21
21
|
const logger_1 = require("../../shared/logger");
|
|
22
22
|
/** 生成 API 路由模板 */
|
|
23
23
|
function generateApiRoute(method, path, controller) {
|
|
24
|
-
const content = `import { Router, Request, Response } from 'express';
|
|
25
|
-
import { ${controller} } from '../controllers/${controller}';
|
|
26
|
-
|
|
27
|
-
const router = Router();
|
|
28
|
-
|
|
29
|
-
router.${method.toLowerCase()}('${path}', ${controller}.handle);
|
|
30
|
-
|
|
31
|
-
export default router;
|
|
24
|
+
const content = `import { Router, Request, Response } from 'express';
|
|
25
|
+
import { ${controller} } from '../controllers/${controller}';
|
|
26
|
+
|
|
27
|
+
const router = Router();
|
|
28
|
+
|
|
29
|
+
router.${method.toLowerCase()}('${path}', ${controller}.handle);
|
|
30
|
+
|
|
31
|
+
export default router;
|
|
32
32
|
`;
|
|
33
33
|
return { success: true, content };
|
|
34
34
|
}
|
|
35
35
|
/** 生成 Model 定义模板 */
|
|
36
36
|
function generateModel(name, fields) {
|
|
37
37
|
const fieldLines = Object.entries(fields).map(([k, t]) => ` ${k}: ${t};`).join('\n');
|
|
38
|
-
const content = `export interface ${name} {
|
|
39
|
-
${fieldLines}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export class ${name}Model {
|
|
43
|
-
// TODO: 实现数据库操作
|
|
44
|
-
}
|
|
38
|
+
const content = `export interface ${name} {
|
|
39
|
+
${fieldLines}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export class ${name}Model {
|
|
43
|
+
// TODO: 实现数据库操作
|
|
44
|
+
}
|
|
45
45
|
`;
|
|
46
46
|
return { success: true, content };
|
|
47
47
|
}
|
|
48
48
|
/** 生成 Tool 模板 */
|
|
49
49
|
function generateToolTemplate(toolName) {
|
|
50
|
-
const content = `/**
|
|
51
|
-
* ${toolName} 工具(M7 自动生成)
|
|
52
|
-
*/
|
|
53
|
-
import type { ToolContext, ToolResult } from '../tool.interface';
|
|
54
|
-
|
|
55
|
-
export interface ${toolName}Args {
|
|
56
|
-
// TODO: 定义参数
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export async function execute${toolName}(
|
|
60
|
-
args: ${toolName}Args,
|
|
61
|
-
ctx: ToolContext,
|
|
62
|
-
): Promise<ToolResult> {
|
|
63
|
-
// TODO: 实现工具逻辑
|
|
64
|
-
return { ok: true, output: '...已执行' };
|
|
65
|
-
}
|
|
50
|
+
const content = `/**
|
|
51
|
+
* ${toolName} 工具(M7 自动生成)
|
|
52
|
+
*/
|
|
53
|
+
import type { ToolContext, ToolResult } from '../tool.interface';
|
|
54
|
+
|
|
55
|
+
export interface ${toolName}Args {
|
|
56
|
+
// TODO: 定义参数
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export async function execute${toolName}(
|
|
60
|
+
args: ${toolName}Args,
|
|
61
|
+
ctx: ToolContext,
|
|
62
|
+
): Promise<ToolResult> {
|
|
63
|
+
// TODO: 实现工具逻辑
|
|
64
|
+
return { ok: true, output: '...已执行' };
|
|
65
|
+
}
|
|
66
66
|
`;
|
|
67
67
|
return { success: true, content };
|
|
68
68
|
}
|
|
69
69
|
/** 生成测试文件模板 */
|
|
70
70
|
function generateTestTemplate(targetFile, functionName) {
|
|
71
|
-
const content = `import { describe, it, expect } from 'vitest';
|
|
72
|
-
import { ${functionName} } from '../${targetFile.replace(/\.ts$/, '')}';
|
|
73
|
-
|
|
74
|
-
describe('${functionName}', () => {
|
|
75
|
-
it('should execute successfully', () => {
|
|
76
|
-
const result = ${functionName}({});
|
|
77
|
-
expect(result).toBeDefined();
|
|
78
|
-
});
|
|
79
|
-
});
|
|
71
|
+
const content = `import { describe, it, expect } from 'vitest';
|
|
72
|
+
import { ${functionName} } from '../${targetFile.replace(/\.ts$/, '')}';
|
|
73
|
+
|
|
74
|
+
describe('${functionName}', () => {
|
|
75
|
+
it('should execute successfully', () => {
|
|
76
|
+
const result = ${functionName}({});
|
|
77
|
+
expect(result).toBeDefined();
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
80
|
`;
|
|
81
81
|
return { success: true, content };
|
|
82
82
|
}
|
|
@@ -17,16 +17,16 @@ const fs_1 = require("fs");
|
|
|
17
17
|
const path_1 = require("path");
|
|
18
18
|
/** 生成 Jest 测试模板 */
|
|
19
19
|
function generateJestTest(targetFile, functionName, tests) {
|
|
20
|
-
const testCases = tests.map((t, i) => `
|
|
21
|
-
it('${t.description || `test case ${i + 1}`}', () => {
|
|
22
|
-
const result = ${functionName}(${JSON.stringify(t.inputs)});
|
|
23
|
-
expect(result).toEqual(${JSON.stringify(t.expectedOutput)});
|
|
20
|
+
const testCases = tests.map((t, i) => `
|
|
21
|
+
it('${t.description || `test case ${i + 1}`}', () => {
|
|
22
|
+
const result = ${functionName}(${JSON.stringify(t.inputs)});
|
|
23
|
+
expect(result).toEqual(${JSON.stringify(t.expectedOutput)});
|
|
24
24
|
});`).join('\n');
|
|
25
|
-
const content = `import { describe, it, expect } from 'vitest';
|
|
26
|
-
import { ${functionName} } from '../${targetFile.replace(/\.ts$/, '')}';
|
|
27
|
-
|
|
28
|
-
describe('${functionName}', () => {${testCases}
|
|
29
|
-
});
|
|
25
|
+
const content = `import { describe, it, expect } from 'vitest';
|
|
26
|
+
import { ${functionName} } from '../${targetFile.replace(/\.ts$/, '')}';
|
|
27
|
+
|
|
28
|
+
describe('${functionName}', () => {${testCases}
|
|
29
|
+
});
|
|
30
30
|
`;
|
|
31
31
|
return { file: `${targetFile.replace(/\.ts$/, '.test.ts')}`, content };
|
|
32
32
|
}
|
package/dist/tools/index.js
CHANGED
|
@@ -33,6 +33,7 @@ const test_run_tool_1 = require("./verify/test-run.tool");
|
|
|
33
33
|
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
|
+
const browser_tool_1 = require("./browser/browser.tool");
|
|
36
37
|
function createDefaultRegistry() {
|
|
37
38
|
const reg = new tool_registry_1.ToolRegistry();
|
|
38
39
|
for (const t of [
|
|
@@ -47,6 +48,7 @@ function createDefaultRegistry() {
|
|
|
47
48
|
load_skill_tool_1.loadSkillTool,
|
|
48
49
|
web_tool_1.webFetchTool,
|
|
49
50
|
web_tool_1.webSearchTool,
|
|
51
|
+
...browser_tool_1.browserTools,
|
|
50
52
|
]) {
|
|
51
53
|
reg.register(t);
|
|
52
54
|
}
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
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"}
|
package/dist/tools/shell/exec.js
CHANGED
|
@@ -17,8 +17,19 @@ const child_process_1 = require("child_process");
|
|
|
17
17
|
function containerImage() {
|
|
18
18
|
return process.env.FH_SANDBOX_IMAGE || 'node:22-alpine';
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* P7-2 容器隔离加固:运行不信任代码的默认档位
|
|
22
|
+
* - 资源限制:内存 / pids 上限(防 fork 炸弹与内存耗尽)
|
|
23
|
+
* - 能力裁剪:--cap-drop ALL + no-new-privileges(防容器逃逸提权)
|
|
24
|
+
* - 网络隔离:默认 --network none(不信任代码断网执行);需装依赖时设
|
|
25
|
+
* FH_SANDBOX_NETWORK=host 恢复联网(仍受沙箱 network allow/deny 约束)
|
|
26
|
+
* 环境变量:
|
|
27
|
+
* - FH_SANDBOX_IMAGE 容器镜像(默认 node:22-alpine)
|
|
28
|
+
* - FH_SANDBOX_MEM 内存上限(默认 512m)
|
|
29
|
+
* - FH_SANDBOX_PIDS pids 上限(默认 256)
|
|
30
|
+
* - FH_SANDBOX_NETWORK none|host(默认 none)
|
|
31
|
+
*/
|
|
32
|
+
function runCommandInContainer(cmd, cwd, timeoutMs = 60000) {
|
|
22
33
|
const image = containerImage();
|
|
23
34
|
// 挂载工作区到 /workspace,容器内 cwd=/workspace;--rm 用完即删
|
|
24
35
|
const dockerArgs = [
|
|
@@ -28,6 +39,17 @@ function runCommandInContainer(cmd, cwd, timeoutMs = 120000) {
|
|
|
28
39
|
`${cwd}:/workspace`,
|
|
29
40
|
'-w',
|
|
30
41
|
'/workspace',
|
|
42
|
+
// ---- P7-2 隔离加固 ----
|
|
43
|
+
'--memory',
|
|
44
|
+
process.env.FH_SANDBOX_MEM || '512m',
|
|
45
|
+
'--pids-limit',
|
|
46
|
+
process.env.FH_SANDBOX_PIDS || '256',
|
|
47
|
+
'--cap-drop',
|
|
48
|
+
'ALL',
|
|
49
|
+
'--security-opt',
|
|
50
|
+
'no-new-privileges',
|
|
51
|
+
process.env.FH_SANDBOX_NETWORK === 'host' ? '--network' : '--network',
|
|
52
|
+
process.env.FH_SANDBOX_NETWORK === 'host' ? 'host' : 'none',
|
|
31
53
|
image,
|
|
32
54
|
'sh',
|
|
33
55
|
'-c',
|
|
@@ -35,20 +57,35 @@ function runCommandInContainer(cmd, cwd, timeoutMs = 120000) {
|
|
|
35
57
|
];
|
|
36
58
|
return runCommand('docker ' + dockerArgs.map((a) => `"${a.replace(/"/g, '\\"')}"`).join(' '), cwd, timeoutMs);
|
|
37
59
|
}
|
|
38
|
-
function runCommand(cmd, cwd, timeoutMs =
|
|
60
|
+
function runCommand(cmd, cwd, timeoutMs = 60000) {
|
|
39
61
|
return new Promise((resolve) => {
|
|
40
62
|
// 不用内置 timeout 选项:它只杀 shell 进程,不杀 shell 启动的子进程(如 npm/node)。
|
|
41
|
-
// 手动实现超时:先 SIGTERM,宽限期后 SIGKILL
|
|
63
|
+
// 手动实现超时:先 SIGTERM,宽限期后 SIGKILL,并尝试杀整个进程树。
|
|
42
64
|
const child = (0, child_process_1.spawn)(cmd, { cwd, shell: true });
|
|
43
65
|
let stdout = '';
|
|
44
66
|
let stderr = '';
|
|
45
67
|
let settled = false;
|
|
68
|
+
const isWindows = process.platform === 'win32';
|
|
46
69
|
const finish = (result) => {
|
|
47
70
|
if (settled)
|
|
48
71
|
return;
|
|
49
72
|
settled = true;
|
|
50
73
|
clearTimeout(timer);
|
|
51
74
|
clearTimeout(killTimer);
|
|
75
|
+
clearTimeout(forceTimer);
|
|
76
|
+
// 主动销毁 stdio 流,防止子进程持有管道导致 close 事件永不触发
|
|
77
|
+
try {
|
|
78
|
+
child.stdout?.destroy();
|
|
79
|
+
}
|
|
80
|
+
catch { /* ignore */ }
|
|
81
|
+
try {
|
|
82
|
+
child.stderr?.destroy();
|
|
83
|
+
}
|
|
84
|
+
catch { /* ignore */ }
|
|
85
|
+
try {
|
|
86
|
+
child.stdin?.destroy();
|
|
87
|
+
}
|
|
88
|
+
catch { /* ignore */ }
|
|
52
89
|
resolve(result);
|
|
53
90
|
};
|
|
54
91
|
child.stdout?.on('data', (d) => (stdout += d.toString()));
|
|
@@ -59,39 +96,64 @@ function runCommand(cmd, cwd, timeoutMs = 120000) {
|
|
|
59
96
|
finish({ code: 1, stdout, stderr });
|
|
60
97
|
});
|
|
61
98
|
child.on('close', (code) => finish({ code: code ?? 1, stdout, stderr }));
|
|
62
|
-
|
|
63
|
-
|
|
99
|
+
/** Windows 专用:用 taskkill /T /F 杀整个进程树(含子进程),避免 npm/node 子进程残留持有管道 */
|
|
100
|
+
function killProcessTreeWindows(pid) {
|
|
101
|
+
try {
|
|
102
|
+
(0, child_process_1.spawn)('taskkill', ['/PID', String(pid), '/T', '/F'], { detached: true, stdio: 'ignore' }).unref();
|
|
103
|
+
}
|
|
104
|
+
catch { /* 忽略 taskkill 失败,退化为 child.kill */ }
|
|
105
|
+
}
|
|
106
|
+
// 超时处理:先 SIGTERM(Windows 用 taskkill /T),5 秒后 SIGKILL
|
|
64
107
|
const killTimer = setTimeout(() => {
|
|
65
108
|
if (settled)
|
|
66
109
|
return;
|
|
67
110
|
try {
|
|
68
|
-
if (
|
|
111
|
+
if (isWindows && child.pid) {
|
|
112
|
+
killProcessTreeWindows(child.pid);
|
|
113
|
+
}
|
|
114
|
+
else if (!isWindows && child.pid) {
|
|
69
115
|
// Unix: 杀整个进程组(负 pid),确保子进程也被杀
|
|
70
116
|
try {
|
|
71
117
|
process.kill(-child.pid, 'SIGKILL');
|
|
72
118
|
}
|
|
73
119
|
catch { /* 进程组不存在则退化为杀单进程 */ }
|
|
120
|
+
child.kill('SIGKILL');
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
child.kill('SIGKILL');
|
|
74
124
|
}
|
|
75
|
-
child.kill('SIGKILL');
|
|
76
125
|
}
|
|
77
126
|
catch { /* 忽略 kill 失败 */ }
|
|
78
127
|
}, 5000);
|
|
79
128
|
const timer = setTimeout(() => {
|
|
80
129
|
if (settled)
|
|
81
130
|
return;
|
|
82
|
-
stderr += `\n[超时] 命令执行超过 ${timeoutMs}
|
|
131
|
+
stderr += `\n[超时] 命令执行超过 ${Math.round(timeoutMs / 1000)} 秒,正在终止(长时间运行的服务如 dev server 请改用后台启动)…`;
|
|
83
132
|
try {
|
|
84
|
-
if (
|
|
133
|
+
if (isWindows && child.pid) {
|
|
134
|
+
killProcessTreeWindows(child.pid);
|
|
135
|
+
}
|
|
136
|
+
else if (!isWindows && child.pid) {
|
|
85
137
|
try {
|
|
86
138
|
process.kill(-child.pid, 'SIGTERM');
|
|
87
139
|
}
|
|
88
140
|
catch { /* 退化为杀单进程 */ }
|
|
141
|
+
child.kill('SIGTERM');
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
child.kill('SIGTERM');
|
|
89
145
|
}
|
|
90
|
-
child.kill('SIGTERM');
|
|
91
146
|
}
|
|
92
147
|
catch { /* 忽略 */ }
|
|
93
148
|
// killTimer 会在 5 秒后发 SIGKILL
|
|
94
149
|
}, timeoutMs);
|
|
150
|
+
// 最终兜底:超时后 10 秒如果还没 settle(子进程残留持有管道),强制 resolve,避免永久挂起
|
|
151
|
+
const forceTimer = setTimeout(() => {
|
|
152
|
+
if (settled)
|
|
153
|
+
return;
|
|
154
|
+
stderr += '\n[强制结束] 进程树未能正常终止,已强制返回结果。';
|
|
155
|
+
finish({ code: 124, stdout, stderr });
|
|
156
|
+
}, timeoutMs + 10000);
|
|
95
157
|
});
|
|
96
158
|
}
|
|
97
159
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/tools/shell/exec.ts"],"names":[],"mappings":";;AAgBA,wCAEC;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../src/tools/shell/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,10 +69,16 @@ exports.runShellTool = {
|
|
|
69
69
|
const res = ctx.security.sandboxMode === 'container'
|
|
70
70
|
? await (0, exec_1.runCommandInContainer)(command, ctx.cwd)
|
|
71
71
|
: await (0, exec_1.runCommand)(command, ctx.cwd);
|
|
72
|
+
const combined = `${res.stdout}${res.stderr}`;
|
|
73
|
+
const isTimeout = res.code === 124 || /\[超时\]|\[强制结束\]/.test(res.stderr || '');
|
|
72
74
|
return {
|
|
73
75
|
ok: res.code === 0,
|
|
74
|
-
output: smartTruncate(
|
|
75
|
-
error: res.code === 0
|
|
76
|
+
output: smartTruncate(combined),
|
|
77
|
+
error: res.code === 0
|
|
78
|
+
? undefined
|
|
79
|
+
: isTimeout
|
|
80
|
+
? `命令超时(超过60秒未完成)。该命令可能是长时间运行的服务(如 dev server),请改用后台启动方式,或拆分为更短的命令。exit code ${res.code}`
|
|
81
|
+
: `exit code ${res.code}`,
|
|
76
82
|
};
|
|
77
83
|
},
|
|
78
84
|
};
|