@lobehub/chat 1.17.7 → 1.18.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.

Potentially problematic release.


This version of @lobehub/chat might be problematic. Click here for more details.

Files changed (336) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/locales/ar/common.json +1 -1
  3. package/locales/ar/discover.json +204 -0
  4. package/locales/ar/metadata.json +20 -3
  5. package/locales/ar/models.json +845 -0
  6. package/locales/ar/providers.json +80 -0
  7. package/locales/bg-BG/common.json +1 -1
  8. package/locales/bg-BG/discover.json +204 -0
  9. package/locales/bg-BG/metadata.json +20 -3
  10. package/locales/bg-BG/models.json +845 -0
  11. package/locales/bg-BG/providers.json +80 -0
  12. package/locales/de-DE/common.json +1 -1
  13. package/locales/de-DE/discover.json +204 -0
  14. package/locales/de-DE/metadata.json +20 -3
  15. package/locales/de-DE/models.json +845 -0
  16. package/locales/de-DE/providers.json +80 -0
  17. package/locales/en-US/common.json +1 -1
  18. package/locales/en-US/discover.json +204 -0
  19. package/locales/en-US/metadata.json +20 -3
  20. package/locales/en-US/models.json +845 -0
  21. package/locales/en-US/providers.json +80 -0
  22. package/locales/es-ES/common.json +1 -1
  23. package/locales/es-ES/discover.json +204 -0
  24. package/locales/es-ES/metadata.json +20 -3
  25. package/locales/es-ES/models.json +845 -0
  26. package/locales/es-ES/providers.json +80 -0
  27. package/locales/fr-FR/common.json +1 -1
  28. package/locales/fr-FR/discover.json +204 -0
  29. package/locales/fr-FR/metadata.json +20 -3
  30. package/locales/fr-FR/models.json +845 -0
  31. package/locales/fr-FR/providers.json +80 -0
  32. package/locales/it-IT/common.json +1 -1
  33. package/locales/it-IT/discover.json +204 -0
  34. package/locales/it-IT/metadata.json +20 -3
  35. package/locales/it-IT/models.json +845 -0
  36. package/locales/it-IT/providers.json +80 -0
  37. package/locales/ja-JP/common.json +1 -1
  38. package/locales/ja-JP/discover.json +204 -0
  39. package/locales/ja-JP/metadata.json +20 -3
  40. package/locales/ja-JP/models.json +845 -0
  41. package/locales/ja-JP/providers.json +80 -0
  42. package/locales/ko-KR/common.json +1 -1
  43. package/locales/ko-KR/discover.json +204 -0
  44. package/locales/ko-KR/metadata.json +20 -3
  45. package/locales/ko-KR/models.json +845 -0
  46. package/locales/ko-KR/providers.json +80 -0
  47. package/locales/nl-NL/common.json +1 -1
  48. package/locales/nl-NL/discover.json +204 -0
  49. package/locales/nl-NL/metadata.json +20 -3
  50. package/locales/nl-NL/models.json +845 -0
  51. package/locales/nl-NL/providers.json +80 -0
  52. package/locales/pl-PL/common.json +1 -1
  53. package/locales/pl-PL/discover.json +204 -0
  54. package/locales/pl-PL/metadata.json +20 -3
  55. package/locales/pl-PL/models.json +845 -0
  56. package/locales/pl-PL/providers.json +80 -0
  57. package/locales/pt-BR/common.json +1 -1
  58. package/locales/pt-BR/discover.json +204 -0
  59. package/locales/pt-BR/metadata.json +20 -3
  60. package/locales/pt-BR/models.json +845 -0
  61. package/locales/pt-BR/providers.json +80 -0
  62. package/locales/ru-RU/common.json +1 -1
  63. package/locales/ru-RU/discover.json +204 -0
  64. package/locales/ru-RU/metadata.json +20 -3
  65. package/locales/ru-RU/models.json +845 -0
  66. package/locales/ru-RU/providers.json +80 -0
  67. package/locales/tr-TR/common.json +1 -1
  68. package/locales/tr-TR/discover.json +204 -0
  69. package/locales/tr-TR/metadata.json +20 -3
  70. package/locales/tr-TR/models.json +845 -0
  71. package/locales/tr-TR/providers.json +80 -0
  72. package/locales/vi-VN/common.json +1 -1
  73. package/locales/vi-VN/discover.json +204 -0
  74. package/locales/vi-VN/metadata.json +20 -3
  75. package/locales/vi-VN/models.json +845 -0
  76. package/locales/vi-VN/providers.json +80 -0
  77. package/locales/zh-CN/common.json +1 -1
  78. package/locales/zh-CN/discover.json +204 -0
  79. package/locales/zh-CN/metadata.json +20 -3
  80. package/locales/zh-CN/models.json +845 -0
  81. package/locales/zh-CN/providers.json +80 -0
  82. package/locales/zh-CN/welcome.json +1 -1
  83. package/locales/zh-TW/common.json +1 -1
  84. package/locales/zh-TW/discover.json +204 -0
  85. package/locales/zh-TW/metadata.json +20 -3
  86. package/locales/zh-TW/models.json +845 -0
  87. package/locales/zh-TW/providers.json +80 -0
  88. package/package.json +3 -2
  89. package/src/app/(main)/@nav/_layout/Desktop/TopActions.test.tsx +3 -3
  90. package/src/app/(main)/@nav/_layout/Desktop/TopActions.tsx +3 -3
  91. package/src/app/(main)/@nav/_layout/Mobile.tsx +3 -3
  92. package/src/app/(main)/_layout/Mobile.tsx +9 -1
  93. package/src/app/(main)/discover/(detail)/_layout/Desktop.tsx +24 -0
  94. package/src/app/(main)/discover/(detail)/_layout/Mobile/Header.tsx +25 -0
  95. package/src/app/(main)/discover/(detail)/_layout/Mobile/index.tsx +17 -0
  96. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/Actions.tsx +35 -0
  97. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/AddAgent.tsx +86 -0
  98. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/ConversationExample/TopicList.tsx +74 -0
  99. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/ConversationExample/index.tsx +100 -0
  100. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/Header.tsx +118 -0
  101. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/InfoSidebar/SuggestionItem.tsx +62 -0
  102. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/InfoSidebar/ToolItem.tsx +19 -0
  103. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/InfoSidebar/index.tsx +64 -0
  104. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/SystemRole.tsx +35 -0
  105. package/src/app/(main)/discover/(detail)/assistant/[slug]/features/Temp.tsx +44 -0
  106. package/src/app/(main)/discover/(detail)/assistant/[slug]/page.tsx +121 -0
  107. package/src/app/(main)/discover/(detail)/error.tsx +5 -0
  108. package/src/app/(main)/discover/(detail)/features/Back.tsx +42 -0
  109. package/src/app/(main)/discover/(detail)/features/Block.tsx +50 -0
  110. package/src/app/(main)/discover/(detail)/features/DetailLayout.tsx +91 -0
  111. package/src/app/(main)/discover/(detail)/features/HighlightBlock.tsx +82 -0
  112. package/src/app/(main)/discover/(detail)/features/ShareButton.tsx +160 -0
  113. package/src/app/(main)/discover/(detail)/features/SidebarContainer.tsx +19 -0
  114. package/src/app/(main)/discover/(detail)/layout.tsx +12 -0
  115. package/src/app/(main)/discover/(detail)/loading.tsx +38 -0
  116. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/Actions.tsx +46 -0
  117. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/ChatWithModel.tsx +93 -0
  118. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/Header.tsx +85 -0
  119. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/InfoSidebar/SuggestionItem.tsx +75 -0
  120. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/InfoSidebar/index.tsx +49 -0
  121. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/ParameterList/ParameterItem.tsx +71 -0
  122. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/ParameterList/index.tsx +110 -0
  123. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/ProviderList/ProviderItem.tsx +152 -0
  124. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/ProviderList/index.tsx +45 -0
  125. package/src/app/(main)/discover/(detail)/model/[...slugs]/page.tsx +114 -0
  126. package/src/app/(main)/discover/(detail)/not-found.tsx +3 -0
  127. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/Actions.tsx +35 -0
  128. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/Header.tsx +114 -0
  129. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/InfoSidebar/SuggestionItem.tsx +62 -0
  130. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/InfoSidebar/index.tsx +49 -0
  131. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/InstallPlugin.tsx +87 -0
  132. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/ParameterList.tsx +95 -0
  133. package/src/app/(main)/discover/(detail)/plugin/[slug]/features/Schema.tsx +23 -0
  134. package/src/app/(main)/discover/(detail)/plugin/[slug]/page.tsx +103 -0
  135. package/src/app/(main)/discover/(detail)/provider/[slug]/features/Actions.tsx +49 -0
  136. package/src/app/(main)/discover/(detail)/provider/[slug]/features/Header.tsx +73 -0
  137. package/src/app/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/SuggestionItem.tsx +75 -0
  138. package/src/app/(main)/discover/(detail)/provider/[slug]/features/InfoSidebar/index.tsx +49 -0
  139. package/src/app/(main)/discover/(detail)/provider/[slug]/features/ModelList/ModelItem.tsx +148 -0
  140. package/src/app/(main)/discover/(detail)/provider/[slug]/features/ModelList/index.tsx +60 -0
  141. package/src/app/(main)/discover/(detail)/provider/[slug]/features/ProviderConfig.tsx +80 -0
  142. package/src/app/(main)/discover/(detail)/provider/[slug]/page.tsx +116 -0
  143. package/src/app/(main)/discover/(list)/(home)/Client.tsx +42 -0
  144. package/src/app/(main)/discover/(list)/(home)/features/AssistantList.tsx +33 -0
  145. package/src/app/(main)/discover/(list)/(home)/features/ModelList.tsx +22 -0
  146. package/src/app/(main)/discover/(list)/(home)/features/PluginList.tsx +25 -0
  147. package/src/app/(main)/discover/(list)/(home)/loading.tsx +1 -0
  148. package/src/app/(main)/discover/(list)/(home)/page.tsx +54 -0
  149. package/src/app/(main)/discover/(list)/_layout/Desktop/Nav.tsx +118 -0
  150. package/src/app/(main)/discover/(list)/_layout/Desktop/index.tsx +37 -0
  151. package/src/app/(main)/discover/(list)/_layout/Desktop/useScroll.ts +33 -0
  152. package/src/app/(main)/discover/(list)/_layout/Mobile/Header.tsx +62 -0
  153. package/src/app/(main)/discover/(list)/_layout/Mobile/Nav.tsx +94 -0
  154. package/src/app/(main)/discover/(list)/_layout/Mobile/index.tsx +27 -0
  155. package/src/app/(main)/discover/(list)/assistants/[slug]/page.tsx +64 -0
  156. package/src/app/(main)/discover/(list)/assistants/_layout/Desktop.tsx +22 -0
  157. package/src/app/(main)/discover/(list)/assistants/_layout/Mobile.tsx +9 -0
  158. package/src/app/(main)/discover/(list)/assistants/features/Card.tsx +176 -0
  159. package/src/app/(main)/discover/(list)/assistants/features/Category.tsx +48 -0
  160. package/src/app/(main)/discover/(list)/assistants/features/List.tsx +97 -0
  161. package/src/app/(main)/discover/(list)/assistants/features/useCategory.tsx +116 -0
  162. package/src/app/(main)/discover/(list)/assistants/layout.tsx +12 -0
  163. package/src/app/(main)/discover/(list)/assistants/loading.tsx +1 -0
  164. package/src/app/(main)/discover/(list)/assistants/page.tsx +51 -0
  165. package/src/app/(main)/discover/(list)/error.tsx +5 -0
  166. package/src/app/(main)/{market → discover/(list)}/layout.tsx +4 -3
  167. package/src/app/(main)/discover/(list)/loading.tsx +39 -0
  168. package/src/app/(main)/discover/(list)/models/[slug]/page.tsx +70 -0
  169. package/src/app/(main)/discover/(list)/models/_layout/Desktop.tsx +28 -0
  170. package/src/app/(main)/discover/(list)/models/_layout/Mobile.tsx +9 -0
  171. package/src/app/(main)/discover/(list)/models/features/Card.tsx +116 -0
  172. package/src/app/(main)/discover/(list)/models/features/Category.tsx +67 -0
  173. package/src/app/(main)/discover/(list)/models/features/List.tsx +72 -0
  174. package/src/app/(main)/discover/(list)/models/features/const.ts +9 -0
  175. package/src/app/(main)/discover/(list)/models/layout.tsx +12 -0
  176. package/src/app/(main)/discover/(list)/models/loading.tsx +1 -0
  177. package/src/app/(main)/discover/(list)/models/page.tsx +61 -0
  178. package/src/app/(main)/discover/(list)/not-found.tsx +3 -0
  179. package/src/app/(main)/discover/(list)/plugins/[slug]/page.tsx +64 -0
  180. package/src/app/(main)/discover/(list)/plugins/_layout/Desktop.tsx +22 -0
  181. package/src/app/(main)/discover/(list)/plugins/_layout/Mobile.tsx +9 -0
  182. package/src/app/(main)/discover/(list)/plugins/features/Card.tsx +154 -0
  183. package/src/app/(main)/discover/(list)/plugins/features/Category.tsx +45 -0
  184. package/src/app/(main)/discover/(list)/plugins/features/List.tsx +96 -0
  185. package/src/app/(main)/discover/(list)/plugins/features/useCategory.tsx +80 -0
  186. package/src/app/(main)/discover/(list)/plugins/layout.tsx +12 -0
  187. package/src/app/(main)/discover/(list)/plugins/loading.tsx +1 -0
  188. package/src/app/(main)/discover/(list)/plugins/page.tsx +52 -0
  189. package/src/app/(main)/discover/(list)/providers/features/Card.tsx +117 -0
  190. package/src/app/(main)/discover/(list)/providers/features/List.tsx +71 -0
  191. package/src/app/(main)/discover/(list)/providers/loading.tsx +1 -0
  192. package/src/app/(main)/discover/(list)/providers/page.tsx +52 -0
  193. package/src/app/(main)/discover/_layout/Desktop/Header.tsx +36 -0
  194. package/src/app/(main)/discover/_layout/Desktop/index.tsx +21 -0
  195. package/src/app/(main)/discover/_layout/Mobile/index.tsx +9 -0
  196. package/src/app/(main)/{market/features/AgentCard/AgentCardBanner.tsx → discover/components/CardBanner.tsx} +5 -5
  197. package/src/app/(main)/discover/components/CategoryContainer.tsx +18 -0
  198. package/src/app/(main)/discover/components/CategoryMenu.tsx +39 -0
  199. package/src/app/(main)/discover/components/GitHubAvatar.tsx +19 -0
  200. package/src/app/(main)/discover/components/GridLoadingCard.tsx +69 -0
  201. package/src/app/(main)/discover/components/ListLoading.tsx +66 -0
  202. package/src/app/(main)/discover/components/Loading.tsx +17 -0
  203. package/src/app/(main)/discover/components/SearchResultCount.tsx +37 -0
  204. package/src/app/(main)/discover/components/Statistic.tsx +92 -0
  205. package/src/app/(main)/discover/components/Title.tsx +76 -0
  206. package/src/app/(main)/discover/components/VirtuosoGridList/index.tsx +52 -0
  207. package/src/app/(main)/discover/components/VirtuosoGridList/useScrollParent.ts +19 -0
  208. package/src/app/(main)/discover/error.tsx +5 -0
  209. package/src/app/(main)/{market/features/ShareAgentButton → discover/features/CreateButton}/Inner.tsx +9 -10
  210. package/src/app/(main)/{market/features/ShareAgentButton → discover/features/CreateButton}/index.tsx +9 -9
  211. package/src/app/(main)/discover/features/LikeButton.tsx +73 -0
  212. package/src/app/(main)/discover/features/ModelFeatureTags.tsx +77 -0
  213. package/src/app/(main)/discover/features/StoreSearchBar.tsx +84 -0
  214. package/src/app/(main)/discover/features/const.ts +2 -0
  215. package/src/app/(main)/discover/features/useNav.tsx +71 -0
  216. package/src/app/(main)/discover/layout.tsx +12 -0
  217. package/src/app/(main)/discover/loading.tsx +9 -0
  218. package/src/app/(main)/discover/not-found.tsx +3 -0
  219. package/src/app/(main)/discover/search/_layout/Desktop.tsx +42 -0
  220. package/src/app/(main)/discover/search/_layout/Mobile/Header.tsx +31 -0
  221. package/src/app/(main)/discover/search/_layout/Mobile/Nav.tsx +56 -0
  222. package/src/app/(main)/discover/search/_layout/Mobile/index.tsx +32 -0
  223. package/src/app/(main)/discover/search/features/AssistantsResult.tsx +27 -0
  224. package/src/app/(main)/discover/search/features/Category.tsx +41 -0
  225. package/src/app/(main)/discover/search/features/ModelsResult.tsx +27 -0
  226. package/src/app/(main)/discover/search/features/PluginsResult.tsx +27 -0
  227. package/src/app/(main)/discover/search/features/ProvidersResult.tsx +26 -0
  228. package/src/app/(main)/discover/search/layout.tsx +12 -0
  229. package/src/app/(main)/discover/search/loading.tsx +1 -0
  230. package/src/app/(main)/discover/search/page.tsx +78 -0
  231. package/src/app/(main)/settings/llm/components/ProviderConfig/index.tsx +0 -6
  232. package/src/app/(main)/welcome/features/Actions.tsx +1 -1
  233. package/src/app/@modal/(.)discover/assistant/[slug]/page.tsx +1 -0
  234. package/src/app/@modal/(.)discover/layout.tsx +29 -0
  235. package/src/app/@modal/(.)discover/loading.tsx +3 -0
  236. package/src/app/@modal/(.)discover/model/[...slugs]/page.tsx +1 -0
  237. package/src/app/@modal/(.)discover/plugin/[slug]/page.tsx +1 -0
  238. package/src/app/@modal/(.)discover/provider/[slug]/page.tsx +1 -0
  239. package/src/app/@modal/features/InterceptingContext.tsx +9 -0
  240. package/src/app/@modal/layout.tsx +58 -21
  241. package/src/app/api/{market → assistant}/[id]/route.ts +2 -3
  242. package/src/app/api/{market → assistant/store}/route.ts +2 -5
  243. package/src/app/api/plugin/store/route.ts +1 -4
  244. package/src/app/metadata.ts +3 -0
  245. package/src/app/redirect/page.tsx +15 -0
  246. package/src/components/FetchErrorNotification/Description.tsx +2 -0
  247. package/src/components/InterceptingLink/index.tsx +27 -0
  248. package/src/components/mdx/CodeBlock.tsx +46 -0
  249. package/src/components/mdx/Link.tsx +21 -0
  250. package/src/components/mdx/index.tsx +51 -0
  251. package/src/const/discover.ts +63 -1
  252. package/src/features/Conversation/Error/PluginSettings.tsx +1 -1
  253. package/src/features/Conversation/Messages/Tool/Inspector/Settings.tsx +1 -1
  254. package/src/features/Conversation/components/InboxWelcome/AgentsSuggest.tsx +41 -24
  255. package/src/features/MobileTabBar/index.tsx +3 -3
  256. package/src/features/PluginDetailModal/APIs.tsx +1 -1
  257. package/src/features/PluginDevModal/UrlManifestForm.tsx +1 -1
  258. package/src/features/PluginStore/PluginItem/Action.tsx +1 -1
  259. package/src/features/PluginsUI/Render/DefaultType/index.tsx +1 -1
  260. package/src/features/PluginsUI/Render/StandaloneType/index.tsx +1 -1
  261. package/src/hooks/useInterceptingRoutes.ts +21 -1
  262. package/src/hooks/useShare.tsx +191 -0
  263. package/src/locales/create.ts +1 -1
  264. package/src/locales/default/common.ts +1 -1
  265. package/src/locales/default/discover.ts +205 -0
  266. package/src/locales/default/index.ts +6 -2
  267. package/src/locales/default/metadata.ts +23 -3
  268. package/src/locales/default/models.ts +15 -0
  269. package/src/locales/default/providers.ts +15 -0
  270. package/src/locales/default/welcome.ts +1 -1
  271. package/src/locales/resources.ts +2 -0
  272. package/src/server/ld.ts +85 -11
  273. package/src/server/metadata.ts +41 -3
  274. package/src/{app/api/market/AgentMarket.test.ts → server/modules/AssistantStore/index.test.ts} +15 -15
  275. package/src/{app/api/market/AgentMarket.ts → server/modules/AssistantStore/index.ts} +7 -3
  276. package/src/{app/api/plugin/store/Store.test.ts → server/modules/PluginStore/index.test.ts} +1 -1
  277. package/src/server/services/discover/index.ts +352 -0
  278. package/src/server/services/doc/index.tsx +40 -0
  279. package/src/server/translation.ts +11 -5
  280. package/src/services/__tests__/__snapshots__/tool.test.ts.snap +1 -1
  281. package/src/services/{_auth.test.ts → __tests__/_auth.test.ts} +1 -1
  282. package/src/services/__tests__/assistant.test.ts +82 -0
  283. package/src/services/__tests__/tool.test.ts +13 -13
  284. package/src/services/_url.ts +2 -2
  285. package/src/services/assistant.ts +30 -0
  286. package/src/services/chat.ts +1 -1
  287. package/src/services/tool.ts +7 -129
  288. package/src/store/chat/slices/plugin/action.test.ts +112 -0
  289. package/src/store/chat/slices/plugin/action.ts +1 -3
  290. package/src/store/global/initialState.ts +1 -1
  291. package/src/store/tool/selectors/tool.test.ts +1 -1
  292. package/src/store/tool/slices/customPlugin/action.test.ts +1 -1
  293. package/src/store/tool/slices/customPlugin/action.ts +1 -1
  294. package/src/store/tool/slices/plugin/action.ts +1 -1
  295. package/src/store/tool/slices/plugin/selectors.test.ts +3 -3
  296. package/src/store/tool/slices/plugin/selectors.ts +3 -3
  297. package/src/store/tool/slices/store/action.test.ts +16 -22
  298. package/src/store/tool/slices/store/action.ts +8 -8
  299. package/src/types/discover.ts +152 -0
  300. package/src/types/llm.ts +4 -2
  301. package/src/types/meta.ts +1 -0
  302. package/src/utils/format.test.ts +191 -112
  303. package/src/utils/format.ts +36 -0
  304. package/src/utils/toolManifest.ts +124 -0
  305. package/src/app/(main)/market/@detail/default.tsx +0 -12
  306. package/src/app/(main)/market/@detail/features/AgentDetailContent.tsx +0 -73
  307. package/src/app/(main)/market/@detail/features/Banner.tsx +0 -46
  308. package/src/app/(main)/market/@detail/features/Comment.tsx +0 -16
  309. package/src/app/(main)/market/@detail/features/Header.tsx +0 -81
  310. package/src/app/(main)/market/@detail/features/Loading.tsx +0 -63
  311. package/src/app/(main)/market/@detail/features/TokenTag.tsx +0 -27
  312. package/src/app/(main)/market/@detail/features/style.ts +0 -32
  313. package/src/app/(main)/market/_layout/Desktop/DetailSidebar.tsx +0 -84
  314. package/src/app/(main)/market/_layout/Desktop/Header.tsx +0 -29
  315. package/src/app/(main)/market/_layout/Desktop/Hero.tsx +0 -40
  316. package/src/app/(main)/market/_layout/Desktop/index.tsx +0 -46
  317. package/src/app/(main)/market/_layout/Mobile/DetailModal.tsx +0 -32
  318. package/src/app/(main)/market/_layout/Mobile/Header.tsx +0 -20
  319. package/src/app/(main)/market/_layout/Mobile/index.tsx +0 -25
  320. package/src/app/(main)/market/_layout/type.ts +0 -6
  321. package/src/app/(main)/market/features/AgentCard/index.tsx +0 -139
  322. package/src/app/(main)/market/features/AgentList.tsx +0 -103
  323. package/src/app/(main)/market/features/AgentSearchBar.tsx +0 -42
  324. package/src/app/(main)/market/features/TagList.tsx +0 -69
  325. package/src/app/(main)/market/loading.tsx +0 -15
  326. package/src/app/(main)/market/page.tsx +0 -44
  327. package/src/const/market.ts +0 -15
  328. package/src/locales/default/market.ts +0 -32
  329. package/src/services/market.ts +0 -22
  330. package/src/store/market/action.ts +0 -82
  331. package/src/store/market/index.ts +0 -3
  332. package/src/store/market/initialState.ts +0 -19
  333. package/src/store/market/selectors.ts +0 -38
  334. package/src/store/market/store.ts +0 -48
  335. package/src/types/market.ts +0 -20
  336. /package/src/{app/api/plugin/store/Store.ts → server/modules/PluginStore/index.ts} +0 -0
