@lobehub/lobehub 2.0.0-next.4 → 2.0.0-next.41
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.
- package/.env.desktop +1 -2
- package/.env.example +0 -3
- package/.env.example.development +0 -2
- package/.github/workflows/claude-auto-testing.yml +73 -0
- package/.github/workflows/claude-translate-comments.yml +67 -0
- package/.github/workflows/desktop-pr-build.yml +18 -16
- package/.github/workflows/docker.yml +25 -20
- package/.github/workflows/e2e.yml +17 -3
- package/.github/workflows/release-desktop-beta.yml +12 -12
- package/.github/workflows/release.yml +3 -5
- package/.github/workflows/test.yml +48 -12
- package/.nvmrc +1 -1
- package/CHANGELOG.md +909 -0
- package/Dockerfile +1 -3
- package/README.md +2 -45
- package/README.zh-CN.md +2 -45
- package/apps/desktop/package.json +1 -1
- package/apps/desktop/src/main/controllers/AuthCtr.ts +53 -39
- package/apps/desktop/src/main/controllers/MenuCtr.ts +5 -5
- package/apps/desktop/src/main/controllers/NotificationCtr.ts +29 -29
- package/apps/desktop/src/main/controllers/RemoteServerConfigCtr.ts +16 -16
- package/apps/desktop/src/main/controllers/ShortcutCtr.ts +2 -2
- package/apps/desktop/src/main/controllers/TrayMenuCtr.ts +18 -18
- package/apps/desktop/src/main/controllers/UpdaterCtr.ts +4 -4
- package/apps/desktop/src/main/controllers/__tests__/AuthCtr.test.ts +706 -0
- package/apps/desktop/src/main/controllers/__tests__/TrayMenuCtr.test.ts +5 -5
- package/apps/desktop/src/main/controllers/index.ts +4 -4
- package/apps/desktop/src/main/core/infrastructure/UpdaterManager.ts +23 -2
- package/apps/desktop/src/main/modules/networkProxy/__tests__/dispatcher.test.ts +401 -0
- package/apps/desktop/src/main/modules/networkProxy/__tests__/tester.test.ts +531 -0
- package/apps/desktop/src/main/modules/networkProxy/__tests__/urlBuilder.test.ts +349 -0
- package/apps/desktop/src/main/modules/networkProxy/__tests__/validator.test.ts +492 -0
- package/apps/desktop/src/main/utils/next-electron-rsc.ts +7 -5
- package/apps/desktop/tsconfig.json +0 -1
- package/changelog/v1.json +308 -0
- package/docker-compose/local/.env.example +3 -0
- package/docs/development/database-schema.dbml +12 -0
- package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/github.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/google.mdx +32 -29
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +5 -3
- package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +5 -3
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/okta.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/okta.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +2 -2
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +2 -2
- package/docs/self-hosting/advanced/auth.mdx +32 -21
- package/docs/self-hosting/advanced/auth.zh-CN.mdx +30 -19
- package/docs/self-hosting/advanced/feature-flags.mdx +0 -1
- package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +0 -1
- package/docs/self-hosting/advanced/online-search.mdx +30 -25
- package/docs/self-hosting/advanced/online-search.zh-CN.mdx +25 -23
- package/docs/self-hosting/server-database/docker-compose.mdx +29 -0
- package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +29 -0
- package/e2e/src/features/discover/detail-pages.feature +95 -0
- package/e2e/src/features/discover/interactions.feature +113 -0
- package/e2e/src/features/discover/smoke.feature +34 -1
- package/e2e/src/steps/discover/detail-pages.steps.ts +295 -0
- package/e2e/src/steps/discover/interactions.steps.ts +451 -0
- package/e2e/src/steps/discover/smoke.steps.ts +116 -4
- package/e2e/tsconfig.json +0 -1
- package/locales/ar/auth.json +45 -1
- package/locales/ar/chat.json +1 -0
- package/locales/ar/labs.json +4 -0
- package/locales/ar/modelProvider.json +13 -1
- package/locales/ar/models.json +6 -6
- package/locales/ar/oauth.json +1 -0
- package/locales/bg-BG/auth.json +45 -1
- package/locales/bg-BG/chat.json +1 -0
- package/locales/bg-BG/labs.json +4 -0
- package/locales/bg-BG/modelProvider.json +13 -1
- package/locales/bg-BG/models.json +6 -6
- package/locales/bg-BG/oauth.json +1 -0
- package/locales/de-DE/auth.json +45 -1
- package/locales/de-DE/chat.json +1 -0
- package/locales/de-DE/labs.json +4 -0
- package/locales/de-DE/modelProvider.json +13 -1
- package/locales/de-DE/models.json +6 -6
- package/locales/de-DE/oauth.json +1 -0
- package/locales/en-US/auth.json +45 -1
- package/locales/en-US/chat.json +1 -0
- package/locales/en-US/labs.json +4 -0
- package/locales/en-US/modelProvider.json +13 -1
- package/locales/en-US/models.json +6 -6
- package/locales/en-US/oauth.json +1 -0
- package/locales/es-ES/auth.json +45 -1
- package/locales/es-ES/chat.json +1 -0
- package/locales/es-ES/labs.json +4 -0
- package/locales/es-ES/modelProvider.json +13 -1
- package/locales/es-ES/models.json +6 -6
- package/locales/es-ES/oauth.json +1 -0
- package/locales/fa-IR/auth.json +45 -1
- package/locales/fa-IR/chat.json +1 -0
- package/locales/fa-IR/labs.json +4 -0
- package/locales/fa-IR/modelProvider.json +13 -1
- package/locales/fa-IR/models.json +6 -6
- package/locales/fa-IR/oauth.json +1 -0
- package/locales/fr-FR/auth.json +45 -1
- package/locales/fr-FR/chat.json +1 -0
- package/locales/fr-FR/labs.json +4 -0
- package/locales/fr-FR/modelProvider.json +13 -1
- package/locales/fr-FR/models.json +6 -6
- package/locales/fr-FR/oauth.json +1 -0
- package/locales/it-IT/auth.json +45 -1
- package/locales/it-IT/chat.json +1 -0
- package/locales/it-IT/labs.json +4 -0
- package/locales/it-IT/modelProvider.json +13 -1
- package/locales/it-IT/models.json +6 -6
- package/locales/it-IT/oauth.json +1 -0
- package/locales/ja-JP/auth.json +45 -1
- package/locales/ja-JP/chat.json +1 -0
- package/locales/ja-JP/labs.json +4 -0
- package/locales/ja-JP/modelProvider.json +13 -1
- package/locales/ja-JP/models.json +6 -6
- package/locales/ja-JP/oauth.json +1 -0
- package/locales/ko-KR/auth.json +45 -1
- package/locales/ko-KR/chat.json +1 -0
- package/locales/ko-KR/labs.json +4 -0
- package/locales/ko-KR/modelProvider.json +13 -1
- package/locales/ko-KR/models.json +12 -12
- package/locales/ko-KR/oauth.json +1 -0
- package/locales/nl-NL/auth.json +45 -1
- package/locales/nl-NL/chat.json +1 -0
- package/locales/nl-NL/labs.json +4 -0
- package/locales/nl-NL/modelProvider.json +13 -1
- package/locales/nl-NL/models.json +6 -6
- package/locales/nl-NL/oauth.json +1 -0
- package/locales/pl-PL/auth.json +45 -1
- package/locales/pl-PL/chat.json +1 -0
- package/locales/pl-PL/labs.json +4 -0
- package/locales/pl-PL/modelProvider.json +13 -1
- package/locales/pl-PL/models.json +6 -6
- package/locales/pl-PL/oauth.json +1 -0
- package/locales/pt-BR/auth.json +45 -1
- package/locales/pt-BR/chat.json +1 -0
- package/locales/pt-BR/labs.json +4 -0
- package/locales/pt-BR/modelProvider.json +13 -1
- package/locales/pt-BR/models.json +6 -6
- package/locales/pt-BR/oauth.json +1 -0
- package/locales/ru-RU/auth.json +45 -1
- package/locales/ru-RU/chat.json +1 -0
- package/locales/ru-RU/labs.json +4 -0
- package/locales/ru-RU/modelProvider.json +13 -1
- package/locales/ru-RU/models.json +6 -6
- package/locales/ru-RU/oauth.json +1 -0
- package/locales/tr-TR/auth.json +45 -1
- package/locales/tr-TR/chat.json +1 -0
- package/locales/tr-TR/labs.json +4 -0
- package/locales/tr-TR/modelProvider.json +13 -1
- package/locales/tr-TR/models.json +6 -6
- package/locales/tr-TR/oauth.json +1 -0
- package/locales/vi-VN/auth.json +45 -1
- package/locales/vi-VN/chat.json +1 -0
- package/locales/vi-VN/labs.json +4 -0
- package/locales/vi-VN/modelProvider.json +13 -1
- package/locales/vi-VN/models.json +6 -6
- package/locales/vi-VN/oauth.json +1 -0
- package/locales/zh-CN/auth.json +45 -1
- package/locales/zh-CN/chat.json +1 -0
- package/locales/zh-CN/labs.json +4 -0
- package/locales/zh-CN/modelProvider.json +13 -1
- package/locales/zh-CN/models.json +6 -6
- package/locales/zh-CN/oauth.json +1 -0
- package/locales/zh-TW/auth.json +45 -1
- package/locales/zh-TW/chat.json +1 -0
- package/locales/zh-TW/labs.json +4 -0
- package/locales/zh-TW/modelProvider.json +13 -1
- package/locales/zh-TW/models.json +6 -6
- package/locales/zh-TW/oauth.json +1 -0
- package/next.config.ts +7 -9
- package/package.json +77 -83
- package/packages/agent-runtime/src/core/__tests__/runtime.test.ts +112 -77
- package/packages/agent-runtime/src/core/runtime.ts +63 -18
- package/packages/agent-runtime/src/types/generalAgent.ts +55 -0
- package/packages/agent-runtime/src/types/index.ts +1 -0
- package/packages/agent-runtime/src/types/instruction.ts +10 -3
- package/packages/const/src/hotkeys.ts +3 -3
- package/packages/const/src/index.ts +0 -1
- package/packages/const/src/models.ts +2 -2
- package/packages/const/src/url.ts +1 -4
- package/packages/const/src/user.ts +4 -2
- package/packages/const/src/utils/merge.ts +3 -3
- package/packages/const/src/version.ts +3 -3
- package/packages/context-engine/src/index.ts +1 -6
- package/packages/context-engine/src/processors/GroupMessageFlatten.ts +20 -8
- package/packages/context-engine/src/processors/MessageCleanup.ts +1 -0
- package/packages/context-engine/src/processors/__tests__/GroupMessageFlatten.test.ts +83 -19
- package/packages/context-engine/src/processors/__tests__/MessageCleanup.test.ts +28 -0
- package/packages/context-engine/src/providers/index.ts +0 -2
- package/packages/conversation-flow/package.json +13 -0
- package/packages/conversation-flow/src/__tests__/fixtures/index.ts +48 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/assistant-chain-with-followup.json +56 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/assistant-with-tools.json +144 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/active-index-1.json +131 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/assistant-branch.json +96 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/assistant-group-branches.json +249 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/assistant-user-branch.json +123 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/conversation.json +128 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/index.ts +18 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/multi-assistant-group.json +260 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/branch/nested.json +179 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/compare/index.ts +8 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/compare/simple.json +85 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/compare/with-tools.json +169 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/complex-scenario.json +107 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/index.ts +14 -0
- package/packages/conversation-flow/src/__tests__/fixtures/inputs/linear-conversation.json +59 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/assistant-chain-with-followup.json +135 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/assistant-with-tools.json +340 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/active-index-1.json +246 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/assistant-branch.json +208 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/assistant-group-branches.json +481 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/assistant-user-branch.json +254 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/conversation.json +264 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/index.ts +18 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/multi-assistant-group.json +407 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/branch/nested.json +405 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/compare/index.ts +8 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/compare/simple.json +224 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/compare/with-tools.json +418 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/complex-scenario.json +261 -0
- package/packages/conversation-flow/src/__tests__/fixtures/outputs/linear-conversation.json +138 -0
- package/packages/conversation-flow/src/__tests__/parse.test.ts +109 -0
- package/packages/conversation-flow/src/index.ts +17 -0
- package/packages/conversation-flow/src/indexing.ts +58 -0
- package/packages/conversation-flow/src/parse.ts +53 -0
- package/packages/conversation-flow/src/structuring.ts +38 -0
- package/packages/conversation-flow/src/transformation/BranchResolver.ts +66 -0
- package/packages/conversation-flow/src/transformation/ContextTreeBuilder.ts +292 -0
- package/packages/conversation-flow/src/transformation/FlatListBuilder.ts +499 -0
- package/packages/conversation-flow/src/transformation/MessageCollector.ts +166 -0
- package/packages/conversation-flow/src/transformation/MessageTransformer.ts +177 -0
- package/packages/conversation-flow/src/transformation/__tests__/BranchResolver.test.ts +151 -0
- package/packages/conversation-flow/src/transformation/__tests__/ContextTreeBuilder.test.ts +385 -0
- package/packages/conversation-flow/src/transformation/__tests__/FlatListBuilder.test.ts +511 -0
- package/packages/conversation-flow/src/transformation/__tests__/MessageCollector.test.ts +220 -0
- package/packages/conversation-flow/src/transformation/__tests__/MessageTransformer.test.ts +287 -0
- package/packages/conversation-flow/src/transformation/index.ts +78 -0
- package/packages/conversation-flow/src/types/contextTree.ts +65 -0
- package/packages/conversation-flow/src/types/flatMessageList.ts +54 -0
- package/packages/conversation-flow/src/types/index.ts +25 -0
- package/packages/conversation-flow/src/types/shared.ts +63 -0
- package/packages/conversation-flow/vitest.config.mts +10 -0
- package/packages/database/migrations/0041_improve_index.sql +10 -0
- package/packages/database/migrations/0042_improve_agent_index.sql +1 -0
- package/packages/database/migrations/0043_add_ai_model_settings.sql +1 -0
- package/packages/database/migrations/meta/0041_snapshot.json +7784 -0
- package/packages/database/migrations/meta/0042_snapshot.json +7800 -0
- package/packages/database/migrations/meta/0043_snapshot.json +8419 -0
- package/packages/database/migrations/meta/_journal.json +21 -0
- package/packages/database/package.json +2 -2
- package/packages/database/src/core/migrations.json +33 -0
- package/packages/database/src/core/web-server.ts +2 -1
- package/packages/database/src/models/__tests__/apiKey.test.ts +444 -0
- package/packages/database/src/models/__tests__/messages/message.create.test.ts +492 -0
- package/packages/database/src/models/__tests__/messages/message.delete.test.ts +481 -0
- package/packages/database/src/models/__tests__/messages/message.query.test.ts +970 -0
- package/packages/database/src/models/__tests__/messages/message.stats.test.ts +584 -0
- package/packages/database/src/models/__tests__/messages/message.update.test.ts +716 -0
- package/packages/database/src/models/agent.ts +16 -13
- package/packages/database/src/models/message.ts +44 -79
- package/packages/database/src/models/session.ts +80 -28
- package/packages/database/src/models/user.ts +2 -1
- package/packages/database/src/repositories/aiInfra/index.test.ts +198 -0
- package/packages/database/src/repositories/aiInfra/index.ts +2 -1
- package/packages/database/src/repositories/dataImporter/deprecated/__tests__/index.test.ts +2 -1
- package/packages/database/src/repositories/dataImporter/deprecated/index.ts +7 -1
- package/packages/database/src/schemas/agent.ts +13 -11
- package/packages/database/src/schemas/aiInfra.ts +2 -0
- package/packages/database/src/schemas/message.ts +5 -1
- package/packages/database/src/schemas/relations.ts +6 -4
- package/packages/database/src/schemas/session.ts +2 -0
- package/packages/database/src/schemas/topic.ts +6 -1
- package/packages/electron-client-ipc/package.json +4 -1
- package/packages/file-loaders/package.json +1 -0
- package/packages/memory-extract/package.json +2 -2
- package/packages/model-bank/src/aiModels/anthropic.ts +0 -63
- package/packages/model-bank/src/aiModels/google.ts +1 -1
- package/packages/model-bank/src/aiModels/higress.ts +0 -55
- package/packages/model-bank/src/aiModels/infiniai.ts +21 -0
- package/packages/model-bank/src/aiModels/ollamacloud.ts +13 -0
- package/packages/model-bank/src/aiModels/siliconcloud.ts +19 -0
- package/packages/model-runtime/src/core/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -38
- package/packages/model-runtime/src/providers/minimax/index.ts +5 -5
- package/packages/model-runtime/src/providers/search1api/index.test.ts +2 -2
- package/packages/model-runtime/src/utils/googleErrorParser.test.ts +125 -0
- package/packages/model-runtime/src/utils/googleErrorParser.ts +103 -77
- package/packages/obervability-otel/package.json +4 -4
- package/packages/obervability-otel/src/api.ts +2 -0
- package/packages/obervability-otel/src/node.ts +3 -7
- package/packages/obervability-otel/src/trpc/convention.ts +16 -0
- package/packages/obervability-otel/src/trpc/index.test.ts +38 -0
- package/packages/obervability-otel/src/trpc/index.ts +62 -0
- package/packages/obervability-otel/src/trpc/metrics.ts +31 -0
- package/packages/types/src/aiChat.ts +2 -0
- package/packages/types/src/discover/mcp.ts +6 -0
- package/packages/types/src/importer.ts +2 -2
- package/packages/types/src/index.ts +0 -1
- package/packages/types/src/message/common/base.ts +13 -0
- package/packages/types/src/message/common/image.ts +8 -0
- package/packages/types/src/message/common/metadata.ts +44 -1
- package/packages/types/src/message/common/tools.ts +10 -0
- package/packages/types/src/message/db/params.ts +47 -1
- package/packages/types/src/message/ui/chat.ts +21 -2
- package/packages/types/src/message/ui/extra.ts +2 -2
- package/packages/types/src/message/ui/params.ts +51 -6
- package/packages/types/src/plugins/mcp.ts +4 -1
- package/packages/types/src/search.ts +16 -0
- package/packages/types/src/serverConfig.ts +2 -6
- package/packages/types/src/topic/topic.ts +14 -0
- package/packages/types/src/usage/usageRecord.ts +54 -0
- package/packages/types/src/user/index.ts +2 -76
- package/packages/types/src/user/preference.ts +101 -0
- package/packages/types/src/user/settings/index.ts +22 -0
- package/packages/utils/src/apiKey.test.ts +139 -0
- package/packages/utils/src/client/clipboard.ts +2 -2
- package/packages/utils/src/client/exportFile.ts +10 -10
- package/packages/utils/src/client/parserPlaceholder.ts +18 -18
- package/packages/utils/src/client/topic.ts +10 -10
- package/packages/utils/src/client/xor-obfuscation.ts +11 -11
- package/packages/utils/src/server/auth.ts +6 -6
- package/packages/utils/src/server/geo.ts +9 -9
- package/packages/utils/src/server/xor.ts +7 -7
- package/packages/utils/src/tokenizer/index.ts +3 -11
- package/packages/web-crawler/src/crawImpl/browserless.ts +1 -1
- package/packages/web-crawler/src/crawImpl/firecrawl.ts +39 -12
- package/packages/web-crawler/src/crawImpl/naive.ts +9 -9
- package/packages/web-crawler/src/crawler.ts +5 -5
- package/packages/web-crawler/src/urlRules.ts +13 -13
- package/packages/web-crawler/src/utils/appUrlRules.ts +5 -5
- package/packages/web-crawler/tsconfig.json +0 -1
- package/renovate.json +23 -1
- package/scripts/migrateServerDB/errorHint.js +1 -7
- package/scripts/migrateServerDB/index.ts +2 -1
- package/src/app/(backend)/webapi/revalidate/route.ts +1 -1
- package/src/app/[variants]/(auth)/signup/[[...signup]]/page.tsx +1 -8
- package/src/app/[variants]/(main)/(mobile)/me/(home)/__tests__/useCategory.test.tsx +9 -0
- package/src/app/[variants]/(main)/(mobile)/me/(home)/features/UserBanner.tsx +3 -6
- package/src/app/[variants]/(main)/(mobile)/me/(home)/layout.tsx +0 -2
- package/src/app/[variants]/(main)/_layout/Desktop/SideBar/TopActions.tsx +1 -4
- package/src/app/[variants]/(main)/chat/ChatRouter.tsx +83 -0
- package/src/app/[variants]/(main)/chat/_layout/ChatLayout.tsx +22 -0
- package/src/app/[variants]/(main)/chat/_layout/Desktop/SessionPanel.tsx +12 -7
- package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +2 -4
- package/src/app/[variants]/(main)/chat/_layout/FeatureFlagsProvider.tsx +24 -0
- package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +4 -7
- package/src/app/[variants]/(main)/chat/_layout/type.ts +0 -1
- package/src/app/[variants]/(main)/chat/components/ConversationArea.tsx +29 -0
- package/src/app/[variants]/(main)/chat/components/MainChatPage.tsx +25 -0
- package/src/app/[variants]/(main)/chat/components/PortalPanel.tsx +28 -0
- package/src/app/[variants]/(main)/chat/components/SessionPanel.tsx +33 -0
- package/src/app/[variants]/(main)/chat/{settings/page.tsx → components/SettingsPage.tsx} +35 -3
- package/src/app/[variants]/(main)/chat/components/TopicSidebar.tsx +30 -0
- package/src/app/[variants]/(main)/chat/components/WorkspaceLayout.tsx +73 -0
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Desktop/MessageFromUrl.tsx +3 -3
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/index.tsx +3 -3
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/useSend.ts +9 -7
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/useSend.ts +21 -16
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/ChatItem/index.tsx +1 -1
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/Content.tsx +5 -3
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/AgentWelcome/OpeningQuestions.tsx +2 -2
- package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/GroupWelcome/GroupUsageSuggest.tsx +2 -2
- package/src/app/[variants]/(main)/chat/{layout.ts → layout.tsx} +0 -1
- package/src/app/[variants]/(main)/chat/page.tsx +12 -0
- package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/List/Item/Actions.tsx +3 -28
- package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/List/Item/index.tsx +7 -6
- package/src/app/[variants]/(main)/chat/settings/features/HeaderContent.tsx +2 -62
- package/src/app/[variants]/(main)/discover/(list)/features/Pagination.tsx +1 -0
- package/src/app/[variants]/(main)/discover/(list)/features/SortButton/index.tsx +1 -1
- package/src/app/[variants]/(main)/discover/(list)/mcp/features/List/Item.tsx +1 -0
- package/src/app/[variants]/(main)/discover/(list)/model/features/List/Item.tsx +1 -0
- package/src/app/[variants]/(main)/discover/(list)/provider/features/List/Item.tsx +1 -0
- package/src/app/[variants]/(main)/discover/components/CategoryMenu.tsx +9 -1
- package/src/app/[variants]/(main)/image/@topic/features/Topics/TopicList.tsx +1 -0
- package/src/app/[variants]/(main)/image/features/PromptInput/index.tsx +1 -1
- package/src/app/[variants]/(main)/image/page.tsx +0 -2
- package/src/app/[variants]/(main)/labs/components/LabCard.tsx +8 -6
- package/src/app/[variants]/(main)/labs/page.tsx +10 -22
- package/src/app/[variants]/(main)/profile/_layout/Desktop/index.tsx +23 -24
- package/src/app/[variants]/(main)/profile/_layout/Mobile/index.tsx +5 -9
- package/src/app/[variants]/(main)/profile/hooks/useCategory.tsx +10 -1
- package/src/app/[variants]/(main)/profile/usage/Client.tsx +114 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageCards/ActiveModels/ModelTable.tsx +175 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageCards/ActiveModels/index.tsx +126 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageCards/MonthSpend.tsx +53 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageCards/TodaySpend.tsx +67 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageCards/index.tsx +19 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageTable.tsx +145 -0
- package/src/app/[variants]/(main)/profile/usage/features/UsageTrends.tsx +107 -0
- package/src/app/[variants]/(main)/profile/usage/features/components/UsageBarChart.tsx +48 -0
- package/src/app/[variants]/(main)/{(mobile)/me/data → profile/usage}/page.tsx +6 -12
- package/src/app/[variants]/(main)/settings/_layout/Desktop/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/_layout/Mobile/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/ProviderMenu/List.tsx +97 -7
- package/src/app/[variants]/(main)/settings/provider/detail/azure/index.tsx +6 -8
- package/src/app/[variants]/(main)/settings/provider/detail/azureai/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/detail/bedrock/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/detail/cloudflare/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/detail/comfyui/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/detail/github/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/detail/vertexai/index.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/features/ModelList/DisabledModels.tsx +144 -8
- package/src/app/[variants]/(main)/settings/provider/features/ProviderConfig/index.tsx +2 -4
- package/src/app/[variants]/layout.tsx +1 -0
- package/src/app/[variants]/loading/index.tsx +1 -10
- package/src/app/[variants]/oauth/ResultLayout.tsx +47 -0
- package/src/app/[variants]/oauth/callback/error/page.tsx +20 -33
- package/src/app/[variants]/oauth/callback/layout.tsx +1 -0
- package/src/app/[variants]/oauth/callback/success/page.tsx +8 -22
- package/src/app/[variants]/oauth/consent/[uid]/Consent/BuiltinConsent.tsx +47 -0
- package/src/app/[variants]/oauth/consent/[uid]/{Consent.tsx → Consent/index.tsx} +12 -1
- package/src/app/[variants]/oauth/consent/[uid]/Login.tsx +19 -2
- package/src/app/sitemap.tsx +7 -1
- package/src/components/InvalidAPIKey/APIKeyForm/Bedrock.tsx +8 -13
- package/src/components/Link.tsx +12 -0
- package/src/components/Skeleton/SkeletonSwitch.tsx +13 -0
- package/src/components/Skeleton/index.ts +2 -0
- package/src/components/Thinking/index.tsx +4 -3
- package/src/config/db.ts +0 -5
- package/src/config/featureFlags/schema.test.ts +0 -2
- package/src/config/featureFlags/schema.ts +0 -6
- package/src/config/modelProviders/ai21.ts +1 -16
- package/src/config/modelProviders/ai302.ts +1 -128
- package/src/config/modelProviders/ai360.ts +1 -32
- package/src/config/modelProviders/anthropic.ts +1 -94
- package/src/config/modelProviders/azure.ts +1 -51
- package/src/config/modelProviders/baichuan.ts +1 -57
- package/src/config/modelProviders/bedrock.ts +1 -276
- package/src/config/modelProviders/cloudflare.ts +1 -64
- package/src/config/modelProviders/deepseek.ts +1 -19
- package/src/config/modelProviders/fireworksai.ts +1 -174
- package/src/config/modelProviders/giteeai.ts +1 -135
- package/src/config/modelProviders/github.ts +1 -254
- package/src/config/modelProviders/google.ts +1 -130
- package/src/config/modelProviders/groq.ts +1 -119
- package/src/config/modelProviders/higress.ts +1 -1736
- package/src/config/modelProviders/huggingface.ts +1 -54
- package/src/config/modelProviders/hunyuan.ts +1 -83
- package/src/config/modelProviders/infiniai.ts +1 -74
- package/src/config/modelProviders/internlm.ts +1 -20
- package/src/config/modelProviders/minimax.ts +1 -1
- package/src/config/modelProviders/mistral.ts +1 -95
- package/src/config/modelProviders/modelscope.ts +1 -27
- package/src/config/modelProviders/moonshot.ts +1 -29
- package/src/config/modelProviders/novita.ts +1 -105
- package/src/config/modelProviders/ollama.ts +1 -325
- package/src/config/modelProviders/openai.ts +1 -242
- package/src/config/modelProviders/openrouter.ts +1 -240
- package/src/config/modelProviders/perplexity.ts +1 -45
- package/src/config/modelProviders/ppio.ts +1 -152
- package/src/config/modelProviders/qiniu.ts +2 -19
- package/src/config/modelProviders/qwen.ts +1 -245
- package/src/config/modelProviders/search1api.ts +1 -34
- package/src/config/modelProviders/sensenova.ts +1 -69
- package/src/config/modelProviders/siliconcloud.ts +1 -417
- package/src/config/modelProviders/spark.ts +1 -59
- package/src/config/modelProviders/stepfun.ts +1 -98
- package/src/config/modelProviders/taichu.ts +1 -18
- package/src/config/modelProviders/togetherai.ts +1 -274
- package/src/config/modelProviders/upstage.ts +1 -28
- package/src/config/modelProviders/wenxin.ts +1 -140
- package/src/config/modelProviders/xai.ts +1 -38
- package/src/config/modelProviders/zeroone.ts +1 -81
- package/src/config/modelProviders/zhipu.ts +1 -108
- package/src/envs/__tests__/app.test.ts +47 -13
- package/src/envs/app.ts +10 -7
- package/src/envs/auth.ts +0 -179
- package/src/features/AgentSetting/AgentPlugin/index.tsx +2 -2
- package/src/features/ChatInput/ActionBar/STT/browser.tsx +5 -5
- package/src/features/ChatInput/ActionBar/STT/openai.tsx +5 -5
- package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +1 -3
- package/src/features/ChatInput/ActionBar/index.tsx +2 -2
- package/src/features/ChatInput/InputEditor/index.tsx +2 -2
- package/src/features/Conversation/Error/AccessCodeForm.tsx +1 -1
- package/src/features/Conversation/Error/ChatInvalidApiKey.tsx +1 -1
- package/src/features/Conversation/Error/ClerkLogin/index.tsx +1 -1
- package/src/features/Conversation/Error/ErrorJsonViewer.tsx +4 -3
- package/src/features/Conversation/Error/OAuthForm.tsx +1 -1
- package/src/features/Conversation/Error/OllamaBizError/index.tsx +7 -2
- package/src/features/Conversation/Error/index.tsx +15 -10
- package/src/features/Conversation/MarkdownElements/LobeArtifact/Render/index.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/Actions/index.tsx +13 -10
- package/src/features/Conversation/Messages/Assistant/Extra/index.test.tsx +3 -8
- package/src/features/Conversation/Messages/Assistant/Extra/index.tsx +4 -8
- package/src/features/Conversation/Messages/Assistant/MessageContent.tsx +12 -12
- package/src/features/Conversation/Messages/Assistant/Tool/Inspector/BuiltinPluginTitle.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/Tool/Inspector/PluginResult.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/Tool/Inspector/PluginState.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/Tool/Inspector/ToolTitle.tsx +4 -2
- package/src/features/Conversation/Messages/Assistant/Tool/Render/CustomRender.tsx +5 -5
- package/src/features/Conversation/Messages/Assistant/Tool/Render/PluginSettings.tsx +4 -1
- package/src/features/Conversation/Messages/Assistant/Tool/Render/index.tsx +3 -4
- package/src/features/Conversation/Messages/Assistant/Tool/index.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/index.tsx +61 -64
- package/src/features/Conversation/Messages/Default.tsx +3 -2
- package/src/features/Conversation/Messages/Group/Actions/WithContentId.tsx +180 -0
- package/src/features/Conversation/Messages/Group/Actions/WithoutContentId.tsx +93 -0
- package/src/features/Conversation/Messages/Group/Actions/index.tsx +21 -0
- package/src/features/Conversation/Messages/Group/ContentBlock.tsx +89 -0
- package/src/features/Conversation/Messages/Group/EditState.tsx +51 -0
- package/src/features/Conversation/Messages/Group/Error/index.tsx +53 -0
- package/src/features/Conversation/Messages/Group/GroupChildren.tsx +51 -0
- package/src/features/Conversation/Messages/Group/GroupItem.tsx +43 -0
- package/src/features/Conversation/Messages/Group/MessageContent.tsx +45 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/BuiltinPluginTitle.tsx +49 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/Debug.tsx +70 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/PluginResult.tsx +34 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/PluginState.tsx +18 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/Settings.tsx +40 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/ToolTitle.tsx +92 -0
- package/src/features/Conversation/Messages/Group/Tool/Inspector/index.tsx +175 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/ObjectEntity.tsx +81 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/ValueCell.tsx +43 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/Arguments/index.tsx +134 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/CustomRender.tsx +88 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/ErrorResponse.tsx +35 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/LoadingPlaceholder/index.tsx +29 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/PluginSettings.tsx +66 -0
- package/src/features/Conversation/Messages/Group/Tool/Render/index.tsx +105 -0
- package/src/features/Conversation/Messages/Group/Tool/index.tsx +73 -0
- package/src/features/Conversation/Messages/Group/Tools.tsx +46 -0
- package/src/features/Conversation/Messages/Group/index.tsx +146 -0
- package/src/features/Conversation/Messages/Supervisor/index.tsx +2 -2
- package/src/features/Conversation/Messages/User/{Actions.tsx → Actions/ActionsBar.tsx} +26 -25
- package/src/features/Conversation/Messages/User/Actions/MessageBranch.tsx +107 -0
- package/src/features/Conversation/Messages/User/Actions/index.tsx +42 -0
- package/src/features/Conversation/Messages/User/Extra.tsx +2 -2
- package/src/features/Conversation/Messages/User/index.tsx +47 -48
- package/src/features/Conversation/Messages/index.tsx +16 -4
- package/src/features/Conversation/components/AutoScroll.tsx +4 -4
- package/src/features/Conversation/components/Extras/Usage/UsageDetail/AnimatedNumber.tsx +55 -0
- package/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx +15 -6
- package/src/features/Conversation/components/ShareMessageModal/ShareImage/Preview.tsx +2 -2
- package/src/features/Conversation/components/VirtualizedList/index.tsx +29 -20
- package/src/features/Conversation/hooks/useChatListActionsBar.tsx +26 -14
- package/src/features/DataImporter/index.tsx +15 -60
- package/src/features/DevPanel/PostgresViewer/usePgTable.ts +3 -2
- package/src/features/MCP/utils.test.ts +91 -0
- package/src/features/MCP/utils.ts +20 -2
- package/src/features/PluginStore/Content.tsx +2 -3
- package/src/features/PluginStore/McpList/index.tsx +6 -2
- package/src/features/PluginTag/index.tsx +1 -3
- package/src/features/PluginsUI/Render/BuiltinType/index.test.tsx +37 -28
- package/src/features/PluginsUI/Render/BuiltinType/index.tsx +1 -1
- package/src/features/PluginsUI/Render/MCPType/index.tsx +52 -0
- package/src/features/PluginsUI/Render/StandaloneType/Iframe.tsx +2 -2
- package/src/features/PluginsUI/Render/index.tsx +17 -0
- package/src/features/Portal/Artifacts/Body/index.tsx +2 -2
- package/src/features/Portal/GroupThread/Body/index.tsx +1 -1
- package/src/features/Portal/Thread/Chat/ChatInput/useSend.ts +3 -3
- package/src/helpers/isCanUseFC.ts +0 -8
- package/src/hooks/useEnabledChatModels.ts +0 -8
- package/src/hooks/useHotkeys/chatScope.ts +16 -8
- package/src/hooks/useInterceptingRoutes.test.ts +21 -3
- package/src/hooks/useModelContextWindowTokens.ts +0 -8
- package/src/hooks/useModelHasContextWindowToken.ts +1 -10
- package/src/hooks/useModelSupportFiles.ts +1 -11
- package/src/hooks/useModelSupportReasoning.ts +1 -11
- package/src/hooks/useModelSupportToolUse.ts +1 -11
- package/src/hooks/useModelSupportVision.ts +1 -11
- package/src/layout/AuthProvider/Clerk/index.tsx +2 -16
- package/src/libs/mcp/client.ts +3 -2
- package/src/libs/mcp/types.ts +71 -0
- package/src/libs/next-auth/auth.config.ts +3 -6
- package/src/libs/next-auth/sso-providers/auth0.ts +0 -7
- package/src/libs/next-auth/sso-providers/authelia.ts +3 -5
- package/src/libs/next-auth/sso-providers/authentik.ts +0 -7
- package/src/libs/next-auth/sso-providers/cloudflare-zero-trust.ts +3 -6
- package/src/libs/next-auth/sso-providers/cognito.ts +1 -5
- package/src/libs/next-auth/sso-providers/generic-oidc.ts +3 -5
- package/src/libs/next-auth/sso-providers/github.ts +0 -6
- package/src/libs/next-auth/sso-providers/google.ts +0 -2
- package/src/libs/next-auth/sso-providers/keycloak.ts +0 -3
- package/src/libs/next-auth/sso-providers/logto.ts +3 -5
- package/src/libs/next-auth/sso-providers/okta.ts +0 -4
- package/src/libs/next-auth/sso-providers/zitadel.ts +0 -7
- package/src/libs/trpc/client/index.ts +0 -1
- package/src/libs/trpc/client/lambda.ts +12 -8
- package/src/libs/trpc/lambda/context.ts +4 -1
- package/src/libs/trpc/lambda/index.ts +5 -2
- package/src/libs/trpc/middleware/openTelemetry.ts +141 -0
- package/src/locales/default/auth.ts +44 -0
- package/src/locales/default/chat.ts +1 -0
- package/src/locales/default/labs.ts +4 -0
- package/src/locales/default/modelProvider.ts +15 -1
- package/src/locales/default/oauth.ts +1 -0
- package/src/server/globalConfig/index.ts +0 -23
- package/src/server/modules/AssistantStore/index.ts +1 -1
- package/src/server/modules/ModelRuntime/trace.ts +11 -4
- package/src/server/modules/S3/index.test.ts +379 -0
- package/src/server/routers/async/__tests__/caller.test.ts +333 -0
- package/src/server/routers/async/caller.ts +2 -1
- package/src/server/routers/desktop/mcp.ts +2 -6
- package/src/server/routers/lambda/__tests__/aiChat.test.ts +1 -1
- package/src/server/routers/lambda/__tests__/integration/message.integration.test.ts +771 -57
- package/src/server/routers/lambda/aiChat.ts +3 -2
- package/src/server/routers/lambda/config/__snapshots__/index.test.ts.snap +175 -12
- package/src/server/routers/lambda/config/index.test.ts +38 -30
- package/src/server/routers/lambda/index.ts +2 -0
- package/src/server/routers/lambda/market/index.ts +4 -2
- package/src/server/routers/lambda/message.ts +53 -53
- package/src/server/routers/lambda/session.ts +8 -5
- package/src/server/routers/lambda/topic.ts +7 -1
- package/src/server/routers/lambda/usage.ts +36 -0
- package/src/server/routers/lambda/user.ts +32 -31
- package/src/server/routers/tools/mcp.ts +3 -6
- package/src/server/routers/tools/search.test.ts +1 -7
- package/src/server/routers/tools/search.ts +1 -4
- package/src/server/services/mcp/deps/MCPSystemDepsCheckService.test.ts +541 -0
- package/src/server/services/mcp/deps/checkers/ManualInstallationChecker.test.ts +162 -0
- package/src/server/services/mcp/deps/checkers/NpmInstallationChecker.test.ts +374 -0
- package/src/server/services/mcp/deps/checkers/PythonInstallationChecker.test.ts +368 -0
- package/src/server/services/mcp/index.test.ts +28 -15
- package/src/server/services/mcp/index.ts +29 -18
- package/src/server/services/message/__tests__/index.test.ts +338 -0
- package/src/server/services/message/index.ts +174 -0
- package/src/server/services/search/impls/firecrawl/index.ts +51 -11
- package/src/server/services/search/impls/firecrawl/type.ts +60 -9
- package/src/server/services/usage/index.test.ts +310 -0
- package/src/server/services/usage/index.ts +164 -0
- package/src/services/__tests__/tool.test.ts +0 -3
- package/src/services/aiModel/index.test.ts +3 -6
- package/src/services/aiModel/index.ts +55 -7
- package/src/services/aiProvider/index.test.ts +2 -5
- package/src/services/aiProvider/index.ts +47 -7
- package/src/services/chat/chat.test.ts +13 -40
- package/src/services/chat/contextEngineering.test.ts +4 -30
- package/src/services/chat/contextEngineering.ts +7 -17
- package/src/services/chat/helper.ts +7 -31
- package/src/services/chat/index.ts +5 -10
- package/src/services/chat/types.ts +1 -1
- package/src/services/chatGroup/index.ts +64 -9
- package/src/services/config.ts +1 -65
- package/src/services/electron/desktopNotification.ts +6 -6
- package/src/services/electron/file.ts +6 -6
- package/src/services/export/index.ts +9 -4
- package/src/services/file/ClientS3/index.ts +8 -8
- package/src/services/file/index.ts +59 -10
- package/src/services/import/index.ts +132 -7
- package/src/services/mcp.test.ts +783 -0
- package/src/services/mcp.ts +39 -4
- package/src/services/message/__tests__/metadata-race-condition.test.ts +157 -0
- package/src/services/message/index.ts +208 -10
- package/src/services/message/{__tests__/server.test.ts → server.test.ts} +3 -3
- package/src/services/models.ts +2 -11
- package/src/services/plugin/index.test.ts +8 -0
- package/src/services/plugin/index.ts +51 -10
- package/src/services/session/index.test.ts +8 -0
- package/src/services/session/index.ts +143 -10
- package/src/services/tableViewer/client.ts +12 -15
- package/src/services/thread/index.test.ts +8 -0
- package/src/services/thread/index.ts +37 -7
- package/src/services/topic/index.test.ts +8 -0
- package/src/services/topic/index.ts +74 -10
- package/src/services/upload.ts +11 -11
- package/src/services/usage.ts +13 -0
- package/src/services/user/index.test.ts +8 -0
- package/src/services/user/index.ts +50 -11
- package/src/services/utils/abortableRequest.test.ts +161 -0
- package/src/services/utils/abortableRequest.ts +67 -0
- package/src/store/aiInfra/slices/aiModel/action.test.ts +17 -9
- package/src/store/chat/agents/GeneralChatAgent.ts +137 -0
- package/src/store/chat/agents/createAgentExecutors.ts +394 -0
- package/src/store/chat/helpers.ts +10 -2
- package/src/store/chat/selectors.ts +1 -1
- package/src/store/chat/slices/aiChat/actions/__tests__/conversationControl.test.ts +332 -0
- package/src/store/chat/slices/aiChat/actions/__tests__/conversationLifecycle.test.ts +257 -0
- package/src/store/chat/slices/aiChat/actions/__tests__/helpers.ts +19 -6
- package/src/store/chat/slices/aiChat/actions/__tests__/rag.test.ts +6 -6
- package/src/store/chat/slices/aiChat/actions/__tests__/streamingExecutor.test.ts +391 -0
- package/src/store/chat/slices/aiChat/actions/__tests__/streamingStates.test.ts +179 -0
- package/src/store/chat/slices/aiChat/actions/conversationControl.ts +157 -0
- package/src/store/chat/slices/aiChat/actions/conversationLifecycle.ts +368 -0
- package/src/store/chat/slices/aiChat/actions/generateAIGroupChat.ts +19 -14
- package/src/store/chat/slices/aiChat/actions/index.ts +12 -6
- package/src/store/chat/slices/aiChat/actions/rag.ts +9 -6
- package/src/store/chat/slices/aiChat/actions/streamingExecutor.ts +612 -0
- package/src/store/chat/slices/aiChat/actions/streamingStates.ts +84 -0
- package/src/store/chat/slices/builtinTool/actions/__tests__/localSystem.test.ts +7 -7
- package/src/store/chat/slices/builtinTool/actions/__tests__/search.test.ts +17 -17
- package/src/store/chat/slices/builtinTool/actions/index.ts +1 -4
- package/src/store/chat/slices/builtinTool/actions/interpreter.ts +10 -10
- package/src/store/chat/slices/builtinTool/actions/localSystem.ts +4 -4
- package/src/store/chat/slices/builtinTool/actions/search.ts +16 -16
- package/src/store/chat/slices/message/action.test.ts +199 -47
- package/src/store/chat/slices/message/actions/index.ts +39 -0
- package/src/store/chat/slices/message/actions/internals.ts +77 -0
- package/src/store/chat/slices/message/actions/optimisticUpdate.ts +260 -0
- package/src/store/chat/slices/message/actions/publicApi.ts +242 -0
- package/src/store/chat/slices/message/actions/query.ts +120 -0
- package/src/store/chat/slices/message/actions/runtimeState.ts +108 -0
- package/src/store/chat/slices/message/initialState.ts +18 -0
- package/src/store/chat/slices/message/reducer.test.ts +48 -12
- package/src/store/chat/slices/message/reducer.ts +23 -3
- package/src/store/chat/slices/message/selectors/chat.test.ts +92 -0
- package/src/store/chat/slices/message/selectors/chat.ts +106 -0
- package/src/store/chat/slices/message/selectors/dbMessage.test.ts +51 -0
- package/src/store/chat/slices/message/selectors/dbMessage.ts +140 -0
- package/src/store/chat/slices/message/selectors/displayMessage.test.ts +818 -0
- package/src/store/chat/slices/message/selectors/displayMessage.ts +352 -0
- package/src/store/chat/slices/message/selectors/index.ts +2 -0
- package/src/store/chat/slices/message/selectors/messageState.test.ts +36 -0
- package/src/store/chat/slices/message/selectors/messageState.ts +85 -0
- package/src/store/chat/slices/plugin/action.test.ts +169 -210
- package/src/store/chat/slices/plugin/actions/index.ts +39 -0
- package/src/store/chat/slices/plugin/actions/internals.ts +83 -0
- package/src/store/chat/slices/plugin/actions/optimisticUpdate.ts +188 -0
- package/src/store/chat/slices/plugin/actions/pluginTypes.ts +213 -0
- package/src/store/chat/slices/plugin/actions/publicApi.ts +115 -0
- package/src/store/chat/slices/plugin/actions/workflow.ts +121 -0
- package/src/store/chat/slices/thread/action.test.ts +38 -32
- package/src/store/chat/slices/thread/action.ts +15 -10
- package/src/store/chat/slices/thread/selectors/index.ts +8 -6
- package/src/store/chat/slices/topic/action.test.ts +1 -1
- package/src/store/chat/slices/topic/action.ts +1 -2
- package/src/store/chat/slices/topic/reducer.ts +12 -5
- package/src/store/chat/store.ts +2 -2
- package/src/store/file/slices/chat/action.ts +1 -4
- package/src/store/file/slices/fileManager/action.ts +2 -3
- package/src/store/global/initialState.ts +5 -0
- package/src/store/global/selectors/systemStatus.ts +6 -0
- package/src/store/global/store.ts +1 -7
- package/src/store/session/slices/sessionGroup/action.test.ts +5 -5
- package/src/store/tool/selectors/tool.test.ts +1 -1
- package/src/store/tool/selectors/tool.ts +6 -8
- package/src/store/tool/slices/builtin/action.test.ts +83 -35
- package/src/store/tool/slices/builtin/action.ts +0 -9
- package/src/store/tool/slices/builtin/selectors.test.ts +4 -30
- package/src/store/tool/slices/builtin/selectors.ts +15 -21
- package/src/store/tool/slices/mcpStore/action.test.ts +95 -3
- package/src/store/tool/slices/mcpStore/action.ts +177 -53
- package/src/store/tool/slices/oldStore/initialState.ts +1 -2
- package/src/store/user/initialState.ts +1 -7
- package/src/store/user/selectors.ts +1 -5
- package/src/store/user/slices/common/action.test.ts +1 -4
- package/src/store/user/slices/common/action.ts +5 -4
- package/src/store/user/slices/preference/action.ts +8 -1
- package/src/store/user/slices/preference/selectors/index.ts +2 -0
- package/src/store/user/slices/preference/selectors/labPrefer.ts +10 -0
- package/src/store/user/slices/preference/{selectors.ts → selectors/preference.ts} +0 -2
- package/src/store/user/slices/settings/selectors/index.ts +1 -0
- package/src/store/user/slices/settings/selectors/keyVaults.ts +21 -0
- package/src/store/user/store.ts +0 -3
- package/src/tools/index.ts +0 -6
- package/src/tools/renders.ts +0 -3
- package/src/tools/web-browsing/Portal/Search/Footer.tsx +2 -2
- package/src/tools/web-browsing/Render/Search/ConfigForm/Form.tsx +1 -1
- package/tsconfig.json +9 -3
- package/packages/const/src/guide.ts +0 -89
- package/packages/context-engine/ARCHITECTURE.md +0 -425
- package/packages/context-engine/src/providers/InboxGuide.ts +0 -102
- package/packages/context-engine/src/providers/__tests__/InboxGuideProvider.test.ts +0 -121
- package/packages/database/src/models/__tests__/message.test.ts +0 -2552
- package/packages/database/src/utils/__tests__/groupMessages.test.ts +0 -989
- package/packages/database/src/utils/groupMessages.ts +0 -359
- package/packages/utils/src/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -104
- package/packages/utils/src/_deprecated/parseModels.test.ts +0 -287
- package/packages/utils/src/_deprecated/parseModels.ts +0 -165
- package/packages/utils/src/tokenizer/client.ts +0 -35
- package/packages/utils/src/tokenizer/estimated.ts +0 -4
- package/packages/utils/src/tokenizer/server.ts +0 -11
- package/packages/utils/src/tokenizer/tokenizer.worker.ts +0 -12
- package/src/app/(backend)/trpc/edge/[trpc]/route.ts +0 -26
- package/src/app/(backend)/webapi/tokenizer/index.test.ts +0 -32
- package/src/app/(backend)/webapi/tokenizer/route.ts +0 -8
- package/src/app/[variants]/(main)/(mobile)/me/data/features/Category.tsx +0 -48
- package/src/app/[variants]/(main)/(mobile)/me/data/features/Header.tsx +0 -33
- package/src/app/[variants]/(main)/(mobile)/me/data/layout.tsx +0 -13
- package/src/app/[variants]/(main)/(mobile)/me/data/loading.tsx +0 -5
- package/src/app/[variants]/(main)/chat/(workspace)/layout.ts +0 -11
- package/src/app/[variants]/(main)/chat/(workspace)/page.tsx +0 -53
- package/src/app/[variants]/(main)/chat/@session/default.tsx +0 -31
- package/src/app/[variants]/(main)/chat/features/Migration/DBReader.ts +0 -290
- package/src/app/[variants]/(main)/chat/features/Migration/ExportConfigButton.tsx +0 -35
- package/src/app/[variants]/(main)/chat/features/Migration/Failed.tsx +0 -120
- package/src/app/[variants]/(main)/chat/features/Migration/Modal.tsx +0 -81
- package/src/app/[variants]/(main)/chat/features/Migration/Start.tsx +0 -108
- package/src/app/[variants]/(main)/chat/features/Migration/UpgradeButton.tsx +0 -71
- package/src/app/[variants]/(main)/chat/features/Migration/const.ts +0 -15
- package/src/app/[variants]/(main)/chat/features/Migration/index.tsx +0 -50
- package/src/app/[variants]/(main)/chat/settings/layout.tsx +0 -21
- package/src/app/[variants]/loading/Client/Content.tsx +0 -48
- package/src/app/[variants]/loading/Client/Error.tsx +0 -27
- package/src/app/[variants]/loading/Client/Redirect.tsx +0 -47
- package/src/app/[variants]/loading/Client/index.tsx +0 -22
- package/src/components/InnerLink.tsx +0 -20
- package/src/database/_deprecated/core/__tests__/db-upgrade.test.ts +0 -42
- package/src/database/_deprecated/core/__tests__/db.test.ts +0 -79
- package/src/database/_deprecated/core/__tests__/model.test.ts +0 -55
- package/src/database/_deprecated/core/db.ts +0 -246
- package/src/database/_deprecated/core/index.ts +0 -2
- package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/input.json +0 -55
- package/src/database/_deprecated/core/migrations/migrateSettingsToUser/fixtures/output.json +0 -60
- package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.test.ts +0 -14
- package/src/database/_deprecated/core/migrations/migrateSettingsToUser/index.ts +0 -22
- package/src/database/_deprecated/core/migrations/migrateSettingsToUser/type.ts +0 -105
- package/src/database/_deprecated/core/model.ts +0 -218
- package/src/database/_deprecated/core/schemas.ts +0 -88
- package/src/database/_deprecated/core/types/db.ts +0 -15
- package/src/database/_deprecated/models/__DEBUG.ts +0 -124
- package/src/database/_deprecated/models/__tests__/file.test.ts +0 -83
- package/src/database/_deprecated/models/__tests__/message.test.ts +0 -426
- package/src/database/_deprecated/models/__tests__/plugin.test.ts +0 -81
- package/src/database/_deprecated/models/__tests__/session.test.ts +0 -253
- package/src/database/_deprecated/models/__tests__/sessionGroup.test.ts +0 -220
- package/src/database/_deprecated/models/__tests__/topic.test.ts +0 -523
- package/src/database/_deprecated/models/__tests__/user.test.ts +0 -82
- package/src/database/_deprecated/models/file.ts +0 -51
- package/src/database/_deprecated/models/message.ts +0 -277
- package/src/database/_deprecated/models/plugin.ts +0 -62
- package/src/database/_deprecated/models/session.ts +0 -271
- package/src/database/_deprecated/models/sessionGroup.ts +0 -93
- package/src/database/_deprecated/models/topic.ts +0 -250
- package/src/database/_deprecated/models/user.ts +0 -69
- package/src/database/_deprecated/schemas/files.ts +0 -39
- package/src/database/_deprecated/schemas/message.ts +0 -50
- package/src/database/_deprecated/schemas/plugin.ts +0 -12
- package/src/database/_deprecated/schemas/session.ts +0 -54
- package/src/database/_deprecated/schemas/sessionGroup.ts +0 -8
- package/src/database/_deprecated/schemas/topic.ts +0 -12
- package/src/database/_deprecated/schemas/user.ts +0 -40
- package/src/envs/__tests__/auth.test.ts +0 -200
- package/src/features/Conversation/Error/InvalidAccessCode.tsx +0 -79
- package/src/features/DataImporter/_deprecated.ts +0 -43
- package/src/features/InitClientDB/EnableModal.tsx +0 -118
- package/src/features/InitClientDB/ErrorResult.tsx +0 -143
- package/src/features/InitClientDB/InitIndicator.tsx +0 -124
- package/src/features/InitClientDB/PGliteIcon.tsx +0 -28
- package/src/features/InitClientDB/features/DatabaseRepair/Backup.tsx +0 -75
- package/src/features/InitClientDB/features/DatabaseRepair/Diagnosis.tsx +0 -98
- package/src/features/InitClientDB/features/DatabaseRepair/Repair.tsx +0 -218
- package/src/features/InitClientDB/features/DatabaseRepair/index.tsx +0 -91
- package/src/features/InitClientDB/index.tsx +0 -37
- package/src/hooks/_header.ts +0 -23
- package/src/libs/trpc/client/edge.ts +0 -26
- package/src/libs/trpc/edge/context.ts +0 -71
- package/src/libs/trpc/edge/index.ts +0 -45
- package/src/libs/trpc/edge/init.ts +0 -26
- package/src/libs/trpc/edge/middleware/jwtPayload.test.ts +0 -75
- package/src/libs/trpc/edge/middleware/jwtPayload.ts +0 -14
- package/src/migrations/FromV0ToV1.ts +0 -10
- package/src/migrations/FromV1ToV2/fixtures/input-v1-session.json +0 -191
- package/src/migrations/FromV1ToV2/fixtures/output-v2.json +0 -202
- package/src/migrations/FromV1ToV2/index.ts +0 -82
- package/src/migrations/FromV1ToV2/migrations.test.ts +0 -224
- package/src/migrations/FromV1ToV2/types/v1.ts +0 -78
- package/src/migrations/FromV1ToV2/types/v2.ts +0 -52
- package/src/migrations/FromV2ToV3/fixtures/input-v2-session.json +0 -72
- package/src/migrations/FromV2ToV3/fixtures/output-v3-from-v1.json +0 -203
- package/src/migrations/FromV2ToV3/fixtures/output-v3.json +0 -74
- package/src/migrations/FromV2ToV3/index.ts +0 -30
- package/src/migrations/FromV2ToV3/migrations.test.ts +0 -42
- package/src/migrations/FromV2ToV3/types/v3.ts +0 -27
- package/src/migrations/FromV3ToV4/fixtures/azure-input-v3.json +0 -79
- package/src/migrations/FromV3ToV4/fixtures/azure-output-v4.json +0 -75
- package/src/migrations/FromV3ToV4/fixtures/ollama-input-v3.json +0 -85
- package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -86
- package/src/migrations/FromV3ToV4/fixtures/openai-input-v3.json +0 -77
- package/src/migrations/FromV3ToV4/fixtures/openai-output-v4.json +0 -77
- package/src/migrations/FromV3ToV4/fixtures/openrouter-input-v3.json +0 -82
- package/src/migrations/FromV3ToV4/fixtures/openrouter-output-v4.json +0 -85
- package/src/migrations/FromV3ToV4/fixtures/output-v4-from-v1.json +0 -203
- package/src/migrations/FromV3ToV4/index.ts +0 -102
- package/src/migrations/FromV3ToV4/migrations.test.ts +0 -195
- package/src/migrations/FromV3ToV4/types/v3.ts +0 -52
- package/src/migrations/FromV3ToV4/types/v4.ts +0 -37
- package/src/migrations/FromV4ToV5/fixtures/from-v1-to-v5-output.json +0 -245
- package/src/migrations/FromV4ToV5/fixtures/function-input-v4.json +0 -96
- package/src/migrations/FromV4ToV5/fixtures/function-output-v5.json +0 -120
- package/src/migrations/FromV4ToV5/index.ts +0 -58
- package/src/migrations/FromV4ToV5/migrations.test.ts +0 -49
- package/src/migrations/FromV4ToV5/types/v4.ts +0 -21
- package/src/migrations/FromV4ToV5/types/v5.ts +0 -27
- package/src/migrations/FromV5ToV6/fixtures/from-v1-to-v6-output.json +0 -247
- package/src/migrations/FromV5ToV6/fixtures/session-input-v5.json +0 -81
- package/src/migrations/FromV5ToV6/fixtures/session-output-v6.json +0 -85
- package/src/migrations/FromV5ToV6/index.ts +0 -61
- package/src/migrations/FromV5ToV6/migrations.test.ts +0 -50
- package/src/migrations/FromV5ToV6/types/v5.ts +0 -48
- package/src/migrations/FromV5ToV6/types/v6.ts +0 -63
- package/src/migrations/FromV6ToV7/fixtures/output-v7-from-v1.json +0 -203
- package/src/migrations/FromV6ToV7/fixtures/provider-input-v6.json +0 -103
- package/src/migrations/FromV6ToV7/fixtures/provider-output-v7.json +0 -118
- package/src/migrations/FromV6ToV7/index.ts +0 -101
- package/src/migrations/FromV6ToV7/migrations.test.ts +0 -64
- package/src/migrations/FromV6ToV7/types/v6.ts +0 -61
- package/src/migrations/FromV6ToV7/types/v7.ts +0 -69
- package/src/migrations/VersionController.test.ts +0 -88
- package/src/migrations/VersionController.ts +0 -67
- package/src/migrations/index.ts +0 -61
- package/src/server/globalConfig/_deprecated.test.ts +0 -92
- package/src/server/globalConfig/_deprecated.ts +0 -41
- package/src/server/routers/edge/appStatus.ts +0 -3
- package/src/server/routers/edge/index.ts +0 -14
- package/src/server/routers/edge/upload.ts +0 -16
- package/src/services/aiModel/client.ts +0 -70
- package/src/services/aiModel/server.test.ts +0 -122
- package/src/services/aiModel/server.ts +0 -51
- package/src/services/aiModel/type.ts +0 -32
- package/src/services/aiProvider/client.ts +0 -58
- package/src/services/aiProvider/server.ts +0 -43
- package/src/services/aiProvider/type.ts +0 -27
- package/src/services/baseClientService/index.ts +0 -9
- package/src/services/chat/__snapshots__/chat.test.ts.snap +0 -110
- package/src/services/chatGroup/client.ts +0 -63
- package/src/services/chatGroup/server.ts +0 -67
- package/src/services/chatGroup/type.ts +0 -22
- package/src/services/export/_deprecated.ts +0 -155
- package/src/services/export/client.ts +0 -15
- package/src/services/export/server.ts +0 -9
- package/src/services/export/type.ts +0 -5
- package/src/services/file/_deprecated.test.ts +0 -119
- package/src/services/file/_deprecated.ts +0 -80
- package/src/services/file/client.test.ts +0 -199
- package/src/services/file/client.ts +0 -85
- package/src/services/file/server.ts +0 -53
- package/src/services/file/type.ts +0 -13
- package/src/services/import/_deprecated.ts +0 -115
- package/src/services/import/client.test.ts +0 -1015
- package/src/services/import/client.ts +0 -64
- package/src/services/import/server.ts +0 -133
- package/src/services/import/type.ts +0 -17
- package/src/services/message/_deprecated.test.ts +0 -398
- package/src/services/message/_deprecated.ts +0 -168
- package/src/services/message/client.test.ts +0 -410
- package/src/services/message/client.ts +0 -186
- package/src/services/message/server.ts +0 -150
- package/src/services/message/type.ts +0 -54
- package/src/services/plugin/_deprecated.test.ts +0 -162
- package/src/services/plugin/_deprecated.ts +0 -42
- package/src/services/plugin/client.test.ts +0 -177
- package/src/services/plugin/client.ts +0 -46
- package/src/services/plugin/server.ts +0 -42
- package/src/services/plugin/type.ts +0 -23
- package/src/services/session/_deprecated.test.ts +0 -440
- package/src/services/session/_deprecated.ts +0 -190
- package/src/services/session/client.test.ts +0 -413
- package/src/services/session/client.ts +0 -193
- package/src/services/session/server.test.ts +0 -260
- package/src/services/session/server.ts +0 -125
- package/src/services/session/type.ts +0 -82
- package/src/services/thread/client.ts +0 -51
- package/src/services/thread/server.ts +0 -32
- package/src/services/thread/type.ts +0 -21
- package/src/services/topic/_deprecated.test.ts +0 -245
- package/src/services/topic/_deprecated.ts +0 -75
- package/src/services/topic/client.ts +0 -89
- package/src/services/topic/pglite.test.ts +0 -212
- package/src/services/topic/server.ts +0 -57
- package/src/services/topic/type.ts +0 -40
- package/src/services/user/_deprecated.test.ts +0 -101
- package/src/services/user/_deprecated.ts +0 -70
- package/src/services/user/client.test.ts +0 -108
- package/src/services/user/client.ts +0 -104
- package/src/services/user/server.test.ts +0 -149
- package/src/services/user/server.ts +0 -47
- package/src/services/user/type.ts +0 -21
- package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +0 -1209
- package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +0 -718
- package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +0 -849
- package/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts +0 -591
- package/src/store/chat/slices/builtinTool/actions/__tests__/dalle.test.ts +0 -121
- package/src/store/chat/slices/builtinTool/actions/dalle.ts +0 -124
- package/src/store/chat/slices/message/action.ts +0 -553
- package/src/store/chat/slices/message/selectors.test.ts +0 -473
- package/src/store/chat/slices/message/selectors.ts +0 -322
- package/src/store/chat/slices/plugin/action.ts +0 -548
- package/src/store/global/actions/clientDb.ts +0 -67
- package/src/store/user/slices/modelList/__snapshots__/action.test.ts.snap +0 -12
- package/src/store/user/slices/modelList/action.test.ts +0 -359
- package/src/store/user/slices/modelList/action.ts +0 -223
- package/src/store/user/slices/modelList/initialState.ts +0 -15
- package/src/store/user/slices/modelList/reducers/customModelCard.test.ts +0 -204
- package/src/store/user/slices/modelList/reducers/customModelCard.ts +0 -64
- package/src/store/user/slices/modelList/selectors/index.ts +0 -3
- package/src/store/user/slices/modelList/selectors/keyVaults.test.ts +0 -201
- package/src/store/user/slices/modelList/selectors/keyVaults.ts +0 -50
- package/src/store/user/slices/modelList/selectors/modelConfig.test.ts +0 -219
- package/src/store/user/slices/modelList/selectors/modelConfig.ts +0 -95
- package/src/store/user/slices/modelList/selectors/modelProvider.test.ts +0 -138
- package/src/store/user/slices/modelList/selectors/modelProvider.ts +0 -170
- package/src/tools/dalle/Render/GalleyGrid.tsx +0 -60
- package/src/tools/dalle/Render/Item/EditMode.tsx +0 -66
- package/src/tools/dalle/Render/Item/Error.tsx +0 -49
- package/src/tools/dalle/Render/Item/Image.tsx +0 -44
- package/src/tools/dalle/Render/Item/ImageFileItem.tsx +0 -57
- package/src/tools/dalle/Render/Item/index.tsx +0 -88
- package/src/tools/dalle/Render/ToolBar.tsx +0 -56
- package/src/tools/dalle/Render/index.tsx +0 -52
- package/src/tools/dalle/index.ts +0 -92
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/default.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatHydration/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Desktop/ClassicChat.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Desktop/GroupChat.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Desktop/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Desktop/useSendMenuItems.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Mobile/MentionedUsers/MentionedUserItem.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Mobile/MentionedUsers/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/Mobile/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/ActionBar.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/Files/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/InputArea/Container.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/InputArea/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/V1Mobile/Send.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatInput/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/ChatItem/OrchestratorThinking.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/ChatItem/Thread.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/ChatItem/ThreadItem.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/AgentWelcome/AddButton.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/AgentWelcome/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/GroupWelcome/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/GroupWelcome/useTemplateMatching.ts +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/WelcomeChatItem/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatList/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ChatMinimap/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ThreadHydration.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ZenModeToast/Toast.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@conversation → components/conversation}/features/ZenModeToast/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace) → components}/features/AgentSettings/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace) → components}/features/AgentTeamSettings/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace) → components}/features/ChangelogModal.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace) → components}/features/SettingButton.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace) → components}/features/ShareButton/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace) → components}/features/TelemetryNotification.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/HeaderAction.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/Main.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/Tags/HistoryLimitTags.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/Tags/KnowledgeTag.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/Tags/MemberCountTag.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/Tags/SearchTags.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/Tags/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/ChatHeader/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/Portal.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/TopicPanel.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Desktop/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Mobile/ChatHeader/ChatHeaderTitle.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Mobile/ChatHeader/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Mobile/TopicModal.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/Mobile/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/_layout → components/layout}/type.ts +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@portal → components/portal}/_layout/Desktop.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@portal → components/portal}/_layout/Mobile.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@portal → components/portal}/default.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@portal → components/portal}/error.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@portal → components/portal}/features/Body.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@portal → components/portal}/loading.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/_layout/Desktop.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/_layout/Mobile.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/default.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/AgentConfig/SystemRole.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/AgentConfig/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/ConfigLayout.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/ConfigSwitcher.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/GroupConfig/GroupMember.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/GroupConfig/GroupMemberItem.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/GroupConfig/GroupRole.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/GroupConfig/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/GroupConfig/style.ts +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/SkeletonList.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/Header.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/ByTimeMode/GroupItem.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/ByTimeMode/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/FlatMode/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/SearchResult/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/ThreadItem/Content.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/ThreadItem/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/ThreadList/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/TopicItem/DefaultContent.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/TopicItem/TopicContent.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/TopicItem/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicListContent/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/TopicSearchBar/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{(workspace)/@topic → components/topic}/features/Topic/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionHydration.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/CollapseGroup/Actions.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/CollapseGroup/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/DefaultMode.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/Inbox/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/List/AddButton.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/List/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/ListItem/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/Modals/ConfigGroupModal/GroupItem.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/Modals/ConfigGroupModal/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/Modals/CreateGroupModal.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/Modals/RenameGroupModal.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/SearchMode.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionListContent/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SessionSearchBar.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session → session}/features/SkeletonList.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session/_layout → session/layout}/Desktop/PanelBody.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session/_layout → session/layout}/Desktop/SessionHeader.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session/_layout → session/layout}/Desktop/index.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session/_layout → session/layout}/Mobile/SessionHeader.tsx +0 -0
- /package/src/app/[variants]/(main)/chat/{@session/_layout → session/layout}/Mobile/index.tsx +0 -0
- /package/src/{app/[variants]/(main)/settings/provider/features/ProviderConfig → components/Skeleton}/SkeletonInput.tsx +0 -0
- /package/src/{middleware.ts → proxy.ts} +0 -0
|
@@ -21,49 +21,52 @@ tags:
|
|
|
21
21
|
<Steps>
|
|
22
22
|
### Create a Google Cloud OAuth 2.0 Client
|
|
23
23
|
|
|
24
|
-
In your [Google Cloud Console][google-cloud-console], navigate to **APIs & Services > Credentials**.
|
|
24
|
+
In your [Google Cloud Console][google-cloud-console], navigate to **APIs & Services > Credentials**.
|
|
25
25
|
|
|
26
|
-
Click on **Create Credentials** and select **OAuth client ID**.
|
|
26
|
+
Click on **Create Credentials** and select **OAuth client ID**.
|
|
27
27
|
|
|
28
|
-
If you haven't already set up a consent screen, you will be prompted to do so. Complete the OAuth consent screen setup (specify app name, support email, and add authorized users if needed).
|
|
28
|
+
If you haven't already set up a consent screen, you will be prompted to do so. Complete the OAuth consent screen setup (specify app name, support email, and add authorized users if needed).
|
|
29
29
|
|
|
30
|
-
Select **Web application** as the application type.
|
|
30
|
+
Select **Web application** as the application type.
|
|
31
31
|
|
|
32
|
-
In the **Authorized redirect URIs** section, enter:
|
|
32
|
+
In the **Authorized redirect URIs** section, enter:
|
|
33
33
|
|
|
34
|
-
```bash
|
|
35
|
-
https://your-domain/api/auth/callback/google
|
|
36
|
-
```
|
|
34
|
+
```bash
|
|
35
|
+
https://your-domain/api/auth/callback/google
|
|
36
|
+
```
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
\- You can add or modify redirect URIs after registration, but make sure the URL matches your deployed LobeChat instance.
|
|
40
|
-
\- Replace "your-domain" with your actual domain.
|
|
38
|
+
<Callout type={'info'}>
|
|
39
|
+
\- You can add or modify redirect URIs after registration, but make sure the URL matches your deployed LobeChat instance.
|
|
40
|
+
\- Replace "your-domain" with your actual domain.
|
|
41
|
+
</Callout>
|
|
41
42
|
|
|
42
|
-
Click **Create**.
|
|
43
|
+
Click **Create**.
|
|
43
44
|
|
|
44
|
-
After creation, copy the **Client ID** and **Client Secret**.
|
|
45
|
+
After creation, copy the **Client ID** and **Client Secret**.
|
|
45
46
|
|
|
46
47
|
<Image alt="Google OAuth Setup" inStep src="https://developers.google.com/static/identity/images/gsi/web/gcs-signin-2.png" />
|
|
47
48
|
|
|
48
|
-
### Add Users (Optional for Internal Use Only)
|
|
49
|
+
### Add Users (Optional for Internal Use Only)
|
|
49
50
|
|
|
50
|
-
If your application is in **Testing** or **Internal** publishing status, add user emails in the OAuth consent screen under **Test users**.
|
|
51
|
-
Users not added here will not be able to authenticate.
|
|
51
|
+
If your application is in **Testing** or **Internal** publishing status, add user emails in the OAuth consent screen under **Test users**.
|
|
52
|
+
Users not added here will not be able to authenticate.
|
|
52
53
|
|
|
53
|
-
### Configure Environment Variables
|
|
54
|
+
### Configure Environment Variables
|
|
54
55
|
|
|
55
|
-
When deploying LobeChat, configure the following environment variables:
|
|
56
|
+
When deploying LobeChat, configure the following environment variables:
|
|
56
57
|
|
|
57
|
-
| Environment Variable | Type | Description |
|
|
58
|
-
| ------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
59
|
-
| `NEXT_AUTH_SECRET` | Required | Key to encrypt Auth.js session tokens. Generate using: `openssl rand -base64 32` |
|
|
60
|
-
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LobeChat. Use `google` for Google SSO. |
|
|
61
|
-
| `AUTH_GOOGLE_ID` | Required | Client ID from Google Cloud OAuth. |
|
|
62
|
-
| `AUTH_GOOGLE_SECRET` | Required | Client Secret from Google Cloud OAuth. |
|
|
63
|
-
| `
|
|
58
|
+
| Environment Variable | Type | Description |
|
|
59
|
+
| ------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
60
|
+
| `NEXT_AUTH_SECRET` | Required | Key to encrypt Auth.js session tokens. Generate using: `openssl rand -base64 32` |
|
|
61
|
+
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LobeChat. Use `google` for Google SSO. |
|
|
62
|
+
| `AUTH_GOOGLE_ID` | Required | Client ID from Google Cloud OAuth. |
|
|
63
|
+
| `AUTH_GOOGLE_SECRET` | Required | Client Secret from Google Cloud OAuth. |
|
|
64
|
+
| `AUTH_URL` | Required | Specifies the callback address for Auth.js when performing OAuth authentication. E.g. `https://your-domain/api/auth` |
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
See [📘 environment variables](/docs/self-hosting/environment-variable#google) for more details on these variables.
|
|
66
|
+
<Callout type={'tip'}>
|
|
67
|
+
See [📘 environment variables](/docs/self-hosting/environment-variable#google) for more details on these variables.
|
|
68
|
+
</Callout>
|
|
69
|
+
</Steps>
|
|
67
70
|
|
|
68
71
|
<Callout>
|
|
69
72
|
After successful deployment, users can sign in to LobeChat using their Google accounts (those added as Test Users, if not in production).
|
|
@@ -75,8 +78,8 @@ See the [Google Identity Platform Documentation][google-identity-docs] for advan
|
|
|
75
78
|
|
|
76
79
|
## Related Resources
|
|
77
80
|
|
|
78
|
-
|
|
81
|
+
- [Quickstart: Configure a Google OAuth client][google-oauth-quickstart]
|
|
79
82
|
|
|
80
83
|
[google-cloud-console]: https://console.cloud.google.com/apis/credentials
|
|
81
|
-
[google-oauth-quickstart]: https://developers.google.com/identity/protocols/oauth2/web-server#creatingcred
|
|
82
84
|
[google-identity-docs]: https://developers.google.com/identity
|
|
85
|
+
[google-oauth-quickstart]: https://developers.google.com/identity/protocols/oauth2/web-server#creatingcred
|
|
@@ -108,12 +108,12 @@ If you deploy using a public network, this guide assumes:
|
|
|
108
108
|
|
|
109
109
|
| Environment Variable | Type | Description |
|
|
110
110
|
| ------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
111
|
-
| `
|
|
111
|
+
| `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using: `openssl rand -base64 32` |
|
|
112
112
|
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LobeChat. For Keycloak, fill in `keycloak`. |
|
|
113
113
|
| `AUTH_KEYCLOAK_ID` | Required | Keycloak client ID |
|
|
114
114
|
| `AUTH_KEYCLOAK_SECRET` | Required | Keycloak client secret |
|
|
115
115
|
| `AUTH_KEYCLOAK_ISSUER` | Required | OpenID Connect issuer URL for the Keycloak provider, in the format `{keycloak_url}/realms/{realm_name}` |
|
|
116
|
-
| `
|
|
116
|
+
| `AUTH_URL` | Required | This URL specifies the callback address for Auth.js during OAuth verification. Only needed when the default generated redirect address is incorrect. `https://lobe.example.com/api/auth` |
|
|
117
117
|
|
|
118
118
|
<Callout type={'tip'}>
|
|
119
119
|
Visit [📘 Environment Variables](/zh/docs/self-hosting/environment-variables/auth#keycloak) for details on related variables.
|
|
@@ -105,12 +105,12 @@ tags:
|
|
|
105
105
|
|
|
106
106
|
| 环境变量 | 类型 | 描述 |
|
|
107
107
|
| ------------------------- | -- | ------------------------------------------------------------------------------------------------ |
|
|
108
|
-
| `
|
|
108
|
+
| `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
|
|
109
109
|
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Keycloak 请填写 `keycloak`。 |
|
|
110
110
|
| `AUTH_KEYCLOAK_ID` | 必选 | Keycloak 客户端 ID |
|
|
111
111
|
| `AUTH_KEYCLOAK_SECRET` | 必选 | Keycloak 客户端密钥 |
|
|
112
112
|
| `AUTH_KEYCLOAK_ISSUER` | 必选 | Keycloak 提供程序的 OpenID Connect 颁发者 URL,格式为 `{keycloak_url}/realms/{realm_name}` |
|
|
113
|
-
| `
|
|
113
|
+
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://lobe.example.com/api/auth` |
|
|
114
114
|
|
|
115
115
|
<Callout type={'tip'}>
|
|
116
116
|
前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#keycloak) 可查阅相关变量详情。
|
|
@@ -50,7 +50,9 @@ If you are using Logto Cloud, assume its endpoint domain is `https://example.log
|
|
|
50
50
|
Go to `Webhooks`, create a Webhook, and fill in the following fields:
|
|
51
51
|
|
|
52
52
|
- Endpoint URL: `https://lobe.example.com/api/webhooks/logto`
|
|
53
|
-
- Events:
|
|
53
|
+
- Events:
|
|
54
|
+
- `User.Data.Updated`: Allow LobeChat to synchronize user profile information updates from Logto.
|
|
55
|
+
- `User.SuspensionStatus.Updated`: Allow LobeChat to remove the active session from suspended users from logging in, only available when database session strategy is `database`.
|
|
54
56
|
|
|
55
57
|
After successful creation, copy the Webhook's `Signing Key` and fill it in the `LOGTO_WEBHOOK_SIGNING_KEY` environment variable.
|
|
56
58
|
|
|
@@ -69,12 +71,12 @@ If you are using Logto Cloud, assume its endpoint domain is `https://example.log
|
|
|
69
71
|
|
|
70
72
|
| Environment Variable | Type | Description |
|
|
71
73
|
| --------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
72
|
-
| `
|
|
74
|
+
| `AUTH_SECRET` | Required | The key used to encrypt Auth.js session tokens. You can generate a key using the command: `openssl rand -base64 32` |
|
|
73
75
|
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LobeChat. For Logto, enter `logto`. |
|
|
74
76
|
| `AUTH_LOGTO_ID` | Required | The Client ID from the Logto App details page |
|
|
75
77
|
| `AUTH_LOGTO_SECRET` | Required | The Client Secret from the Logto App details page |
|
|
76
78
|
| `AUTH_LOGTO_ISSUER` | Required | OpenID Connect issuer of the Logto provider |
|
|
77
|
-
| `
|
|
79
|
+
| `AUTH_URL` | Required | This URL specifies the callback address for Auth.js during OAuth verification, needed only if the default generated redirect address is incorrect. `https://lobe.example.com/api/auth` |
|
|
78
80
|
| `LOGTO_WEBHOOK_SIGNING_KEY` | Optional | The key used to verify the legality of Webhook requests sent by Logto. |
|
|
79
81
|
|
|
80
82
|
<Callout type={'tip'}>
|
|
@@ -47,7 +47,9 @@ tags:
|
|
|
47
47
|
前往 `Webhooks` ,创建一个 Webhook,填写以下字段:
|
|
48
48
|
|
|
49
49
|
- 端点 URL: `https://lobe.example.com/api/webhooks/logto`
|
|
50
|
-
- 事件:
|
|
50
|
+
- 事件:
|
|
51
|
+
- `User.Data.Updated`: 允许 LobeChat 同步 Logto 中用户资料信息的更新。
|
|
52
|
+
- `User.SuspensionStatus.Updated`: 允许 LobeChat 将被暂停的用户移除登录会话,仅在数据库会话策略为 `database` 时可用。
|
|
51
53
|
|
|
52
54
|
创建成功后,复制 Webhook 的 `签名密钥`。填写到环境变量中的 `LOGTO_WEBHOOK_SIGNING_KEY`。
|
|
53
55
|
|
|
@@ -66,12 +68,12 @@ tags:
|
|
|
66
68
|
|
|
67
69
|
| 环境变量 | 类型 | 描述 |
|
|
68
70
|
| --------------------------- | -- | ------------------------------------------------------------------------------------------------ |
|
|
69
|
-
| `
|
|
71
|
+
| `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
|
|
70
72
|
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Logto 请填写 `logto`。 |
|
|
71
73
|
| `AUTH_LOGTO_ID` | 必选 | Logto App 详情页的 Client ID |
|
|
72
74
|
| `AUTH_LOGTO_SECRET` | 必选 | Logto App 详情页的 Client Secret |
|
|
73
75
|
| `AUTH_LOGTO_ISSUER` | 必选 | Logto 提供程序的 OpenID Connect 颁发者 |
|
|
74
|
-
| `
|
|
76
|
+
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://lobe.example.com/api/auth` |
|
|
75
77
|
| `LOGTO_WEBHOOK_SIGNING_KEY` | 可选 | 用于验证 Logto 发送的 Webhook 请求是否合法的密钥。 |
|
|
76
78
|
|
|
77
79
|
<Callout type={'tip'}>
|
|
@@ -58,12 +58,12 @@ tags:
|
|
|
58
58
|
|
|
59
59
|
| Environment Variable | Type | Description |
|
|
60
60
|
| ----------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
61
|
-
| `
|
|
61
|
+
| `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate the key using the following command: `openssl rand -base64 32` |
|
|
62
62
|
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LoboChat. Use `microsoft-entra-id` for Microsoft Entra ID. |
|
|
63
63
|
| `AUTH_MICROSOFT_ENTRA_ID_ID` | Required | Client ID of the Microsoft Entra ID application. |
|
|
64
64
|
| `AUTH_MICROSOFT_ENTRA_ID_SECRET` | Required | Client Secret of the Microsoft Entra ID application. |
|
|
65
65
|
| `AUTH_MICROSOFT_ENTRA_ID_TENANT_ID` | Required | Tenant ID of the Microsoft Entra ID application. |
|
|
66
|
-
| `
|
|
66
|
+
| `AUTH_URL` | Required | This URL is used to specify the callback address for Auth.js when performing OAuth authentication. It is only necessary to set it when the default generated redirect address is incorrect. `https://example.com/api/auth` |
|
|
67
67
|
|
|
68
68
|
<Callout type={'tip'}>
|
|
69
69
|
You can refer to [📘 environment
|
|
@@ -56,12 +56,12 @@ tags:
|
|
|
56
56
|
|
|
57
57
|
| 环境变量 | 类型 | 描述 |
|
|
58
58
|
| ----------------------------------- | -- | ------------------------------------------------------------------------------------------- |
|
|
59
|
-
| `
|
|
59
|
+
| `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
|
|
60
60
|
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Microsoft Entra ID 请填写 `microsoft-entra-id`。 |
|
|
61
61
|
| `AUTH_MICROSOFT_ENTRA_ID_ID` | 必选 | Microsoft Entra ID 应用程序的 Client ID |
|
|
62
62
|
| `AUTH_MICROSOFT_ENTRA_ID_SECRET` | 必选 | Microsoft Entra ID 应用程序的 Client Secret |
|
|
63
63
|
| `AUTH_MICROSOFT_ENTRA_ID_TENANT_ID` | 必选 | Microsoft Entra ID 应用程序的 Tenant ID |
|
|
64
|
-
| `
|
|
64
|
+
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
|
|
65
65
|
|
|
66
66
|
<Callout type={'tip'}>
|
|
67
67
|
前往 [📘 环境变量](/zh/docs/self-hosting/environment-variable#microsoft-entra-id) 可查阅相关变量详情。
|
|
@@ -45,12 +45,12 @@ tags:
|
|
|
45
45
|
|
|
46
46
|
| Environment Variable | Type | Description |
|
|
47
47
|
| ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
48
|
-
| `
|
|
48
|
+
| `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using the following command: `openssl rand -base64 32` |
|
|
49
49
|
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LoboChat. Use `okta` for Okta. |
|
|
50
50
|
| `AUTH_OKTA_ID` | Required | Client ID of the Okta application |
|
|
51
51
|
| `AUTH_OKTA_SECRET` | Required | Client Secret of the Okta application |
|
|
52
52
|
| `AUTH_OKTA_ISSUER` | Required | Domain of the Okta application, `https://example.oktapreview.com` |
|
|
53
|
-
| `
|
|
53
|
+
| `AUTH_URL` | Optional | The URL is used to specify the callback address for the execution of OAuth authentication in Auth.js. It needs to be set only when the default address is incorrect. `https://example.com/api/auth` |
|
|
54
54
|
|
|
55
55
|
<Callout type={'tip'}>
|
|
56
56
|
You can refer to the related variable details at [📘Environment Variables](/docs/self-hosting/environment-variable/auth#okta).
|
|
@@ -44,12 +44,12 @@ tags:
|
|
|
44
44
|
|
|
45
45
|
| 环境变量 | 类型 | 描述 |
|
|
46
46
|
| ------------------------- | -- | ------------------------------------------------------------------------------------ |
|
|
47
|
-
| `
|
|
47
|
+
| `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成密钥:`openssl rand -base64 32` |
|
|
48
48
|
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Okta 请填写 `okta`。 |
|
|
49
49
|
| `AUTH_OKTA_ID` | 必选 | Okta 应用程序的客户端 ID |
|
|
50
50
|
| `AUTH_OKTA_SECRET` | 必选 | Okta 应用程序的客户端密钥 |
|
|
51
51
|
| `AUTH_OKTA_ISSUER` | 必选 | Okta 应用程序的域名,`https://example.oktapreview.com` |
|
|
52
|
-
| `
|
|
52
|
+
| `AUTH_URL` | 可选 | 该 URL 用于指定 Auth.js 在执行 OAuth 认证时的回调地址。仅当默认地址不正确时才需要设置。`https://example.com/api/auth` |
|
|
53
53
|
|
|
54
54
|
<Callout type={'tip'}>
|
|
55
55
|
您可以在 [📘环境变量](/zh/docs/self-hosting/environment-variables/auth#okta) 查阅相关变量详情。
|
|
@@ -30,11 +30,11 @@ tags:
|
|
|
30
30
|
|
|
31
31
|
| Environment Variable | Type | Description |
|
|
32
32
|
| ------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
33
|
-
| `
|
|
33
|
+
| `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate the key using the command: `openssl rand -base64 32` |
|
|
34
34
|
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the Single Sign-On provider for LobeChat. Use `github` for Github. |
|
|
35
35
|
| `WECHAT_CLIENT_ID` | Required | Client ID from the Wechat website application details page |
|
|
36
36
|
| `WECHAT_CLIENT_SECRET` | Required | Client Secret from the Wechat website application details page |
|
|
37
|
-
| `
|
|
37
|
+
| `AUTH_URL` | Required | This URL is used to specify the callback address for Auth.js when performing OAuth authentication. Only set it if the default generated redirect address is incorrect. `https://example.com/api/auth` |
|
|
38
38
|
|
|
39
39
|
<Callout type={'tip'}>
|
|
40
40
|
Go to [📘 Environment Variables](/en/docs/self-hosting/environment-variables/auth#wechat) for more details about related variables.
|
|
@@ -28,11 +28,11 @@ tags:
|
|
|
28
28
|
|
|
29
29
|
| 环境变量 | 类型 | 描述 |
|
|
30
30
|
| ------------------------- | -- | ------------------------------------------------------------------------------------------- |
|
|
31
|
-
| `
|
|
31
|
+
| `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
|
|
32
32
|
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Github 请填写 `github`。 |
|
|
33
33
|
| `WECHAT_CLIENT_ID` | 必选 | 微信网站应用详情页的 客户端 ID |
|
|
34
34
|
| `WECHAT_CLIENT_SECRET` | 必选 | 微信网站应用详情页的 客户端 Secret |
|
|
35
|
-
| `
|
|
35
|
+
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
|
|
36
36
|
|
|
37
37
|
<Callout type={'tip'}>
|
|
38
38
|
前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#wechat) 可查阅相关变量详情。
|
|
@@ -65,12 +65,12 @@ tags:
|
|
|
65
65
|
|
|
66
66
|
| Environment Variable | Type | Description |
|
|
67
67
|
| ------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
68
|
-
| `
|
|
68
|
+
| `AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using the following command: `openssl rand -base64 32` |
|
|
69
69
|
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LoboChat. Use `zitadel` for ZITADEL. |
|
|
70
70
|
| `AUTH_ZITADEL_ID` | Required | Client ID (`ClientId` as shown in ZITADEL) of the ZITADEL application |
|
|
71
71
|
| `AUTH_ZITADEL_SECRET` | Required | Client Secret (`ClientSecret` as shown in ZITADEL) of the ZITADEL application |
|
|
72
72
|
| `AUTH_ZITADEL_ISSUER` | Required | Issuer URL of the ZITADEL application |
|
|
73
|
-
| `
|
|
73
|
+
| `AUTH_URL` | Required | The URL is used to specify the callback address for the execution of OAuth authentication in Auth.js. It needs to be set only when the default address is incorrect. `https://example.com/api/auth` |
|
|
74
74
|
|
|
75
75
|
<Callout type={'tip'}>
|
|
76
76
|
You can refer to the related variable details at [📘Environment Variables](/docs/self-hosting/environment-variables/auth#zitadel).
|
|
@@ -62,12 +62,12 @@ tags:
|
|
|
62
62
|
|
|
63
63
|
| 环境变量 | 类型 | 描述 |
|
|
64
64
|
| ------------------------- | -- | ----------------------------------------------------------------------------------- |
|
|
65
|
-
| `
|
|
65
|
+
| `AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成密钥:`openssl rand -base64 32` |
|
|
66
66
|
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 为 LobeChat 选择单点登录提供程序。对于 ZITADEL,请填写 `zitadel`。 |
|
|
67
67
|
| `AUTH_ZITADEL_ID` | 必选 | ZITADEL 应用的 Client ID(`ClientId`)。 |
|
|
68
68
|
| `AUTH_ZITADEL_SECRET` | 必选 | ZITADEL 应用的 Client Secret(`ClientSecret`)。 |
|
|
69
69
|
| `AUTH_ZITADEL_ISSUER` | 必选 | ZITADEL 应用的 OpenID Connect 颁发者(issuer)URL。 |
|
|
70
|
-
| `
|
|
70
|
+
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 中执行 OAuth 认证的回调地址。仅当默认地址不正确时才需要设置。`https://example.com/api/auth` |
|
|
71
71
|
|
|
72
72
|
<Callout type={'tip'}>
|
|
73
73
|
您可以在 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#zitadel) 中查看相关变量的详细信息。
|
|
@@ -26,12 +26,13 @@ By setting the environment variables `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` and `CL
|
|
|
26
26
|
|
|
27
27
|
Before using NextAuth, please set the following variables in LobeChat's environment variables:
|
|
28
28
|
|
|
29
|
-
| Environment Variable
|
|
30
|
-
|
|
|
31
|
-
| `NEXT_PUBLIC_ENABLE_NEXT_AUTH`
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `NEXT_AUTH_SSO_PROVIDERS`
|
|
29
|
+
| Environment Variable | Type | Description |
|
|
30
|
+
| -------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
31
|
+
| `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | Required | This is used to enable the NextAuth service. Set it to `1` to enable it; changing this setting requires recompiling the application. Users deploying with the `lobehub/lobe-chat-database` image have this configuration added by default. |
|
|
32
|
+
| `AUTH_SECRET` | Required | The key used to encrypt Auth.js session tokens. You can use the following command: `openssl rand -base64 32`, or visit `https://generate-secret.vercel.app/32` to generate the key. |
|
|
33
|
+
| `AUTH_URL` | Required | This URL specifies the callback address for Auth.js when performing OAuth verification. Set this only if the default generated redirect address is incorrect. `https://example.com/api/auth` |
|
|
34
|
+
| `NEXT_AUTH_SSO_PROVIDERS` | Optional | This environment variable is used to enable multiple identity verification sources simultaneously, separated by commas, for example, `auth0,microsoft-entra-id,authentik`. |
|
|
35
|
+
| `NEXT_AUTH_SSO_SESSION_STRATEGY` | Optional | The session strategy for Auth.js. Options are `jwt` or `database`. Default is `jwt`. |
|
|
35
36
|
|
|
36
37
|
Currently supported identity verification services include:
|
|
37
38
|
|
|
@@ -67,21 +68,31 @@ To simultaneously enable multiple identity verification sources, please set the
|
|
|
67
68
|
|
|
68
69
|
The order corresponds to the display order of the SSO providers.
|
|
69
70
|
|
|
70
|
-
| SSO Provider | Value |
|
|
71
|
-
| --------------------- | ----------------------- |
|
|
72
|
-
| Auth0 | `auth0` |
|
|
73
|
-
| Authenlia | `authenlia` |
|
|
74
|
-
| Authentik | `authentik` |
|
|
75
|
-
| Casdoor | `casdoor` |
|
|
76
|
-
| Cloudflare Zero Trust | `cloudflare-zero-trust` |
|
|
77
|
-
| Github | `github` |
|
|
78
|
-
| Logto | `logto` |
|
|
79
|
-
| Microsoft Entra ID | `microsoft-entra-id` |
|
|
80
|
-
| ZITADEL | `zitadel` |
|
|
81
|
-
| Keycloak | `keycloak` |
|
|
82
|
-
| Google | `google` |
|
|
83
|
-
| Okta | `okta` |
|
|
71
|
+
| SSO Provider | Value | Additional Features |
|
|
72
|
+
| --------------------- | ----------------------- | ------------------- |
|
|
73
|
+
| Auth0 | `auth0` | |
|
|
74
|
+
| Authenlia | `authenlia` | |
|
|
75
|
+
| Authentik | `authentik` | |
|
|
76
|
+
| Casdoor | `casdoor` | `Webhook` |
|
|
77
|
+
| Cloudflare Zero Trust | `cloudflare-zero-trust` | |
|
|
78
|
+
| Github | `github` | |
|
|
79
|
+
| Logto | `logto` | `Webhook` |
|
|
80
|
+
| Microsoft Entra ID | `microsoft-entra-id` | |
|
|
81
|
+
| ZITADEL | `zitadel` | |
|
|
82
|
+
| Keycloak | `keycloak` | |
|
|
83
|
+
| Google | `google` | |
|
|
84
|
+
| Okta | `okta` | |
|
|
85
|
+
|
|
86
|
+
## Additional Features
|
|
87
|
+
|
|
88
|
+
### Webhook Support
|
|
89
|
+
|
|
90
|
+
Allow LobeChat to receive notifications when user information is updated in the identity provider. Supported providers include Casdoor and Logto. Please refer to the specific provider documentation for configuration details.
|
|
91
|
+
|
|
92
|
+
### Database Session
|
|
93
|
+
|
|
94
|
+
Allow the session store in database, see also the [Auth.js Session Documentation](https://authjs.dev/concepts/session-strategies#database-session).
|
|
84
95
|
|
|
85
96
|
## Other SSO Providers
|
|
86
97
|
|
|
87
|
-
Please refer to the [
|
|
98
|
+
Please refer to the [Auth.js](https://authjs.dev/getting-started/authentication/oauth) documentation and feel free to submit a Pull Request.
|
|
@@ -24,12 +24,13 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
|
|
|
24
24
|
|
|
25
25
|
在使用 NextAuth 之前,请先在 LobeChat 的环境变量中设置以下变量:
|
|
26
26
|
|
|
27
|
-
| 环境变量
|
|
28
|
-
|
|
|
29
|
-
| `NEXT_PUBLIC_ENABLE_NEXT_AUTH`
|
|
30
|
-
| `NEXT_AUTH_SECRET`
|
|
31
|
-
| `
|
|
32
|
-
| `NEXT_AUTH_SSO_PROVIDERS`
|
|
27
|
+
| 环境变量 | 类型 | 描述 |
|
|
28
|
+
| -------------------------------- | -- | ------------------------------------------------------------------------------------------------------------ |
|
|
29
|
+
| `NEXT_PUBLIC_ENABLE_NEXT_AUTH` | 必选 | 用于启用 NextAuth 服务,设置为 `1` 以启用,更改此项需要重新编译应用。使用 `lobehub/lobe-chat-database` 镜像部署的用户已经默认添加了该项配置。 |
|
|
30
|
+
| `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令: `openssl rand -base64 32`,或者访问 `https://generate-secret.vercel.app/32` 生成秘钥。 |
|
|
31
|
+
| `AUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://example.com/api/auth` |
|
|
32
|
+
| `NEXT_AUTH_SSO_PROVIDERS` | 可选 | 该环境变量用于同时启用多个身份验证源,以逗号 `,` 分割,例如 `auth0,microsoft-entra-id,authentik`。 |
|
|
33
|
+
| `NEXT_AUTH_SSO_SESSION_STRATEGY` | 可选 | Auth.js 的会话策略。选项为 `jwt` 或 `database`。默认值为 `jwt`。 |
|
|
33
34
|
|
|
34
35
|
目前支持的身份验证服务有:
|
|
35
36
|
|
|
@@ -63,19 +64,29 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
|
|
|
63
64
|
|
|
64
65
|
顺序为 SSO 提供商的显示顺序。
|
|
65
66
|
|
|
66
|
-
| SSO 提供商 | 值 |
|
|
67
|
-
| --------------------- | ----------------------- |
|
|
68
|
-
| Auth0 | `auth0` |
|
|
69
|
-
| Authenlia | `authenlia` |
|
|
70
|
-
| Authentik | `authentik` |
|
|
71
|
-
| Casdoor | `casdoor` |
|
|
72
|
-
| Cloudflare Zero Trust | `cloudflare-zero-trust` |
|
|
73
|
-
| Github | `github` |
|
|
74
|
-
| Logto | `logto` |
|
|
75
|
-
| Microsoft Entra ID | `microsoft-entra-id` |
|
|
76
|
-
| ZITADEL | `zitadel` |
|
|
77
|
-
| Keycloak | `keycloak` |
|
|
78
|
-
| Okta | `okta` |
|
|
67
|
+
| SSO 提供商 | 值 | 额外功能 |
|
|
68
|
+
| --------------------- | ----------------------- | --------- |
|
|
69
|
+
| Auth0 | `auth0` | |
|
|
70
|
+
| Authenlia | `authenlia` | |
|
|
71
|
+
| Authentik | `authentik` | |
|
|
72
|
+
| Casdoor | `casdoor` | `Webhook` |
|
|
73
|
+
| Cloudflare Zero Trust | `cloudflare-zero-trust` | |
|
|
74
|
+
| Github | `github` | |
|
|
75
|
+
| Logto | `logto` | `Webhook` |
|
|
76
|
+
| Microsoft Entra ID | `microsoft-entra-id` | |
|
|
77
|
+
| ZITADEL | `zitadel` | |
|
|
78
|
+
| Keycloak | `keycloak` | |
|
|
79
|
+
| Okta | `okta` | |
|
|
80
|
+
|
|
81
|
+
## 额外功能
|
|
82
|
+
|
|
83
|
+
### Webhook 支持
|
|
84
|
+
|
|
85
|
+
允许 LobeChat 在身份提供商中用户信息更新时接收通知。支持的提供商包括 Casdoor 和 Logto。请参考具体提供商文档进行配置。
|
|
86
|
+
|
|
87
|
+
### 数据库会话
|
|
88
|
+
|
|
89
|
+
允许会话存储在数据库中,详情请参阅 [Auth.js 会话文档](https://authjs.dev/concepts/session-strategies#database-session)。
|
|
79
90
|
|
|
80
91
|
## 其他 SSO 提供商
|
|
81
92
|
|
|
@@ -49,7 +49,6 @@ You can achieve various feature combinations using the above configuration synta
|
|
|
49
49
|
| `token_counter` | Reserved for token counter display. | Enabled |
|
|
50
50
|
| `welcome_suggest` | Displays welcome suggestions. | Enabled |
|
|
51
51
|
| `changelog` | Controls changelog modal/page display. | Enabled |
|
|
52
|
-
| `clerk_sign_up` | Enables the Clerk SignUp functionality. | Enabled |
|
|
53
52
|
| `market` | Enables the assistant market functionality. | Enabled |
|
|
54
53
|
| `knowledge_base` | Enables the knowledge base functionality. | Enabled |
|
|
55
54
|
| `rag_eval` | Controls RAG evaluation feature (/repos/\[id]/evals). | Disabled |
|
|
@@ -46,7 +46,6 @@ tags:
|
|
|
46
46
|
| `token_counter` | 保留用于令牌计数器显示。 | 开启 |
|
|
47
47
|
| `welcome_suggest` | 显示欢迎建议。 | 开启 |
|
|
48
48
|
| `changelog` | 控制更新日志弹窗 / 页面的显示。 | 开启 |
|
|
49
|
-
| `clerk_sign_up` | 启用 Clerk 注册功能。 | 开启 |
|
|
50
49
|
| `market` | 启用助手市场功能。 | 开启 |
|
|
51
50
|
| `knowledge_base` | 启用知识库功能。 | 开启 |
|
|
52
51
|
| `rag_eval` | 控制 RAG 评估功能 (/repos/\[id]/evals)。 | 关闭 |
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
title: >-
|
|
3
3
|
Configuring Online Search Functionality - Enhancing AI's Ability to Access Web Information
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
description: >-
|
|
6
7
|
Learn how to configure the SearXNG online search functionality for LobeChat, enabling AI to access the latest web information.
|
|
7
8
|
|
|
9
|
+
|
|
8
10
|
tags:
|
|
9
11
|
- Online Search
|
|
10
12
|
- SearXNG
|
|
@@ -17,7 +19,10 @@ tags:
|
|
|
17
19
|
LobeChat supports configuring **web search functionality** for AI, enabling it to retrieve real-time information from the internet to provide more accurate and up-to-date responses. Web search supports multiple search engine providers, including [SearXNG](https://github.com/searxng/searxng), [Search1API](https://www.search1api.com), [Google](https://programmablesearchengine.google.com), and [Brave](https://brave.com/search/api), among others.
|
|
18
20
|
|
|
19
21
|
<Callout type="info">
|
|
20
|
-
Web search allows AI to access time-sensitive content, such as the latest news, technology trends,
|
|
22
|
+
Web search allows AI to access time-sensitive content, such as the latest news, technology trends,
|
|
23
|
+
or product information. You can deploy the open-source SearXNG yourself, or choose to integrate
|
|
24
|
+
mainstream search services like Search1API, Google, Brave, etc., combining them freely based on
|
|
25
|
+
your use case.
|
|
21
26
|
</Callout>
|
|
22
27
|
|
|
23
28
|
By setting the search service environment variable `SEARCH_PROVIDERS` and the corresponding API Keys, LobeChat will query multiple sources and return the results. You can also configure crawler service environment variables such as `CRAWLER_IMPLS` (e.g., `browserless`, `firecrawl`, `tavily`, etc.) to extract webpage content, enhancing the capability of search + reading.
|
|
@@ -29,20 +34,20 @@ By setting the search service environment variable `SEARCH_PROVIDERS` and the co
|
|
|
29
34
|
Configure available web crawlers for structured extraction of webpage content.
|
|
30
35
|
|
|
31
36
|
```env
|
|
32
|
-
CRAWLER_IMPLS="
|
|
37
|
+
CRAWLER_IMPLS="naive,search1api"
|
|
33
38
|
```
|
|
34
39
|
|
|
35
40
|
Supported crawler types are listed below:
|
|
36
41
|
|
|
37
|
-
| Value | Description | Environment Variable
|
|
38
|
-
| ------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
-
| `browserless` | Headless browser crawler based on [Browserless](https://www.browserless.io/), suitable for rendering complex pages. | `BROWSERLESS_TOKEN`
|
|
40
|
-
| `exa` | Crawler capabilities provided by [Exa](https://exa.ai/), API required. | `EXA_API_KEY`
|
|
41
|
-
| `firecrawl` | [Firecrawl](https://firecrawl.dev/) headless browser API, ideal for modern websites. | `FIRECRAWL_API_KEY`
|
|
42
|
-
| `jina` | Crawler service from [Jina AI](https://jina.ai/), supports fast content summarization. | `JINA_READER_API_KEY`
|
|
43
|
-
| `
|
|
44
|
-
| `search1api` | Page crawling capabilities from [Search1API](https://www.search1api.com), great for structured content extraction. | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY`
|
|
45
|
-
| `tavily` | Web scraping and summarization API from [Tavily](https://www.tavily.com/). | `TAVILY_API_KEY`
|
|
42
|
+
| Value | Description | Environment Variable |
|
|
43
|
+
| ------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
44
|
+
| `browserless` | Headless browser crawler based on [Browserless](https://www.browserless.io/), suitable for rendering complex pages. | `BROWSERLESS_TOKEN` |
|
|
45
|
+
| `exa` | Crawler capabilities provided by [Exa](https://exa.ai/), API required. | `EXA_API_KEY` |
|
|
46
|
+
| `firecrawl` | [Firecrawl](https://firecrawl.dev/) headless browser API, ideal for modern websites. | `FIRECRAWL_API_KEY` |
|
|
47
|
+
| `jina` | Crawler service from [Jina AI](https://jina.ai/), supports fast content summarization. | `JINA_READER_API_KEY` |
|
|
48
|
+
| `naive` | Built-in general-purpose crawler for standard web structures. | |
|
|
49
|
+
| `search1api` | Page crawling capabilities from [Search1API](https://www.search1api.com), great for structured content extraction. | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
|
|
50
|
+
| `tavily` | Web scraping and summarization API from [Tavily](https://www.tavily.com/). | `TAVILY_API_KEY` |
|
|
46
51
|
|
|
47
52
|
> 💡 Setting multiple crawlers increases success rate; the system will try different ones based on priority.
|
|
48
53
|
|
|
@@ -58,19 +63,19 @@ SEARCH_PROVIDERS="searxng"
|
|
|
58
63
|
|
|
59
64
|
Supported search engines include:
|
|
60
65
|
|
|
61
|
-
| Value | Description | Environment Variable
|
|
62
|
-
| ------------ | --------------------------------------------------------------------------------------- |
|
|
63
|
-
| `anspire` | Search service provided by [Anspire](https://anspire.ai/). | `ANSPIRE_API_KEY`
|
|
64
|
-
| `bocha` | Search service from [Bocha](https://open.bochaai.com/). | `BOCHA_API_KEY`
|
|
65
|
-
| `brave` | [Brave](https://search.brave.com/help/api), a privacy-friendly search source. | `BRAVE_API_KEY`
|
|
66
|
-
| `exa` | [Exa](https://exa.ai/), a search API designed for AI. | `EXA_API_KEY`
|
|
67
|
-
| `firecrawl` | Search capabilities via [Firecrawl](https://firecrawl.dev/). | `FIRECRAWL_API_KEY`
|
|
68
|
-
| `google` | Uses [Google Programmable Search Engine](https://programmablesearchengine.google.com/). | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID`
|
|
69
|
-
| `jina` | Semantic search provided by [Jina AI](https://jina.ai/). | `JINA_READER_API_KEY`
|
|
70
|
-
| `kagi` | Premium search API by [Kagi](https://kagi.com/), requires a subscription key. | `KAGI_API_KEY`
|
|
71
|
-
| `search1api` | Aggregated search capabilities from [Search1API](https://www.search1api.com). | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY`
|
|
72
|
-
| `searxng` | Use a self-hosted or public [SearXNG](https://searx.space/) instance. | `SEARXNG_URL`
|
|
73
|
-
| `tavily` | [Tavily](https://www.tavily.com/), offers fast web summaries and answers. | `TAVILY_API_KEY`
|
|
66
|
+
| Value | Description | Environment Variable |
|
|
67
|
+
| ------------ | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
68
|
+
| `anspire` | Search service provided by [Anspire](https://anspire.ai/). | `ANSPIRE_API_KEY` |
|
|
69
|
+
| `bocha` | Search service from [Bocha](https://open.bochaai.com/). | `BOCHA_API_KEY` |
|
|
70
|
+
| `brave` | [Brave](https://search.brave.com/help/api), a privacy-friendly search source. | `BRAVE_API_KEY` |
|
|
71
|
+
| `exa` | [Exa](https://exa.ai/), a search API designed for AI. | `EXA_API_KEY` |
|
|
72
|
+
| `firecrawl` | Search capabilities via [Firecrawl](https://firecrawl.dev/). | `FIRECRAWL_API_KEY` |
|
|
73
|
+
| `google` | Uses [Google Programmable Search Engine](https://programmablesearchengine.google.com/). | `GOOGLE_PSE_API_KEY` `GOOGLE_PSE_ENGINE_ID` |
|
|
74
|
+
| `jina` | Semantic search provided by [Jina AI](https://jina.ai/). | `JINA_READER_API_KEY` |
|
|
75
|
+
| `kagi` | Premium search API by [Kagi](https://kagi.com/), requires a subscription key. | `KAGI_API_KEY` |
|
|
76
|
+
| `search1api` | Aggregated search capabilities from [Search1API](https://www.search1api.com). | `SEARCH1API_API_KEY` `SEARCH1API_CRAWL_API_KEY` `SEARCH1API_SEARCH_API_KEY` |
|
|
77
|
+
| `searxng` | Use a self-hosted or public [SearXNG](https://searx.space/) instance. | `SEARXNG_URL` |
|
|
78
|
+
| `tavily` | [Tavily](https://www.tavily.com/), offers fast web summaries and answers. | `TAVILY_API_KEY` |
|
|
74
79
|
|
|
75
80
|
> ⚠️ Some search providers require you to apply for an API Key and configure it in your `.env` file.
|
|
76
81
|
|
|
@@ -139,7 +144,7 @@ GOOGLE_PSE_ENGINE_ID=your-google-cx-id
|
|
|
139
144
|
Sets the access URL for the [Firecrawl](https://firecrawl.dev/) API, used for web content scraping. Default value:
|
|
140
145
|
|
|
141
146
|
```env
|
|
142
|
-
FIRECRAWL_URL=https://api.firecrawl.dev/
|
|
147
|
+
FIRECRAWL_URL=https://api.firecrawl.dev/v2
|
|
143
148
|
```
|
|
144
149
|
|
|
145
150
|
> ⚙️ Usually does not need to be changed unless you’re using a self-hosted version or a proxy service.
|