feihong-code 0.6.1 → 7.2.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.
Files changed (247) hide show
  1. package/.github/workflows/release.yml +173 -0
  2. package/CHANGELOG.md +83 -454
  3. package/dist/agent/browser-agent.js +354 -0
  4. package/dist/agent/browser-agent.js.map +1 -0
  5. package/dist/agent/change-manager.js +433 -0
  6. package/dist/agent/change-manager.js.map +1 -0
  7. package/dist/agent/code-rag.js +293 -0
  8. package/dist/agent/code-rag.js.map +1 -0
  9. package/dist/agent/code-writer.js +13 -1
  10. package/dist/agent/code-writer.js.map +1 -1
  11. package/dist/agent/completion-engine.js +522 -0
  12. package/dist/agent/completion-engine.js.map +1 -0
  13. package/dist/agent/context-compactor.js +188 -10
  14. package/dist/agent/context-compactor.js.map +1 -1
  15. package/dist/agent/custom-agent.js +368 -0
  16. package/dist/agent/custom-agent.js.map +1 -0
  17. package/dist/agent/design-to-code.js +218 -0
  18. package/dist/agent/design-to-code.js.map +1 -0
  19. package/dist/agent/event-driven-agent.js +359 -0
  20. package/dist/agent/event-driven-agent.js.map +1 -0
  21. package/dist/agent/git-integration.js +324 -0
  22. package/dist/agent/git-integration.js.map +1 -0
  23. package/dist/agent/layered-memory.js +329 -0
  24. package/dist/agent/layered-memory.js.map +1 -0
  25. package/dist/agent/multi-agent.js +359 -0
  26. package/dist/agent/multi-agent.js.map +1 -0
  27. package/dist/agent/orchestrator.js +160 -22
  28. package/dist/agent/orchestrator.js.map +1 -1
  29. package/dist/agent/prompts.js +20 -0
  30. package/dist/agent/prompts.js.map +1 -1
  31. package/dist/agent/quality-gate.js +139 -0
  32. package/dist/agent/quality-gate.js.map +1 -1
  33. package/dist/agent/self-correction.js +274 -0
  34. package/dist/agent/self-correction.js.map +1 -0
  35. package/dist/agent/self-heal.js +42 -12
  36. package/dist/agent/self-heal.js.map +1 -1
  37. package/dist/agent/solo-agent.js +321 -0
  38. package/dist/agent/solo-agent.js.map +1 -0
  39. package/dist/agent/symbol-index.js +258 -28
  40. package/dist/agent/symbol-index.js.map +1 -1
  41. package/dist/agent/team-collaboration.js +252 -0
  42. package/dist/agent/team-collaboration.js.map +1 -0
  43. package/dist/agent/type-checker.js +229 -0
  44. package/dist/agent/type-checker.js.map +1 -0
  45. package/dist/cli/run.js +1 -0
  46. package/dist/cli/run.js.map +1 -1
  47. package/dist/cli/version.js +1 -1
  48. package/dist/integrations/collaboration.js +219 -0
  49. package/dist/integrations/collaboration.js.map +1 -0
  50. package/dist/integrations/figma.js +307 -0
  51. package/dist/integrations/figma.js.map +1 -0
  52. package/dist/integrations/sso.js +327 -0
  53. package/dist/integrations/sso.js.map +1 -0
  54. package/dist/knowledge/library.js +301 -0
  55. package/dist/knowledge/library.js.map +1 -0
  56. package/dist/plugins/manager.js +332 -0
  57. package/dist/plugins/manager.js.map +1 -0
  58. package/dist/runtime/event-log.js.map +1 -1
  59. package/dist/tools/browser/browser.tool.js +217 -0
  60. package/dist/tools/browser/browser.tool.js.map +1 -0
  61. package/dist/tools/index.js +2 -0
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/tools/shell/exec.js +50 -10
  64. package/dist/tools/shell/exec.js.map +1 -1
  65. package/dist/tools/shell/run-shell.tool.js +8 -2
  66. package/dist/tools/shell/run-shell.tool.js.map +1 -1
  67. package/dist/training/completion-evaluator.js +213 -0
  68. package/dist/training/completion-evaluator.js.map +1 -0
  69. package/dist/training/fim-data.js +248 -0
  70. package/dist/training/fim-data.js.map +1 -0
  71. package/dist/voice/voice-programming.js +223 -0
  72. package/dist/voice/voice-programming.js.map +1 -0
  73. package/dist/web/public/css/style.css +190 -7
  74. package/dist/web/public/index.html +403 -9
  75. package/dist/web/public/js/api.js +191 -4
  76. package/dist/web/public/js/app.js +850 -123
  77. package/dist/web/public/js/mock-api.js +234 -0
  78. package/dist/web/public/js/monaco-editor.js +203 -0
  79. package/dist/web/public/js/ui.js +1271 -54
  80. package/dist/web/public/manifest.json +59 -0
  81. package/dist/web/public/service-worker.js +173 -0
  82. package/dist/web/public/vendor/monaco/vs/abap-D-t0cyap.js +1 -0
  83. package/dist/web/public/vendor/monaco/vs/apex-CcIm7xu6.js +1 -0
  84. package/dist/web/public/vendor/monaco/vs/assets/css.worker-URu8fCFR.js +97 -0
  85. package/dist/web/public/vendor/monaco/vs/assets/editor.worker-lj3bdIIn.js +30 -0
  86. package/dist/web/public/vendor/monaco/vs/assets/editorWebWorkerMain-CA_vMoUU.js +30 -0
  87. package/dist/web/public/vendor/monaco/vs/assets/html.worker-D1SL3iM8.js +474 -0
  88. package/dist/web/public/vendor/monaco/vs/assets/json.worker-CoJx_OPf.js +62 -0
  89. package/dist/web/public/vendor/monaco/vs/assets/ts.worker-BWKtMYOk.js +67722 -0
  90. package/dist/web/public/vendor/monaco/vs/azcli-BA0tQDCg.js +1 -0
  91. package/dist/web/public/vendor/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  92. package/dist/web/public/vendor/monaco/vs/bat-C397hTD6.js +1 -0
  93. package/dist/web/public/vendor/monaco/vs/bicep-DF5aW17k.js +2 -0
  94. package/dist/web/public/vendor/monaco/vs/cameligo-plsz8qhj.js +1 -0
  95. package/dist/web/public/vendor/monaco/vs/clojure-Y2auQMzK.js +1 -0
  96. package/dist/web/public/vendor/monaco/vs/coffee-Bu45yuWE.js +1 -0
  97. package/dist/web/public/vendor/monaco/vs/cpp-CkKPQIni.js +1 -0
  98. package/dist/web/public/vendor/monaco/vs/csharp-CX28MZyh.js +1 -0
  99. package/dist/web/public/vendor/monaco/vs/csp-D8uWnyxW.js +1 -0
  100. package/dist/web/public/vendor/monaco/vs/css-CaeNmE3S.js +3 -0
  101. package/dist/web/public/vendor/monaco/vs/css.worker-CyhWkhHo.js +1 -0
  102. package/dist/web/public/vendor/monaco/vs/cssMode-CV6Ay48H.js +1 -0
  103. package/dist/web/public/vendor/monaco/vs/cypher-DVThT8BS.js +1 -0
  104. package/dist/web/public/vendor/monaco/vs/dart-CmGfCvrO.js +1 -0
  105. package/dist/web/public/vendor/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  106. package/dist/web/public/vendor/monaco/vs/ecl-30fUercY.js +1 -0
  107. package/dist/web/public/vendor/monaco/vs/editor/editor.main.css +1 -0
  108. package/dist/web/public/vendor/monaco/vs/editor/editor.main.js +1 -0
  109. package/dist/web/public/vendor/monaco/vs/editor/editor.worker.js +1 -0
  110. package/dist/web/public/vendor/monaco/vs/editor-KLE6jdfb.js +831 -0
  111. package/dist/web/public/vendor/monaco/vs/editor.js +1 -0
  112. package/dist/web/public/vendor/monaco/vs/editorWorkerHost-fVE1cjcC.js +35 -0
  113. package/dist/web/public/vendor/monaco/vs/elixir-xjPaIfzF.js +1 -0
  114. package/dist/web/public/vendor/monaco/vs/flow9-DqtmStfK.js +1 -0
  115. package/dist/web/public/vendor/monaco/vs/freemarker2-FWreY7v7.js +3 -0
  116. package/dist/web/public/vendor/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  117. package/dist/web/public/vendor/monaco/vs/go-D_hbi-Jt.js +1 -0
  118. package/dist/web/public/vendor/monaco/vs/graphql-CKUU4kLG.js +1 -0
  119. package/dist/web/public/vendor/monaco/vs/handlebars-CZi4pHCH.js +1 -0
  120. package/dist/web/public/vendor/monaco/vs/hcl-DTaboeZW.js +1 -0
  121. package/dist/web/public/vendor/monaco/vs/html-j_7ZTNRU.js +1 -0
  122. package/dist/web/public/vendor/monaco/vs/html.worker-CA3iAimZ.js +1 -0
  123. package/dist/web/public/vendor/monaco/vs/htmlMode-27by_KM4.js +1 -0
  124. package/dist/web/public/vendor/monaco/vs/index-049xrXrp.js +1 -0
  125. package/dist/web/public/vendor/monaco/vs/index-CBVt3dzv.js +5 -0
  126. package/dist/web/public/vendor/monaco/vs/index.js +1 -0
  127. package/dist/web/public/vendor/monaco/vs/ini-CsNwO04R.js +1 -0
  128. package/dist/web/public/vendor/monaco/vs/initialize-DL0l1TGY.js +1 -0
  129. package/dist/web/public/vendor/monaco/vs/java-CI4ZMsH9.js +1 -0
  130. package/dist/web/public/vendor/monaco/vs/javascript-DTJl4Jn1.js +1 -0
  131. package/dist/web/public/vendor/monaco/vs/json.worker-BizpAl9O.js +1 -0
  132. package/dist/web/public/vendor/monaco/vs/jsonMode-DLUiMUrI.js +1 -0
  133. package/dist/web/public/vendor/monaco/vs/julia-BwzEvaQw.js +1 -0
  134. package/dist/web/public/vendor/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  135. package/dist/web/public/vendor/monaco/vs/language/css/css.worker.js +66 -0
  136. package/dist/web/public/vendor/monaco/vs/language/css/monaco.contribution.js +1 -0
  137. package/dist/web/public/vendor/monaco/vs/language/html/html.worker.js +443 -0
  138. package/dist/web/public/vendor/monaco/vs/language/html/monaco.contribution.js +1 -0
  139. package/dist/web/public/vendor/monaco/vs/language/json/json.worker.js +17 -0
  140. package/dist/web/public/vendor/monaco/vs/language/json/monaco.contribution.js +1 -0
  141. package/dist/web/public/vendor/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  142. package/dist/web/public/vendor/monaco/vs/language/typescript/ts.worker.js +67693 -0
  143. package/dist/web/public/vendor/monaco/vs/less-C0eDYdqa.js +2 -0
  144. package/dist/web/public/vendor/monaco/vs/lexon-iON-Kj97.js +1 -0
  145. package/dist/web/public/vendor/monaco/vs/liquid-CLJYelW6.js +1 -0
  146. package/dist/web/public/vendor/monaco/vs/loader.js +1368 -0
  147. package/dist/web/public/vendor/monaco/vs/lspLanguageFeatures-BIkJOWLw.js +2 -0
  148. package/dist/web/public/vendor/monaco/vs/lua-DtygF91M.js +1 -0
  149. package/dist/web/public/vendor/monaco/vs/m3-CsR4AuFi.js +1 -0
  150. package/dist/web/public/vendor/monaco/vs/main-BEx-Fmlo.js +15 -0
  151. package/dist/web/public/vendor/monaco/vs/main-DsK8pnKg.js +3 -0
  152. package/dist/web/public/vendor/monaco/vs/markdown-C_rD0bIw.js +1 -0
  153. package/dist/web/public/vendor/monaco/vs/mdx-CpzZIPHF.js +1 -0
  154. package/dist/web/public/vendor/monaco/vs/mips-CiYP61RB.js +1 -0
  155. package/dist/web/public/vendor/monaco/vs/monaco.contribution-9cKT3C7t.js +1 -0
  156. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BE88ZNGY.js +1 -0
  157. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BPhsneLd.js +1 -0
  158. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BgRy6xDf.js +1 -0
  159. package/dist/web/public/vendor/monaco/vs/msdax-C38-sJlp.js +1 -0
  160. package/dist/web/public/vendor/monaco/vs/mysql-CdtbpvbG.js +1 -0
  161. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.d.ts +1 -0
  162. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.js +9 -0
  163. package/dist/web/public/vendor/monaco/vs/nls/lang/de.d.ts +1 -0
  164. package/dist/web/public/vendor/monaco/vs/nls/lang/de.js +9 -0
  165. package/dist/web/public/vendor/monaco/vs/nls/lang/es.d.ts +1 -0
  166. package/dist/web/public/vendor/monaco/vs/nls/lang/es.js +9 -0
  167. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.d.ts +1 -0
  168. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.js +9 -0
  169. package/dist/web/public/vendor/monaco/vs/nls/lang/it.d.ts +1 -0
  170. package/dist/web/public/vendor/monaco/vs/nls/lang/it.js +9 -0
  171. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.d.ts +1 -0
  172. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.js +9 -0
  173. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.d.ts +1 -0
  174. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.js +9 -0
  175. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.d.ts +1 -0
  176. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.js +9 -0
  177. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.d.ts +1 -0
  178. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.js +9 -0
  179. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.d.ts +1 -0
  180. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.js +9 -0
  181. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.d.ts +1 -0
  182. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.js +9 -0
  183. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.d.ts +1 -0
  184. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.js +9 -0
  185. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.d.ts +1 -0
  186. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.js +9 -0
  187. package/dist/web/public/vendor/monaco/vs/nls.messages-loader.js +1 -0
  188. package/dist/web/public/vendor/monaco/vs/objective-c-CntZFaHX.js +1 -0
  189. package/dist/web/public/vendor/monaco/vs/pascal-r6kuqfl_.js +1 -0
  190. package/dist/web/public/vendor/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  191. package/dist/web/public/vendor/monaco/vs/perl-DABw_TcH.js +1 -0
  192. package/dist/web/public/vendor/monaco/vs/pgsql-me_jFXeX.js +1 -0
  193. package/dist/web/public/vendor/monaco/vs/php-D_kh-9LK.js +1 -0
  194. package/dist/web/public/vendor/monaco/vs/pla-VfZjczW0.js +1 -0
  195. package/dist/web/public/vendor/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  196. package/dist/web/public/vendor/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  197. package/dist/web/public/vendor/monaco/vs/powershell-B-7ap1zc.js +1 -0
  198. package/dist/web/public/vendor/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  199. package/dist/web/public/vendor/monaco/vs/pug-BRpRNeEb.js +1 -0
  200. package/dist/web/public/vendor/monaco/vs/python-CqWUUgfu.js +1 -0
  201. package/dist/web/public/vendor/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  202. package/dist/web/public/vendor/monaco/vs/r-f8dDdrp4.js +1 -0
  203. package/dist/web/public/vendor/monaco/vs/razor-hok5y9Km.js +1 -0
  204. package/dist/web/public/vendor/monaco/vs/redis-fvZQY4PI.js +1 -0
  205. package/dist/web/public/vendor/monaco/vs/redshift-45Et0LQi.js +1 -0
  206. package/dist/web/public/vendor/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  207. package/dist/web/public/vendor/monaco/vs/ruby-CZO8zYTz.js +1 -0
  208. package/dist/web/public/vendor/monaco/vs/rust-Bfetafyc.js +1 -0
  209. package/dist/web/public/vendor/monaco/vs/sb-3GYllVck.js +1 -0
  210. package/dist/web/public/vendor/monaco/vs/scala-foMgrKo1.js +1 -0
  211. package/dist/web/public/vendor/monaco/vs/scheme-CHdMtr7p.js +1 -0
  212. package/dist/web/public/vendor/monaco/vs/scss-C1cmLt9V.js +3 -0
  213. package/dist/web/public/vendor/monaco/vs/shell-ClXCKCEW.js +1 -0
  214. package/dist/web/public/vendor/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  215. package/dist/web/public/vendor/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  216. package/dist/web/public/vendor/monaco/vs/sparql-AUGFYSyk.js +1 -0
  217. package/dist/web/public/vendor/monaco/vs/sql-32GpJSV2.js +1 -0
  218. package/dist/web/public/vendor/monaco/vs/st-CuDFIVZ_.js +1 -0
  219. package/dist/web/public/vendor/monaco/vs/swift-t-PfMj7W.js +1 -0
  220. package/dist/web/public/vendor/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  221. package/dist/web/public/vendor/monaco/vs/tcl-D74tq1nH.js +1 -0
  222. package/dist/web/public/vendor/monaco/vs/toggleHighContrast-qGX7E9o7.js +61 -0
  223. package/dist/web/public/vendor/monaco/vs/ts.worker-2QLmBukE.js +1 -0
  224. package/dist/web/public/vendor/monaco/vs/tsMode-B0S_kp2q.js +11 -0
  225. package/dist/web/public/vendor/monaco/vs/twig-C6taOxMV.js +1 -0
  226. package/dist/web/public/vendor/monaco/vs/typescript-_2t_511t.js +1 -0
  227. package/dist/web/public/vendor/monaco/vs/typespec-8OfoLt6R.js +1 -0
  228. package/dist/web/public/vendor/monaco/vs/vb-Dyb2648j.js +1 -0
  229. package/dist/web/public/vendor/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  230. package/dist/web/public/vendor/monaco/vs/workers-BBttULjf.js +1 -0
  231. package/dist/web/public/vendor/monaco/vs/xml-cZjNDqDT.js +1 -0
  232. package/dist/web/public/vendor/monaco/vs/yaml-A1fOIdH6.js +1 -0
  233. package/dist/web/server.js +2073 -210
  234. package/dist/web/server.js.map +1 -1
  235. package/dist/web/task-queue.js +25 -5
  236. package/dist/web/task-queue.js.map +1 -1
  237. package/docs/BENCHMARK_REPORT_en.md +329 -0
  238. package/docs/BENCHMARK_REPORT_zh.md +329 -0
  239. package/docs/DEPLOYMENT.md +382 -0
  240. package/docs/MODEL_FINETUNING.md +405 -0
  241. package/docs/TECHNICAL_SPEC_en.md +292 -0
  242. package/docs/TECHNICAL_SPEC_zh.md +292 -0
  243. package/docs/UPDATE_NOTES_en.md +159 -0
  244. package/docs/UPDATE_NOTES_zh.md +159 -0
  245. package/electron/main.js +602 -0
  246. package/package.json +67 -3
  247. package/tool-schema.json +1 -1
