feihong-code 7.5.0 → 7.6.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 (347) hide show
  1. package/.github/workflows/ci.yml +193 -180
  2. package/.github/workflows/release.yml +203 -200
  3. package/.github/workflows/swebench-real.yml +84 -0
  4. package/CHANGELOG.md +117 -94
  5. package/CONTRIBUTING.md +9 -2
  6. package/README.md +636 -609
  7. package/README.self-evolve.md +279 -274
  8. package/dist/agent/change-manager.js +1 -1
  9. package/dist/agent/code-rag.js +1 -1
  10. package/dist/agent/code-review.js +1 -1
  11. package/dist/agent/code-writer.js +1 -1
  12. package/dist/agent/completion-postprocess.js +1 -1
  13. package/dist/agent/context-compactor.js +11 -0
  14. package/dist/agent/context-compactor.js.map +1 -1
  15. package/dist/agent/custom-agent.js +52 -52
  16. package/dist/agent/design-to-code.js +40 -40
  17. package/dist/agent/experience.js +1 -1
  18. package/dist/agent/layered-memory.js +1 -1
  19. package/dist/agent/lint.js +1 -1
  20. package/dist/agent/multi-agent.js +44 -44
  21. package/dist/agent/orchestrator.js +93 -18
  22. package/dist/agent/orchestrator.js.map +1 -1
  23. package/dist/agent/parallel-orchestrator.js +1 -1
  24. package/dist/agent/planner.js +8 -3
  25. package/dist/agent/planner.js.map +1 -1
  26. package/dist/agent/prompts.js +2 -2
  27. package/dist/agent/quality-gate.js +1 -1
  28. package/dist/agent/repo-context.js +1 -1
  29. package/dist/agent/repo-reader.js +1 -1
  30. package/dist/agent/repo-underwriter.js +1 -1
  31. package/dist/agent/self-correction.js +1 -1
  32. package/dist/agent/self-heal.js +5 -0
  33. package/dist/agent/self-heal.js.map +1 -1
  34. package/dist/agent/self-improver.js +1 -1
  35. package/dist/agent/subagent-summary.js +1 -1
  36. package/dist/agent/subagent.js +1 -1
  37. package/dist/agent/swe-agent.js +1 -1
  38. package/dist/agent/swe-verifier.js +1 -1
  39. package/dist/agent/symbol-index.js +1 -1
  40. package/dist/agent/team.js +1 -1
  41. package/dist/agent/type-checker.js +1 -1
  42. package/dist/cli/commands.js +7 -0
  43. package/dist/cli/commands.js.map +1 -1
  44. package/dist/cli/index.js +57 -2
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/cli/repl.js +1 -1
  47. package/dist/cli/run.js +40 -3
  48. package/dist/cli/run.js.map +1 -1
  49. package/dist/cli/self-evolve-cli.js +168 -0
  50. package/dist/cli/tui-run.js +1 -1
  51. package/dist/cli/tui.js +1 -1
  52. package/dist/cli/version.js +3 -3
  53. package/dist/cli/version.js.map +1 -1
  54. package/dist/enterprise/audit.js +1 -1
  55. package/dist/enterprise/index.js +1 -1
  56. package/dist/enterprise/policy.js +1 -1
  57. package/dist/enterprise/quota.js +1 -1
  58. package/dist/enterprise/tenant.js +1 -1
  59. package/dist/harness/executor.js +1 -1
  60. package/dist/harness/index.js +1 -1
  61. package/dist/harness/loader.js +1 -1
  62. package/dist/harness/types.js +1 -1
  63. package/dist/harness/verifier.js +52 -12
  64. package/dist/harness/verifier.js.map +1 -1
  65. package/dist/hello.js +14 -0
  66. package/dist/hello.js.map +1 -0
  67. package/dist/integrations/feishu-bridge.js +348 -0
  68. package/dist/integrations/feishu-bridge.js.map +1 -0
  69. package/dist/integrations/github-mcp.js +137 -0
  70. package/dist/integrations/github-mcp.js.map +1 -0
  71. package/dist/integrations/wechat-bridge.js +499 -0
  72. package/dist/integrations/wechat-bridge.js.map +1 -0
  73. package/dist/integrations/yuanbao-bridge.js +326 -0
  74. package/dist/integrations/yuanbao-bridge.js.map +1 -0
  75. package/dist/lsp/lsp-client.js +1 -1
  76. package/dist/models/model-router.js +1 -1
  77. package/dist/models/model.dto.js +1 -1
  78. package/dist/models/providers/ollama.provider.js +1 -1
  79. package/dist/models/providers/openai-compatible.provider.js +1 -1
  80. package/dist/plugins/plugin-loader.js +1 -1
  81. package/dist/runtime/event-log.js +1 -1
  82. package/dist/runtime/git.js +1 -1
  83. package/dist/runtime/hooks.js +71 -4
  84. package/dist/runtime/hooks.js.map +1 -1
  85. package/dist/runtime/session-persist.js +1 -1
  86. package/dist/runtime/worktree.js +1 -1
  87. package/dist/self-evolve/hook.ts +80 -0
  88. package/dist/self-evolve/manager.d.ts +8 -0
  89. package/dist/self-evolve/manager.js +517 -401
  90. package/dist/self-evolve/self-heal-scheduler.js +160 -0
  91. package/dist/self-evolve/self-heal-scheduler.js.map +1 -0
  92. package/dist/shared/concurrency.js +1 -1
  93. package/dist/shared/config.js +4 -2
  94. package/dist/shared/config.js.map +1 -1
  95. package/dist/shared/errors.js +1 -1
  96. package/dist/shared/i18n.js +1 -1
  97. package/dist/shared/i18n.js.map +1 -1
  98. package/dist/shared/secure-store.js +12 -5
  99. package/dist/shared/secure-store.js.map +1 -1
  100. package/dist/shared/types.js +1 -1
  101. package/dist/skills/goal.js +1 -1
  102. package/dist/skills/grill.js +1 -1
  103. package/dist/skills/plan.js +1 -1
  104. package/dist/skills/pua-hooks.js +273 -0
  105. package/dist/skills/pua-hooks.js.map +1 -0
  106. package/dist/skills/self-heal.js +9 -3
  107. package/dist/skills/self-heal.js.map +1 -1
  108. package/dist/skills/skill-loader.js +1 -1
  109. package/dist/skills/skill-market.js +84 -8
  110. package/dist/skills/skill-market.js.map +1 -1
  111. package/dist/tools/analysis/code-analyzer.js +1 -1
  112. package/dist/tools/file/edit.tool.js +18 -3
  113. package/dist/tools/file/edit.tool.js.map +1 -1
  114. package/dist/tools/file/list.tool.js +1 -1
  115. package/dist/tools/file/read.tool.js +1 -1
  116. package/dist/tools/file/write.tool.js +1 -1
  117. package/dist/tools/generator/code-generator.js +1 -1
  118. package/dist/tools/generator/test-generator.js +1 -1
  119. package/dist/tools/index.js +1 -1
  120. package/dist/tools/mcp/index.js +1 -1
  121. package/dist/tools/mcp/mcp-client.js +1 -1
  122. package/dist/tools/safe-path.js +1 -1
  123. package/dist/tools/search/grep.tool.js +1 -1
  124. package/dist/tools/shell/exec.js +1 -1
  125. package/dist/tools/shell/run-shell.tool.js +1 -1
  126. package/dist/tools/skills/load-skill.tool.js +1 -1
  127. package/dist/tools/tool.registry.js +10 -1
  128. package/dist/tools/tool.registry.js.map +1 -1
  129. package/dist/tools/verify/build-check.tool.js +1 -1
  130. package/dist/tools/verify/test-run.tool.js +1 -1
  131. package/dist/tools/web/web.tool.js +1 -1
  132. package/dist/voice/voice-programming.js +32 -6
  133. package/dist/voice/voice-programming.js.map +1 -1
  134. package/dist/web/auth.js +34 -2
  135. package/dist/web/auth.js.map +1 -1
  136. package/dist/web/channels.js +1 -1
  137. package/dist/web/public/css/style.css +1751 -1724
  138. package/dist/web/public/index.html +1243 -1242
  139. package/dist/web/public/js/api.js +558 -555
  140. package/dist/web/public/js/app.js +2233 -2210
  141. package/dist/web/public/js/mock-api.js +259 -234
  142. package/dist/web/public/js/monaco-editor.js +363 -363
  143. package/dist/web/public/js/ui.js +2217 -2251
  144. package/dist/web/public/js/utils.js +214 -214
  145. package/dist/web/public/manifest.json +59 -59
  146. package/dist/web/public/service-worker.js +149 -173
  147. package/dist/web/public/vendor/monaco/vs/abap-D-t0cyap.js +1 -0
  148. package/dist/web/public/vendor/monaco/vs/apex-CcIm7xu6.js +1 -0
  149. package/dist/web/public/vendor/monaco/vs/assets/css.worker-URu8fCFR.js +97 -0
  150. package/dist/web/public/vendor/monaco/vs/assets/editor.worker-lj3bdIIn.js +30 -0
  151. package/dist/web/public/vendor/monaco/vs/assets/editorWebWorkerMain-CA_vMoUU.js +30 -0
  152. package/dist/web/public/vendor/monaco/vs/assets/html.worker-D1SL3iM8.js +474 -0
  153. package/dist/web/public/vendor/monaco/vs/assets/json.worker-CoJx_OPf.js +62 -0
  154. package/dist/web/public/vendor/monaco/vs/assets/ts.worker-BWKtMYOk.js +67722 -0
  155. package/dist/web/public/vendor/monaco/vs/azcli-BA0tQDCg.js +1 -0
  156. package/dist/web/public/vendor/monaco/vs/basic-languages/monaco.contribution.js +1 -0
  157. package/dist/web/public/vendor/monaco/vs/bat-C397hTD6.js +1 -0
  158. package/dist/web/public/vendor/monaco/vs/bicep-DF5aW17k.js +2 -0
  159. package/dist/web/public/vendor/monaco/vs/cameligo-plsz8qhj.js +1 -0
  160. package/dist/web/public/vendor/monaco/vs/clojure-Y2auQMzK.js +1 -0
  161. package/dist/web/public/vendor/monaco/vs/coffee-Bu45yuWE.js +1 -0
  162. package/dist/web/public/vendor/monaco/vs/cpp-CkKPQIni.js +1 -0
  163. package/dist/web/public/vendor/monaco/vs/csharp-CX28MZyh.js +1 -0
  164. package/dist/web/public/vendor/monaco/vs/csp-D8uWnyxW.js +1 -0
  165. package/dist/web/public/vendor/monaco/vs/css-CaeNmE3S.js +3 -0
  166. package/dist/web/public/vendor/monaco/vs/css.worker-CyhWkhHo.js +1 -0
  167. package/dist/web/public/vendor/monaco/vs/cssMode-CV6Ay48H.js +1 -0
  168. package/dist/web/public/vendor/monaco/vs/cypher-DVThT8BS.js +1 -0
  169. package/dist/web/public/vendor/monaco/vs/dart-CmGfCvrO.js +1 -0
  170. package/dist/web/public/vendor/monaco/vs/dockerfile-CZqqYdch.js +1 -0
  171. package/dist/web/public/vendor/monaco/vs/ecl-30fUercY.js +1 -0
  172. package/dist/web/public/vendor/monaco/vs/editor/editor.main.css +1 -0
  173. package/dist/web/public/vendor/monaco/vs/editor/editor.main.js +1 -0
  174. package/dist/web/public/vendor/monaco/vs/editor/editor.worker.js +1 -0
  175. package/dist/web/public/vendor/monaco/vs/editor-KLE6jdfb.js +831 -0
  176. package/dist/web/public/vendor/monaco/vs/editor.js +1 -0
  177. package/dist/web/public/vendor/monaco/vs/editorWorkerHost-fVE1cjcC.js +35 -0
  178. package/dist/web/public/vendor/monaco/vs/elixir-xjPaIfzF.js +1 -0
  179. package/dist/web/public/vendor/monaco/vs/flow9-DqtmStfK.js +1 -0
  180. package/dist/web/public/vendor/monaco/vs/freemarker2-FWreY7v7.js +3 -0
  181. package/dist/web/public/vendor/monaco/vs/fsharp-BOMdg4U1.js +1 -0
  182. package/dist/web/public/vendor/monaco/vs/go-D_hbi-Jt.js +1 -0
  183. package/dist/web/public/vendor/monaco/vs/graphql-CKUU4kLG.js +1 -0
  184. package/dist/web/public/vendor/monaco/vs/handlebars-CZi4pHCH.js +1 -0
  185. package/dist/web/public/vendor/monaco/vs/hcl-DTaboeZW.js +1 -0
  186. package/dist/web/public/vendor/monaco/vs/html-j_7ZTNRU.js +1 -0
  187. package/dist/web/public/vendor/monaco/vs/html.worker-CA3iAimZ.js +1 -0
  188. package/dist/web/public/vendor/monaco/vs/htmlMode-27by_KM4.js +1 -0
  189. package/dist/web/public/vendor/monaco/vs/index-049xrXrp.js +1 -0
  190. package/dist/web/public/vendor/monaco/vs/index-CBVt3dzv.js +5 -0
  191. package/dist/web/public/vendor/monaco/vs/index.js +1 -0
  192. package/dist/web/public/vendor/monaco/vs/ini-CsNwO04R.js +1 -0
  193. package/dist/web/public/vendor/monaco/vs/initialize-DL0l1TGY.js +1 -0
  194. package/dist/web/public/vendor/monaco/vs/java-CI4ZMsH9.js +1 -0
  195. package/dist/web/public/vendor/monaco/vs/javascript-DTJl4Jn1.js +1 -0
  196. package/dist/web/public/vendor/monaco/vs/json.worker-BizpAl9O.js +1 -0
  197. package/dist/web/public/vendor/monaco/vs/jsonMode-DLUiMUrI.js +1 -0
  198. package/dist/web/public/vendor/monaco/vs/julia-BwzEvaQw.js +1 -0
  199. package/dist/web/public/vendor/monaco/vs/kotlin-IUYPiTV8.js +1 -0
  200. package/dist/web/public/vendor/monaco/vs/language/css/css.worker.js +66 -0
  201. package/dist/web/public/vendor/monaco/vs/language/css/monaco.contribution.js +1 -0
  202. package/dist/web/public/vendor/monaco/vs/language/html/html.worker.js +443 -0
  203. package/dist/web/public/vendor/monaco/vs/language/html/monaco.contribution.js +1 -0
  204. package/dist/web/public/vendor/monaco/vs/language/json/json.worker.js +17 -0
  205. package/dist/web/public/vendor/monaco/vs/language/json/monaco.contribution.js +1 -0
  206. package/dist/web/public/vendor/monaco/vs/language/typescript/monaco.contribution.js +1 -0
  207. package/dist/web/public/vendor/monaco/vs/language/typescript/ts.worker.js +67693 -0
  208. package/dist/web/public/vendor/monaco/vs/less-C0eDYdqa.js +2 -0
  209. package/dist/web/public/vendor/monaco/vs/lexon-iON-Kj97.js +1 -0
  210. package/dist/web/public/vendor/monaco/vs/liquid-CLJYelW6.js +1 -0
  211. package/dist/web/public/vendor/monaco/vs/loader.js +1368 -0
  212. package/dist/web/public/vendor/monaco/vs/lspLanguageFeatures-BIkJOWLw.js +2 -0
  213. package/dist/web/public/vendor/monaco/vs/lua-DtygF91M.js +1 -0
  214. package/dist/web/public/vendor/monaco/vs/m3-CsR4AuFi.js +1 -0
  215. package/dist/web/public/vendor/monaco/vs/main-BEx-Fmlo.js +15 -0
  216. package/dist/web/public/vendor/monaco/vs/main-DsK8pnKg.js +3 -0
  217. package/dist/web/public/vendor/monaco/vs/markdown-C_rD0bIw.js +1 -0
  218. package/dist/web/public/vendor/monaco/vs/mdx-CpzZIPHF.js +1 -0
  219. package/dist/web/public/vendor/monaco/vs/mips-CiYP61RB.js +1 -0
  220. package/dist/web/public/vendor/monaco/vs/monaco.contribution-9cKT3C7t.js +1 -0
  221. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BE88ZNGY.js +1 -0
  222. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BPhsneLd.js +1 -0
  223. package/dist/web/public/vendor/monaco/vs/monaco.contribution-BgRy6xDf.js +1 -0
  224. package/dist/web/public/vendor/monaco/vs/msdax-C38-sJlp.js +1 -0
  225. package/dist/web/public/vendor/monaco/vs/mysql-CdtbpvbG.js +1 -0
  226. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.d.ts +1 -0
  227. package/dist/web/public/vendor/monaco/vs/nls/lang/cs.js +9 -0
  228. package/dist/web/public/vendor/monaco/vs/nls/lang/de.d.ts +1 -0
  229. package/dist/web/public/vendor/monaco/vs/nls/lang/de.js +9 -0
  230. package/dist/web/public/vendor/monaco/vs/nls/lang/es.d.ts +1 -0
  231. package/dist/web/public/vendor/monaco/vs/nls/lang/es.js +9 -0
  232. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.d.ts +1 -0
  233. package/dist/web/public/vendor/monaco/vs/nls/lang/fr.js +9 -0
  234. package/dist/web/public/vendor/monaco/vs/nls/lang/it.d.ts +1 -0
  235. package/dist/web/public/vendor/monaco/vs/nls/lang/it.js +9 -0
  236. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.d.ts +1 -0
  237. package/dist/web/public/vendor/monaco/vs/nls/lang/ja.js +9 -0
  238. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.d.ts +1 -0
  239. package/dist/web/public/vendor/monaco/vs/nls/lang/ko.js +9 -0
  240. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.d.ts +1 -0
  241. package/dist/web/public/vendor/monaco/vs/nls/lang/pl.js +9 -0
  242. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.d.ts +1 -0
  243. package/dist/web/public/vendor/monaco/vs/nls/lang/pt-br.js +9 -0
  244. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.d.ts +1 -0
  245. package/dist/web/public/vendor/monaco/vs/nls/lang/ru.js +9 -0
  246. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.d.ts +1 -0
  247. package/dist/web/public/vendor/monaco/vs/nls/lang/tr.js +9 -0
  248. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.d.ts +1 -0
  249. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-cn.js +9 -0
  250. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.d.ts +1 -0
  251. package/dist/web/public/vendor/monaco/vs/nls/lang/zh-tw.js +9 -0
  252. package/dist/web/public/vendor/monaco/vs/nls.messages-loader.js +1 -0
  253. package/dist/web/public/vendor/monaco/vs/objective-c-CntZFaHX.js +1 -0
  254. package/dist/web/public/vendor/monaco/vs/pascal-r6kuqfl_.js +1 -0
  255. package/dist/web/public/vendor/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
  256. package/dist/web/public/vendor/monaco/vs/perl-DABw_TcH.js +1 -0
  257. package/dist/web/public/vendor/monaco/vs/pgsql-me_jFXeX.js +1 -0
  258. package/dist/web/public/vendor/monaco/vs/php-D_kh-9LK.js +1 -0
  259. package/dist/web/public/vendor/monaco/vs/pla-VfZjczW0.js +1 -0
  260. package/dist/web/public/vendor/monaco/vs/postiats-BBSzz8Pk.js +1 -0
  261. package/dist/web/public/vendor/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
  262. package/dist/web/public/vendor/monaco/vs/powershell-B-7ap1zc.js +1 -0
  263. package/dist/web/public/vendor/monaco/vs/protobuf-BmtuEB1A.js +2 -0
  264. package/dist/web/public/vendor/monaco/vs/pug-BRpRNeEb.js +1 -0
  265. package/dist/web/public/vendor/monaco/vs/python-CqWUUgfu.js +1 -0
  266. package/dist/web/public/vendor/monaco/vs/qsharp-BzsFaUU9.js +1 -0
  267. package/dist/web/public/vendor/monaco/vs/r-f8dDdrp4.js +1 -0
  268. package/dist/web/public/vendor/monaco/vs/razor-hok5y9Km.js +1 -0
  269. package/dist/web/public/vendor/monaco/vs/redis-fvZQY4PI.js +1 -0
  270. package/dist/web/public/vendor/monaco/vs/redshift-45Et0LQi.js +1 -0
  271. package/dist/web/public/vendor/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
  272. package/dist/web/public/vendor/monaco/vs/ruby-CZO8zYTz.js +1 -0
  273. package/dist/web/public/vendor/monaco/vs/rust-Bfetafyc.js +1 -0
  274. package/dist/web/public/vendor/monaco/vs/sb-3GYllVck.js +1 -0
  275. package/dist/web/public/vendor/monaco/vs/scala-foMgrKo1.js +1 -0
  276. package/dist/web/public/vendor/monaco/vs/scheme-CHdMtr7p.js +1 -0
  277. package/dist/web/public/vendor/monaco/vs/scss-C1cmLt9V.js +3 -0
  278. package/dist/web/public/vendor/monaco/vs/shell-ClXCKCEW.js +1 -0
  279. package/dist/web/public/vendor/monaco/vs/solidity-MZ6ExpPy.js +1 -0
  280. package/dist/web/public/vendor/monaco/vs/sophia-DWkuSsPQ.js +1 -0
  281. package/dist/web/public/vendor/monaco/vs/sparql-AUGFYSyk.js +1 -0
  282. package/dist/web/public/vendor/monaco/vs/sql-32GpJSV2.js +1 -0
  283. package/dist/web/public/vendor/monaco/vs/st-CuDFIVZ_.js +1 -0
  284. package/dist/web/public/vendor/monaco/vs/swift-t-PfMj7W.js +1 -0
  285. package/dist/web/public/vendor/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
  286. package/dist/web/public/vendor/monaco/vs/tcl-D74tq1nH.js +1 -0
  287. package/dist/web/public/vendor/monaco/vs/toggleHighContrast-qGX7E9o7.js +61 -0
  288. package/dist/web/public/vendor/monaco/vs/ts.worker-2QLmBukE.js +1 -0
  289. package/dist/web/public/vendor/monaco/vs/tsMode-B0S_kp2q.js +11 -0
  290. package/dist/web/public/vendor/monaco/vs/twig-C6taOxMV.js +1 -0
  291. package/dist/web/public/vendor/monaco/vs/typescript-_2t_511t.js +1 -0
  292. package/dist/web/public/vendor/monaco/vs/typespec-8OfoLt6R.js +1 -0
  293. package/dist/web/public/vendor/monaco/vs/vb-Dyb2648j.js +1 -0
  294. package/dist/web/public/vendor/monaco/vs/wgsl-BhLXMOR0.js +298 -0
  295. package/dist/web/public/vendor/monaco/vs/workers-BBttULjf.js +1 -0
  296. package/dist/web/public/vendor/monaco/vs/xml-cZjNDqDT.js +1 -0
  297. package/dist/web/public/vendor/monaco/vs/yaml-A1fOIdH6.js +1 -0
  298. package/dist/web/server.js +81 -16
  299. package/dist/web/server.js.map +1 -1
  300. package/dist/web/task-queue.js +6 -21
  301. package/dist/web/task-queue.js.map +1 -1
  302. package/dist/web/web-config.js +143 -0
  303. package/dist/web/web-config.js.map +1 -0
  304. package/docs/App/344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +1 -1
  305. package/docs/App/346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +1 -1
  306. package/docs/BENCHMARK_REPORT_en.md +386 -386
  307. package/docs/BENCHMARK_REPORT_zh.md +386 -386
  308. package/docs/DPA.md +65 -63
  309. 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 +69 -67
  310. package/docs/Deployment_Guide_EN.md +1 -1
  311. package/docs/SECURITY_WHITEPAPER.md +2 -2
  312. package/docs/SELF-EVOLVE-GUIDE.md +1 -1
  313. package/docs/SWE_BENCH_REPORT.md +73 -55
  314. package/docs/TECHNICAL_SPEC_en.md +292 -292
  315. package/docs/TECHNICAL_SPEC_zh.md +292 -292
  316. package/docs/Technical_Manual_EN.md +1 -1
  317. package/docs/UPDATE_NOTES_en.md +159 -159
  318. package/docs/UPDATE_NOTES_zh.md +159 -159
  319. package/docs/UPGRADE_7.2.0.md +309 -309
  320. package/docs/UPGRADE_GUIDE_7_5.md +86 -86
  321. package/docs/UPGRADE_GUIDE_7_6.md +153 -0
  322. package/docs/User_Manual_EN.md +1 -1
  323. package/docs/VOLTAGENT_SKILLS_CATALOG.md +95 -0
  324. package/docs/error-codes.md +1 -1
  325. package/docs/geo-feihong-code.html +391 -391
  326. package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +5 -3
  327. package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +140 -231
  328. 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 -208
  329. 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 -152
  330. 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 -271
  331. 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 -59
  332. package/docs//345/256/211/345/205/250/347/231/275/347/232/256/344/271/246_v7.2.0.md +84 -82
  333. package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +240 -149
  334. package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +2 -2
  335. package/electron/main.js +404 -404
  336. package/package.json +12 -5
  337. package/templates/skills/api-design/SKILL.md +1 -1
  338. package/templates/skills/code-review/SKILL.md +1 -1
  339. package/templates/skills/dependency-upgrade/SKILL.md +1 -1
  340. package/templates/skills/doc-gen/SKILL.md +1 -1
  341. package/templates/skills/git-flow/SKILL.md +1 -1
  342. package/templates/skills/onboarding/SKILL.md +1 -1
  343. package/templates/skills/performance/SKILL.md +1 -1
  344. package/templates/skills/refactor/SKILL.md +1 -1
  345. package/templates/skills/security-audit/SKILL.md +1 -1
  346. package/templates/skills/test-gen/SKILL.md +1 -1
  347. package/tool-schema.json +197 -197
