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
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PluginManager = void 0;
|
|
4
|
+
exports.createPluginManager = createPluginManager;
|
|
5
|
+
/**
|
|
6
|
+
* 飞虹 Code - 插件市场 (阶段四-3)
|
|
7
|
+
*
|
|
8
|
+
* 支持轻应用/插件扩展:
|
|
9
|
+
* - 插件管理:安装、卸载、启用、禁用
|
|
10
|
+
* - 插件市场:浏览、搜索、安装插件
|
|
11
|
+
* - 插件 API:提供插件可调用的 API
|
|
12
|
+
* - 插件沙箱:安全隔离插件执行环境
|
|
13
|
+
*/
|
|
14
|
+
const logger_1 = require("../shared/logger");
|
|
15
|
+
const fs_1 = require("fs");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
/**
|
|
18
|
+
* 插件管理器
|
|
19
|
+
*/
|
|
20
|
+
class PluginManager {
|
|
21
|
+
baseDir;
|
|
22
|
+
pluginsDir;
|
|
23
|
+
installed = new Map();
|
|
24
|
+
registryPath;
|
|
25
|
+
commands = new Map();
|
|
26
|
+
/** P2-2: 插件注册的视图 / 补全提供者 / 代码操作(第三方生态消费点) */
|
|
27
|
+
views = new Map();
|
|
28
|
+
completionProviders = new Map();
|
|
29
|
+
codeActions = new Map();
|
|
30
|
+
constructor(baseDir) {
|
|
31
|
+
this.baseDir = baseDir;
|
|
32
|
+
this.pluginsDir = (0, path_1.join)(baseDir, 'plugins');
|
|
33
|
+
this.registryPath = (0, path_1.join)(baseDir, 'plugin-registry.json');
|
|
34
|
+
this.ensureDir();
|
|
35
|
+
this.loadRegistry();
|
|
36
|
+
logger_1.logger.info('plugin manager initialized', { baseDir, installed: this.installed.size });
|
|
37
|
+
}
|
|
38
|
+
ensureDir() {
|
|
39
|
+
if (!(0, fs_1.existsSync)(this.baseDir))
|
|
40
|
+
(0, fs_1.mkdirSync)(this.baseDir, { recursive: true });
|
|
41
|
+
if (!(0, fs_1.existsSync)(this.pluginsDir))
|
|
42
|
+
(0, fs_1.mkdirSync)(this.pluginsDir, { recursive: true });
|
|
43
|
+
}
|
|
44
|
+
loadRegistry() {
|
|
45
|
+
try {
|
|
46
|
+
if ((0, fs_1.existsSync)(this.registryPath)) {
|
|
47
|
+
const data = JSON.parse((0, fs_1.readFileSync)(this.registryPath, 'utf-8'));
|
|
48
|
+
for (const plugin of data.installed || []) {
|
|
49
|
+
this.installed.set(plugin.id, plugin);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger_1.logger.error('load plugin registry error', { error: String(error) });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
saveRegistry() {
|
|
58
|
+
try {
|
|
59
|
+
const data = {
|
|
60
|
+
installed: Array.from(this.installed.values()),
|
|
61
|
+
updatedAt: new Date().toISOString(),
|
|
62
|
+
};
|
|
63
|
+
(0, fs_1.writeFileSync)(this.registryPath, JSON.stringify(data, null, 2), 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
logger_1.logger.error('save plugin registry error', { error: String(error) });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 安装插件
|
|
71
|
+
*/
|
|
72
|
+
async installPlugin(plugin) {
|
|
73
|
+
logger_1.logger.info('installing plugin', { id: plugin.id, version: plugin.version });
|
|
74
|
+
const pluginDir = (0, path_1.join)(this.pluginsDir, plugin.id);
|
|
75
|
+
if (!(0, fs_1.existsSync)(pluginDir))
|
|
76
|
+
(0, fs_1.mkdirSync)(pluginDir, { recursive: true });
|
|
77
|
+
// 保存插件元数据
|
|
78
|
+
const metadataPath = (0, path_1.join)(pluginDir, 'package.json');
|
|
79
|
+
(0, fs_1.writeFileSync)(metadataPath, JSON.stringify(plugin, null, 2), 'utf-8');
|
|
80
|
+
// 创建入口文件(简化版)
|
|
81
|
+
const entryPath = (0, path_1.join)(pluginDir, plugin.entry || 'index.js');
|
|
82
|
+
if (!(0, fs_1.existsSync)(entryPath)) {
|
|
83
|
+
(0, fs_1.writeFileSync)(entryPath, `// ${plugin.name} v${plugin.version}\n// 插件入口文件\nmodule.exports = { activate(api) { console.log('${plugin.name} activated'); } };\n`, 'utf-8');
|
|
84
|
+
}
|
|
85
|
+
const installed = {
|
|
86
|
+
...plugin,
|
|
87
|
+
status: 'installed',
|
|
88
|
+
installedAt: new Date().toISOString(),
|
|
89
|
+
updatedAt: new Date().toISOString(),
|
|
90
|
+
config: {},
|
|
91
|
+
};
|
|
92
|
+
this.installed.set(plugin.id, installed);
|
|
93
|
+
this.saveRegistry();
|
|
94
|
+
logger_1.logger.info('plugin installed', { id: plugin.id });
|
|
95
|
+
return installed;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 卸载插件
|
|
99
|
+
*/
|
|
100
|
+
uninstallPlugin(id) {
|
|
101
|
+
const plugin = this.installed.get(id);
|
|
102
|
+
if (!plugin)
|
|
103
|
+
return false;
|
|
104
|
+
try {
|
|
105
|
+
const pluginDir = (0, path_1.join)(this.pluginsDir, id);
|
|
106
|
+
if ((0, fs_1.existsSync)(pluginDir)) {
|
|
107
|
+
// 递归删除目录
|
|
108
|
+
const files = (0, fs_1.readdirSync)(pluginDir);
|
|
109
|
+
for (const file of files) {
|
|
110
|
+
(0, fs_1.unlinkSync)((0, path_1.join)(pluginDir, file));
|
|
111
|
+
}
|
|
112
|
+
const { rmdirSync } = require('fs');
|
|
113
|
+
rmdirSync(pluginDir);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
logger_1.logger.error('uninstall plugin error', { id, error: String(error) });
|
|
118
|
+
}
|
|
119
|
+
this.installed.delete(id);
|
|
120
|
+
this.saveRegistry();
|
|
121
|
+
logger_1.logger.info('plugin uninstalled', { id });
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 启用插件
|
|
126
|
+
*/
|
|
127
|
+
enablePlugin(id) {
|
|
128
|
+
const plugin = this.installed.get(id);
|
|
129
|
+
if (!plugin)
|
|
130
|
+
return false;
|
|
131
|
+
plugin.status = 'enabled';
|
|
132
|
+
plugin.updatedAt = new Date().toISOString();
|
|
133
|
+
this.saveRegistry();
|
|
134
|
+
this.activatePlugin(plugin);
|
|
135
|
+
logger_1.logger.info('plugin enabled', { id });
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 禁用插件
|
|
140
|
+
*/
|
|
141
|
+
disablePlugin(id) {
|
|
142
|
+
const plugin = this.installed.get(id);
|
|
143
|
+
if (!plugin)
|
|
144
|
+
return false;
|
|
145
|
+
plugin.status = 'disabled';
|
|
146
|
+
plugin.updatedAt = new Date().toISOString();
|
|
147
|
+
this.saveRegistry();
|
|
148
|
+
logger_1.logger.info('plugin disabled', { id });
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 激活插件
|
|
153
|
+
* P2-2 真实执行:加载插件入口 JS 并调用 activate(api),
|
|
154
|
+
* 第三方插件通过 PluginAPI 注册命令/视图/补全提供者/代码操作。
|
|
155
|
+
*/
|
|
156
|
+
activatePlugin(plugin) {
|
|
157
|
+
try {
|
|
158
|
+
const pluginDir = (0, path_1.join)(this.pluginsDir, plugin.id);
|
|
159
|
+
const entryPath = (0, path_1.join)(pluginDir, plugin.entry || 'index.js');
|
|
160
|
+
if ((0, fs_1.existsSync)(entryPath)) {
|
|
161
|
+
const resolved = require.resolve(entryPath);
|
|
162
|
+
delete require.cache[resolved]; // 热重载:避免 require 缓存
|
|
163
|
+
const mod = require(resolved);
|
|
164
|
+
if (mod && typeof mod.activate === 'function') {
|
|
165
|
+
const api = this.buildPluginApi(plugin);
|
|
166
|
+
mod.activate(api);
|
|
167
|
+
logger_1.logger.info('plugin activated (real)', { id: plugin.id });
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
logger_1.logger.warn('plugin entry missing activate()', { id: plugin.id });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
logger_1.logger.warn('plugin entry missing, skip', { id: plugin.id, entryPath });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
plugin.status = 'error';
|
|
179
|
+
plugin.error = String(error);
|
|
180
|
+
this.saveRegistry();
|
|
181
|
+
logger_1.logger.error('plugin activation error', { id: plugin.id, error: String(error) });
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/** P2-2: 构建传给插件 activate(api) 的 PluginAPI(命令带插件命名空间) */
|
|
185
|
+
buildPluginApi(plugin) {
|
|
186
|
+
const self = this;
|
|
187
|
+
return {
|
|
188
|
+
registerCommand: (id, handler) => self.commands.set(`plugin:${plugin.id}:${id}`, handler),
|
|
189
|
+
registerView: (id, options) => self.views.set(`plugin:${plugin.id}:${id}`, options),
|
|
190
|
+
registerCompletionProvider: (language, provider) => self.completionProviders.set(`plugin:${plugin.id}:${language}`, provider),
|
|
191
|
+
registerCodeAction: (id, action) => self.codeActions.set(`plugin:${plugin.id}:${id}`, action),
|
|
192
|
+
showNotification: (msg, type) => logger_1.logger.info('plugin notification', { plugin: plugin.id, msg, type }),
|
|
193
|
+
showQuickPick: async () => undefined,
|
|
194
|
+
showInputBox: async () => undefined,
|
|
195
|
+
getWorkspacePath: () => self.baseDir,
|
|
196
|
+
readFile: async (p) => (0, fs_1.readFileSync)(p, 'utf8'),
|
|
197
|
+
writeFile: async (p, c) => (0, fs_1.writeFileSync)(p, c, 'utf8'),
|
|
198
|
+
executeCommand: (cmd, ...args) => self.executeCommand(cmd, ...args),
|
|
199
|
+
log: (msg) => logger_1.logger.info('plugin log', { plugin: plugin.id, msg }),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/** P2-2: 插件注册的视图列表 */
|
|
203
|
+
getViews() {
|
|
204
|
+
return Array.from(this.views.keys());
|
|
205
|
+
}
|
|
206
|
+
/** P2-2: 插件注册的补全提供者列表 */
|
|
207
|
+
getCompletionProviders() {
|
|
208
|
+
return Array.from(this.completionProviders.keys());
|
|
209
|
+
}
|
|
210
|
+
/** P2-2: 插件注册的代码操作列表 */
|
|
211
|
+
getCodeActions() {
|
|
212
|
+
return Array.from(this.codeActions.keys());
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 获取已安装插件
|
|
216
|
+
*/
|
|
217
|
+
getInstalledPlugins(status) {
|
|
218
|
+
let plugins = Array.from(this.installed.values());
|
|
219
|
+
if (status)
|
|
220
|
+
plugins = plugins.filter((p) => p.status === status);
|
|
221
|
+
return plugins;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* 获取插件
|
|
225
|
+
*/
|
|
226
|
+
getPlugin(id) {
|
|
227
|
+
return this.installed.get(id);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* 更新插件配置
|
|
231
|
+
*/
|
|
232
|
+
updatePluginConfig(id, config) {
|
|
233
|
+
const plugin = this.installed.get(id);
|
|
234
|
+
if (!plugin)
|
|
235
|
+
return false;
|
|
236
|
+
plugin.config = { ...plugin.config, ...config };
|
|
237
|
+
plugin.updatedAt = new Date().toISOString();
|
|
238
|
+
this.saveRegistry();
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* 注册命令
|
|
243
|
+
*/
|
|
244
|
+
registerCommand(id, handler) {
|
|
245
|
+
this.commands.set(id, handler);
|
|
246
|
+
logger_1.logger.info('command registered', { id });
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* 执行命令
|
|
250
|
+
*/
|
|
251
|
+
async executeCommand(id, ...args) {
|
|
252
|
+
const handler = this.commands.get(id);
|
|
253
|
+
if (!handler)
|
|
254
|
+
throw new Error(`Command not found: ${id}`);
|
|
255
|
+
return handler(...args);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* 获取所有注册的命令
|
|
259
|
+
*/
|
|
260
|
+
getCommands() {
|
|
261
|
+
return Array.from(this.commands.keys());
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* 搜索市场插件(模拟)
|
|
265
|
+
*/
|
|
266
|
+
searchMarketPlugins(query, category) {
|
|
267
|
+
// 模拟市场插件列表
|
|
268
|
+
const mockPlugins = [
|
|
269
|
+
{
|
|
270
|
+
id: 'feihong-git-enhanced',
|
|
271
|
+
name: 'Git Enhanced',
|
|
272
|
+
version: '1.2.0',
|
|
273
|
+
description: '增强的 Git 集成,支持可视化 diff、 blame、分支管理',
|
|
274
|
+
author: 'feihong',
|
|
275
|
+
keywords: ['git', 'version-control', 'diff'],
|
|
276
|
+
categories: ['version-control'],
|
|
277
|
+
entry: 'index.js',
|
|
278
|
+
permissions: ['workspace', 'git'],
|
|
279
|
+
dependencies: [],
|
|
280
|
+
publisher: '飞虹官方',
|
|
281
|
+
verified: true,
|
|
282
|
+
featured: true,
|
|
283
|
+
latestVersion: '1.2.0',
|
|
284
|
+
downloads: 12500,
|
|
285
|
+
rating: 4.8,
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
id: 'feihong-theme-dark-plus',
|
|
289
|
+
name: 'Dark+ Theme',
|
|
290
|
+
version: '2.0.1',
|
|
291
|
+
description: '飞虹 Code 官方深色主题,护眼配色',
|
|
292
|
+
author: 'feihong',
|
|
293
|
+
keywords: ['theme', 'dark', 'ui'],
|
|
294
|
+
categories: ['themes'],
|
|
295
|
+
entry: 'index.js',
|
|
296
|
+
permissions: ['ui'],
|
|
297
|
+
dependencies: [],
|
|
298
|
+
publisher: '飞虹官方',
|
|
299
|
+
verified: true,
|
|
300
|
+
featured: true,
|
|
301
|
+
latestVersion: '2.0.1',
|
|
302
|
+
downloads: 28000,
|
|
303
|
+
rating: 4.9,
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
id: 'community-python-helper',
|
|
307
|
+
name: 'Python Helper',
|
|
308
|
+
version: '0.9.3',
|
|
309
|
+
description: 'Python 开发辅助,支持虚拟环境管理、依赖分析、代码格式化',
|
|
310
|
+
author: 'community',
|
|
311
|
+
keywords: ['python', 'venv', 'pip', 'format'],
|
|
312
|
+
categories: ['programming-languages'],
|
|
313
|
+
entry: 'index.js',
|
|
314
|
+
permissions: ['workspace', 'terminal'],
|
|
315
|
+
dependencies: [],
|
|
316
|
+
publisher: '社区贡献者',
|
|
317
|
+
verified: false,
|
|
318
|
+
featured: false,
|
|
319
|
+
latestVersion: '0.9.3',
|
|
320
|
+
downloads: 5600,
|
|
321
|
+
rating: 4.5,
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
id: 'feihong-docker-helper',
|
|
325
|
+
name: 'Docker Helper',
|
|
326
|
+
version: '1.0.0',
|
|
327
|
+
description: 'Docker 容器管理,支持镜像构建、容器运行、日志查看',
|
|
328
|
+
author: 'feihong',
|
|
329
|
+
keywords: ['docker', 'container', 'devops'],
|
|
330
|
+
categories: ['devops'],
|
|
331
|
+
entry: 'index.js',
|
|
332
|
+
permissions: ['terminal', 'workspace'],
|
|
333
|
+
dependencies: [],
|
|
334
|
+
publisher: '飞虹官方',
|
|
335
|
+
verified: true,
|
|
336
|
+
featured: false,
|
|
337
|
+
latestVersion: '1.0.0',
|
|
338
|
+
downloads: 8900,
|
|
339
|
+
rating: 4.6,
|
|
340
|
+
},
|
|
341
|
+
];
|
|
342
|
+
let results = mockPlugins;
|
|
343
|
+
if (query) {
|
|
344
|
+
const q = query.toLowerCase();
|
|
345
|
+
results = results.filter((p) => p.name.toLowerCase().includes(q) ||
|
|
346
|
+
p.description.toLowerCase().includes(q) ||
|
|
347
|
+
p.keywords.some((k) => k.toLowerCase().includes(q)));
|
|
348
|
+
}
|
|
349
|
+
if (category) {
|
|
350
|
+
results = results.filter((p) => p.categories.includes(category));
|
|
351
|
+
}
|
|
352
|
+
return results;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* 获取插件分类
|
|
356
|
+
*/
|
|
357
|
+
getCategories() {
|
|
358
|
+
return ['all', 'programming-languages', 'themes', 'version-control', 'devops', 'ui', 'productivity', 'other'];
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* 获取统计信息
|
|
362
|
+
*/
|
|
363
|
+
getStats() {
|
|
364
|
+
const plugins = Array.from(this.installed.values());
|
|
365
|
+
return {
|
|
366
|
+
total: plugins.length,
|
|
367
|
+
enabled: plugins.filter((p) => p.status === 'enabled').length,
|
|
368
|
+
disabled: plugins.filter((p) => p.status === 'disabled').length,
|
|
369
|
+
errors: plugins.filter((p) => p.status === 'error').length,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
exports.PluginManager = PluginManager;
|
|
374
|
+
/**
|
|
375
|
+
* 便捷函数:创建插件管理器
|
|
376
|
+
*/
|
|
377
|
+
function createPluginManager(baseDir) {
|
|
378
|
+
return new PluginManager(baseDir);
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-log.js","sourceRoot":"","sources":["../../src/runtime/event-log.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,0CAAgD;AAChD,+BAA+B;AAC/B,2BAA6B;AAE7B,6CAA0C;
|
|
1
|
+
{"version":3,"file":"event-log.js","sourceRoot":"","sources":["../../src/runtime/event-log.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,0CAAgD;AAChD,+BAA+B;AAC/B,2BAA6B;AAE7B,6CAA0C;AAyB1C,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAA,YAAO,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAa,QAAQ;IACF,KAAK,CAAQ;IACb,IAAI,CAAS;IAE9B,YAAY,KAAY,EAAE,MAAc;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAe,EAAE,OAAgC;QAC5D,MAAM,EAAE,GAAe,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAC7F,IAAI,CAAC;YACH,MAAM,IAAA,gBAAK,EAAC,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,eAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAxBD,4BAwBC"}
|
package/dist/shared/i18n.js
CHANGED
|
@@ -52,56 +52,56 @@ const ZH = {
|
|
|
52
52
|
'app.tagline': '终端 AI 编程智能体(Muse Code 参照复刻)',
|
|
53
53
|
'app.signature': '晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹',
|
|
54
54
|
'cli.brand': '[飞虹 Code]',
|
|
55
|
-
'cli.help': `飞虹 Code (fhcode) v{version}
|
|
56
|
-
|
|
57
|
-
用法:
|
|
58
|
-
fhcode 进入交互 REPL
|
|
59
|
-
fhcode "<需求>" 单命令模式执行一条需求
|
|
60
|
-
fhcode --parallel "<需求>" 多子代理并行(M2:git worktree 隔离)
|
|
61
|
-
fhcode /plan "<目标>" 生成实现计划(只读)
|
|
62
|
-
fhcode /grill [路径] 红队式代码审查(只读)
|
|
63
|
-
fhcode /goal "<目标>" 分解并保存高层目标
|
|
64
|
-
fhcode sessions 列出历史会话(M3 恢复与审计)
|
|
65
|
-
fhcode resume <id> 从检查点恢复中断的会话(M3)
|
|
66
|
-
fhcode diff [<id>] 展示会话/工作区变更(M3)
|
|
67
|
-
fhcode rollback <id> [--yes] 回滚会话改动(M3,危险操作需 --yes)
|
|
68
|
-
|
|
69
|
-
企业能力 (M4):
|
|
70
|
-
fhcode whoami 当前租户 / 用户 / 角色 / 隔离目录 / 配额
|
|
71
|
-
fhcode policy 查看生效的 RBAC 策略与角色矩阵
|
|
72
|
-
fhcode audit [--limit N] 查看审计记录(默认最近 20 条)
|
|
73
|
-
fhcode audit verify 校验审计哈希链是否被篡改
|
|
74
|
-
fhcode tenants 列出全部租户与用量汇总
|
|
75
|
-
fhcode doctor 环境自检(版本/git/provider/路径/网络)
|
|
76
|
-
|
|
77
|
-
自我进化 (M6):
|
|
78
|
-
fhcode model-stats 查看各模型性能统计
|
|
79
|
-
fhcode experiences [路径] 列出经验库
|
|
80
|
-
|
|
81
|
-
Web 控制台 (M5):
|
|
82
|
-
fhcode serve [--port 8080] 启动 Web 管理控制台(默认 http://localhost:8080)
|
|
83
|
-
令牌由 FH_WEB_TOKEN 或自动生成(控制台仅观测,不执行)
|
|
84
|
-
|
|
85
|
-
自主编程 (M8):
|
|
86
|
-
fhcode code-write "<目标>" 自主编写代码(规划→编写→测试→审查→修复)
|
|
87
|
-
fhcode quality-gate [路径] 质量门禁审查(安全+质量+测试覆盖)
|
|
88
|
-
fhcode self-improve 自我改进统计与历史
|
|
89
|
-
|
|
90
|
-
全自动软件工程 Agent (M9):
|
|
91
|
-
fhcode swe "<目标>" 读取仓库→拆解规划→实现+验证+自愈→报告
|
|
92
|
-
--repo <路径> 指定仓库(默认当前目录)
|
|
93
|
-
--plan-only 仅规划不执行
|
|
94
|
-
--verify-only 仅跑验证不实现
|
|
95
|
-
--max-tasks N 限制子任务数(默认8)
|
|
96
|
-
--max-retries N 单任务自愈重试(默认2)
|
|
97
|
-
|
|
98
|
-
fhcode --version 显示版本 (-v)
|
|
99
|
-
fhcode --help 显示帮助 (-h)
|
|
100
|
-
fhcode --lang <zh|en> 设置界面语言(中文/英文)
|
|
101
|
-
|
|
102
|
-
说明: 未配置 FH_PROVIDERS 时自动进入离线模式(脚本化 Mock 驱动闭环验证)。
|
|
103
|
-
配置 FH_PROVIDERS(OpenAI 兼容 / Ollama)后,将调用真实大模型执行任务。
|
|
104
|
-
企业模式默认开启(租户隔离 + RBAC + 审计链 + 配额),可用 FH_ENTERPRISE=false 关闭。
|
|
55
|
+
'cli.help': `飞虹 Code (fhcode) v{version}
|
|
56
|
+
|
|
57
|
+
用法:
|
|
58
|
+
fhcode 进入交互 REPL
|
|
59
|
+
fhcode "<需求>" 单命令模式执行一条需求
|
|
60
|
+
fhcode --parallel "<需求>" 多子代理并行(M2:git worktree 隔离)
|
|
61
|
+
fhcode /plan "<目标>" 生成实现计划(只读)
|
|
62
|
+
fhcode /grill [路径] 红队式代码审查(只读)
|
|
63
|
+
fhcode /goal "<目标>" 分解并保存高层目标
|
|
64
|
+
fhcode sessions 列出历史会话(M3 恢复与审计)
|
|
65
|
+
fhcode resume <id> 从检查点恢复中断的会话(M3)
|
|
66
|
+
fhcode diff [<id>] 展示会话/工作区变更(M3)
|
|
67
|
+
fhcode rollback <id> [--yes] 回滚会话改动(M3,危险操作需 --yes)
|
|
68
|
+
|
|
69
|
+
企业能力 (M4):
|
|
70
|
+
fhcode whoami 当前租户 / 用户 / 角色 / 隔离目录 / 配额
|
|
71
|
+
fhcode policy 查看生效的 RBAC 策略与角色矩阵
|
|
72
|
+
fhcode audit [--limit N] 查看审计记录(默认最近 20 条)
|
|
73
|
+
fhcode audit verify 校验审计哈希链是否被篡改
|
|
74
|
+
fhcode tenants 列出全部租户与用量汇总
|
|
75
|
+
fhcode doctor 环境自检(版本/git/provider/路径/网络)
|
|
76
|
+
|
|
77
|
+
自我进化 (M6):
|
|
78
|
+
fhcode model-stats 查看各模型性能统计
|
|
79
|
+
fhcode experiences [路径] 列出经验库
|
|
80
|
+
|
|
81
|
+
Web 控制台 (M5):
|
|
82
|
+
fhcode serve [--port 8080] 启动 Web 管理控制台(默认 http://localhost:8080)
|
|
83
|
+
令牌由 FH_WEB_TOKEN 或自动生成(控制台仅观测,不执行)
|
|
84
|
+
|
|
85
|
+
自主编程 (M8):
|
|
86
|
+
fhcode code-write "<目标>" 自主编写代码(规划→编写→测试→审查→修复)
|
|
87
|
+
fhcode quality-gate [路径] 质量门禁审查(安全+质量+测试覆盖)
|
|
88
|
+
fhcode self-improve 自我改进统计与历史
|
|
89
|
+
|
|
90
|
+
全自动软件工程 Agent (M9):
|
|
91
|
+
fhcode swe "<目标>" 读取仓库→拆解规划→实现+验证+自愈→报告
|
|
92
|
+
--repo <路径> 指定仓库(默认当前目录)
|
|
93
|
+
--plan-only 仅规划不执行
|
|
94
|
+
--verify-only 仅跑验证不实现
|
|
95
|
+
--max-tasks N 限制子任务数(默认8)
|
|
96
|
+
--max-retries N 单任务自愈重试(默认2)
|
|
97
|
+
|
|
98
|
+
fhcode --version 显示版本 (-v)
|
|
99
|
+
fhcode --help 显示帮助 (-h)
|
|
100
|
+
fhcode --lang <zh|en> 设置界面语言(中文/英文)
|
|
101
|
+
|
|
102
|
+
说明: 未配置 FH_PROVIDERS 时自动进入离线模式(脚本化 Mock 驱动闭环验证)。
|
|
103
|
+
配置 FH_PROVIDERS(OpenAI 兼容 / Ollama)后,将调用真实大模型执行任务。
|
|
104
|
+
企业模式默认开启(租户隔离 + RBAC + 审计链 + 配额),可用 FH_ENTERPRISE=false 关闭。
|
|
105
105
|
署名: {signature}`,
|
|
106
106
|
'repl.welcome': '飞虹 Code REPL(输入需求回车执行,exit 退出)',
|
|
107
107
|
'repl.hint': '提示:未配置 FH_PROVIDERS 时自动离线模式运行;支持 /plan /grill /goal 技能。\n',
|
|
@@ -180,8 +180,12 @@ Web 控制台 (M5):
|
|
|
180
180
|
'doctor.home': '主目录可写',
|
|
181
181
|
'doctor.sandbox': '沙箱模式',
|
|
182
182
|
'doctor.sandboxUnavailable': '(配置不可用)',
|
|
183
|
+
'doctor.docker': 'Docker 沙箱(container 档)',
|
|
183
184
|
'doctor.allOk': '✅ 环境就绪,无异常项',
|
|
184
185
|
'doctor.issues': '⚠️ 发现 {n} 项异常,请根据提示处理',
|
|
186
|
+
'skillMarket.localSeed': '(网络不可达,已使用本地种子源 templates/market/index.json)',
|
|
187
|
+
'skillMarket.registered': '✅ 已自动注册到本地技能索引(当前共 {n} 个技能)',
|
|
188
|
+
'skillMarket.notRegisteredWarn': '⚠️ 技能已安装但未被本地索引发现:{name}(请检查 SKILL.md 格式)',
|
|
185
189
|
'plugin.installUsage': '用法: fhcode plugin install <本地目录|git URL>',
|
|
186
190
|
'plugin.installed': '✅ 插件已安装: {name}({dir})',
|
|
187
191
|
'plugin.installFailed': '❌ 插件安装失败: ',
|
|
@@ -284,56 +288,56 @@ const EN = {
|
|
|
284
288
|
'app.tagline': 'Terminal AI coding agent (a Muse Code reimplementation)',
|
|
285
289
|
'app.signature': 'Jinjiang Feihongzhi Tech Enterprise Management Co., Ltd. · Feiyang Qiyuan R&D Center · Lead: Wu Cihong',
|
|
286
290
|
'cli.brand': '[fhcode]',
|
|
287
|
-
'cli.help': `fhcode (Feihong Code) v{version}
|
|
288
|
-
|
|
289
|
-
Usage:
|
|
290
|
-
fhcode Enter interactive REPL
|
|
291
|
-
fhcode "<request>" Run a single request
|
|
292
|
-
fhcode --parallel "<request>" Multi-subagent parallel mode (M2: git worktree isolation)
|
|
293
|
-
fhcode /plan "<goal>" Generate an implementation plan (read-only)
|
|
294
|
-
fhcode /grill [path] Red-team code review (read-only)
|
|
295
|
-
fhcode /goal "<goal>" Decompose and save a high-level goal
|
|
296
|
-
fhcode sessions List historical sessions (M3 resume & audit)
|
|
297
|
-
fhcode resume <id> Resume an interrupted session from checkpoint (M3)
|
|
298
|
-
fhcode diff [<id>] Show session/workspace diff (M3)
|
|
299
|
-
fhcode rollback <id> [--yes] Roll back session changes (M3, destructive, needs --yes)
|
|
300
|
-
|
|
301
|
-
Enterprise (M4):
|
|
302
|
-
fhcode whoami Current tenant / user / role / isolated dir / quota
|
|
303
|
-
fhcode policy Show active RBAC policy & role matrix
|
|
304
|
-
fhcode audit [--limit N] View audit records (last 20 by default)
|
|
305
|
-
fhcode audit verify Verify audit hash-chain integrity
|
|
306
|
-
fhcode tenants List all tenants & usage summary
|
|
307
|
-
fhcode doctor Environment self-check (version/git/providers/paths/network)
|
|
308
|
-
|
|
309
|
-
Self-evolution (M6):
|
|
310
|
-
fhcode model-stats View per-model performance stats
|
|
311
|
-
fhcode experiences [path] List the experience library
|
|
312
|
-
|
|
313
|
-
Web console (M5):
|
|
314
|
-
fhcode serve [--port 8080] Start the Web console (default http://localhost:8080)
|
|
315
|
-
Token from FH_WEB_TOKEN or auto-generated (observe-only)
|
|
316
|
-
|
|
317
|
-
Autonomous coding (M8):
|
|
318
|
-
fhcode code-write "<goal>" Autonomous code writing (plan→write→test→review→fix)
|
|
319
|
-
fhcode quality-gate [path] Quality-gate review (security+quality+test coverage)
|
|
320
|
-
fhcode self-improve Self-improvement stats & history
|
|
321
|
-
|
|
322
|
-
Autonomous SWE Agent (M9):
|
|
323
|
-
fhcode swe "<goal>" Read repo→plan→implement+verify+self-heal→report
|
|
324
|
-
--repo <path> target repo (default cwd)
|
|
325
|
-
--plan-only plan only, no execution
|
|
326
|
-
--verify-only verification only, no implementation
|
|
327
|
-
--max-tasks N max subtasks (default 8)
|
|
328
|
-
--max-retries N self-heal retries per task (default 2)
|
|
329
|
-
|
|
330
|
-
fhcode --version Show version (-v)
|
|
331
|
-
fhcode --help Show help (-h)
|
|
332
|
-
fhcode --lang <zh|en> Set UI language (Chinese / English)
|
|
333
|
-
|
|
334
|
-
Notes: offline mode is used automatically when FH_PROVIDERS is unset (scripted Mock drives the loop).
|
|
335
|
-
With FH_PROVIDERS (OpenAI-compatible / Ollama) configured, real LLMs run the tasks.
|
|
336
|
-
Enterprise mode is on by default (tenant isolation + RBAC + audit chain + quota); disable with FH_ENTERPRISE=false.
|
|
291
|
+
'cli.help': `fhcode (Feihong Code) v{version}
|
|
292
|
+
|
|
293
|
+
Usage:
|
|
294
|
+
fhcode Enter interactive REPL
|
|
295
|
+
fhcode "<request>" Run a single request
|
|
296
|
+
fhcode --parallel "<request>" Multi-subagent parallel mode (M2: git worktree isolation)
|
|
297
|
+
fhcode /plan "<goal>" Generate an implementation plan (read-only)
|
|
298
|
+
fhcode /grill [path] Red-team code review (read-only)
|
|
299
|
+
fhcode /goal "<goal>" Decompose and save a high-level goal
|
|
300
|
+
fhcode sessions List historical sessions (M3 resume & audit)
|
|
301
|
+
fhcode resume <id> Resume an interrupted session from checkpoint (M3)
|
|
302
|
+
fhcode diff [<id>] Show session/workspace diff (M3)
|
|
303
|
+
fhcode rollback <id> [--yes] Roll back session changes (M3, destructive, needs --yes)
|
|
304
|
+
|
|
305
|
+
Enterprise (M4):
|
|
306
|
+
fhcode whoami Current tenant / user / role / isolated dir / quota
|
|
307
|
+
fhcode policy Show active RBAC policy & role matrix
|
|
308
|
+
fhcode audit [--limit N] View audit records (last 20 by default)
|
|
309
|
+
fhcode audit verify Verify audit hash-chain integrity
|
|
310
|
+
fhcode tenants List all tenants & usage summary
|
|
311
|
+
fhcode doctor Environment self-check (version/git/providers/paths/network)
|
|
312
|
+
|
|
313
|
+
Self-evolution (M6):
|
|
314
|
+
fhcode model-stats View per-model performance stats
|
|
315
|
+
fhcode experiences [path] List the experience library
|
|
316
|
+
|
|
317
|
+
Web console (M5):
|
|
318
|
+
fhcode serve [--port 8080] Start the Web console (default http://localhost:8080)
|
|
319
|
+
Token from FH_WEB_TOKEN or auto-generated (observe-only)
|
|
320
|
+
|
|
321
|
+
Autonomous coding (M8):
|
|
322
|
+
fhcode code-write "<goal>" Autonomous code writing (plan→write→test→review→fix)
|
|
323
|
+
fhcode quality-gate [path] Quality-gate review (security+quality+test coverage)
|
|
324
|
+
fhcode self-improve Self-improvement stats & history
|
|
325
|
+
|
|
326
|
+
Autonomous SWE Agent (M9):
|
|
327
|
+
fhcode swe "<goal>" Read repo→plan→implement+verify+self-heal→report
|
|
328
|
+
--repo <path> target repo (default cwd)
|
|
329
|
+
--plan-only plan only, no execution
|
|
330
|
+
--verify-only verification only, no implementation
|
|
331
|
+
--max-tasks N max subtasks (default 8)
|
|
332
|
+
--max-retries N self-heal retries per task (default 2)
|
|
333
|
+
|
|
334
|
+
fhcode --version Show version (-v)
|
|
335
|
+
fhcode --help Show help (-h)
|
|
336
|
+
fhcode --lang <zh|en> Set UI language (Chinese / English)
|
|
337
|
+
|
|
338
|
+
Notes: offline mode is used automatically when FH_PROVIDERS is unset (scripted Mock drives the loop).
|
|
339
|
+
With FH_PROVIDERS (OpenAI-compatible / Ollama) configured, real LLMs run the tasks.
|
|
340
|
+
Enterprise mode is on by default (tenant isolation + RBAC + audit chain + quota); disable with FH_ENTERPRISE=false.
|
|
337
341
|
Signature: {signature}`,
|
|
338
342
|
'repl.welcome': 'fhcode REPL (type a request and press Enter to run; type exit to quit)',
|
|
339
343
|
'repl.hint': 'Hint: offline mode is used automatically when FH_PROVIDERS is not configured; /plan /grill /goal skills supported.\n',
|
|
@@ -412,6 +416,7 @@ Signature: {signature}`,
|
|
|
412
416
|
'doctor.home': 'Home dir writable',
|
|
413
417
|
'doctor.sandbox': 'Sandbox mode',
|
|
414
418
|
'doctor.sandboxUnavailable': '(config unavailable)',
|
|
419
|
+
'doctor.docker': 'Docker sandbox (container mode)',
|
|
415
420
|
'doctor.allOk': '✅ Environment ready, no issues',
|
|
416
421
|
'doctor.issues': '⚠️ {n} issue(s) found, please fix them as suggested',
|
|
417
422
|
'plugin.installUsage': 'Usage: fhcode plugin install <local-dir|git-url>',
|
|
@@ -427,6 +432,9 @@ Signature: {signature}`,
|
|
|
427
432
|
'skillMarket.searchTitle': 'Market results for "{q}" ({n} found, source {base}):',
|
|
428
433
|
'skillMarket.installHint': 'Install: fhcode skill-market install <skill-name> [--repo <market-url>]',
|
|
429
434
|
'skillMarket.installUsage': 'Usage: fhcode skill-market install <skill-name> [--repo <market-url>]',
|
|
435
|
+
'skillMarket.localSeed': '(network unreachable, using local seed templates/market/index.json)',
|
|
436
|
+
'skillMarket.registered': '✅ auto-registered to local skill index (total {n} skills)',
|
|
437
|
+
'skillMarket.notRegisteredWarn': '⚠️ installed but NOT discovered by local index: {name} (check SKILL.md format)',
|
|
430
438
|
'skillMarket.notFound': '❌ Skill not found in market: {name}',
|
|
431
439
|
'skillMarket.installed': '✅ Skill installed: {name} ({dir}), auto-discovered in tasks',
|
|
432
440
|
'skillMarket.installFailed': '❌ Skill install failed: ',
|