@lobehub/chat 1.96.20 → 1.97.1

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 (523) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +90 -32
  3. package/README.zh-CN.md +90 -34
  4. package/apps/desktop/package.json +1 -1
  5. package/apps/desktop/src/main/core/Browser.ts +2 -1
  6. package/apps/desktop/src/main/utils/next-electron-rsc.ts +15 -8
  7. package/changelog/v1.json +18 -0
  8. package/docs/usage/features/desktop.mdx +53 -0
  9. package/docs/usage/features/desktop.zh-CN.mdx +49 -0
  10. package/docs/usage/features/mcp-market.mdx +26 -0
  11. package/docs/usage/features/mcp-market.zh-CN.mdx +22 -0
  12. package/docs/usage/features/mcp.mdx +58 -0
  13. package/docs/usage/features/mcp.zh-CN.mdx +54 -0
  14. package/docs/usage/features/search.mdx +56 -0
  15. package/docs/usage/features/search.zh-CN.mdx +52 -0
  16. package/locales/ar/discover.json +452 -12
  17. package/locales/ar/metadata.json +4 -0
  18. package/locales/ar/plugin.json +89 -2
  19. package/locales/ar/setting.json +1 -0
  20. package/locales/bg-BG/discover.json +452 -12
  21. package/locales/bg-BG/metadata.json +4 -0
  22. package/locales/bg-BG/plugin.json +89 -2
  23. package/locales/bg-BG/setting.json +1 -0
  24. package/locales/de-DE/discover.json +452 -12
  25. package/locales/de-DE/metadata.json +4 -0
  26. package/locales/de-DE/plugin.json +89 -2
  27. package/locales/de-DE/setting.json +1 -0
  28. package/locales/en-US/discover.json +452 -12
  29. package/locales/en-US/metadata.json +4 -0
  30. package/locales/en-US/plugin.json +89 -2
  31. package/locales/en-US/setting.json +1 -0
  32. package/locales/es-ES/discover.json +452 -12
  33. package/locales/es-ES/metadata.json +4 -0
  34. package/locales/es-ES/plugin.json +89 -2
  35. package/locales/es-ES/setting.json +1 -0
  36. package/locales/fa-IR/discover.json +452 -12
  37. package/locales/fa-IR/metadata.json +4 -0
  38. package/locales/fa-IR/plugin.json +89 -2
  39. package/locales/fa-IR/setting.json +1 -0
  40. package/locales/fr-FR/discover.json +452 -12
  41. package/locales/fr-FR/metadata.json +4 -0
  42. package/locales/fr-FR/plugin.json +89 -2
  43. package/locales/fr-FR/setting.json +1 -0
  44. package/locales/it-IT/discover.json +452 -12
  45. package/locales/it-IT/metadata.json +4 -0
  46. package/locales/it-IT/plugin.json +89 -2
  47. package/locales/it-IT/setting.json +1 -0
  48. package/locales/ja-JP/discover.json +452 -12
  49. package/locales/ja-JP/metadata.json +4 -0
  50. package/locales/ja-JP/plugin.json +89 -2
  51. package/locales/ja-JP/setting.json +1 -0
  52. package/locales/ko-KR/discover.json +452 -12
  53. package/locales/ko-KR/metadata.json +4 -0
  54. package/locales/ko-KR/plugin.json +89 -2
  55. package/locales/ko-KR/setting.json +1 -0
  56. package/locales/nl-NL/discover.json +452 -12
  57. package/locales/nl-NL/metadata.json +4 -0
  58. package/locales/nl-NL/plugin.json +89 -2
  59. package/locales/nl-NL/setting.json +1 -0
  60. package/locales/pl-PL/discover.json +452 -12
  61. package/locales/pl-PL/metadata.json +4 -0
  62. package/locales/pl-PL/plugin.json +89 -2
  63. package/locales/pl-PL/setting.json +1 -0
  64. package/locales/pt-BR/discover.json +452 -12
  65. package/locales/pt-BR/metadata.json +4 -0
  66. package/locales/pt-BR/plugin.json +89 -2
  67. package/locales/pt-BR/setting.json +1 -0
  68. package/locales/ru-RU/discover.json +452 -12
  69. package/locales/ru-RU/metadata.json +4 -0
  70. package/locales/ru-RU/plugin.json +89 -2
  71. package/locales/ru-RU/setting.json +1 -0
  72. package/locales/tr-TR/discover.json +452 -12
  73. package/locales/tr-TR/metadata.json +4 -0
  74. package/locales/tr-TR/plugin.json +89 -2
  75. package/locales/tr-TR/setting.json +1 -0
  76. package/locales/vi-VN/discover.json +452 -12
  77. package/locales/vi-VN/metadata.json +4 -0
  78. package/locales/vi-VN/plugin.json +89 -2
  79. package/locales/vi-VN/setting.json +1 -0
  80. package/locales/zh-CN/discover.json +452 -12
  81. package/locales/zh-CN/metadata.json +8 -4
  82. package/locales/zh-CN/plugin.json +89 -2
  83. package/locales/zh-CN/setting.json +1 -0
  84. package/locales/zh-TW/discover.json +452 -12
  85. package/locales/zh-TW/metadata.json +4 -0
  86. package/locales/zh-TW/plugin.json +89 -2
  87. package/locales/zh-TW/setting.json +1 -0
  88. package/next.config.ts +70 -19
  89. package/package.json +7 -3
  90. package/scripts/buildSitemapIndex/index.ts +9 -4
  91. package/src/app/(backend)/trpc/async/[trpc]/route.ts +4 -2
  92. package/src/app/(backend)/trpc/lambda/[trpc]/route.ts +5 -0
  93. package/src/app/[variants]/(main)/_layout/Mobile/index.tsx +5 -4
  94. package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatList/WelcomeChatItem/InboxWelcome/AgentsSuggest.tsx +31 -45
  95. package/src/app/[variants]/(main)/discover/(detail)/_layout/Desktop.tsx +8 -6
  96. package/src/app/[variants]/(main)/discover/(detail)/_layout/Mobile/Header.tsx +3 -2
  97. package/src/app/[variants]/(main)/discover/(detail)/_layout/Mobile/index.tsx +5 -1
  98. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/Client.tsx +40 -0
  99. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/DetailProvider.tsx +19 -0
  100. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Capabilities/Block.tsx +27 -0
  101. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Capabilities/Knowledge.tsx +33 -0
  102. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Capabilities/KnowledgeItem.tsx +58 -0
  103. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Capabilities/PluginItem.tsx +68 -0
  104. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Capabilities/Plugins.tsx +32 -0
  105. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Capabilities/index.tsx +37 -0
  106. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Nav.tsx +121 -0
  107. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Overview/TagList.tsx +47 -0
  108. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Overview/index.tsx +96 -0
  109. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/Related/index.tsx +31 -0
  110. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/SystemRole/TagList.tsx +47 -0
  111. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/SystemRole/index.tsx +54 -0
  112. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Details/index.tsx +49 -0
  113. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Header.tsx +176 -0
  114. package/src/app/[variants]/(main)/discover/(detail)/assistant/{[slug]/features → [...slugs]/features/Sidebar/ActionButton}/AddAgent.tsx +22 -21
  115. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/ActionButton/index.tsx +31 -0
  116. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/Related/Item.tsx +57 -0
  117. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/Related/index.tsx +43 -0
  118. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/Summary/index.tsx +38 -0
  119. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/TocList/index.tsx +77 -0
  120. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/features/Sidebar/index.tsx +46 -0
  121. package/src/app/[variants]/(main)/discover/(detail)/assistant/[...slugs]/loading.tsx +48 -0
  122. package/src/app/[variants]/(main)/discover/(detail)/{plugin/[slug] → assistant/[...slugs]}/page.tsx +39 -42
  123. package/src/app/[variants]/(main)/discover/(detail)/features/Breadcrumb.tsx +56 -0
  124. package/src/app/[variants]/(main)/discover/(detail)/features/DetailLayout.tsx +0 -1
  125. package/src/app/[variants]/(main)/discover/(detail)/features/MakedownRender.tsx +44 -0
  126. package/src/app/[variants]/(main)/discover/(detail)/features/ShareButton.tsx +4 -3
  127. package/src/app/[variants]/(main)/discover/(detail)/features/Toc/Heading.tsx +108 -0
  128. package/src/app/[variants]/(main)/discover/(detail)/features/Toc/index.tsx +92 -0
  129. package/src/app/[variants]/(main)/discover/(detail)/features/Toc/useToc.tsx +66 -0
  130. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/Client.tsx +43 -0
  131. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Details/Related/index.tsx +32 -0
  132. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Details/Versions/index.tsx +76 -0
  133. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Details/index.tsx +59 -0
  134. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/ActionButton/index.tsx +84 -0
  135. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/ConnectionTypeAlert.tsx +35 -0
  136. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/Related/Item.tsx +57 -0
  137. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/Related/index.tsx +44 -0
  138. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/ServerConfig.tsx +36 -0
  139. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/TocList/index.tsx +98 -0
  140. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/features/Sidebar/index.tsx +58 -0
  141. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/loading.tsx +1 -0
  142. package/src/app/[variants]/(main)/discover/(detail)/mcp/[slug]/page.tsx +103 -0
  143. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/Client.tsx +40 -0
  144. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/DetailProvider.tsx +19 -0
  145. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Details/Nav.tsx +90 -0
  146. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Details/Overview/ProviderList/index.tsx +179 -0
  147. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Details/Overview/index.tsx +22 -0
  148. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/{ParameterList → Details/Parameter}/ParameterItem.tsx +1 -1
  149. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/{ParameterList → Details/Parameter}/index.tsx +11 -11
  150. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Details/Related/index.tsx +31 -0
  151. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Details/index.tsx +47 -0
  152. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Header.tsx +84 -59
  153. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/ActionButton/ChatWithModel.tsx +92 -0
  154. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/ActionButton/index.tsx +32 -0
  155. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/Related/Item.tsx +60 -0
  156. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/Related/index.tsx +43 -0
  157. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/RelatedProviders/Item.tsx +60 -0
  158. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/RelatedProviders/index.tsx +34 -0
  159. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Sidebar/index.tsx +44 -0
  160. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/loading.tsx +1 -0
  161. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/page.tsx +22 -45
  162. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/Client.tsx +40 -0
  163. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/DetailProvider.tsx +19 -0
  164. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/Guide/index.tsx +25 -0
  165. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/Nav.tsx +99 -0
  166. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/Overview/ModelList/index.tsx +142 -0
  167. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/Overview/index.tsx +23 -0
  168. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/Related/index.tsx +22 -0
  169. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Details/index.tsx +47 -0
  170. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Header.tsx +99 -0
  171. package/src/app/[variants]/(main)/discover/(detail)/provider/{[slug]/features → [...slugs]/features/Sidebar/ActionButton}/ProviderConfig.tsx +9 -14
  172. package/src/app/[variants]/(main)/discover/(detail)/provider/{[slug]/features/Actions.tsx → [...slugs]/features/Sidebar/ActionButton/index.tsx} +14 -18
  173. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Sidebar/Related/Item.tsx +60 -0
  174. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Sidebar/Related/index.tsx +34 -0
  175. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Sidebar/RelatedModels/Item.tsx +60 -0
  176. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Sidebar/RelatedModels/index.tsx +43 -0
  177. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/features/Sidebar/index.tsx +44 -0
  178. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/loading.tsx +1 -0
  179. package/src/app/[variants]/(main)/discover/(detail)/provider/[...slugs]/page.tsx +103 -0
  180. package/src/app/[variants]/(main)/discover/(list)/(home)/Client.tsx +24 -21
  181. package/src/app/[variants]/(main)/discover/(list)/(home)/loading.tsx +1 -1
  182. package/src/app/[variants]/(main)/discover/(list)/(home)/page.tsx +13 -38
  183. package/src/app/[variants]/(main)/discover/(list)/_layout/Desktop/Nav.tsx +15 -8
  184. package/src/app/[variants]/(main)/discover/(list)/_layout/Mobile/Header.tsx +1 -1
  185. package/src/app/[variants]/(main)/discover/(list)/_layout/Mobile/Nav.tsx +2 -1
  186. package/src/app/[variants]/(main)/discover/(list)/assistant/Client.tsx +44 -0
  187. package/src/app/[variants]/(main)/discover/(list)/assistant/features/Category/index.tsx +84 -0
  188. package/src/app/[variants]/(main)/discover/(list)/assistant/features/Category/useCategory.tsx +112 -0
  189. package/src/app/[variants]/(main)/discover/(list)/assistant/features/List/Item.tsx +189 -0
  190. package/src/app/[variants]/(main)/discover/(list)/assistant/features/List/TokenTag.tsx +70 -0
  191. package/src/app/[variants]/(main)/discover/(list)/assistant/features/List/index.tsx +33 -0
  192. package/src/app/[variants]/(main)/discover/(list)/assistant/page.tsx +46 -0
  193. package/src/app/[variants]/(main)/discover/(list)/features/Pagination.tsx +67 -0
  194. package/src/app/[variants]/(main)/discover/(list)/features/SortButton/index.tsx +184 -0
  195. package/src/app/[variants]/(main)/discover/(list)/mcp/Client.tsx +44 -0
  196. package/src/app/[variants]/(main)/discover/(list)/mcp/features/Category/index.tsx +83 -0
  197. package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/ConnectionTypeTag.tsx +51 -0
  198. package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/Item.tsx +225 -0
  199. package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/MetaInfo.tsx +33 -0
  200. package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/index.tsx +33 -0
  201. package/src/app/[variants]/(main)/discover/(list)/mcp/page.tsx +46 -0
  202. package/src/app/[variants]/(main)/discover/(list)/model/Client.tsx +44 -0
  203. package/src/app/[variants]/(main)/discover/(list)/{models → model}/_layout/Desktop.tsx +1 -7
  204. package/src/app/[variants]/(main)/discover/(list)/model/features/Category/index.tsx +82 -0
  205. package/src/app/[variants]/(main)/discover/(list)/model/features/Category/useCategory.tsx +41 -0
  206. package/src/app/[variants]/(main)/discover/(list)/model/features/List/Item.tsx +190 -0
  207. package/src/app/[variants]/(main)/discover/(list)/model/features/List/ModelTypeIcon.tsx +39 -0
  208. package/src/app/[variants]/(main)/discover/(list)/model/features/List/index.tsx +33 -0
  209. package/src/app/[variants]/(main)/discover/(list)/model/loading.tsx +1 -0
  210. package/src/app/[variants]/(main)/discover/(list)/model/page.tsx +44 -0
  211. package/src/app/[variants]/(main)/discover/(list)/provider/Client.tsx +43 -0
  212. package/src/app/[variants]/(main)/discover/(list)/provider/features/List/Item.tsx +136 -0
  213. package/src/app/[variants]/(main)/discover/(list)/provider/features/List/index.tsx +33 -0
  214. package/src/app/[variants]/(main)/discover/(list)/provider/loading.tsx +1 -0
  215. package/src/app/[variants]/(main)/discover/(list)/provider/page.tsx +44 -0
  216. package/src/app/[variants]/(main)/discover/_layout/Desktop/Header.tsx +1 -1
  217. package/src/app/[variants]/(main)/discover/components/CategoryContainer.tsx +7 -5
  218. package/src/app/[variants]/(main)/discover/components/CategoryMenu.tsx +28 -30
  219. package/src/app/[variants]/(main)/discover/components/ListLoading.tsx +56 -46
  220. package/src/app/[variants]/(main)/discover/components/Statistic.tsx +5 -6
  221. package/src/app/[variants]/(main)/discover/features/Search.tsx +62 -0
  222. package/src/app/[variants]/(main)/discover/features/Title.tsx +83 -0
  223. package/src/app/[variants]/(main)/discover/features/__tests__/calculateScore.test.ts +185 -0
  224. package/src/app/[variants]/(main)/discover/features/useNav.tsx +32 -12
  225. package/src/app/robots.tsx +7 -5
  226. package/src/app/sitemap.tsx +81 -13
  227. package/src/components/CopyableLabel/index.tsx +37 -0
  228. package/src/components/Descriptions/index.tsx +119 -0
  229. package/src/components/InlineTable/index.tsx +69 -0
  230. package/src/{features/PluginSettings/PluginSettingRender.tsx → components/JSONSchemaConfig/ItemRender.tsx} +3 -3
  231. package/src/components/MCPDepsIcon/Java.tsx +23 -0
  232. package/src/components/MCPDepsIcon/PowerShell.tsx +23 -0
  233. package/src/components/MCPDepsIcon/Terminal.tsx +23 -0
  234. package/src/components/MCPDepsIcon/UV.tsx +23 -0
  235. package/src/components/MCPDepsIcon/index.tsx +72 -0
  236. package/src/components/MCPStdioCommandInput/index.tsx +47 -0
  237. package/src/components/OfficialIcon.tsx +23 -0
  238. package/src/components/Plugins/MCPTag.tsx +18 -0
  239. package/src/components/Plugins/PluginTag.tsx +50 -0
  240. package/src/components/PublishedTime.tsx +71 -0
  241. package/src/config/__tests__/app.test.ts +6 -2
  242. package/src/const/discover.ts +8 -34
  243. package/src/database/models/message.ts +1 -0
  244. package/src/database/models/plugin.ts +13 -3
  245. package/src/database/schemas/relations.ts +44 -0
  246. package/src/envs/app.ts +1 -1
  247. package/src/features/AgentSetting/AgentPlugin/index.tsx +2 -2
  248. package/src/features/ChatInput/ActionBar/Tools/ToolItem.tsx +1 -1
  249. package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +5 -5
  250. package/src/features/Conversation/Messages/Assistant/Tool/Inspector/index.tsx +25 -11
  251. package/src/features/MCP/MCPInstallProgress/InstallError/ErrorDetails.tsx +110 -0
  252. package/src/features/MCP/MCPInstallProgress/InstallError/index.tsx +51 -0
  253. package/src/features/MCP/MCPInstallProgress/MCPConfigForm.tsx +151 -0
  254. package/src/features/MCP/MCPInstallProgress/MCPDependenciesGuide.tsx +217 -0
  255. package/src/features/MCP/MCPInstallProgress/index.tsx +118 -0
  256. package/src/features/MCP/Scores.tsx +268 -0
  257. package/src/features/MCP/calculateScore.ts +324 -0
  258. package/src/features/MCP/useScoreList.ts +126 -0
  259. package/src/features/MCP/utils.ts +225 -0
  260. package/src/features/MCPPluginDetail/CollapseDesc.tsx +44 -0
  261. package/src/features/MCPPluginDetail/CollapseLayout.tsx +34 -0
  262. package/src/features/MCPPluginDetail/Deployment/Platform/index.tsx +47 -0
  263. package/src/features/MCPPluginDetail/Deployment/index.tsx +322 -0
  264. package/src/features/MCPPluginDetail/DetailProvider.tsx +19 -0
  265. package/src/features/MCPPluginDetail/Header.tsx +218 -0
  266. package/src/features/MCPPluginDetail/Nav.tsx +196 -0
  267. package/src/features/MCPPluginDetail/Overview/TagList.tsx +47 -0
  268. package/src/features/MCPPluginDetail/Overview/index.tsx +57 -0
  269. package/src/features/MCPPluginDetail/Schema/Block.tsx +50 -0
  270. package/src/features/MCPPluginDetail/Schema/Prompts.tsx +125 -0
  271. package/src/features/MCPPluginDetail/Schema/Resources.tsx +70 -0
  272. package/src/features/MCPPluginDetail/Schema/Tools.tsx +146 -0
  273. package/src/features/MCPPluginDetail/Schema/index.tsx +63 -0
  274. package/src/features/MCPPluginDetail/Schema/style.ts +9 -0
  275. package/src/features/MCPPluginDetail/Schema/types.ts +4 -0
  276. package/src/features/MCPPluginDetail/Score/GithubBadge/index.tsx +82 -0
  277. package/src/features/MCPPluginDetail/Score/ScoreItem.tsx +34 -0
  278. package/src/features/MCPPluginDetail/Score/ScoreList.tsx +24 -0
  279. package/src/features/MCPPluginDetail/Score/TotalScore.tsx +289 -0
  280. package/src/features/MCPPluginDetail/Score/index.tsx +88 -0
  281. package/src/features/PluginAvatar/index.tsx +1 -1
  282. package/src/features/PluginDetailModal/Meta.tsx +3 -4
  283. package/src/features/PluginDevModal/MCPManifestForm/MCPTypeSelect.tsx +3 -4
  284. package/src/features/PluginDevModal/MCPManifestForm/index.tsx +4 -41
  285. package/src/features/PluginDevModal/PluginPreview/EmptyState.tsx +5 -7
  286. package/src/features/PluginDevModal/PluginPreview/index.tsx +6 -6
  287. package/src/features/PluginSettings/index.tsx +2 -2
  288. package/src/features/PluginStore/AddPluginButton.tsx +1 -1
  289. package/src/features/PluginStore/Content.tsx +59 -0
  290. package/src/features/PluginStore/InstalledList/Detail/CustomPluginEmptyState.tsx +81 -0
  291. package/src/features/PluginStore/InstalledList/Detail/index.tsx +21 -0
  292. package/src/features/PluginStore/InstalledList/EditCustomPlugin.tsx +52 -0
  293. package/src/features/PluginStore/{PluginItem → InstalledList/List/Item}/Action.tsx +33 -13
  294. package/src/features/PluginStore/InstalledList/List/Item/index.tsx +62 -0
  295. package/src/features/PluginStore/InstalledList/List/index.tsx +77 -0
  296. package/src/features/PluginStore/InstalledList/index.tsx +85 -0
  297. package/src/features/PluginStore/Loading.tsx +2 -2
  298. package/src/features/PluginStore/McpList/Detail/Loading.tsx +44 -0
  299. package/src/features/PluginStore/McpList/Detail/Settings/index.tsx +381 -0
  300. package/src/features/PluginStore/McpList/Detail/index.tsx +71 -0
  301. package/src/features/PluginStore/McpList/List/Action.tsx +94 -0
  302. package/src/features/PluginStore/McpList/List/Item.tsx +84 -0
  303. package/src/features/PluginStore/McpList/List/index.tsx +97 -0
  304. package/src/features/PluginStore/McpList/index.tsx +54 -0
  305. package/src/features/PluginStore/PluginList/Detail/DetailProvider.tsx +19 -0
  306. package/src/features/PluginStore/PluginList/Detail/EmptyState.tsx +58 -0
  307. package/src/features/PluginStore/PluginList/Detail/Header.tsx +132 -0
  308. package/src/features/PluginStore/PluginList/Detail/InstallDetail/Nav.tsx +75 -0
  309. package/src/features/PluginStore/PluginList/Detail/InstallDetail/Settings.tsx +19 -0
  310. package/src/features/PluginStore/PluginList/Detail/InstallDetail/Tools.tsx +109 -0
  311. package/src/features/PluginStore/PluginList/Detail/InstallDetail/index.tsx +24 -0
  312. package/src/features/PluginStore/PluginList/Detail/Loading.tsx +44 -0
  313. package/src/features/PluginStore/PluginList/Detail/TagList.tsx +37 -0
  314. package/src/features/PluginStore/PluginList/Detail/index.tsx +39 -0
  315. package/src/features/PluginStore/PluginList/Detail/useCategory.tsx +76 -0
  316. package/src/features/PluginStore/PluginList/List/Action.tsx +72 -0
  317. package/src/features/PluginStore/PluginList/List/Item.tsx +94 -0
  318. package/src/features/PluginStore/PluginList/List/index.tsx +91 -0
  319. package/src/features/PluginStore/PluginList/index.tsx +47 -0
  320. package/src/features/PluginStore/Search/index.tsx +29 -0
  321. package/src/features/PluginStore/VirtuosoLoading.tsx +16 -0
  322. package/src/features/PluginStore/index.tsx +7 -31
  323. package/src/features/PluginTag/index.tsx +6 -4
  324. package/src/hooks/useInterceptingRoutes.test.ts +6 -0
  325. package/src/hooks/useMCPCategory.tsx +133 -0
  326. package/src/hooks/useQuery.ts +8 -0
  327. package/src/hooks/useQueryRoute.test.ts +7 -0
  328. package/src/hooks/useQueryRoute.ts +5 -3
  329. package/src/layout/GlobalProvider/Locale.tsx +2 -1
  330. package/src/libs/mcp/client.ts +255 -11
  331. package/src/libs/mcp/types.ts +99 -0
  332. package/src/libs/trpc/client/desktop.ts +2 -3
  333. package/src/libs/trpc/lambda/context.ts +36 -5
  334. package/src/libs/trpc/lambda/index.ts +1 -1
  335. package/src/libs/trpc/lambda/init.ts +8 -1
  336. package/src/locales/create.ts +8 -3
  337. package/src/locales/default/discover.ts +457 -12
  338. package/src/locales/default/metadata.ts +9 -4
  339. package/src/locales/default/plugin.ts +89 -1
  340. package/src/locales/default/setting.ts +1 -0
  341. package/src/locales/resources.ts +1 -1
  342. package/src/middleware.ts +13 -3
  343. package/src/server/ld.ts +4 -3
  344. package/src/server/modules/AssistantStore/index.test.ts +10 -8
  345. package/src/server/modules/AssistantStore/index.ts +37 -17
  346. package/src/server/modules/PluginStore/index.test.ts +1 -1
  347. package/src/server/modules/PluginStore/index.ts +24 -1
  348. package/src/server/routers/async/caller.ts +2 -2
  349. package/src/server/routers/desktop/mcp.ts +36 -2
  350. package/src/server/routers/edge/index.ts +0 -6
  351. package/src/server/routers/{edge → lambda}/config/index.ts +1 -1
  352. package/src/server/routers/lambda/index.ts +4 -0
  353. package/src/server/routers/lambda/market/index.ts +621 -0
  354. package/src/server/routers/lambda/plugin.ts +2 -0
  355. package/src/server/routers/tools/mcp.ts +22 -0
  356. package/src/server/services/discover/index.test.ts +573 -250
  357. package/src/server/services/discover/index.ts +1096 -241
  358. package/src/server/services/mcp/deps/MCPSystemDepsCheckService.ts +238 -0
  359. package/src/server/services/mcp/deps/checkers/ManualInstallationChecker.ts +20 -0
  360. package/src/server/services/mcp/deps/checkers/NpmInstallationChecker.ts +51 -0
  361. package/src/server/services/mcp/deps/checkers/PythonInstallationChecker.ts +69 -0
  362. package/src/server/services/mcp/deps/index.ts +14 -0
  363. package/src/server/services/mcp/deps/types.ts +49 -0
  364. package/src/server/services/mcp/index.ts +251 -33
  365. package/src/server/sitemap.test.ts +203 -46
  366. package/src/server/sitemap.ts +159 -52
  367. package/src/services/__tests__/global.test.ts +4 -7
  368. package/src/services/__tests__/tool.test.ts +1 -29
  369. package/src/services/discover.ts +365 -0
  370. package/src/services/global.ts +3 -3
  371. package/src/services/mcp.ts +131 -10
  372. package/src/services/plugin/_deprecated.ts +1 -1
  373. package/src/services/plugin/type.ts +3 -1
  374. package/src/services/tool.ts +9 -6
  375. package/src/store/chat/slices/plugin/action.test.ts +2 -3
  376. package/src/store/chat/slices/plugin/action.ts +22 -4
  377. package/src/store/discover/index.ts +1 -0
  378. package/src/store/discover/slices/assistant/action.ts +73 -0
  379. package/src/store/discover/slices/assistant/index.ts +1 -0
  380. package/src/store/discover/slices/mcp/action.ts +70 -0
  381. package/src/store/discover/slices/mcp/index.ts +1 -0
  382. package/src/store/discover/slices/model/action.ts +70 -0
  383. package/src/store/discover/slices/model/index.ts +1 -0
  384. package/src/store/discover/slices/plugin/action.ts +76 -0
  385. package/src/store/discover/slices/plugin/index.ts +1 -0
  386. package/src/store/discover/slices/provider/action.ts +61 -0
  387. package/src/store/discover/slices/provider/index.ts +1 -0
  388. package/src/store/discover/store.ts +39 -0
  389. package/src/store/tool/initialState.ts +8 -2
  390. package/src/store/tool/selectors/index.ts +2 -1
  391. package/src/store/tool/selectors/tool.test.ts +3 -1
  392. package/src/store/tool/selectors/tool.ts +14 -2
  393. package/src/store/tool/slices/mcpStore/action.ts +496 -0
  394. package/src/store/tool/slices/mcpStore/initialState.ts +40 -0
  395. package/src/store/tool/slices/mcpStore/selectors.ts +62 -0
  396. package/src/store/tool/slices/{store → oldStore}/action.test.ts +24 -19
  397. package/src/store/tool/slices/oldStore/action.ts +269 -0
  398. package/src/store/tool/slices/oldStore/index.ts +3 -0
  399. package/src/store/tool/slices/oldStore/initialState.ts +54 -0
  400. package/src/store/tool/slices/{store → oldStore}/selectors.test.ts +6 -3
  401. package/src/store/tool/slices/{store → oldStore}/selectors.ts +18 -5
  402. package/src/store/tool/slices/plugin/action.test.ts +2 -1
  403. package/src/store/tool/slices/plugin/action.ts +22 -4
  404. package/src/store/tool/slices/plugin/selectors.test.ts +12 -4
  405. package/src/store/tool/slices/plugin/selectors.ts +20 -9
  406. package/src/store/tool/store.ts +5 -2
  407. package/src/types/discover/assistants.ts +72 -0
  408. package/src/types/discover/index.ts +41 -0
  409. package/src/types/discover/mcp.ts +59 -0
  410. package/src/types/discover/models.ts +51 -0
  411. package/src/types/discover/plugins.ts +52 -0
  412. package/src/types/discover/providers.ts +47 -0
  413. package/src/types/message/tools.ts +3 -0
  414. package/src/types/plugins/index.ts +53 -0
  415. package/src/types/plugins/mcp.ts +188 -0
  416. package/src/types/plugins/mcpDeps.ts +30 -0
  417. package/src/types/tool/index.ts +10 -0
  418. package/src/types/tool/plugin.ts +3 -2
  419. package/src/types/tool/tool.ts +4 -1
  420. package/src/utils/client/cookie.ts +5 -2
  421. package/src/utils/locale.ts +3 -3
  422. package/src/utils/object.ts +10 -0
  423. package/src/utils/server/pageProps.ts +9 -0
  424. package/src/utils/toolCall.ts +5 -1
  425. package/src/utils/toolManifest.ts +1 -2
  426. package/vercel.json +1 -1
  427. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/Actions.tsx +0 -35
  428. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/ConversationExample/TopicList.tsx +0 -75
  429. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/ConversationExample/index.tsx +0 -105
  430. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/Header.tsx +0 -115
  431. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/InfoSidebar/SuggestionItem.tsx +0 -62
  432. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/InfoSidebar/ToolItem.tsx +0 -19
  433. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/InfoSidebar/index.tsx +0 -60
  434. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/SystemRole.tsx +0 -35
  435. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/features/Temp.tsx +0 -44
  436. package/src/app/[variants]/(main)/discover/(detail)/assistant/[slug]/page.tsx +0 -124
  437. package/src/app/[variants]/(main)/discover/(detail)/loading.tsx +0 -38
  438. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/Actions.tsx +0 -40
  439. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/ChatWithModel.tsx +0 -93
  440. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/InfoSidebar/SuggestionItem.tsx +0 -74
  441. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/InfoSidebar/index.tsx +0 -45
  442. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/ProviderList/ProviderItem.tsx +0 -139
  443. package/src/app/[variants]/(main)/discover/(detail)/model/[...slugs]/features/ProviderList/index.tsx +0 -45
  444. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/Actions.tsx +0 -35
  445. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/Header.tsx +0 -119
  446. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/InfoSidebar/SuggestionItem.tsx +0 -64
  447. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/InfoSidebar/index.tsx +0 -45
  448. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/InstallPlugin.tsx +0 -83
  449. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/ParameterList.tsx +0 -95
  450. package/src/app/[variants]/(main)/discover/(detail)/plugin/[slug]/features/Schema.tsx +0 -23
  451. package/src/app/[variants]/(main)/discover/(detail)/provider/[slug]/features/Header.tsx +0 -73
  452. package/src/app/[variants]/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/SuggestionItem.tsx +0 -77
  453. package/src/app/[variants]/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/index.tsx +0 -45
  454. package/src/app/[variants]/(main)/discover/(detail)/provider/[slug]/features/ModelList/ModelItem.tsx +0 -152
  455. package/src/app/[variants]/(main)/discover/(detail)/provider/[slug]/features/ModelList/index.tsx +0 -60
  456. package/src/app/[variants]/(main)/discover/(detail)/provider/[slug]/page.tsx +0 -126
  457. package/src/app/[variants]/(main)/discover/(list)/(home)/features/AssistantList.tsx +0 -33
  458. package/src/app/[variants]/(main)/discover/(list)/(home)/features/ModelList.tsx +0 -19
  459. package/src/app/[variants]/(main)/discover/(list)/(home)/features/PluginList.tsx +0 -25
  460. package/src/app/[variants]/(main)/discover/(list)/assistants/[slug]/page.tsx +0 -75
  461. package/src/app/[variants]/(main)/discover/(list)/assistants/features/Card.tsx +0 -195
  462. package/src/app/[variants]/(main)/discover/(list)/assistants/features/Category.tsx +0 -48
  463. package/src/app/[variants]/(main)/discover/(list)/assistants/features/List.tsx +0 -98
  464. package/src/app/[variants]/(main)/discover/(list)/assistants/features/useCategory.tsx +0 -116
  465. package/src/app/[variants]/(main)/discover/(list)/assistants/page.tsx +0 -64
  466. package/src/app/[variants]/(main)/discover/(list)/loading.tsx +0 -39
  467. package/src/app/[variants]/(main)/discover/(list)/models/[slug]/page.tsx +0 -78
  468. package/src/app/[variants]/(main)/discover/(list)/models/features/Card.tsx +0 -118
  469. package/src/app/[variants]/(main)/discover/(list)/models/features/Category.tsx +0 -67
  470. package/src/app/[variants]/(main)/discover/(list)/models/features/List.tsx +0 -71
  471. package/src/app/[variants]/(main)/discover/(list)/models/loading.tsx +0 -1
  472. package/src/app/[variants]/(main)/discover/(list)/models/page.tsx +0 -73
  473. package/src/app/[variants]/(main)/discover/(list)/plugins/[slug]/page.tsx +0 -75
  474. package/src/app/[variants]/(main)/discover/(list)/plugins/features/Card.tsx +0 -161
  475. package/src/app/[variants]/(main)/discover/(list)/plugins/features/Category.tsx +0 -45
  476. package/src/app/[variants]/(main)/discover/(list)/plugins/features/List.tsx +0 -97
  477. package/src/app/[variants]/(main)/discover/(list)/plugins/features/useCategory.tsx +0 -80
  478. package/src/app/[variants]/(main)/discover/(list)/plugins/page.tsx +0 -64
  479. package/src/app/[variants]/(main)/discover/(list)/providers/features/Card.tsx +0 -119
  480. package/src/app/[variants]/(main)/discover/(list)/providers/features/List.tsx +0 -67
  481. package/src/app/[variants]/(main)/discover/(list)/providers/loading.tsx +0 -1
  482. package/src/app/[variants]/(main)/discover/(list)/providers/page.tsx +0 -64
  483. package/src/app/[variants]/(main)/discover/features/StoreSearchBar.tsx +0 -87
  484. package/src/app/[variants]/(main)/discover/loading.tsx +0 -3
  485. package/src/app/[variants]/(main)/discover/search/_layout/Desktop.tsx +0 -42
  486. package/src/app/[variants]/(main)/discover/search/_layout/Mobile/Header.tsx +0 -31
  487. package/src/app/[variants]/(main)/discover/search/_layout/Mobile/Nav.tsx +0 -56
  488. package/src/app/[variants]/(main)/discover/search/_layout/Mobile/index.tsx +0 -32
  489. package/src/app/[variants]/(main)/discover/search/features/AssistantsResult.tsx +0 -27
  490. package/src/app/[variants]/(main)/discover/search/features/Category.tsx +0 -41
  491. package/src/app/[variants]/(main)/discover/search/features/ModelsResult.tsx +0 -27
  492. package/src/app/[variants]/(main)/discover/search/features/PluginsResult.tsx +0 -27
  493. package/src/app/[variants]/(main)/discover/search/features/ProvidersResult.tsx +0 -26
  494. package/src/app/[variants]/(main)/discover/search/layout.tsx +0 -12
  495. package/src/app/[variants]/(main)/discover/search/loading.tsx +0 -1
  496. package/src/app/[variants]/(main)/discover/search/page.tsx +0 -82
  497. package/src/features/PluginStore/InstalledPluginList.tsx +0 -59
  498. package/src/features/PluginStore/OnlineList.tsx +0 -87
  499. package/src/features/PluginStore/PluginItem/EditCustomPlugin.tsx +0 -55
  500. package/src/features/PluginStore/PluginItem/PluginTag.tsx +0 -29
  501. package/src/features/PluginStore/PluginItem/index.tsx +0 -83
  502. package/src/server/routers/edge/market/index.ts +0 -108
  503. package/src/services/__tests__/assistant.test.ts +0 -87
  504. package/src/services/assistant.ts +0 -25
  505. package/src/store/tool/slices/store/action.ts +0 -113
  506. package/src/store/tool/slices/store/initialState.ts +0 -17
  507. package/src/types/discover.ts +0 -179
  508. package/src/types/requestCache.ts +0 -3
  509. /package/src/app/[variants]/(main)/discover/(list)/{assistants → assistant}/_layout/Desktop.tsx +0 -0
  510. /package/src/app/[variants]/(main)/discover/(list)/{assistants → assistant}/_layout/Mobile.tsx +0 -0
  511. /package/src/app/[variants]/(main)/discover/(list)/{assistants → assistant}/layout.tsx +0 -0
  512. /package/src/app/[variants]/(main)/discover/(list)/{assistants → assistant}/loading.tsx +0 -0
  513. /package/src/app/[variants]/(main)/discover/(list)/{plugins → mcp}/_layout/Desktop.tsx +0 -0
  514. /package/src/app/[variants]/(main)/discover/(list)/{plugins → mcp}/_layout/Mobile.tsx +0 -0
  515. /package/src/app/[variants]/(main)/discover/(list)/{plugins → mcp}/layout.tsx +0 -0
  516. /package/src/app/[variants]/(main)/discover/(list)/{plugins → mcp}/loading.tsx +0 -0
  517. /package/src/app/[variants]/(main)/discover/(list)/{models → model}/_layout/Mobile.tsx +0 -0
  518. /package/src/app/[variants]/(main)/discover/(list)/{models → model}/features/const.ts +0 -0
  519. /package/src/app/[variants]/(main)/discover/(list)/{models → model}/layout.tsx +0 -0
  520. /package/src/{features/PluginStore/PluginItem → components/Plugins}/PluginAvatar.tsx +0 -0
  521. /package/src/server/routers/{edge → lambda}/config/__snapshots__/index.test.ts.snap +0 -0
  522. /package/src/server/routers/{edge → lambda}/config/index.test.ts +0 -0
  523. /package/src/store/tool/slices/{store → mcpStore}/index.ts +0 -0