@@ -0,0 +1,30 @@
1
+ import { cloneDeep, merge } from 'lodash-es';
2
+
3
+ import { DEFAULT_DISCOVER_ASSISTANT_ITEM } from '@/const/discover';
4
+ import { globalHelpers } from '@/store/user/helpers';
5
+ import { DiscoverAssistantItem } from '@/types/discover';
6
+
7
+ import { API_ENDPOINTS } from './_url';
8
+
9
+ class AssistantService {
10
+ getAssistantList = async (): Promise<DiscoverAssistantItem[]> => {
11
+ const locale = globalHelpers.getCurrentLanguage();
12
+
13
+ const res = await fetch(`${API_ENDPOINTS.assistantStore}?locale=${locale}`);
14
+
15
+ const json = await res.json();
16
+
17
+ return json.agents;
18
+ };
19
+
20
+ getAssistantById = async (identifier: string): Promise<DiscoverAssistantItem> => {
21
+ const locale = globalHelpers.getCurrentLanguage();
22
+
23
+ const res = await fetch(`${API_ENDPOINTS.assistant(identifier)}?locale=${locale}`);
24
+
25
+ const assistant: DiscoverAssistantItem = await res.json();
26
+
27
+ return merge(cloneDeep(DEFAULT_DISCOVER_ASSISTANT_ITEM), assistant);
28
+ };
29
+ }
30
+ export const assistantService = new AssistantService();
@@ -335,7 +335,7 @@ class ChatService {
335
335
  const s = useToolStore.getState();
336
336
 
337
337
  const settings = pluginSelectors.getPluginSettingsById(params.identifier)(s);
338
- const manifest = pluginSelectors.getPluginManifestById(params.identifier)(s);
338
+ const manifest = pluginSelectors.getToolManifestById(params.identifier)(s);
339
339
 
340
340
  const traceHeader = createTraceHeader(this.mapTrace(options?.trace, TraceTagMap.ToolCalling));
341
341
 
@@ -1,144 +1,22 @@
1
- import {
2
- LobeChatPluginManifest,
3
- LobeChatPluginsMarketIndex,
4
- pluginManifestSchema,
5
- } from '@lobehub/chat-plugin-sdk';
6
-
7
1
  import { globalHelpers } from '@/store/user/helpers';
8
- import { OpenAIPluginManifest } from '@/types/openai/plugin';
2
+ import { DiscoverPlugintem } from '@/types/discover';
3
+ import { convertOpenAIManifestToLobeManifest, getToolManifest } from '@/utils/toolManifest';
9
4
 
10
5
  import { API_ENDPOINTS } from './_url';
11
6
 
12
7
  class ToolService {
13
- private _fetchJSON = async <T = any>(url: string, proxy = false): Promise<T> => {
14
- // 2. 发送请求
15
- let res: Response;
16
- try {
17
- res = await (proxy ? fetch(API_ENDPOINTS.proxy, { body: url, method: 'POST' }) : fetch(url));
18
- } catch {
19
- throw new TypeError('fetchError');
20
- }
21
-
22
- if (!res.ok) {
23
- throw new TypeError('fetchError');
24
- }
25
-
26
- let data;
27
- const contentType = res.headers.get('Content-Type');
28
-
29
- try {
30
- if (contentType === 'application/json') {
31
- data = await res.json();
32
- } else {
33
- const { default: YAML } = await import('yaml');
34
-
35
- const yaml = await res.text();
36
- data = YAML.parse(yaml);
37
- }
38
- } catch {
39
- throw new TypeError('urlError');
40
- }
41
-
42
- return data;
43
- };
44
- /**
45
- * get plugin list from store
46
- */
47
- getPluginList = async (): Promise<LobeChatPluginsMarketIndex> => {
8
+ getToolList = async (): Promise<DiscoverPlugintem[]> => {
48
9
  const locale = globalHelpers.getCurrentLanguage();
49
10
 
50
11
  const res = await fetch(`${API_ENDPOINTS.pluginStore}?locale=${locale}`);
51
12
 
52
- return res.json();
53
- };
54
-
55
- getPluginManifest = async (
56
- url?: string,
57
- useProxy: boolean = false,
58
- ): Promise<LobeChatPluginManifest> => {
59
- // 1. valid plugin
60
- if (!url) {
61
- throw new TypeError('noManifest');
62
- }
63
-
64
- // 2. 发送请求
13
+ const json = await res.json();
65
14
 
66
- let data = await this._fetchJSON<LobeChatPluginManifest>(url, useProxy);
67
-
68
- // @ts-ignore
69
- // if there is a description_for_model, it is an OpenAI plugin
70
- // we need convert to lobe plugin
71
- if (data['description_for_model']) {
72
- data = this.convertOpenAIManifestToLobeManifest(data as any);
73
- }
74
-
75
- // 3. 校验插件文件格式规范
76
- const parser = pluginManifestSchema.safeParse(data);
77
-
78
- if (!parser.success) {
79
- throw new TypeError('manifestInvalid', { cause: parser.error });
80
- }
81
-
82
- // 4. if exist OpenAPI api, merge the OpenAPIs to api
83
- if (parser.data.openapi) {
84
- const openapiJson = await this._fetchJSON(parser.data.openapi, useProxy);
85
-
86
- try {
87
- const { OpenAPIConvertor } = await import('@lobehub/chat-plugin-sdk/openapi');
88
-
89
- const convertor = new OpenAPIConvertor(openapiJson);
90
- const openAPIs = await convertor.convertOpenAPIToPluginSchema();
91
- data.api = [...data.api, ...openAPIs];
92
-
93
- data.settings = await convertor.convertAuthToSettingsSchema(data.settings);
94
- } catch (error) {
95
- throw new TypeError('openAPIInvalid', { cause: error });
96
- }
97
- }
98
-
99
- return data;
15
+ return json.plugins;
100
16
  };
101
17
 
102
- private convertOpenAIManifestToLobeManifest = (
103
- data: OpenAIPluginManifest,
104
- ): LobeChatPluginManifest => {
105
- const manifest: LobeChatPluginManifest = {
106
- api: [],
107
- homepage: data.legal_info_url,
108
- identifier: data.name_for_model,
109
- meta: {
110
- avatar: data.logo_url,
111
- description: data.description_for_human,
112
- title: data.name_for_human,
113
- },
114
- openapi: data.api.url,
115
- systemRole: data.description_for_model,
116
- type: 'default',
117
- version: '1',
118
- };
119
- switch (data.auth.type) {
120
- case 'none': {
121
- break;
122
- }
123
- case 'service_http': {
124
- manifest.settings = {
125
- properties: {
126
- apiAuthKey: {
127
- default: data.auth.verification_tokens['openai'],
128
- description: 'API Key',
129
- format: 'password',
130
- title: 'API Key',
131
- type: 'string',
132
- },
133
- },
134
- type: 'object',
135
- };
136
- break;
137
- }
138
- }
139
-
140
- return manifest;
141
- };
18
+ getToolManifest = getToolManifest;
19
+ convertOpenAIManifestToLobeManifest = convertOpenAIManifestToLobeManifest;
142
20
  }
143
21
 
144
22
  export const toolService = new ToolService();
@@ -33,6 +33,118 @@ afterEach(() => {
33
33
  });
34
34
 
35
35
  describe('ChatPluginAction', () => {
36
+ describe('summaryPluginContent', () => {
37
+ it('should summarize plugin content', async () => {
38
+ const messageId = 'message-id';
39
+ const toolMessage = {
40
+ id: messageId,
41
+ role: 'tool',
42
+ content: 'Tool content to summarize',
43
+ } as ChatMessage;
44
+
45
+ const internal_coreProcessMessageMock = vi.fn();
46
+
47
+ act(() => {
48
+ useChatStore.setState({
49
+ activeId: 'session-id',
50
+ messagesMap: { [messageMapKey('session-id')]: [toolMessage] },
51
+ internal_coreProcessMessage: internal_coreProcessMessageMock,
52
+ });
53
+ });
54
+
55
+ const { result } = renderHook(() => useChatStore());
56
+
57
+ await act(async () => {
58
+ await result.current.summaryPluginContent(messageId);
59
+ });
60
+
61
+ expect(internal_coreProcessMessageMock).toHaveBeenCalledWith(
62
+ [
63
+ {
64
+ role: 'assistant',
65
+ content: '作为一名总结专家,请结合以上系统提示词,将以下内容进行总结:',
66
+ },
67
+ {
68
+ ...toolMessage,
69
+ meta: {
70
+ avatar: '🤯',
71
+ backgroundColor: 'rgba(0,0,0,0)',
72
+ description: undefined,
73
+ title: undefined,
74
+ },
75
+ content: toolMessage.content,
76
+ role: 'assistant',
77
+ name: undefined,
78
+ tool_call_id: undefined,
79
+ },
80
+ ],
81
+ messageId,
82
+ );
83
+ });
84
+
85
+ it('should not summarize non-tool messages', async () => {
86
+ const messageId = 'message-id';
87
+ const nonToolMessage = {
88
+ id: messageId,
89
+ role: 'user',
90
+ content: 'User message',
91
+ } as ChatMessage;
92
+
93
+ const internal_coreProcessMessageMock = vi.fn();
94
+
95
+ act(() => {
96
+ useChatStore.setState({
97
+ activeId: 'session-id',
98
+ messagesMap: { [messageMapKey('session-id')]: [nonToolMessage] },
99
+ internal_coreProcessMessage: internal_coreProcessMessageMock,
100
+ });
101
+ });
102
+
103
+ const { result } = renderHook(() => useChatStore());
104
+
105
+ await act(async () => {
106
+ await result.current.summaryPluginContent(messageId);
107
+ });
108
+
109
+ expect(internal_coreProcessMessageMock).not.toHaveBeenCalled();
110
+ });
111
+ });
112
+
113
+ describe('internal_togglePluginApiCalling', () => {
114
+ it('should toggle plugin API calling state', () => {
115
+ const internal_toggleLoadingArraysMock = vi.fn();
116
+
117
+ act(() => {
118
+ useChatStore.setState({
119
+ internal_toggleLoadingArrays: internal_toggleLoadingArraysMock,
120
+ });
121
+ });
122
+
123
+ const { result } = renderHook(() => useChatStore());
124
+
125
+ const messageId = 'message-id';
126
+ const action = 'test-action';
127
+
128
+ result.current.internal_togglePluginApiCalling(true, messageId, action);
129
+
130
+ expect(internal_toggleLoadingArraysMock).toHaveBeenCalledWith(
131
+ 'pluginApiLoadingIds',
132
+ true,
133
+ messageId,
134
+ action,
135
+ );
136
+
137
+ result.current.internal_togglePluginApiCalling(false, messageId, action);
138
+
139
+ expect(internal_toggleLoadingArraysMock).toHaveBeenCalledWith(
140
+ 'pluginApiLoadingIds',
141
+ false,
142
+ messageId,
143
+ action,
144
+ );
145
+ });
146
+ });
147
+
36
148
  describe('fillPluginMessageContent', () => {
37
149
  it('should update message content and trigger the ai message', async () => {
38
150
  // 设置模拟函数的返回值
@@ -445,9 +445,7 @@ export const chatPlugin: StateCreator<
445
445
  // if the apiName is md5, try to find the correct apiName in the plugins
446
446
  if (apiName.startsWith(PLUGIN_SCHEMA_API_MD5_PREFIX)) {
447
447
  const md5 = apiName.replace(PLUGIN_SCHEMA_API_MD5_PREFIX, '');
448
- const manifest = pluginSelectors.getPluginManifestById(identifier)(
449
- useToolStore.getState(),
450
- );
448
+ const manifest = pluginSelectors.getToolManifestById(identifier)(useToolStore.getState());
451
449
 
452
450
  const api = manifest?.api.find((api) => Md5.hashStr(api.name).toString() === md5);
453
451
  if (api) {
@@ -5,8 +5,8 @@ import { AsyncLocalStorage } from '@/utils/localStorage';
5
5
 
6
6
  export enum SidebarTabKey {
7
7
  Chat = 'chat',
8
+ Discover = 'discover',
8
9
  Files = 'files',
9
- Market = 'market',
10
10
  Me = 'me',
11
11
  Setting = 'settings',
12
12
  }
@@ -154,7 +154,7 @@ describe('toolSelectors', () => {
154
154
  });
155
155
  });
156
156
 
157
- describe('getPluginManifestLoadingStatus', () => {
157
+ describe('getToolManifestLoadingStatus', () => {
158
158
  it('should return "loading" if the plugin manifest is being loaded', () => {
159
159
  const result = toolSelectors.getManifestLoadingStatus('plugin-2')(mockState);
160
160
  expect(result).toBe('loading');
@@ -21,7 +21,7 @@ vi.mock('@/services/plugin', () => ({
21
21
 
22
22
  vi.mock('@/services/tool', () => ({
23
23
  toolService: {
24
- getPluginManifest: vi.fn(),
24
+ getToolManifest: vi.fn(),
25
25
  },
26
26
  }));
27
27
 
@@ -42,7 +42,7 @@ export const createCustomPluginSlice: StateCreator<
42
42
  const { refreshPlugins, updateInstallLoadingState } = get();
43
43
  try {
44
44
  updateInstallLoadingState(id, true);
45
- const manifest = await toolService.getPluginManifest(
45
+ const manifest = await toolService.getToolManifest(
46
46
  plugin.customParams?.manifestUrl,
47
47
  plugin.customParams?.useProxy,
48
48
  );
@@ -61,7 +61,7 @@ export const createPluginSlice: StateCreator<
61
61
  },
62
62
  useCheckPluginsIsInstalled: (plugins) => useSWR(plugins, get().checkPluginsIsInstalled),
63
63
  validatePluginSettings: async (identifier) => {
64
- const manifest = pluginSelectors.getPluginManifestById(identifier)(get());
64
+ const manifest = pluginSelectors.getToolManifestById(identifier)(get());
65
65
  if (!manifest || !manifest.settings) return;
66
66
  const settings = pluginSelectors.getPluginSettingsById(identifier)(get());
67
67
 
@@ -58,9 +58,9 @@ const mockState = {
58
58
  } as ToolStoreState;
59
59
 
60
60
  describe('pluginSelectors', () => {
61
- describe('getPluginManifestById', () => {
62
- it('getPluginManifestById should return the correct manifest', () => {
63
- const result = pluginSelectors.getPluginManifestById('plugin-1')(mockState);
61
+ describe('getToolManifestById', () => {
62
+ it('getToolManifestById should return the correct manifest', () => {
63
+ const result = pluginSelectors.getToolManifestById('plugin-1')(mockState);
64
64
  expect(result).toEqual(mockState.installedPlugins[0].manifest);
65
65
  });
66
66
  });
@@ -27,7 +27,7 @@ const getCustomPluginById = (id: string) => (s: ToolStoreState) =>
27
27
  | LobeToolCustomPlugin
28
28
  | undefined;
29
29
 
30
- const getPluginManifestById = (id: string) => (s: ToolStoreState) =>
30
+ const getToolManifestById = (id: string) => (s: ToolStoreState) =>
31
31
  getInstalledPluginById(id)(s)?.manifest;
32
32
 
33
33
  const getPluginSettingsById = (id: string) => (s: ToolStoreState) =>
@@ -59,7 +59,7 @@ const installedCustomPluginMetaList = (s: ToolStoreState) =>
59
59
  installedPluginMetaList(s).filter((p) => p.type === 'customPlugin');
60
60
 
61
61
  const isPluginHasUI = (id: string) => (s: ToolStoreState) => {
62
- const plugin = getPluginManifestById(id)(s);
62
+ const plugin = getToolManifestById(id)(s);
63
63
 
64
64
  return !!plugin?.ui;
65
65
  };
@@ -67,9 +67,9 @@ const isPluginHasUI = (id: string) => (s: ToolStoreState) => {
67
67
  export const pluginSelectors = {
68
68
  getCustomPluginById,
69
69
  getInstalledPluginById,
70
- getPluginManifestById,
71
70
  getPluginMetaById,
72
71
  getPluginSettingsById,
72
+ getToolManifestById,
73
73
  installedCustomPluginMetaList,
74
74
  installedPluginManifestList,
75
75
  installedPluginMetaList,
@@ -15,7 +15,7 @@ vi.mock('@/components/AntdStaticMethods', () => ({
15
15
  error: vi.fn(),
16
16
  },
17
17
  }));
18
- // Mock the pluginService.getPluginList method
18
+ // Mock the pluginService.getToolList method
19
19
  vi.mock('@/services/plugin', () => ({
20
20
  pluginService: {
21
21
  uninstallPlugin: vi.fn(),
@@ -25,8 +25,8 @@ vi.mock('@/services/plugin', () => ({
25
25
 
26
26
  vi.mock('@/services/tool', () => ({
27
27
  toolService: {
28
- getPluginManifest: vi.fn(),
29
- getPluginList: vi.fn(),
28
+ getToolManifest: vi.fn(),
29
+ getToolList: vi.fn(),
30
30
  },
31
31
  }));
32
32
 
@@ -102,8 +102,8 @@ describe('useToolStore:pluginStore', () => {
102
102
  describe('loadPluginStore', () => {
103
103
  it('should load plugin list and update state', async () => {
104
104
  // Given
105
- const pluginListMock = { plugins: [{ identifier: 'plugin1' }, { identifier: 'plugin2' }] };
106
- (toolService.getPluginList as Mock).mockResolvedValue(pluginListMock);
105
+ const pluginListMock = [{ identifier: 'plugin1' }, { identifier: 'plugin2' }];
106
+ (toolService.getToolList as Mock).mockResolvedValue(pluginListMock);
107
107
 
108
108
  // When
109
109
  let pluginList;
@@ -112,15 +112,15 @@ describe('useToolStore:pluginStore', () => {
112
112
  });
113
113
 
114
114
  // Then
115
- expect(toolService.getPluginList).toHaveBeenCalled();
115
+ expect(toolService.getToolList).toHaveBeenCalled();
116
116
  expect(pluginList).toEqual(pluginListMock);
117
- expect(useToolStore.getState().pluginStoreList).toEqual(pluginListMock.plugins);
117
+ expect(useToolStore.getState().pluginStoreList).toEqual(pluginListMock);
118
118
  });
119
119
 
120
120
  it('should handle errors when loading plugin list', async () => {
121
121
  // Given
122
122
  const error = new Error('Failed to load plugin list');
123
- (toolService.getPluginList as Mock).mockRejectedValue(error);
123
+ (toolService.getToolList as Mock).mockRejectedValue(error);
124
124
 
125
125
  // When
126
126
  let pluginList;
@@ -134,7 +134,7 @@ describe('useToolStore:pluginStore', () => {
134
134
  }
135
135
 
136
136
  // Then
137
- expect(toolService.getPluginList).toHaveBeenCalled();
137
+ expect(toolService.getToolList).toHaveBeenCalled();
138
138
  expect(errorOccurred).toBe(true);
139
139
  expect(pluginList).toBeUndefined();
140
140
  // Ensure the state is not updated with an undefined value
@@ -145,7 +145,7 @@ describe('useToolStore:pluginStore', () => {
145
145
  describe('useFetchPluginStore', () => {
146
146
  it('should use SWR to fetch plugin store', async () => {
147
147
  // Given
148
- const pluginListMock = { plugins: [{ identifier: 'plugin1' }, { identifier: 'plugin2' }] };
148
+ const pluginListMock = [{ identifier: 'plugin1' }, { identifier: 'plugin2' }];
149
149
  (useSWR as Mock).mockReturnValue({
150
150
  data: pluginListMock,
151
151
  error: null,
@@ -157,10 +157,7 @@ describe('useToolStore:pluginStore', () => {
157
157
 
158
158
  // Then
159
159
  expect(useSWR).toHaveBeenCalledWith('loadPluginStore', expect.any(Function), {
160
- fallbackData: {
161
- plugins: [],
162
- schemaVersion: 1,
163
- },
160
+ fallbackData: [],
164
161
  revalidateOnFocus: false,
165
162
  suspense: true,
166
163
  });
@@ -183,10 +180,7 @@ describe('useToolStore:pluginStore', () => {
183
180
 
184
181
  // Then
185
182
  expect(useSWR).toHaveBeenCalledWith('loadPluginStore', expect.any(Function), {
186
- fallbackData: {
187
- plugins: [],
188
- schemaVersion: 1,
189
- },
183
+ fallbackData: [],
190
184
  revalidateOnFocus: false,
191
185
  suspense: true,
192
186
  });
@@ -244,14 +238,14 @@ describe('useToolStore:pluginStore', () => {
244
238
  },
245
239
  version: '1',
246
240
  };
247
- (toolService.getPluginManifest as Mock).mockResolvedValue(pluginManifestMock);
241
+ (toolService.getToolManifest as Mock).mockResolvedValue(pluginManifestMock);
248
242
 
249
243
  await act(async () => {
250
244
  await useToolStore.getState().installPlugin(pluginIdentifier);
251
245
  });
252
246
 
253
247
  // Then
254
- expect(toolService.getPluginManifest).toHaveBeenCalled();
248
+ expect(toolService.getToolManifest).toHaveBeenCalled();
255
249
  expect(notification.error).not.toHaveBeenCalled();
256
250
  expect(updateInstallLoadingStateMock).toHaveBeenCalledTimes(2);
257
251
  expect(pluginService.installPlugin).toHaveBeenCalledWith({
@@ -273,7 +267,7 @@ describe('useToolStore:pluginStore', () => {
273
267
  const error = new TypeError('noManifest');
274
268
 
275
269
  // Mock necessary modules and functions
276
- (toolService.getPluginManifest as Mock).mockRejectedValue(error);
270
+ (toolService.getToolManifest as Mock).mockRejectedValue(error);
277
271
 
278
272
  useToolStore.setState({
279
273
  pluginStoreList: [
@@ -317,7 +311,7 @@ describe('useToolStore:pluginStore', () => {
317
311
 
318
312
  const plugins = ['plugin1', 'plugin2'];
319
313
 
320
- (toolService.getPluginManifest as Mock).mockResolvedValue(pluginManifestMock);
314
+ (toolService.getToolManifest as Mock).mockResolvedValue(pluginManifestMock);
321
315
 
322
316
  // When
323
317
  await act(async () => {
@@ -1,4 +1,4 @@
1
- import { LobeChatPluginsMarketIndex } from '@lobehub/chat-plugin-sdk';
1
+ import { LobeChatPluginMeta } from '@lobehub/chat-plugin-sdk';
2
2
  import { t } from 'i18next';
3
3
  import { produce } from 'immer';
4
4
  import useSWR, { SWRResponse, mutate } from 'swr';
@@ -22,13 +22,13 @@ const INSTALLED_PLUGINS = 'loadInstalledPlugins';
22
22
  export interface PluginStoreAction {
23
23
  installPlugin: (identifier: string, type?: 'plugin' | 'customPlugin') => Promise<void>;
24
24
  installPlugins: (plugins: string[]) => Promise<void>;
25
- loadPluginStore: () => Promise<LobeChatPluginsMarketIndex>;
25
+ loadPluginStore: () => Promise<LobeChatPluginMeta[]>;
26
26
  refreshPlugins: () => Promise<void>;
27
27
  uninstallPlugin: (identifier: string) => Promise<void>;
28
28
 
29
29
  updateInstallLoadingState: (key: string, value: boolean | undefined) => void;
30
30
  useFetchInstalledPlugins: () => SWRResponse<LobeTool[]>;
31
- useFetchPluginStore: () => SWRResponse<LobeChatPluginsMarketIndex>;
31
+ useFetchPluginStore: () => SWRResponse<LobeChatPluginMeta[]>;
32
32
  }
33
33
 
34
34
  export const createPluginStoreSlice: StateCreator<
@@ -44,7 +44,7 @@ export const createPluginStoreSlice: StateCreator<
44
44
  const { updateInstallLoadingState, refreshPlugins } = get();
45
45
  try {
46
46
  updateInstallLoadingState(name, true);
47
- const data = await toolService.getPluginManifest(plugin.manifest);
47
+ const data = await toolService.getToolManifest(plugin.manifest);
48
48
 
49
49
  // 4. 存储 manifest 信息
50
50
  await pluginService.installPlugin({ identifier: plugin.identifier, manifest: data, type });
@@ -68,9 +68,9 @@ export const createPluginStoreSlice: StateCreator<
68
68
  await Promise.all(plugins.map((identifier) => installPlugin(identifier)));
69
69
  },
70
70
  loadPluginStore: async () => {
71
- const pluginMarketIndex = await toolService.getPluginList();
71
+ const pluginMarketIndex = await toolService.getToolList();
72
72
 
73
- set({ pluginStoreList: pluginMarketIndex.plugins }, false, n('loadPluginList'));
73
+ set({ pluginStoreList: pluginMarketIndex }, false, n('loadPluginList'));
74
74
 
75
75
  return pluginMarketIndex;
76
76
  },
@@ -104,8 +104,8 @@ export const createPluginStoreSlice: StateCreator<
104
104
  suspense: true,
105
105
  }),
106
106
  useFetchPluginStore: () =>
107
- useSWR<LobeChatPluginsMarketIndex>('loadPluginStore', get().loadPluginStore, {
108
- fallbackData: { plugins: [], schemaVersion: 1 },
107
+ useSWR<LobeChatPluginMeta[]>('loadPluginStore', get().loadPluginStore, {
108
+ fallbackData: [],
109
109
  revalidateOnFocus: false,
110
110
  suspense: true,
111
111
  }),