@@ -0,0 +1,332 @@
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
+ constructor(baseDir) {
27
+ this.baseDir = baseDir;
28
+ this.pluginsDir = (0, path_1.join)(baseDir, 'plugins');
29
+ this.registryPath = (0, path_1.join)(baseDir, 'plugin-registry.json');
30
+ this.ensureDir();
31
+ this.loadRegistry();
32
+ logger_1.logger.info('plugin manager initialized', { baseDir, installed: this.installed.size });
33
+ }
34
+ ensureDir() {
35
+ if (!(0, fs_1.existsSync)(this.baseDir))
36
+ (0, fs_1.mkdirSync)(this.baseDir, { recursive: true });
37
+ if (!(0, fs_1.existsSync)(this.pluginsDir))
38
+ (0, fs_1.mkdirSync)(this.pluginsDir, { recursive: true });
39
+ }
40
+ loadRegistry() {
41
+ try {
42
+ if ((0, fs_1.existsSync)(this.registryPath)) {
43
+ const data = JSON.parse((0, fs_1.readFileSync)(this.registryPath, 'utf-8'));
44
+ for (const plugin of data.installed || []) {
45
+ this.installed.set(plugin.id, plugin);
46
+ }
47
+ }
48
+ }
49
+ catch (error) {
50
+ logger_1.logger.error('load plugin registry error', { error: String(error) });
51
+ }
52
+ }
53
+ saveRegistry() {
54
+ try {
55
+ const data = {
56
+ installed: Array.from(this.installed.values()),
57
+ updatedAt: new Date().toISOString(),
58
+ };
59
+ (0, fs_1.writeFileSync)(this.registryPath, JSON.stringify(data, null, 2), 'utf-8');
60
+ }
61
+ catch (error) {
62
+ logger_1.logger.error('save plugin registry error', { error: String(error) });
63
+ }
64
+ }
65
+ /**
66
+ * 安装插件
67
+ */
68
+ async installPlugin(plugin) {
69
+ logger_1.logger.info('installing plugin', { id: plugin.id, version: plugin.version });
70
+ const pluginDir = (0, path_1.join)(this.pluginsDir, plugin.id);
71
+ if (!(0, fs_1.existsSync)(pluginDir))
72
+ (0, fs_1.mkdirSync)(pluginDir, { recursive: true });
73
+ // 保存插件元数据
74
+ const metadataPath = (0, path_1.join)(pluginDir, 'package.json');
75
+ (0, fs_1.writeFileSync)(metadataPath, JSON.stringify(plugin, null, 2), 'utf-8');
76
+ // 创建入口文件(简化版)
77
+ const entryPath = (0, path_1.join)(pluginDir, plugin.entry || 'index.js');
78
+ if (!(0, fs_1.existsSync)(entryPath)) {
79
+ (0, fs_1.writeFileSync)(entryPath, `// ${plugin.name} v${plugin.version}\n// 插件入口文件\nmodule.exports = { activate(api) { console.log('${plugin.name} activated'); } };\n`, 'utf-8');
80
+ }
81
+ const installed = {
82
+ ...plugin,
83
+ status: 'installed',
84
+ installedAt: new Date().toISOString(),
85
+ updatedAt: new Date().toISOString(),
86
+ config: {},
87
+ };
88
+ this.installed.set(plugin.id, installed);
89
+ this.saveRegistry();
90
+ logger_1.logger.info('plugin installed', { id: plugin.id });
91
+ return installed;
92
+ }
93
+ /**
94
+ * 卸载插件
95
+ */
96
+ uninstallPlugin(id) {
97
+ const plugin = this.installed.get(id);
98
+ if (!plugin)
99
+ return false;
100
+ try {
101
+ const pluginDir = (0, path_1.join)(this.pluginsDir, id);
102
+ if ((0, fs_1.existsSync)(pluginDir)) {
103
+ // 递归删除目录
104
+ const files = (0, fs_1.readdirSync)(pluginDir);
105
+ for (const file of files) {
106
+ (0, fs_1.unlinkSync)((0, path_1.join)(pluginDir, file));
107
+ }
108
+ const { rmdirSync } = require('fs');
109
+ rmdirSync(pluginDir);
110
+ }
111
+ }
112
+ catch (error) {
113
+ logger_1.logger.error('uninstall plugin error', { id, error: String(error) });
114
+ }
115
+ this.installed.delete(id);
116
+ this.saveRegistry();
117
+ logger_1.logger.info('plugin uninstalled', { id });
118
+ return true;
119
+ }
120
+ /**
121
+ * 启用插件
122
+ */
123
+ enablePlugin(id) {
124
+ const plugin = this.installed.get(id);
125
+ if (!plugin)
126
+ return false;
127
+ plugin.status = 'enabled';
128
+ plugin.updatedAt = new Date().toISOString();
129
+ this.saveRegistry();
130
+ this.activatePlugin(plugin);
131
+ logger_1.logger.info('plugin enabled', { id });
132
+ return true;
133
+ }
134
+ /**
135
+ * 禁用插件
136
+ */
137
+ disablePlugin(id) {
138
+ const plugin = this.installed.get(id);
139
+ if (!plugin)
140
+ return false;
141
+ plugin.status = 'disabled';
142
+ plugin.updatedAt = new Date().toISOString();
143
+ this.saveRegistry();
144
+ logger_1.logger.info('plugin disabled', { id });
145
+ return true;
146
+ }
147
+ /**
148
+ * 激活插件
149
+ */
150
+ activatePlugin(plugin) {
151
+ try {
152
+ const pluginDir = (0, path_1.join)(this.pluginsDir, plugin.id);
153
+ const entryPath = (0, path_1.join)(pluginDir, plugin.entry || 'index.js');
154
+ if ((0, fs_1.existsSync)(entryPath)) {
155
+ // 简化版:不实际执行,只记录
156
+ logger_1.logger.info('plugin activated', { id: plugin.id });
157
+ }
158
+ }
159
+ catch (error) {
160
+ plugin.status = 'error';
161
+ plugin.error = String(error);
162
+ this.saveRegistry();
163
+ logger_1.logger.error('plugin activation error', { id: plugin.id, error: String(error) });
164
+ }
165
+ }
166
+ /**
167
+ * 获取已安装插件
168
+ */
169
+ getInstalledPlugins(status) {
170
+ let plugins = Array.from(this.installed.values());
171
+ if (status)
172
+ plugins = plugins.filter((p) => p.status === status);
173
+ return plugins;
174
+ }
175
+ /**
176
+ * 获取插件
177
+ */
178
+ getPlugin(id) {
179
+ return this.installed.get(id);
180
+ }
181
+ /**
182
+ * 更新插件配置
183
+ */
184
+ updatePluginConfig(id, config) {
185
+ const plugin = this.installed.get(id);
186
+ if (!plugin)
187
+ return false;
188
+ plugin.config = { ...plugin.config, ...config };
189
+ plugin.updatedAt = new Date().toISOString();
190
+ this.saveRegistry();
191
+ return true;
192
+ }
193
+ /**
194
+ * 注册命令
195
+ */
196
+ registerCommand(id, handler) {
197
+ this.commands.set(id, handler);
198
+ logger_1.logger.info('command registered', { id });
199
+ }
200
+ /**
201
+ * 执行命令
202
+ */
203
+ async executeCommand(id, ...args) {
204
+ const handler = this.commands.get(id);
205
+ if (!handler)
206
+ throw new Error(`Command not found: ${id}`);
207
+ return handler(...args);
208
+ }
209
+ /**
210
+ * 获取所有注册的命令
211
+ */
212
+ getCommands() {
213
+ return Array.from(this.commands.keys());
214
+ }
215
+ /**
216
+ * 搜索市场插件(模拟)
217
+ */
218
+ searchMarketPlugins(query, category) {
219
+ // 模拟市场插件列表
220
+ const mockPlugins = [
221
+ {
222
+ id: 'feihong-git-enhanced',
223
+ name: 'Git Enhanced',
224
+ version: '1.2.0',
225
+ description: '增强的 Git 集成,支持可视化 diff、 blame、分支管理',
226
+ author: 'feihong',
227
+ keywords: ['git', 'version-control', 'diff'],
228
+ categories: ['version-control'],
229
+ entry: 'index.js',
230
+ permissions: ['workspace', 'git'],
231
+ dependencies: [],
232
+ publisher: '飞虹官方',
233
+ verified: true,
234
+ featured: true,
235
+ latestVersion: '1.2.0',
236
+ downloads: 12500,
237
+ rating: 4.8,
238
+ },
239
+ {
240
+ id: 'feihong-theme-dark-plus',
241
+ name: 'Dark+ Theme',
242
+ version: '2.0.1',
243
+ description: '飞虹 Code 官方深色主题,护眼配色',
244
+ author: 'feihong',
245
+ keywords: ['theme', 'dark', 'ui'],
246
+ categories: ['themes'],
247
+ entry: 'index.js',
248
+ permissions: ['ui'],
249
+ dependencies: [],
250
+ publisher: '飞虹官方',
251
+ verified: true,
252
+ featured: true,
253
+ latestVersion: '2.0.1',
254
+ downloads: 28000,
255
+ rating: 4.9,
256
+ },
257
+ {
258
+ id: 'community-python-helper',
259
+ name: 'Python Helper',
260
+ version: '0.9.3',
261
+ description: 'Python 开发辅助,支持虚拟环境管理、依赖分析、代码格式化',
262
+ author: 'community',
263
+ keywords: ['python', 'venv', 'pip', 'format'],
264
+ categories: ['programming-languages'],
265
+ entry: 'index.js',
266
+ permissions: ['workspace', 'terminal'],
267
+ dependencies: [],
268
+ publisher: '社区贡献者',
269
+ verified: false,
270
+ featured: false,
271
+ latestVersion: '0.9.3',
272
+ downloads: 5600,
273
+ rating: 4.5,
274
+ },
275
+ {
276
+ id: 'feihong-docker-helper',
277
+ name: 'Docker Helper',
278
+ version: '1.0.0',
279
+ description: 'Docker 容器管理,支持镜像构建、容器运行、日志查看',
280
+ author: 'feihong',
281
+ keywords: ['docker', 'container', 'devops'],
282
+ categories: ['devops'],
283
+ entry: 'index.js',
284
+ permissions: ['terminal', 'workspace'],
285
+ dependencies: [],
286
+ publisher: '飞虹官方',
287
+ verified: true,
288
+ featured: false,
289
+ latestVersion: '1.0.0',
290
+ downloads: 8900,
291
+ rating: 4.6,
292
+ },
293
+ ];
294
+ let results = mockPlugins;
295
+ if (query) {
296
+ const q = query.toLowerCase();
297
+ results = results.filter((p) => p.name.toLowerCase().includes(q) ||
298
+ p.description.toLowerCase().includes(q) ||
299
+ p.keywords.some((k) => k.toLowerCase().includes(q)));
300
+ }
301
+ if (category) {
302
+ results = results.filter((p) => p.categories.includes(category));
303
+ }
304
+ return results;
305
+ }
306
+ /**
307
+ * 获取插件分类
308
+ */
309
+ getCategories() {
310
+ return ['all', 'programming-languages', 'themes', 'version-control', 'devops', 'ui', 'productivity', 'other'];
311
+ }
312
+ /**
313
+ * 获取统计信息
314
+ */
315
+ getStats() {
316
+ const plugins = Array.from(this.installed.values());
317
+ return {
318
+ total: plugins.length,
319
+ enabled: plugins.filter((p) => p.status === 'enabled').length,
320
+ disabled: plugins.filter((p) => p.status === 'disabled').length,
321
+ errors: plugins.filter((p) => p.status === 'error').length,
322
+ };
323
+ }
324
+ }
325
+ exports.PluginManager = PluginManager;
326
+ /**
327
+ * 便捷函数:创建插件管理器
328
+ */
329
+ function createPluginManager(baseDir) {
330
+ return new PluginManager(baseDir);
331
+ }
332
+ //# 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;AAwB1C,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"}
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"}
@@ -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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"}
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkBA,sDAkBC;AApCD;;;;;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;AAE7D,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;KACd,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":";;;;;;;;;;;;;;;;;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"}