@@ -1,3 +1,4 @@
1
+ import { parse } from 'cookie';
1
2
  import debug from 'debug';
2
3
  import { User } from 'next-auth';
3
4
  import { NextRequest } from 'next/server';
@@ -23,9 +24,12 @@ export interface AuthContext {
23
24
  authorizationHeader?: string | null;
24
25
  clerkAuth?: IClerkAuth;
25
26
  jwtPayload?: JWTPayload | null;
27
+ marketAccessToken?: string;
26
28
  nextAuth?: User;
27
29
  // Add OIDC authentication information
28
30
  oidcAuth?: OIDCAuth | null;
31
+ resHeaders?: Headers;
32
+ userAgent?: string;
29
33
  userId?: string | null;
30
34
  }
31
35
 
@@ -36,16 +40,23 @@ export interface AuthContext {
36
40
  export const createContextInner = async (params?: {
37
41
  authorizationHeader?: string | null;
38
42
  clerkAuth?: IClerkAuth;
43
+ marketAccessToken?: string;
39
44
  nextAuth?: User;
40
45
  oidcAuth?: OIDCAuth | null;
46
+ userAgent?: string;
41
47
  userId?: string | null;
42
48
  }): Promise<AuthContext> => {
43
49
  log('createContextInner called with params: %O', params);
50
+ const responseHeaders = new Headers();
51
+
44
52
  return {
45
53
  authorizationHeader: params?.authorizationHeader,
46
54
  clerkAuth: params?.clerkAuth,
55
+ marketAccessToken: params?.marketAccessToken,
47
56
  nextAuth: params?.nextAuth,
48
57
  oidcAuth: params?.oidcAuth,
58
+ resHeaders: responseHeaders,
59
+ userAgent: params?.userAgent,
49
60
  userId: params?.userId,
50
61
  };
51
62
  };
@@ -68,6 +79,19 @@ export const createLambdaContext = async (request: NextRequest): Promise<LambdaC
68
79
  // for API-response caching see https://trpc.io/docs/v11/caching
69
80
 
70
81
  const authorization = request.headers.get(LOBE_CHAT_AUTH_HEADER);
82
+ const userAgent = request.headers.get('user-agent') || undefined;
83
+
84
+ // get marketAccessToken from cookies
85
+ const cookieHeader = request.headers.get('cookie');
86
+ const cookies = cookieHeader ? parse(cookieHeader) : {};
87
+ const marketAccessToken = cookies['mp_token'];
88
+
89
+ log('marketAccessToken from cookie:', marketAccessToken ? '[HIDDEN]' : 'undefined');
90
+ const commonContext = {
91
+ authorizationHeader: authorization,
92
+ marketAccessToken,
93
+ userAgent,
94
+ };
71
95
  log('LobeChat Authorization header: %s', authorization ? 'exists' : 'not found');
72
96
 
73
97
  let userId;
@@ -105,9 +129,8 @@ export const createLambdaContext = async (request: NextRequest): Promise<LambdaC
105
129
  // If OIDC authentication is successful, return context immediately
106
130
  log('OIDC authentication successful, creating context and returning');
107
131
  return createContextInner({
108
- // Preserve original LobeChat Authorization Header (if any)
109
- authorizationHeader: authorization,
110
132
  oidcAuth,
133
+ ...commonContext,
111
134
  userId,
112
135
  });
113
136
  }
