@lobehub/chat 1.67.1 → 1.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/.env.example +4 -0
  2. package/CHANGELOG.md +58 -0
  3. package/Dockerfile +2 -0
  4. package/Dockerfile.database +2 -0
  5. package/README.md +3 -2
  6. package/README.zh-CN.md +1 -1
  7. package/changelog/v1.json +21 -0
  8. package/docs/self-hosting/advanced/auth.mdx +6 -5
  9. package/docs/self-hosting/advanced/auth.zh-CN.mdx +6 -5
  10. package/docs/self-hosting/environment-variables/model-provider.mdx +16 -0
  11. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +16 -0
  12. package/docs/usage/providers/ppio.mdx +57 -0
  13. package/docs/usage/providers/ppio.zh-CN.mdx +55 -0
  14. package/locales/ar/models.json +3 -0
  15. package/locales/ar/plugin.json +1 -1
  16. package/locales/bg-BG/models.json +3 -0
  17. package/locales/bg-BG/plugin.json +1 -1
  18. package/locales/de-DE/models.json +3 -0
  19. package/locales/de-DE/plugin.json +1 -1
  20. package/locales/en-US/models.json +3 -0
  21. package/locales/en-US/plugin.json +1 -1
  22. package/locales/en-US/providers.json +3 -0
  23. package/locales/es-ES/models.json +3 -0
  24. package/locales/es-ES/plugin.json +1 -1
  25. package/locales/fa-IR/models.json +3 -0
  26. package/locales/fa-IR/plugin.json +1 -1
  27. package/locales/fr-FR/models.json +3 -0
  28. package/locales/fr-FR/plugin.json +1 -1
  29. package/locales/it-IT/models.json +3 -0
  30. package/locales/it-IT/plugin.json +1 -1
  31. package/locales/ja-JP/models.json +3 -0
  32. package/locales/ja-JP/plugin.json +1 -1
  33. package/locales/ko-KR/models.json +3 -0
  34. package/locales/ko-KR/plugin.json +1 -1
  35. package/locales/nl-NL/models.json +3 -0
  36. package/locales/nl-NL/plugin.json +1 -1
  37. package/locales/pl-PL/models.json +3 -0
  38. package/locales/pl-PL/plugin.json +1 -1
  39. package/locales/pt-BR/models.json +3 -0
  40. package/locales/pt-BR/plugin.json +1 -1
  41. package/locales/ru-RU/models.json +3 -0
  42. package/locales/ru-RU/plugin.json +1 -1
  43. package/locales/tr-TR/models.json +3 -0
  44. package/locales/tr-TR/plugin.json +1 -1
  45. package/locales/vi-VN/models.json +3 -0
  46. package/locales/vi-VN/plugin.json +1 -1
  47. package/locales/zh-CN/models.json +3 -0
  48. package/locales/zh-CN/plugin.json +1 -1
  49. package/locales/zh-CN/providers.json +4 -0
  50. package/locales/zh-TW/models.json +3 -0
  51. package/locales/zh-TW/plugin.json +1 -1
  52. package/package.json +5 -5
  53. package/packages/web-crawler/src/__test__/crawler.test.ts +176 -0
  54. package/packages/web-crawler/src/crawler.ts +12 -6
  55. package/packages/web-crawler/src/type.ts +3 -0
  56. package/packages/web-crawler/src/urlRules.ts +11 -0
  57. package/packages/web-crawler/src/utils/appUrlRules.test.ts +76 -0
  58. package/packages/web-crawler/src/utils/appUrlRules.ts +3 -0
  59. package/src/app/[variants]/(main)/settings/llm/ProviderList/providers.tsx +2 -0
  60. package/src/config/aiModels/index.ts +3 -0
  61. package/src/config/aiModels/ppio.ts +276 -0
  62. package/src/config/llm.ts +6 -0
  63. package/src/config/modelProviders/index.ts +4 -0
  64. package/src/config/modelProviders/ppio.ts +249 -0
  65. package/src/libs/agent-runtime/AgentRuntime.ts +7 -0
  66. package/src/libs/agent-runtime/ppio/__snapshots__/index.test.ts.snap +26 -0
  67. package/src/libs/agent-runtime/ppio/fixtures/models.json +42 -0
  68. package/src/libs/agent-runtime/ppio/index.test.ts +264 -0
  69. package/src/libs/agent-runtime/ppio/index.ts +51 -0
  70. package/src/libs/agent-runtime/ppio/type.ts +12 -0
  71. package/src/libs/agent-runtime/types/type.ts +1 -0
  72. package/src/libs/agent-runtime/utils/anthropicHelpers.ts +2 -2
  73. package/src/locales/default/plugin.ts +1 -1
  74. package/src/server/routers/tools/__test__/search.test.ts +146 -0
  75. package/src/server/routers/tools/search.ts +1 -1
  76. package/src/store/chat/slices/builtinTool/actions/searXNG.test.ts +67 -0
  77. package/src/store/chat/slices/builtinTool/actions/searXNG.ts +2 -1
  78. package/src/store/tool/slices/builtin/selectors.test.ts +12 -0
  79. package/src/store/tool/slices/builtin/selectors.ts +4 -1
  80. package/src/tools/web-browsing/Portal/PageContent/index.tsx +13 -7
  81. package/src/tools/web-browsing/const.ts +2 -0
  82. package/src/types/user/settings/keyVaults.ts +1 -0