@@ -38,7 +38,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.startWebServer = startWebServer;
40
40
  /**
41
- * 飞虹 Code (Muse Code 参照复刻)
41
+ * 飞虹 Code (对标 Muse Code · 自研内核)
42
42
  * 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
43
43
  *
44
44
  * M5 Web 控制台:自包含 Express 服务骨架 + 多视图 API。
@@ -56,6 +56,7 @@ const crypto_1 = require("crypto");
56
56
  const path_1 = require("path");
57
57
  const fs_1 = require("fs");
58
58
  const child_process_1 = require("child_process");
59
+ const node_dns_1 = __importDefault(require("node:dns"));
59
60
  const auth_1 = require("./auth");
60
61
  const extra_apis_1 = require("./extra-apis");
61
62
  const task_queue_1 = require("./task-queue");
@@ -80,6 +81,10 @@ const mcp_client_1 = require("../tools/mcp/mcp-client");
80
81
  const memory_1 = require("../memory");
81
82
  const auto_summarize_1 = require("../memory/auto-summarize");
82
83
  const secure_store_1 = require("../shared/secure-store");
84
+ const wechat_bridge_1 = require("../integrations/wechat-bridge");
85
+ const feishu_bridge_1 = require("../integrations/feishu-bridge");
86
+ const yuanbao_bridge_1 = require("../integrations/yuanbao-bridge");
87
+ const collaboration_1 = require("../integrations/collaboration");
83
88
  /**
84
89
  * 启动 Web 控制台。
85
90
  * - 端口:opts.port > FH_WEB_PORT > 8080
@@ -99,6 +104,10 @@ function startWebServer(opts = {}) {
99
104
  const app = (0, express_1.default)();
100
105
  // 放宽请求体上限以支持截图/图片 base64 上传(8MB),仍可有效防御内存耗尽
101
106
  app.use(express_1.default.json({ limit: '8mb' }));
107
+ // 微信回调使用 XML body,单独路由用 text 解析
108
+ app.use('/api/wechat/callback', express_1.default.text({ type: ['*/xml', 'text/xml', 'application/xml'], limit: '1mb' }));
109
+ // 元宝回调需要原始 body 用于 HMAC 签名校验
110
+ app.use('/api/yuanbao/callback', express_1.default.raw({ type: 'application/json', limit: '1mb' }));
102
111
  // 静态仪表盘(开发时直接从 src 读取,避免 dist 被锁)
