@lobehub/chat 1.17.6 → 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 (339) hide show
  1. package/CHANGELOG.md +58 -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/config/modelProviders/ollama.ts +0 -8
  252. package/src/const/discover.ts +63 -1
  253. package/src/features/Conversation/Error/PluginSettings.tsx +1 -1
  254. package/src/features/Conversation/Messages/Tool/Inspector/Settings.tsx +1 -1
  255. package/src/features/Conversation/components/InboxWelcome/AgentsSuggest.tsx +41 -24
  256. package/src/features/MobileTabBar/index.tsx +3 -3
  257. package/src/features/PluginDetailModal/APIs.tsx +1 -1
  258. package/src/features/PluginDevModal/UrlManifestForm.tsx +1 -1
  259. package/src/features/PluginStore/PluginItem/Action.tsx +1 -1
  260. package/src/features/PluginsUI/Render/DefaultType/index.tsx +1 -1
  261. package/src/features/PluginsUI/Render/StandaloneType/index.tsx +1 -1
  262. package/src/hooks/useInterceptingRoutes.ts +21 -1
  263. package/src/hooks/useShare.tsx +191 -0
  264. package/src/libs/agent-runtime/utils/streams/openai.test.ts +43 -0
  265. package/src/libs/agent-runtime/utils/streams/openai.ts +1 -1
  266. package/src/locales/create.ts +1 -1
  267. package/src/locales/default/common.ts +1 -1
  268. package/src/locales/default/discover.ts +205 -0
  269. package/src/locales/default/index.ts +6 -2
  270. package/src/locales/default/metadata.ts +23 -3
  271. package/src/locales/default/models.ts +15 -0
  272. package/src/locales/default/providers.ts +15 -0
  273. package/src/locales/default/welcome.ts +1 -1
  274. package/src/locales/resources.ts +2 -0
  275. package/src/server/ld.ts +85 -11
  276. package/src/server/metadata.ts +41 -3
  277. package/src/{app/api/market/AgentMarket.test.ts → server/modules/AssistantStore/index.test.ts} +15 -15
  278. package/src/{app/api/market/AgentMarket.ts → server/modules/AssistantStore/index.ts} +7 -3
  279. package/src/{app/api/plugin/store/Store.test.ts → server/modules/PluginStore/index.test.ts} +1 -1
  280. package/src/server/services/discover/index.ts +352 -0
  281. package/src/server/services/doc/index.tsx +40 -0
  282. package/src/server/translation.ts +11 -5
  283. package/src/services/__tests__/__snapshots__/tool.test.ts.snap +1 -1
  284. package/src/services/{_auth.test.ts → __tests__/_auth.test.ts} +1 -1
  285. package/src/services/__tests__/assistant.test.ts +82 -0
  286. package/src/services/__tests__/tool.test.ts +13 -13
  287. package/src/services/_url.ts +2 -2
  288. package/src/services/assistant.ts +30 -0
  289. package/src/services/chat.ts +1 -1
  290. package/src/services/tool.ts +7 -129
  291. package/src/store/chat/slices/plugin/action.test.ts +112 -0
  292. package/src/store/chat/slices/plugin/action.ts +1 -3
  293. package/src/store/global/initialState.ts +1 -1
  294. package/src/store/tool/selectors/tool.test.ts +1 -1
  295. package/src/store/tool/slices/customPlugin/action.test.ts +1 -1
  296. package/src/store/tool/slices/customPlugin/action.ts +1 -1
  297. package/src/store/tool/slices/plugin/action.ts +1 -1
  298. package/src/store/tool/slices/plugin/selectors.test.ts +3 -3
  299. package/src/store/tool/slices/plugin/selectors.ts +3 -3
  300. package/src/store/tool/slices/store/action.test.ts +16 -22
  301. package/src/store/tool/slices/store/action.ts +8 -8
  302. package/src/types/discover.ts +152 -0
  303. package/src/types/llm.ts +4 -2
  304. package/src/types/meta.ts +1 -0
  305. package/src/utils/format.test.ts +191 -112
  306. package/src/utils/format.ts +36 -0
  307. package/src/utils/toolManifest.ts +124 -0
  308. package/src/app/(main)/market/@detail/default.tsx +0 -12
  309. package/src/app/(main)/market/@detail/features/AgentDetailContent.tsx +0 -73
  310. package/src/app/(main)/market/@detail/features/Banner.tsx +0 -46
  311. package/src/app/(main)/market/@detail/features/Comment.tsx +0 -16
  312. package/src/app/(main)/market/@detail/features/Header.tsx +0 -81
  313. package/src/app/(main)/market/@detail/features/Loading.tsx +0 -63
  314. package/src/app/(main)/market/@detail/features/TokenTag.tsx +0 -27
  315. package/src/app/(main)/market/@detail/features/style.ts +0 -32
  316. package/src/app/(main)/market/_layout/Desktop/DetailSidebar.tsx +0 -84
  317. package/src/app/(main)/market/_layout/Desktop/Header.tsx +0 -29
  318. package/src/app/(main)/market/_layout/Desktop/Hero.tsx +0 -40
  319. package/src/app/(main)/market/_layout/Desktop/index.tsx +0 -46
  320. package/src/app/(main)/market/_layout/Mobile/DetailModal.tsx +0 -32
  321. package/src/app/(main)/market/_layout/Mobile/Header.tsx +0 -20
  322. package/src/app/(main)/market/_layout/Mobile/index.tsx +0 -25
  323. package/src/app/(main)/market/_layout/type.ts +0 -6
  324. package/src/app/(main)/market/features/AgentCard/index.tsx +0 -139
  325. package/src/app/(main)/market/features/AgentList.tsx +0 -103
  326. package/src/app/(main)/market/features/AgentSearchBar.tsx +0 -42
  327. package/src/app/(main)/market/features/TagList.tsx +0 -69
  328. package/src/app/(main)/market/loading.tsx +0 -15
  329. package/src/app/(main)/market/page.tsx +0 -44
  330. package/src/const/market.ts +0 -15
  331. package/src/locales/default/market.ts +0 -32
  332. package/src/services/market.ts +0 -22
  333. package/src/store/market/action.ts +0 -82
  334. package/src/store/market/index.ts +0 -3
  335. package/src/store/market/initialState.ts +0 -19
  336. package/src/store/market/selectors.ts +0 -38
  337. package/src/store/market/store.ts +0 -48
  338. package/src/types/market.ts +0 -20
  339. /package/src/{app/api/plugin/store/Store.ts → server/modules/PluginStore/index.ts} +0 -0