@@ -129,7 +152,11 @@ export const createLambdaContext = async (request: NextRequest): Promise<LambdaC
129
152
  userId = result.userId;
130
153
  log('Clerk authentication result, userId: %s', userId || 'not authenticated');
131
154
 
132
- return createContextInner({ authorizationHeader: authorization, clerkAuth: auth, userId });
155
+ return createContextInner({
156
+ clerkAuth: auth,
157
+ ...commonContext,
158
+ userId,
159
+ });
133
160
  }
134
161
 
135
162
  if (enableNextAuth) {
@@ -145,7 +172,11 @@ export const createLambdaContext = async (request: NextRequest): Promise<LambdaC
145
172
  } else {
146
173
  log('NextAuth authentication failed, no valid session');
147
174
  }
148
- return createContextInner({ authorizationHeader: authorization, nextAuth: auth, userId });
175
+ return createContextInner({
176
+ nextAuth: auth,
177
+ ...commonContext,
178
+ userId,
179
+ });
149
180
  } catch (e) {
150
181
  log('NextAuth authentication error: %O', e);
151
182
  console.error('next auth err', e);
@@ -157,5 +188,5 @@ export const createLambdaContext = async (request: NextRequest): Promise<LambdaC
157
188
  'All authentication methods attempted, returning final context, userId: %s',
158
189
  userId || 'not authenticated',
159
190
  );