103
112
  const publicDir = process.env.FH_WEB_SRC_PUBLIC || (0, path_1.join)(__dirname, 'public');
104
113
  app.use(express_1.default.static(publicDir, { maxAge: '0' }));
@@ -137,6 +146,18 @@ function startWebServer(opts = {}) {
137
146
  catch (e) { /* 暂存失败不影响任务执行 */ }
138
147
  },
139
148
  });
149
+ // 微信桥接:注入 TaskQueue 引用并初始化
150
+ (0, wechat_bridge_1.setWechatTaskQueue)(queue);
151
+ const wechatConfig = (0, wechat_bridge_1.initWechatBridge)();
152
+ // 飞书桥接:注入 TaskQueue 和 FeishuIntegration,初始化
153
+ const feishuConfig = (0, feishu_bridge_1.initFeishuBridge)();
154
+ if ((0, feishu_bridge_1.isFeishuEnabled)(feishuConfig)) {
155
+ const feishuIntegration = new collaboration_1.FeishuIntegration({ appId: feishuConfig.appId, appSecret: feishuConfig.appSecret });
156
+ (0, feishu_bridge_1.setFeishuBridgeDeps)(queue, feishuIntegration);
157
+ }
158
+ // 元宝/豆包桥接:注入 TaskQueue 引用并初始化
159
+ (0, yuanbao_bridge_1.setYuanbaoTaskQueue)(queue);
160
+ const yuanbaoConfig = (0, yuanbao_bridge_1.initYuanbaoBridge)();
140
161
  // 公开健康检查(仅暴露版本/状态等观测信息,无敏感数据)
