@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
@@ -1,12 +0,0 @@
1
- import { isMobileDevice } from '@/utils/responsive';
2
-
3
- import AgentDetailContent from './features/AgentDetailContent';
4
-
5
- const Detail = () => {
6
- const mobile = isMobileDevice();
7
- return <AgentDetailContent mobile={mobile} />;
8
- };
9
-
10
- Detail.displayName = 'AgentDetail';
11
-
12
- export default Detail;
@@ -1,73 +0,0 @@
1
- 'use client';
2
-
3
- import { Markdown, TabsNav } from '@lobehub/ui';
4
- import { memo, useState } from 'react';
5
- import { useTranslation } from 'react-i18next';
6
- import { Flexbox } from 'react-layout-kit';
7
-
8
- import Banner from '@/app/(main)/market/@detail/features/Banner';
9
- import { useMarketStore } from '@/store/market';
10
-
11
- import Comment from './Comment';
12
- import Header from './Header';
13
- import Loading from './Loading';
14
- import TokenTag from './TokenTag';
15
-
16
- enum InfoTabs {
17
- comment = 'comment',
18
- prompt = 'prompt',
19
- }
20
-
21
- const AgentDetailContent = memo<{ mobile?: boolean }>(({ mobile }) => {
22
- const [useFetchAgent, currentIdentifier] = useMarketStore((s) => [
23
- s.useFetchAgent,
24
- s.currentIdentifier,
25
- ]);
26
- const { t } = useTranslation('market');
27
- const [tab, setTab] = useState<string>(InfoTabs.prompt);
28
- const { data, isLoading } = useFetchAgent(currentIdentifier);
29
-
30
- if (isLoading || !data?.meta) return <Loading />;
31
-
32
- const { config, meta, identifier } = data;
33
- const { systemRole } = config;
34
-
35
- return (
36
- <>
37
- <Banner avatar={meta.avatar} backgroundColor={meta.backgroundColor} mobile={mobile} />
38
- <Header />
39
- <Flexbox align={'center'}>
40
- <TabsNav
41
- activeKey={tab}
42
- items={[
43
- {
44
- key: InfoTabs.prompt,
45
- label: (
46
- <Flexbox align={'center'} gap={8} horizontal>
47
- {t('sidebar.prompt')} <TokenTag systemRole={systemRole} />
48
- </Flexbox>
49
- ),
50
- },
51
- {
52
- key: InfoTabs.comment,
53
- label: t('sidebar.comment'),
54
- },
55
- ]}
56
- onChange={setTab}
57
- style={{ paddingTop: 8 }}
58
- variant={'compact'}
59
- />
60
- </Flexbox>
61
- <Flexbox style={{ padding: 16 }}>
62
- {tab === InfoTabs.prompt && (
63
- <Markdown fullFeaturedCodeBlock variant={'chat'}>
64
- {systemRole}
65
- </Markdown>
66
- )}
67
- {tab === InfoTabs.comment && <Comment identifier={identifier} />}
68
- </Flexbox>
69
- </>
70
- );
71
- });
72
-
73
- export default AgentDetailContent;
@@ -1,46 +0,0 @@
1
- import { Avatar } from '@lobehub/ui';
2
- import { Skeleton } from 'antd';
3
- import { useTheme } from 'antd-style';
4
- import { memo } from 'react';
5
- import { Center, Flexbox } from 'react-layout-kit';
6
-
7
- import AgentCardBanner from '../../features/AgentCard/AgentCardBanner';
8
-
9
- const Banner = memo<{
10
- avatar?: string;
11
- backgroundColor?: string;
12
- loading?: boolean;
13
- mobile?: boolean;
14
- }>(({ avatar, backgroundColor, mobile, loading }) => {
15
- const theme = useTheme();
16
-
17
- return (
18
- <Flexbox align={'center'}>
19
- <AgentCardBanner
20
- avatar={loading ? undefined : avatar}
21
- size={800}
22
- style={{ height: 120, marginBottom: -60 }}
23
- />
24
- <Center
25
- flex={'none'}
26
- height={120}
27
- style={{
28
- backgroundColor:
29
- backgroundColor || mobile ? theme.colorBgElevated : theme.colorBgContainer,
30
- borderRadius: '50%',
31
- overflow: 'hidden',
32
- zIndex: 2,
33
- }}
34
- width={120}
35
- >
36
- {loading ? (
37
- <Skeleton.Avatar active size={100} />
38
- ) : (
39
- <Avatar animation avatar={avatar} shape={'circle'} size={100} />
40
- )}
41
- </Center>
42
- </Flexbox>
43
- );
44
- });
45
-
46
- export default Banner;
@@ -1,16 +0,0 @@
1
- import { Giscus } from '@lobehub/ui';
2
- import { memo } from 'react';
3
-
4
- const Comment = memo<{ identifier: string }>(({ identifier }) => (
5
- <Giscus
6
- category="General"
7
- categoryId="DIC_kwDOKON5YM4CZNRJ"
8
- id="lobehub"
9
- mapping="specific"
10
- repo="lobehub/lobe-chat-agents"
11
- repoId="R_kgDOKON5YA"
12
- term={identifier}
13
- />
14
- ));
15
-
16
- export default Comment;
@@ -1,81 +0,0 @@
1
- import { Tag } from '@lobehub/ui';
2
- import { App, Button, Typography } from 'antd';
3
- import isEqual from 'fast-deep-equal';
4
- import { startCase } from 'lodash-es';
5
- import { useRouter } from 'next/navigation';
6
- import { memo, useState } from 'react';
7
- import { useTranslation } from 'react-i18next';
8
- import { Center, Flexbox } from 'react-layout-kit';
9
-
10
- import { SESSION_CHAT_URL } from '@/const/url';
11
- import { agentMarketSelectors, useMarketStore } from '@/store/market';
12
- import { useServerConfigStore } from '@/store/serverConfig';
13
- import { useSessionStore } from '@/store/session';
14
-
15
- import { useStyles } from './style';
16
-
17
- const { Link } = Typography;
18
-
19
- const Header = memo(() => {
20
- const setSearchKeywords = useMarketStore((s) => s.setSearchKeywords);
21
- const router = useRouter();
22
- const { t } = useTranslation('market');
23
- const { styles } = useStyles();
24
- const createSession = useSessionStore((s) => s.createSession);
25
- const agentItem = useMarketStore(agentMarketSelectors.currentAgentItem, isEqual);
26
- const [isLoading, setIsLoading] = useState(false);
27
- const { message } = App.useApp();
28
-
29
- const { meta, createAt, author, homepage, config } = agentItem;
30
- const { title, description, tags } = meta;
31
-
32
- const isMobile = useServerConfigStore((s) => s.isMobile);
33
-
34
- const handleAddAgentAndConverse = async () => {
35
- if (!agentItem) return;
36
-
37
- setIsLoading(true);
38
- const session = await createSession({ config, meta });
39
- setIsLoading(false);
40
- message.success(t('addAgentSuccess'));
41
- router.push(SESSION_CHAT_URL(session, isMobile));
42
- };
43
-
44
- const handleAddAgent = async () => {
45
- if (!agentItem) return;
46
- setIsLoading(true);
47
- createSession({ config, meta }, false);
48
- message.success(t('addAgentSuccess'));
49
- setIsLoading(false);
50
- };
51
-
52
- return (
53
- <Center className={styles.container} gap={16}>
54
- <h2 className={styles.title}>{title}</h2>
55
- <Center gap={6} horizontal style={{ flexWrap: 'wrap' }}>
56
- {(tags as string[]).map((tag: string, index) => (
57
- <Tag key={index} onClick={() => setSearchKeywords(tag)} style={{ margin: 0 }}>
58
- {startCase(tag).trim()}
59
- </Tag>
60
- ))}
61
- </Center>
62
- <div className={styles.desc}>{description}</div>
63
- <Button block loading={isLoading} onClick={handleAddAgentAndConverse} type={'primary'}>
64
- {t('addAgentAndConverse')}
65
- </Button>
66
- <Button block loading={isLoading} onClick={handleAddAgent}>
67
- {t('addAgent')}
68
- </Button>
69
- <Flexbox align={'center'} gap={12} horizontal>
70
- <Link aria-label={author} className={styles.author} href={homepage} target={'_blank'}>
71
- @{author}
72
- </Link>
73
- <time className={styles.time} dateTime={new Date(createAt).toISOString()}>
74
- {createAt}
75
- </time>
76
- </Flexbox>
77
- </Center>
78
- );
79
- });
80
-
81
- export default Header;
@@ -1,63 +0,0 @@
1
- import { Skeleton } from 'antd';
2
- import { memo } from 'react';
3
- import { Center, Flexbox } from 'react-layout-kit';
4
-
5
- import Banner from './Banner';
6
- import { useStyles } from './style';
7
-
8
- const Loading = memo(() => {
9
- const { styles } = useStyles();
10
- return (
11
- <>
12
- <Banner loading />
13
- <Center className={styles.container} gap={16}>
14
- <Skeleton
15
- active
16
- className={styles.loading}
17
- paragraph={{
18
- rows: 2,
19
- style: {
20
- alignItems: 'center',
21
- display: 'flex',
22
- flexDirection: 'column',
23
- },
24
- width: ['60%', '80%'],
25
- }}
26
- title={{
27
- style: {
28
- alignSelf: 'center',
29
- marginBottom: 0,
30
- },
31
- width: '50%',
32
- }}
33
- />
34
- <Skeleton.Button active block />
35
- <Skeleton.Button active block />
36
- <Skeleton
37
- active
38
- className={styles.loading}
39
- paragraph={{
40
- rows: 1,
41
- style: {
42
- alignItems: 'center',
43
- display: 'flex',
44
- flexDirection: 'column',
45
- marginBottom: 0,
46
- },
47
- width: ['20%'],
48
- }}
49
- title={false}
50
- />
51
- </Center>
52
- <Center gap={16} style={{ padding: 16 }}>
53
- <Flexbox gap={16} horizontal>
54
- <Skeleton.Button active size={'small'} />
55
- <Skeleton.Button active size={'small'} />
56
- </Flexbox>
57
- <Skeleton active paragraph={{ rows: 6 }} title={false} />
58
- </Center>
59
- </>
60
- );
61
- });
62
-
63
- export default Loading;
@@ -1,27 +0,0 @@
1
- import { createStyles } from 'antd-style';
2
- import { memo } from 'react';
3
-
4
- import { useTokenCount } from '@/hooks/useTokenCount';
5
-
6
- const useStyles = createStyles(
7
- ({ css, token }) => css`
8
- padding-block: 2px;
9
- padding-inline: 5px;
10
-
11
- font-size: 12px;
12
- line-height: 1;
13
- color: ${token.colorBgLayout};
14
-
15
- background: ${token.colorText};
16
- border-radius: 12px;
17
- `,
18
- );
19
-
20
- const TokenTag = memo<{ systemRole: string }>(({ systemRole }) => {
21
- const { styles } = useStyles();
22
- const value = useTokenCount(systemRole);
23
-
24
- return <div className={styles}>{value}</div>;
25
- });
26
-
27
- export default TokenTag;
@@ -1,32 +0,0 @@
1
- import { createStyles } from 'antd-style';
2
-
3
- export const useStyles = createStyles(({ css, token, prefixCls }) => ({
4
- author: css`
5
- font-size: 12px;
6
- `,
7
- container: css`
8
- position: relative;
9
- padding-block: 16px 24px;
10
- padding-inline: 16px;
11
- border-block-end: 1px solid ${token.colorBorderSecondary};
12
- `,
13
- desc: css`
14
- color: ${token.colorTextSecondary};
15
- text-align: center;
16
- `,
17
- loading: css`
18
- .${prefixCls}-skeleton-content {
19
- display: flex;
20
- flex-direction: column;
21
- }
22
- `,
23
- time: css`
24
- font-size: 12px;
25
- color: ${token.colorTextDescription};
26
- `,
27
- title: css`
28
- margin-block-end: 0;
29
- font-weight: bold;
30
- text-align: center;
31
- `,
32
- }));
@@ -1,84 +0,0 @@
1
- 'use client';
2
-
3
- import { DraggablePanel, DraggablePanelBody, DraggablePanelContainer } from '@lobehub/ui';
4
- import { createStyles, useResponsive } from 'antd-style';
5
- import { PropsWithChildren, memo, useCallback, useState } from 'react';
6
- import { Flexbox } from 'react-layout-kit';
7
-
8
- import SafeSpacing from '@/components/SafeSpacing';
9
- import { MARKET_SIDEBAR_WIDTH } from '@/const/layoutTokens';
10
- import { agentMarketSelectors, useMarketStore } from '@/store/market';
11
-
12
- const useStyles = createStyles(({ css, token, stylish }) => ({
13
- content: css`
14
- display: flex;
15
- flex-direction: column;
16
- height: 100% !important;
17
- `,
18
- drawer: css`
19
- background: ${token.colorBgContainer};
20
- `,
21
- header: css`
22
- border-block-end: 1px solid ${token.colorBorder};
23
- `,
24
- noScrollbar: stylish.noScrollbar,
25
- }));
26
-
27
- const DetailSidebar = memo<PropsWithChildren>(({ children }) => {
28
- const { styles } = useStyles();
29
- const { md = true } = useResponsive();
30
- const [tempId, setTempId] = useState<string>('');
31
- const [showAgentSidebar, deactivateAgent, activateAgent] = useMarketStore((s) => [
32
- agentMarketSelectors.showSideBar(s),
33
- s.deactivateAgent,
34
- s.activateAgent,
35
- ]);
36
-
37
- const handleExpandChange = useCallback(
38
- (show: boolean) => {
39
- if (!show) {
40
- setTempId(useMarketStore.getState().currentIdentifier);
41
- deactivateAgent();
42
- } else if (tempId) {
43
- activateAgent(tempId);
44
- }
45
- },
46
- [deactivateAgent, activateAgent, tempId],
47
- );
48
-
49
- const minWidth = md ? MARKET_SIDEBAR_WIDTH : 350;
50
-
51
- return (
52
- <DraggablePanel
53
- className={styles.drawer}
54
- classNames={{
55
- content: styles.content,
56
- }}
57
- expand={showAgentSidebar}
58
- maxWidth={'80vw' as any}
59
- minWidth={minWidth}
60
- mode={md ? 'fixed' : 'float'}
61
- onExpandChange={handleExpandChange}
62
- placement={'right'}
63
- showHandlerWideArea={false}
64
- >
65
- <DraggablePanelContainer
66
- style={{
67
- flex: 'none',
68
- height: '100%',
69
- minWidth: minWidth,
70
- }}
71
- >
72
- {md && <SafeSpacing />}
73
- <DraggablePanelBody
74
- className={styles.noScrollbar}
75
- style={{ padding: 0, position: 'relative' }}
76
- >
77
- <Flexbox>{children}</Flexbox>
78
- </DraggablePanelBody>
79
- </DraggablePanelContainer>
80
- </DraggablePanel>
81
- );
82
- });
83
-
84
- export default DetailSidebar;
@@ -1,29 +0,0 @@
1
- 'use client';
2
-
3
- import { ChatHeader } from '@lobehub/ui';
4
- import { createStyles } from 'antd-style';
5
- import { memo } from 'react';
6
-
7
- import { ProductLogo } from '@/components/Branding';
8
-
9
- import ShareAgentButton from '../../features/ShareAgentButton';
10
-
11
- export const useStyles = createStyles(({ css, token }) => ({
12
- logo: css`
13
- color: ${token.colorText};
14
- fill: ${token.colorText};
15
- `,
16
- }));
17
-
18
- const Header = memo(() => {
19
- const { styles } = useStyles();
20
-
21
- return (
22
- <ChatHeader
23
- left={<ProductLogo className={styles.logo} extra={'Discover'} size={36} type={'text'} />}
24
- right={<ShareAgentButton />}
25
- />
26
- );
27
- });
28
-
29
- export default Header;
@@ -1,40 +0,0 @@
1
- 'use client';
2
-
3
- import { GridBackground } from '@lobehub/ui';
4
- import { createStyles } from 'antd-style';
5
- import { memo } from 'react';
6
- import { Center } from 'react-layout-kit';
7
-
8
- const useStyles = createStyles(({ css, responsive }) => ({
9
- background: css`
10
- width: 80%;
11
- margin-block: -60px -20px;
12
- margin-inline: 0;
13
-
14
- ${responsive.md} {
15
- display: none;
16
- }
17
- `,
18
- title: css`
19
- z-index: 2;
20
-
21
- margin-block-start: 24px;
22
-
23
- font-size: min(56px, 5vw);
24
- font-weight: 800;
25
- line-height: 1.2;
26
- text-align: center;
27
- `,
28
- }));
29
-
30
- const Hero = memo(() => {
31
- const { theme, styles } = useStyles();
32
- return (
33
- <Center>
34
- <h1 className={styles.title}>Find & Use The Best Assistants</h1>
35
- <GridBackground animation className={styles.background} colorFront={theme.colorText} random />
36
- </Center>
37
- );
38
- });
39
-
40
- export default Hero;
@@ -1,46 +0,0 @@
1
- import { Flexbox } from 'react-layout-kit';
2
-
3
- import SafeSpacing from '@/components/SafeSpacing';
4
- import { MAX_WIDTH } from '@/const/layoutTokens';
5
-
6
- import { LayoutProps } from '../type';
7
- import DetailSidebar from './DetailSidebar';
8
- import Header from './Header';
9
- import Hero from './Hero';
10
-
11
- const Layout = ({ children, detail }: LayoutProps) => {
12
- return (
13
- <>
14
- <Flexbox
15
- height={'100%'}
16
- id={'lobe-market-container'}
17
- style={{ position: 'relative' }}
18
- width={'100%'}
19
- >
20
- <Header />
21
- <Flexbox height={'100%'} horizontal style={{ position: 'relative' }} width={'100%'}>
22
- <Flexbox
23
- align={'center'}
24
- flex={1}
25
- padding={16}
26
- style={{ overflowX: 'hidden', overflowY: 'scroll', position: 'relative' }}
27
- >
28
- <SafeSpacing />
29
- <Flexbox gap={16} style={{ maxWidth: MAX_WIDTH, position: 'relative', width: '100%' }}>
30
- <Hero />
31
- {children}
32
- </Flexbox>
33
- </Flexbox>
34
- <DetailSidebar>{detail}</DetailSidebar>
35
- </Flexbox>
36
- </Flexbox>
37
- {/* ↓ cloud slot ↓ */}
38
-
39
- {/* ↑ cloud slot ↑ */}
40
- </>
41
- );
42
- };
43
-
44
- Layout.displayName = 'DesktopMarketLayout';
45
-
46
- export default Layout;
@@ -1,32 +0,0 @@
1
- 'use client';
2
-
3
- import { Modal } from '@lobehub/ui';
4
- import { PropsWithChildren, memo } from 'react';
5
- import { useTranslation } from 'react-i18next';
6
-
7
- import { agentMarketSelectors, useMarketStore } from '@/store/market';
8
-
9
- const DetailModal = memo<PropsWithChildren>(({ children }) => {
10
- const [showAgentSidebar, deactivateAgent] = useMarketStore((s) => [
11
- agentMarketSelectors.showSideBar(s),
12
- s.deactivateAgent,
13
- ]);
14
-
15
- const { t } = useTranslation('market');
16
-
17
- return (
18
- <Modal
19
- allowFullscreen
20
- onCancel={() => {
21
- deactivateAgent();
22
- }}
23
- open={showAgentSidebar}
24
- styles={{ body: { padding: 0 } }}
25
- title={t('sidebar.title')}
26
- >
27
- {children}
28
- </Modal>
29
- );
30
- });
31
-
32
- export default DetailModal;
@@ -1,20 +0,0 @@
1
- 'use client';
2
-
3
- import { MobileNavBar } from '@lobehub/ui';
4
- import { memo } from 'react';
5
-
6
- import { mobileHeaderSticky } from '@/styles/mobileHeader';
7
-
8
- import ShareAgentButton from '../../features/ShareAgentButton';
9
-
10
- const Header = memo(() => {
11
- return (
12
- <MobileNavBar
13
- center={<div style={{ fontSize: 20, fontWeight: 900 }}>Discover</div>}
14
- right={<ShareAgentButton mobile />}
15
- style={mobileHeaderSticky}
16
- />
17
- );
18
- });
19
-
20
- export default Header;
@@ -1,25 +0,0 @@
1
- import MobileContentLayout from '@/components/server/MobileNavLayout';
2
-
3
- import { LayoutProps } from '../type';
4
- import DetailModal from './DetailModal';
5
- import Header from './Header';
6
-
7
- const Layout = ({ children, detail }: LayoutProps) => {
8
- return (
9
- <>
10
- <MobileContentLayout
11
- gap={16}
12
- header={<Header />}
13
- style={{ paddingInline: 16, paddingTop: 8 }}
14
- withNav
15
- >
16
- {children}
17
- </MobileContentLayout>
18
- <DetailModal>{detail}</DetailModal>
19
- </>
20
- );
21
- };
22
-
23
- Layout.displayName = 'MobileMarketLayout';
24
-
25
- export default Layout;
@@ -1,6 +0,0 @@
1
- import { ReactNode } from 'react';
2
-
3
- export interface LayoutProps {
4
- children: ReactNode;
5
- detail: ReactNode;
6
- }