@@ -7,6 +7,7 @@ import { memo, useState } from 'react';
7
7
  import { useTranslation } from 'react-i18next';
8
8
  import { Flexbox } from 'react-layout-kit';
9
9
 
10
+ import { CRAWL_CONTENT_LIMITED_COUNT } from '@/tools/web-browsing/const';
10
11
  import { CrawlResult } from '@/types/tool/crawler';
11
12
 
12
13
  const useStyles = createStyles(({ token, css }) => {
@@ -84,8 +85,6 @@ interface PageContentProps {
84
85
  result?: CrawlResult;
85
86
  }
86
87
 
87
- const SLICED_LIMITED = 10_000;
88
-
89
88
  const PageContent = memo<PageContentProps>(({ result }) => {
90
89
  const { t } = useTranslation('plugin');
91
90
  const { styles } = useStyles();
@@ -164,19 +163,26 @@ const PageContent = memo<PageContentProps>(({ result }) => {
164
163
  />
165
164
  <CopyButton content={content} />
166
165
  </Flexbox>
167
- {content.length > SLICED_LIMITED && (
168
- <Alert message={t('search.crawPages.detail.tooLong')} variant={'pure'} />
166
+ {content.length > CRAWL_CONTENT_LIMITED_COUNT && (
167
+ <Alert
168
+ message={t('search.crawPages.detail.tooLong', {
169
+ characters: CRAWL_CONTENT_LIMITED_COUNT,
170
+ })}
171
+ variant={'pure'}
172
+ />
169
173
  )}
170
174
  {display === 'render' ? (
171
175
  <Markdown variant={'chat'}>{content}</Markdown>
172
176
  ) : (
173
177
  <div style={{ paddingBlock: '0 12px' }}>
174
- {content.length < SLICED_LIMITED ? (
178
+ {content.length < CRAWL_CONTENT_LIMITED_COUNT ? (
175
179
  content
176
180
  ) : (
177
181
  <>
178
- <span>{content.slice(0, SLICED_LIMITED)}</span>
179
- <span className={styles.sliced}>{content.slice(SLICED_LIMITED, -1)}</span>
182
+ <span>{content.slice(0, CRAWL_CONTENT_LIMITED_COUNT)}</span>
183
+ <span className={styles.sliced}>
184
+ {content.slice(CRAWL_CONTENT_LIMITED_COUNT, -1)}
185
+ </span>
180
186
  </>
181
187
  )}
182
188
  </div>
@@ -10,3 +10,5 @@ export const ENGINE_ICON_MAP: Record<string, string> = {
10
10
  'qwant': 'https://icons.duckduckgo.com/ip3/www.qwant.com.ico',
11
11
  'youtube': 'https://icons.duckduckgo.com/ip3/youtube.com.ico',
12
12
  };
13
+
14
+ export const CRAWL_CONTENT_LIMITED_COUNT = 7000;
@@ -65,6 +65,7 @@ export interface UserKeyVaults extends SearchEngineKeyVaults {
65
65
  openrouter?: OpenAICompatibleKeyVault;
66
66
  password?: string;
67
67
  perplexity?: OpenAICompatibleKeyVault;
68
+ ppio?: OpenAICompatibleKeyVault;
68
69
  qwen?: OpenAICompatibleKeyVault;
69
70
  sambanova?: OpenAICompatibleKeyVault;
70
71
  sensenova?: OpenAICompatibleKeyVault;