141
162
  app.get('/api/health', (_req, res) => {
142
163
  res.json({
@@ -146,9 +167,43 @@ function startWebServer(opts = {}) {
146
167
  signature: version_1.SIGNATURE,
147
168
  enterprise: (0, enterprise_1.isEnterpriseEnabled)(),
148
169
  lang: (0, i18n_1.getLang)(),
170
+ wechat: (0, wechat_bridge_1.isWechatEnabled)(wechatConfig) ? wechatConfig.mode : 'disabled',
171
+ feishu: (0, feishu_bridge_1.isFeishuEnabled)(feishuConfig) ? 'enabled' : 'disabled',
172
+ yuanbao: (0, yuanbao_bridge_1.isYuanbaoEnabled)(yuanbaoConfig) ? 'enabled' : 'disabled',
149
173
  time: new Date().toISOString(),
150
174
  });
151
175
  });
176
+ // 微信桥接回调(GET=URL验证,POST=消息接收),无需 Bearer Token(微信服务器调用)
177
+ app.get('/api/wechat/callback', async (req, res) => {
178
+ const result = (await (0, wechat_bridge_1.handleWechatCallback)(wechatConfig, req.query, ''));
179
+ res.status(result.status);
180
+ res.setHeader('Content-Type', result.contentType);
181
+ res.send(result.body);
182
+ });
183
+ app.post('/api/wechat/callback', async (req, res) => {
184
+ const body = typeof req.body === 'string' ? req.body : JSON.stringify(req.body || '');
185
+ const result = (await (0, wechat_bridge_1.handleWechatCallback)(wechatConfig, req.query, body));
186
+ res.status(result.status);
187
+ res.setHeader('Content-Type', result.contentType);
188
+ res.send(result.body);
189
+ });
190
+ // 飞书桥接回调(事件订阅,无需 Bearer Token)
191
+ app.post('/api/feishu/callback', async (req, res) => {
192
+ const body = (req.body || {});
193
+ const result = (await (0, feishu_bridge_1.handleFeishuCallback)(feishuConfig, body));
194
+ res.status(result.status);
195
+ res.setHeader('Content-Type', result.contentType);
196
+ res.send(result.body);
197
+ });
198
+ // 元宝/豆包桥接回调(webhook,无需 Bearer Token,原始 body 用于签名校验)
199
+ app.post('/api/yuanbao/callback', async (req, res) => {
200
+ const rawBody = Buffer.isBuffer(req.body) ? req.body.toString('utf8') : (typeof req.body === 'string' ? req.body : JSON.stringify(req.body || ''));
201
+ const headers = req.headers;
202
+ const result = (await (0, yuanbao_bridge_1.handleYuanbaoCallback)(yuanbaoConfig, rawBody, headers));
203
+ res.status(result.status);
204
+ res.setHeader('Content-Type', result.contentType);
205
+ res.send(result.body);
206
+ });
152
207
  // 手机号直登:无短信验证,生成本地会话令牌
153
208
  app.post('/api/auth/login', (req, res) => {
154
209
  const body = (req.body ?? {});
@@ -160,23 +215,19 @@ function startWebServer(opts = {}) {
160
215
  // 使用新的登录方法,支持首次登录检测
161
216
  const result = sessions.login(phone);
162
217
  const session = sessions.get(result.token);
163
- // 如果是首次登录,自动创建引导任务
218
+ // 首次登录:返回引导任务定义(不自动提交执行,由用户在前端点「运行」时再真正发起)
164
219
  let welcomeTasks = [];
165
220
  if (result.isFirstLogin) {
166
221
  // 标记会话为首次登录(用于后续接口识别)
167
222
  if (session) {
168
223
  session.isFirstLogin = true;
169
224
  }
170
- // 创建引导任务
225
+ // 只返回任务定义,taskId 留空,前端点运行时才提交到任务队列
171
226
  for (const task of auth_1.WELCOME_TASKS) {
172
- const record = queue.submit(task.goal, {
173
- workspaceDir: serverWorkspaceDir,
174
- agentType: 'general',
175
- });
176
227
  welcomeTasks.push({
177
228
  ...task,
178
- taskId: record.id,
179
- status: record.status,
229
+ taskId: '',
230
+ status: 'pending',
180
231
  });
181
232
  }
182
233
  }
@@ -272,7 +323,18 @@ function startWebServer(opts = {}) {
272
323
  const history = (0, auto_summarize_1.getSummaryHistory)(memoryConfig, limit);
273
324
  res.json({ ok: true, history });
274
325
  });
275
- app.use('/api', (0, auth_1.requireToken)(token, sessions));
326
+ app.post('/api/auth/clear-first-login', (req, res) => {
327
+ const header = req.header('authorization') || '';
328
+ const m = /^Bearer\s+(.+)$/i.exec(header);
329
+ if (!m) {
330
+ res.status(401).json({ ok: false, error: 'unauthorized' });
331
+ return;
332
+ }
333
+ const token = m[1];
334
+ const ok = sessions.clearFirstLogin(token);
335
+ res.json({ ok, cleared: ok });
336
+ });
337
+ app.use('/api', (0, auth_1.requireToken)(token, sessions, ['/api/security/public-key']));
276
338
  // ===== v7.2.0 能力接线层:voice / knowledge / figma / sso / collaboration / plugins / self-correction =====
277
339
  // 将原"孤立代码"模块接入 Web API(修复:从 404 变为可调用)
278
340
  (0, extra_apis_1.registerExtraApis)(app, { dataDir: (0, path_1.join)((0, config_1.resolveHomeDir)(), '.feihong-code') });
@@ -1827,7 +1889,7 @@ function startWebServer(opts = {}) {
1827
1889
  const headers = { 'User-Agent': 'fhcode-node/1.0' };
1828
1890
  if (node.apiKey)
1829
1891
  headers['Authorization'] = 'Bearer ' + node.apiKey;
1830
- const r = await fetchWithRetry(url, 10000, 0);
1892
+ const r = await fetchWithRetry(url, 25000, 0);
1831
1893
  if (!r.ok)
1832
1894
  return { ok: false, error: `HTTP ${r.status}` };
1833
1895
  if (node.type === 'http') {
@@ -2104,7 +2166,10 @@ function startWebServer(opts = {}) {
2104
2166
  /* ========== 技能市场(插件市场):聚合 ClawHub + Agent-Foundry + 自定义节点 + 自定义来源 ========== */
2105
2167
  const CLAWHUB_API = 'https://clawhub.ai/api/v1/skills';
2106
2168
  const AGENT_FOUNDRY_CATALOG = 'https://raw.githubusercontent.com/hebertzhu/agent-foundry/main/catalog/skills-catalog.json';
2107
- async function fetchWithRetry(url, timeoutMs = 15000, retries = 1) {
2169
+ async function fetchWithRetry(url, timeoutMs = 25000, retries = 1) {
2170
+ // 强制 IPv4 优先:规避 IPv6 链路故障(部分网络 IPv6 路由不可达时,
2171
+ // 默认 verbatim 解析会优先走 IPv6 导致连接超时/失败)。幂等,重复调用无副作用。
2172
+ node_dns_1.default.setDefaultResultOrder('ipv4first');
2108
2173
  let lastErr;
2109
2174
  for (let attempt = 0; attempt <= retries; attempt++) {
2110
2175
  const ctrl = new AbortController();
@@ -2154,7 +2219,7 @@ function startWebServer(opts = {}) {
2154
2219
  }
2155
2220
  async function fetchAgentFoundrySkills(keyword, limit) {
2156
2221
  try {
2157
- const r = await fetchWithRetry(AGENT_FOUNDRY_CATALOG);
2222
+ const r = await fetchWithRetry(AGENT_FOUNDRY_CATALOG, 30000);
2158
2223
  if (!r.ok)
2159
2224
  return [];
2160
2225
  const data = (await r.json());
@@ -2225,7 +2290,7 @@ function startWebServer(opts = {}) {
2225
2290
  if (!src.enabled || src.type !== 'skills')
2226
2291
  continue;
2227
2292
  try {
2228
- const r = await fetchWithRetry(src.url, 10000, 0);
2293
+ const r = await fetchWithRetry(src.url, 25000, 0);
2229
2294
  if (r.ok) {
2230
2295
  const data = await r.json();
2231
2296
  const list = Array.isArray(data) ? data : (data.items || data.skills || []);
@@ -2531,7 +2596,7 @@ function startWebServer(opts = {}) {
2531
2596
  if (!src.enabled || src.type !== 'templates')
2532
2597
  continue;
2533
2598
  try {
2534
- const r = await fetchWithRetry(src.url, 10000, 0);
2599
+ const r = await fetchWithRetry(src.url, 25000, 0);
2535
2600
  if (r.ok) {
2536
2601
  const data = await r.json();
2537
2602
  const list = Array.isArray(data) ? data : (data.items || data.templates || []);
@@ -2655,7 +2720,7 @@ function startWebServer(opts = {}) {
2655
2720
  if (!src.enabled || src.type !== 'office')
2656
2721
  continue;
2657
2722
  try {
2658
- const r = await fetchWithRetry(src.url, 10000, 0);
2723
+ const r = await fetchWithRetry(src.url, 25000, 0);
2659
2724
  if (r.ok) {
2660
2725
  const data = await r.json();
2661
2726
  const list = Array.isArray(data) ? data : (data.items || data.capabilities || []);