160
- return createContextInner({ authorizationHeader: authorization, userId });
191
+ return createContextInner({ ...commonContext, userId });
161
192
  };
@@ -26,7 +26,7 @@ export const router = trpc.router;
26
26
  **/
27
27
  export const publicProcedure = trpc.procedure.use(({ next, ctx }) => {
28
28
  return next({
29
- ctx: { userId: isDesktop ? DESKTOP_USER_ID : ctx.userId },
29
+ ctx: { ...ctx, userId: isDesktop ? DESKTOP_USER_ID : ctx.userId },
30
30
  });
31
31
  });
32
32
 
@@ -16,7 +16,14 @@ export const trpc = initTRPC.context<LambdaContext>().create({
16
16
  /**
17
17
  * @link https://trpc.io/docs/v11/error-formatting
18
18
  */
19
- errorFormatter({ shape }) {
19
+ errorFormatter({ shape, error }) {
20
+ if (error.cause && 'data' in error.cause) {
21
+ return {
22
+ ...shape,
23
+ data: { ...shape.data, errorData: error.cause.data },
24
+ };
25
+ }
26
+
20
27
  return shape;
21
28
  },
22
29
  /**
@@ -31,8 +31,10 @@ export const createI18nNext = (lang?: string) => {
31
31
  }
32
32
  });
33
33
  return {
34
- init: () =>
35
- instance.init({
34
+ init: (params: { initAsync?: boolean } = {}) => {
35
+ const { initAsync = true } = params;
36
+
37
+ return instance.init({
36
38
  debug: debugMode,
37
39
  defaultNS: ['error', 'common', 'chat'],
38
40
  // detection: {
@@ -50,11 +52,14 @@ export const createI18nNext = (lang?: string) => {
50
52
  // lookupCookie: LOBE_LOCALE_COOKIE,
51
53
  // },
52
54
  fallbackLng: DEFAULT_LANG,
55
+
56
+ initAsync,
53
57
  interpolation: {
54
58
  escapeValue: false,
55
59
  },
56
60
  lng: lang,
57
- }),
61
+ });
62
+ },
58
63
  instance,
59
64
  };
60
65
  };
@@ -10,13 +10,57 @@ export default {
10
10
  },
11
11
  description: '助手介绍',
12
12
  detail: '详情',
13
+ details: {
14
+ capabilities: {
15
+ knowledge: {
16
+ desc: '助手内置了以下知识库,帮助你回答更多问题。',
17
+ title: '知识库',
18
+ },
19
+ plugin: {
20
+ desc: '助手内置了以下插件,帮助你完成更多任务。',
21
+ title: '内置插件',
22
+ },
23
+ title: '助手能力',
24
+ },
25
+ overview: {
26
+ example: '助手演示',
27
+ title: '概览',
28
+ },
29
+ related: {
30
+ listTitle: '相关助手',
31
+ more: '查看更多',
32
+ title: '相关推荐',
33
+ },
34
+ sidebar: {
35
+ toc: '目录',
36
+ },
37
+ summary: {
38
+ title: '你可以使用该助手做什么?',
39
+ },
40
+ systemRole: {
41
+ openingMessage: '开场消息',
42
+ openingQuestions: '开场问题',
43
+ title: '助手设定',
44
+ },
45
+ },
13
46
  list: '助手列表',
14
47
  more: '更多',
15
48
  plugins: '集成插件',
16
49
  recentSubmits: '最近更新',
50
+ sorts: {
51
+ createdAt: '最近发布',
52
+ identifier: '助手 ID',
53
+ knowledgeCount: '知识库数量',
54
+ pluginCount: '插件数量',
55
+ title: '助手名称',
56
+ tokenUsage: 'Token 使用量',
57
+ },
17
58
  suggestions: '相关推荐',
18
59
  systemRole: '助手设定',
60
+ tokenUsage: '助手提示词 Token 使用量',
19
61
  try: '试一下',
62
+ withKnowledge: '该助手附带知识库',
63
+ withPlugin: '该助手附带插件',
20
64
  },
21
65
  back: '返回发现',
22
66
  category: {
@@ -41,6 +85,7 @@ export default {
41
85
  'all': '全部',
42
86
  'gaming-entertainment': '游戏娱乐',
43
87
  'life-style': '生活方式',
88
+ 'lifestyle': '生活方式',
44
89
  'media-generate': '媒体生成',
45
90
  'science-education': '科学教育',
46
91
  'social': '社交媒体',
@@ -65,7 +110,6 @@ export default {
65
110
  title: '通过 Github 提交',
66
111
  },
67
112
  },
68
-
69
113
  dislike: '不喜欢',
70
114
  filter: '筛选',
71
115
  filterBy: {
@@ -103,10 +147,374 @@ export default {
103
147
  featuredTools: '推荐插件',
104
148
  more: '发现更多',
105
149
  },
150
+ isClaimed: '已认领',
151
+ isFeatured: '推荐',
152
+ isOfficial: '官方认证',
106
153
  like: '喜欢',
154
+ mcp: {
155
+ categories: {
156
+ 'all': {
157
+ description: '全部 MCP Servers',
158
+ name: '全部',
159
+ },
160
+ 'business': {
161
+ description: '商业与企业服务',
162
+ name: '商业服务',
163
+ },
164
+ 'developer': {
165
+ description: '开发相关的工具与服务',
166
+ name: '开发工具',
167
+ },
168
+ 'gaming-entertainment': {
169
+ description: '游戏、娱乐和休闲活动',
170
+ name: '游戏娱乐',
171
+ },
172
+ 'health-wellness': {
173
+ description: '健康、健身与身心养护',
174
+ name: '健康养生',
175
+ },
176
+ 'lifestyle': {
177
+ description: '个人生活方式、习惯与日常活动',
178
+ name: '生活方式',
179
+ },
180
+ 'media-generate': {
181
+ description: '媒体的生成、编辑与处理',
182
+ name: '媒体生成',
183
+ },
184
+ 'news': {
185
+ description: '新闻聚合、报道与资讯服务',
186
+ name: '新闻咨询',
187
+ },
188
+ 'productivity': {
189
+ description: '任务管理、笔记与效率工具',
190
+ name: '效率工具',
191
+ },
192
+ 'science-education': {
193
+ description: '科学研究、学习与教育工具',
194
+ name: '科学教育',
195
+ },
196
+ 'social': {
197
+ description: '社交网络与沟通交流',
198
+ name: '社交媒体',
199
+ },
200
+ 'stocks-finance': {
201
+ description: '金融市场、交易与投资',
202
+ name: '股票金融',
203
+ },
204
+ 'tools': {
205
+ description: '通用实用工具与服务',
206
+ name: '实用工具',
207
+ },
208
+ 'travel-transport': {
209
+ description: '旅行规划与交通出行',
210
+ name: '旅行交通',
211
+ },
212
+ 'weather': {
213
+ description: '天气预报与气象服务',
214
+ name: '气象天气',
215
+ },
216
+ 'web-search': {
217
+ description: '网页搜索与信息检索',
218
+ name: '信息检索',
219
+ },
220
+ },
221
+ details: {
222
+ connectionType: {
223
+ hybrid: {
224
+ desc: '该服务可根据配置或使用场景,在本地或云端运行,具备双重运行能力。',
225
+ title: '混合型服务',
226
+ },
227
+ local: {
228
+ desc: '该服务器只能在客户端本地设备上运行,需安装并依赖本地资源。',
229
+ title: '本地服务',
230
+ },
231
+ remote: {
232
+ desc: '该服务器托管在远程运行,因为它主要依赖远程服务,不依赖本地环境。',
233
+ title: '云服务',
234
+ },
235
+ },
236
+ deployment: {
237
+ args: '参数',
238
+ checkCommand: '检查命令',
239
+ command: '命令',
240
+ commandLine: '系统依赖',
241
+ connection: '连接方式',
242
+ connectionType: '连接类型',
243
+ description: '插件的安装和部署方式',
244
+ descriptionPlaceholder: '可选的描述信息',
245
+ empty: '暂无部署选项',
246
+ env: '环境变量',
247
+ guide: '安装说明',
248
+ installation: '通过 {{method}} 安装',
249
+ installationMethod: '安装方式',
250
+ other: '其他设置',
251
+ packageName: '包名称',
252
+ platform: {
253
+ steps: {
254
+ claude:
255
+ '- 打开 **Claude Desktop** 应用\n- 前往 **设置**,然后选择 **开发者**\n- 点击 **编辑配置**\n- 打开 **claude_desktop_config.json** 文件\n- 复制并粘贴服务器配置到现有文件中,然后保存',
256
+ cline:
257
+ '- 打开安装了 Cline 扩展的 VS Code\n- 点击侧边栏中的 Cline 图标\n- 从下拉菜单中选择 **MCP Servers**\n- 在 **Remote Servers** 标签页中,输入服务器名称和您的 MCP 服务器 URL\n- 点击 **Add Server** 进行连接',
258
+ cursor:
259
+ '- 导航到 **设置**,然后选择 Cursor 设置\n- 在左侧选择 **MCP**\n- 点击右上角的 **添加新的全局 MCP 服务器**\n- 复制并粘贴服务器配置到现有文件中,然后保存',
260
+ lobeChat:
261
+ '- 打开 **LobeChat 桌面版** 应用\n- 前往 **设置** - **默认助手**\n- 然后选择 **插件设置** - **自定义插件**\n- 点击 **快速导入 JSON 配置**\n- 复制并粘贴服务器配置到文本框,然后安装',
262
+ openai:
263
+ '- 打开您的 **OpenAI 应用** 或开发环境\n- 在 **Responses API** 中配置 MCP 工具\n- 在 API 请求的 **tools** 数组中添加 MCP 块\n- 设置 **server_url** 为您的 MCP 服务器端点\n- 包含认证所需的头部信息(API 密钥、令牌等)\n- 使用 `allowed_tools` 参数限制暴露的工具\n- 设置 `require_approval` 来控制工具执行审批',
264
+ vscode:
265
+ '- 打开 VS Code\n- 打开命令面板(`Ctrl+Shift+P` / `Cmd+Shift+P`)\n- 输入 **MCP: Add Server** 并选择它\n- 选择添加到工作区或用户设置\n- 复制并粘贴服务器配置',
266
+ },
267
+ title: '在 {{platform}} 中安装',
268
+ },
269
+ recommended: '推荐',
270
+ systemDependencies: '系统依赖',
271
+ table: {
272
+ description: '描述',
273
+ name: '名称',
274
+ required: '必填',
275
+ type: '类型',
276
+ },
277
+ title: '安装方式',
278
+ },
279
+ githubBadge: {
280
+ desc: 'LobeHub 定期对代码库和文档进行扫描,以便于:\n\n- 确认 MCP 服务器正常运行。\n- 提取服务器特性,例如工具、资源、提示信息以及所需参数。\n- 我们的 Badge 帮助用户快速评估 MCP 服务器的安全性、功能特性以及安装指南。\n\n请将以下代码复制到你的 `README.md` 文件中:',
281
+ },
282
+ nav: {
283
+ needHelp: '需要帮助?',
284
+ reportIssue: '报告问题',
285
+ viewSourceCode: '查看源码',
286
+ },
287
+ overview: {
288
+ title: '概览',
289
+ },
290
+ related: {
291
+ listTitle: '相关 MCP Server',
292
+ more: '查看更多',
293
+ title: '相关推荐',
294
+ },
295
+ schema: {
296
+ mode: {
297
+ docs: '文档',
298
+ },
299
+ prompts: {
300
+ arguments: '参数配置',
301
+ desc: '由用户选择触发的交互式模板',
302
+ empty: '暂无提示词',
303
+ instructions: '指令说明',
304
+ table: {
305
+ description: '描述',
306
+ name: '名称',
307
+ required: '必填',
308
+ },
309
+ title: '提示词列表',
310
+ },
311
+ resources: {
312
+ desc: '由客户端附加和管理的上下文数据',
313
+ empty: '暂无资源',
314
+ table: {
315
+ description: '描述',
316
+ mineType: 'MIME 类型',
317
+ name: '名称',
318
+ uri: 'URI',
319
+ },
320
+ title: '资源列表',
321
+ },
322
+ title: '插件功能',
323
+ tools: {
324
+ desc: '向大语言模型(LLM)暴露的功能接口以执行操作',
325
+ empty: '暂无工具',
326
+ inputSchema: '输入描述',
327
+ instructions: '指令说明',
328
+ table: {
329
+ description: '描述',
330
+ name: '名称',
331
+ required: '必填',
332
+ type: '类型',
333
+ },
334
+ title: '工具列表',
335
+ },
336
+ },
337
+ score: {
338
+ claimed: {
339
+ desc: '此 MCP Server 已被所有者认领,确保其所有权和管理。',
340
+ title: '已被所有者认领',
341
+ },
342
+ deployMoreThanManual: {
343
+ desc: '该 MCP Server 提供了除 Manual 外更友好的安装方式,允许用户轻松部署和使用。',
344
+ title: '提供友好的安装方式',
345
+ },
346
+ deployment: {
347
+ desc: '该 MCP Server 提供了至少一种安装方式,允许用户部署和使用。',
348
+ descWithCount: '该 MCP Server 提供了 {{number}} 种安装方式,允许用户部署和使用。',
349
+ title: '提供至少一种安装方式',
350
+ },
351
+ license: {
352
+ desc: '该仓库包含一个 LICENSE 文件。',
353
+ descWithlicense: '该仓库许可证为 {{license}}。',
354
+ title: '具有 LICENSE',
355
+ },
356
+ listTitle: '评分明细',
357
+ notClaimed: {
358
+ desc: '如果您是此 MCP Server 所有者,可通过以下方式认领。',
359
+ title: '未被所有者认领',
360
+ },
361
+ prompts: {
362
+ desc: '该 MCP Server 提供了提示词,允许用户与服务进行交互。',
363
+ descWithCount: '该 MCP Server 提供了 {{number}} 个提示词,允许用户与服务进行交互。',
364
+ title: '包含提示词',
365
+ },
366
+ readme: {
367
+ desc: '该仓库包含一个 README.md 文件。',
368
+ title: '具有 README',
369
+ },
370
+ resources: {
371
+ desc: '该 MCP Server 提供了资源,允许用户附加和管理上下文数据。',
372
+ descWithCount: '该 MCP Server 提供了 {{number}} 个资源,允许用户附加和管理上下文数据。',
373
+ title: '包含资源',
374
+ },
375
+ title: '评分',
376
+ tools: {
377
+ desc: '服务需提供至少一个工具,允许用户执行特定操作。',
378
+ descWithCount: '该 MCP Server 提供了 {{number}} 个工具功能,允许用户执行特定操作。',
379
+ title: '包含至少一个工具',
380
+ },
381
+ validated: {
382
+ desc: '该 MCP Server 已通过安装验证,确保其质量和可靠性。',
383
+ title: '已通过验证',
384
+ },
385
+ },
386
+ scoreLevel: {
387
+ a: {
388
+ desc: '该 MCP Server 经过严格验证,提供了全面的功能和高质量的用户体验。',
389
+ fullTitle: '优秀插件',
390
+ title: '优质',
391
+ },
392
+ b: {
393
+ desc: '该 MCP Server 提供了良好的功能和用户体验,但可能在某些方面需要改进。',
394
+ fullTitle: '功能良好',
395
+ title: '良好',
396
+ },
397
+ f: {
398
+ desc: '该 MCP Server 功能不完整或质量较低,建议用户谨慎使用。',
399
+ fullTitle: '质量欠佳',
400
+ title: '欠佳',
401
+ },
402
+ },
403
+ settings: {
404
+ capabilities: {
405
+ prompts: '提示词',
406
+ resources: '资源',
407
+ title: '插件能力',
408
+ tools: '工具',
409
+ },
410
+ configuration: {
411
+ title: '插件配置',
412
+ },
413
+ connection: {
414
+ args: '启动参数',
415
+ command: '启动命令',
416
+ title: '连接信息',
417
+ type: '连接类型',
418
+ url: '服务地址',
419
+ },
420
+ saveSettings: '保存设置',
421
+ title: '插件设置',
422
+ },
423
+ sidebar: {
424
+ install: '安装 MCP Server',
425
+ meta: {
426
+ homepage: '官网主页',
427
+ installCount: '安装数',
428
+ language: '源码语种',
429
+ license: '许可证',
430
+ published: '发布时间',
431
+ repo: '源码仓库',
432
+ stars: '星标数',
433
+ title: '详细信息',
434
+ updated: '最近更新',
435
+ },
436
+ moreServerConfig: '查看详情',
437
+ recommendServers: '相关 MCP',
438
+ serverConfig: '安装配置',
439
+ toc: '目录',
440
+ },
441
+ summary: {
442
+ title: '你可以使用该 MCP Server 做什么?',
443
+ },
444
+ totalScore: {
445
+ description: '根据各项指标综合计算得出的总分',
446
+ legend: {
447
+ aGrade: 'A级 ({{minPercent}}-100%)',
448
+ bGrade: 'B级 ({{minPercent}}-{{maxPercent}}%)',
449
+ fGrade: 'F级 (0-{{maxPercent}}%)',
450
+ },
451
+ pointsFormat: '{{score}}/{{total}} 分',
452
+ popover: {
453
+ completedOptional: '✅ 已完成可选项 ({{count}}项)',
454
+ completedRequired: '✅ 已完成必需项 ({{count}}项)',
455
+ incompleteOptional: '⏸️ 未完成可选项 ({{count}}项)',
456
+ incompleteRequired: '❌ 未完成必需项 ({{count}}项)',
457
+ title: '评分详情',
458
+ },
459
+ ratingFormat: '评级: {{level}}',
460
+ scoreInfo: {
461
+ items: '项',
462
+ points: '分',
463
+ requiredItems: '必需项',
464
+ },
465
+ title: '总分',
466
+ },
467
+ versions: {
468
+ table: {
469
+ isLatest: '最新版本',
470
+ isValidated: '通过验证',
471
+ publishAt: '发布时间',
472
+ version: '版本',
473
+ },
474
+ title: '版本历史',
475
+ },
476
+ },
477
+ hero: {
478
+ desc: '开源、可部署的 MCP Servers 平台,帮助 AI 系统轻松访问文件系统、数据库、API 等关键资源,全面扩展你的 AI 能力。',
479
+ subTitle: '开源 & 开箱即用',
480
+ title: '面向 AI 的开源 MCP 市场',
481
+ },
482
+ sorts: {
483
+ createdAt: '最近新增',
484
+ installCount: '安装数',
485
+ isFeatured: '推荐插件',
486
+ isValidated: '已验证插件',
487
+ promptsCount: '提示词数',
488
+ ratingCount: '评分数',
489
+ resourcesCount: '资源数',
490
+ toolsCount: '工具数',
491
+ updatedAt: '最近更新',
492
+ },
493
+ title: 'MCP 市场',
494
+ unvalidated: {
495
+ desc: '此 MCP Server 暂未经过验证',
496
+ title: '未验证',
497
+ },
498
+ validated: {
499
+ desc: '此 MCP Server 经过验证,确保其质量和可靠性。',
500
+ descWithDate: '此 MCP Server 于 {{date}} 经过验证,确保其质量和可靠性。',
501
+ title: '已验证',
502
+ },
503
+ },
107
504
  models: {
505
+ abilities: '模型能力',
108
506
  chat: '开始会话',
109
507
  contentLength: '最大上下文长度',
508
+ details: {
509
+ overview: {
510
+ title: '概览',
511
+ },
512
+ related: {
513
+ listTitle: '相关模型',
514
+ more: '查看更多',
515
+ title: '相关推荐',
516
+ },
517
+ },
110
518
  free: '免费',
111
519
  guide: '配置指南',
112
520
  list: '模型列表',
@@ -157,11 +565,30 @@ export default {
157
565
  throughput: '吞吐量',
158
566
  throughputTooltip: '流请求每秒传输的平均 Token 数',
159
567
  },
568
+ sorts: {
569
+ contextWindowTokens: '上下文长度',
570
+ identifier: '模型 ID',
571
+ inputPrice: '输入价格',
572
+ outputPrice: '输出价格',
573
+ providerCount: '服务商数量',
574
+ releasedAt: '最近发布',
575
+ },
160
576
  suggestions: '相关模型',
161
577
  supportedProviders: '支持该模型的服务商',
162
578
  },
163
579
  plugins: {
164
580
  community: '社区插件',
581
+ details: {
582
+ settings: {
583
+ title: '插件设置',
584
+ },
585
+ summary: {
586
+ title: '你可以使用该插件做什么?',
587
+ },
588
+ tools: {
589
+ title: '插件工具',
590
+ },
591
+ },
165
592
  install: '安装插件',
166
593
  installed: '已安装',
167
594
  list: '插件列表',
@@ -174,36 +601,54 @@ export default {
174
601
  more: '更多',
175
602
  official: '官方插件',
176
603
  recentSubmits: '最近更新',
604
+ sorts: {
605
+ createdAt: '最近发布',
606
+ identifier: '插件 ID',
607
+ title: '插件名称',
608
+ },
177
609
  suggestions: '相关推荐',
178
610
  },
179
611
  providers: {
180
612
  config: '配置服务商',
613
+ details: {
614
+ guide: {
615
+ title: '接入指南',
616
+ },
617
+ overview: {
618
+ title: '概览',
619
+ },
620
+ related: {
621
+ listTitle: '相关服务商',
622
+ more: '查看更多',
623
+ title: '相关推荐',
624
+ },
625
+ },
181
626
  list: '模型服务商列表',
182
627
  modelCount: '{{count}} 个模型',
628
+ modelName: '模型名称',
183
629
  modelSite: '模型文档',
184
630
  more: '更多',
185
631
  officialSite: '官方网站',
186
632
  showAllModels: '显示所有模型',
633
+ sorts: {
634
+ default: '默认排序',
635
+ identifier: '服务商 ID',
636
+ modelCount: '模型数量',
637
+ },
187
638
  suggestions: '相关服务商',
188
639
  supportedModels: '支持模型',
189
640
  },
641
+ publishedTime: '发布于',
190
642
  search: {
191
643
  placeholder: '搜索名称介绍或关键词...',
192
644
  result: '{{count}} 个关于 <highlight>{{keyword}}</highlight> 的搜索结果',
193
645
  searching: '搜索中...',
194
646
  },
195
- sort: {
196
- mostLiked: '最多喜欢',
197
- mostUsed: '最多使用',
198
- newest: '从新到旧',
199
- oldest: '从旧到新',
200
- recommended: '推荐',
201
- },
202
647
  tab: {
203
- assistants: '助手',
648
+ assistant: '助手',
204
649
  home: '首页',
205
- models: '模型',
206
- plugins: '插件',
207
- providers: '模型服务商',
650
+ model: '模型',
651
+ plugin: '插件',
652
+ provider: '模型服务商',
208
653
  },
209
654
  };