@@ -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
  }),
@@ -0,0 +1,152 @@
1
+ import { LobeChatPluginManifest } from '@lobehub/chat-plugin-sdk';
2
+ import { LobeChatPluginMeta, Meta } from '@lobehub/chat-plugin-sdk/lib/types/market';
3
+
4
+ import { ChatModelCard, ModelProviderCard } from '@/types/llm';
5
+ import { MetaData } from '@/types/meta';
6
+ import { LobeAgentSettings } from '@/types/session';
7
+
8
+ export enum AssistantCategory {
9
+ Academic = 'academic',
10
+ All = 'all',
11
+ Career = 'career',
12
+ CopyWriting = 'copywriting',
13
+ Design = 'design',
14
+ Education = 'education',
15
+ Emotions = 'emotions',
16
+ Entertainment = 'entertainment',
17
+ Games = 'games',
18
+ General = 'general',
19
+ Life = 'life',
20
+ Marketing = 'marketing',
21
+ Office = 'office',
22
+ Programming = 'programming',
23
+ Translation = 'translation',
24
+ }
25
+
26
+ export enum PluginCategory {
27
+ All = 'all',
28
+ GamingEntertainment = 'gaming-entertainment',
29
+ LifeStyle = 'lifestyle',
30
+ MediaGenerate = 'media-generate',
31
+ ScienceEducation = 'science-education',
32
+ Social = 'social',
33
+ StocksFinance = 'stocks-finance',
34
+ Tools = 'tools',
35
+ WebSearch = 'web-search',
36
+ }
37
+
38
+ export enum DiscoverTab {
39
+ Assistants = 'assistants',
40
+ Home = 'home',
41
+ Models = 'models',
42
+ Plugins = 'plugins',
43
+ Providers = 'providers',
44
+ }
45
+
46
+ // TODO 可能需要修改
47
+ export interface ExampleTopic {
48
+ description: string;
49
+ id: string;
50
+ title: string;
51
+ }
52
+
53
+ // TODO 服务端接口待补充
54
+ export interface DiscoverAssistantItem extends LobeAgentSettings {
55
+ author: string;
56
+ createdAt: string;
57
+ examples?: ExampleTopic[];
58
+ homepage: string;
59
+ identifier: string;
60
+ meta: MetaData & {
61
+ category?: AssistantCategory;
62
+ };
63
+ schemaVersion: 1;
64
+ socialData: {
65
+ conversations: number;
66
+ likes: number;
67
+ users: number;
68
+ };
69
+ suggestions: Omit<DiscoverAssistantItem, 'suggestions' | 'socialData' | 'config'>[];
70
+ }
71
+
72
+ export interface DiscoverModelItem {
73
+ createdAt: string;
74
+ identifier: string;
75
+ meta: Omit<ChatModelCard, 'displayName' | 'deploymentName'> & {
76
+ category?: string;
77
+ title: string;
78
+ };
79
+ providers?: string[];
80
+ socialData: {
81
+ conversations: number;
82
+ likes: number;
83
+ tokens: number;
84
+ };
85
+ suggestions: Omit<DiscoverModelItem, 'suggestions' | 'socialData' | 'providers'>[];
86
+ }
87
+
88
+ export interface DiscoverProviderItem {
89
+ createdAt: string;
90
+ identifier: string;
91
+ meta: Omit<ModelProviderCard, 'chatModels' | 'name'> & {
92
+ description?: string;
93
+ title: string;
94
+ };
95
+ models: string[];
96
+ socialData: {
97
+ conversations: number;
98
+ likes: number;
99
+ users: number;
100
+ };
101
+ suggestions: Omit<DiscoverProviderItem, 'suggestions' | 'socialData'>[];
102
+ }
103
+
104
+ // TODO 服务端接口待补充
105
+ export type DiscoverPlugintem = LobeChatPluginMeta & {
106
+ manifest: LobeChatPluginManifest;
107
+ meta: Meta & {
108
+ category?: PluginCategory;
109
+ };
110
+ socialData: {
111
+ called: number;
112
+ executionTime: number;
113
+ likes: number;
114
+ relatedAssistants: number;
115
+ successRate: number;
116
+ users: number;
117
+ };
118
+ suggestions: Omit<DiscoverPlugintem, 'suggestions' | 'socialData' | 'manifest'>[];
119
+ };
120
+
121
+ export enum SortBy {
122
+ MostLiked = 'liked',
123
+ MostUsed = 'used',
124
+ Newest = 'newest',
125
+ Oldest = 'oldest',
126
+ Recommended = 'recommended',
127
+ }
128
+
129
+ export enum TimePeriod {
130
+ All = 'all',
131
+ Day = 'day',
132
+ Month = 'month',
133
+ Week = 'week',
134
+ Year = 'year',
135
+ }
136
+
137
+ export enum AuthorRange {
138
+ Everyone = 'everyone',
139
+ Followed = 'followed',
140
+ }
141
+
142
+ export interface FilterBy {
143
+ author?: AuthorRange;
144
+ content?: number;
145
+ fc?: boolean;
146
+ knowledge?: boolean;
147
+ plugin?: boolean;
148
+ price?: number;
149
+ time?: TimePeriod;
150
+ token?: number;
151
+ vision?: boolean;
152
+ }
package/src/types/llm.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
2
 
3
+ export type ModelPriceCurrency = 'CNY' | 'USD';
4
+
3
5
  export interface ChatModelCard {
4
6
  /**
5
7
  * only used in azure
@@ -39,7 +41,7 @@ export interface ChatModelCard {
39
41
  * the currency of the pricing
40
42
  * @default USD
41
43
  */
42
- currency?: 'CNY' | 'USD';
44
+ currency?: ModelPriceCurrency;
43
45
  /**
44
46
  * the input pricing, e.g. $1 / 1M tokens
45
47
  */
@@ -128,7 +130,7 @@ export interface ModelProviderCard {
128
130
  /**
129
131
  * provider's website url
130
132
  */
131
- url?: string;
133
+ url: string;
132
134
  }
133
135
 
134
136
  // 语言模型的设置参数
package/src/types/meta.ts CHANGED
@@ -10,6 +10,7 @@ export const LobeMetaDataSchema = z.object({
10
10
  */
11
11
  backgroundColor: z.string().optional(),
12
12
  description: z.string().optional(),
13
+
13
14
  tags: z.array(z.string()).optional(),
14
15
  /**
15
16
  * 名称