@lobehub/lobehub 2.0.0-next.2 → 2.0.0-next.20
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/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 +2 -4
- package/.github/workflows/test.yml +8 -10
- package/.nvmrc +1 -1
- package/CHANGELOG.md +459 -0
- package/Dockerfile +1 -3
- package/README.md +2 -45
- package/README.zh-CN.md +2 -45
- package/apps/desktop/src/main/utils/next-electron-rsc.ts +7 -5
- package/apps/desktop/tsconfig.json +0 -1
- package/changelog/v1.json +150 -0
- package/docs/development/database-schema.dbml +11 -1
- 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/e2e/src/features/discover/smoke.feature +34 -1
- package/e2e/src/steps/discover/smoke.steps.ts +116 -4
- package/e2e/tsconfig.json +0 -1
- package/locales/ar/models.json +15 -6
- package/locales/ar/oauth.json +1 -0
- package/locales/bg-BG/models.json +15 -6
- package/locales/bg-BG/oauth.json +1 -0
- package/locales/de-DE/models.json +15 -6
- package/locales/de-DE/oauth.json +1 -0
- package/locales/en-US/models.json +15 -6
- package/locales/en-US/oauth.json +1 -0
- package/locales/es-ES/models.json +15 -6
- package/locales/es-ES/oauth.json +1 -0
- package/locales/fa-IR/models.json +15 -6
- package/locales/fa-IR/oauth.json +1 -0
- package/locales/fr-FR/models.json +15 -6
- package/locales/fr-FR/oauth.json +1 -0
- package/locales/it-IT/models.json +15 -6
- package/locales/it-IT/oauth.json +1 -0
- package/locales/ja-JP/models.json +15 -6
- package/locales/ja-JP/oauth.json +1 -0
- package/locales/ko-KR/models.json +21 -12
- package/locales/ko-KR/oauth.json +1 -0
- package/locales/nl-NL/models.json +15 -6
- package/locales/nl-NL/oauth.json +1 -0
- package/locales/pl-PL/models.json +15 -6
- package/locales/pl-PL/oauth.json +1 -0
- package/locales/pt-BR/models.json +15 -6
- package/locales/pt-BR/oauth.json +1 -0
- package/locales/ru-RU/models.json +15 -6
- package/locales/ru-RU/oauth.json +1 -0
- package/locales/tr-TR/models.json +15 -6
- package/locales/tr-TR/oauth.json +1 -0
- package/locales/vi-VN/models.json +15 -6
- package/locales/vi-VN/oauth.json +1 -0
- package/locales/zh-CN/models.json +15 -6
- package/locales/zh-CN/oauth.json +1 -0
- package/locales/zh-TW/models.json +15 -6
- package/locales/zh-TW/oauth.json +1 -0
- package/next.config.ts +2 -3
- package/package.json +74 -80
- package/packages/const/src/index.ts +0 -1
- package/packages/const/src/models.ts +13 -0
- package/packages/const/src/url.ts +1 -4
- 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 +12 -2
- package/packages/context-engine/src/processors/__tests__/GroupMessageFlatten.test.ts +73 -9
- package/packages/context-engine/src/providers/index.ts +0 -2
- package/packages/database/migrations/0041_improve_index.sql +10 -0
- package/packages/database/migrations/meta/0041_snapshot.json +7784 -0
- package/packages/database/migrations/meta/_journal.json +7 -0
- package/packages/database/package.json +1 -1
- package/packages/database/src/core/migrations.json +17 -0
- package/packages/database/src/core/web-server.ts +2 -1
- package/packages/database/src/models/__tests__/message.grouping.test.ts +812 -0
- package/packages/database/src/models/__tests__/message.test.ts +322 -170
- package/packages/database/src/models/message.ts +62 -24
- package/packages/database/src/models/session.ts +60 -19
- 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 +10 -11
- 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/database/src/utils/__tests__/groupMessages.test.ts +145 -2
- package/packages/database/src/utils/groupMessages.ts +7 -5
- package/packages/electron-client-ipc/package.json +4 -1
- package/packages/file-loaders/package.json +1 -0
- package/packages/memory-extract/package.json +1 -1
- package/packages/model-bank/src/aiModels/anthropic.ts +0 -63
- package/packages/model-bank/src/aiModels/azure.ts +155 -0
- package/packages/model-bank/src/aiModels/bedrock.ts +44 -0
- 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/parameterResolver.ts +3 -0
- package/packages/model-runtime/src/core/streams/openai/__snapshots__/responsesStream.test.ts.snap +0 -38
- package/packages/model-runtime/src/providers/azureOpenai/index.ts +2 -1
- 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/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 +39 -0
- 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 +4 -1
- package/packages/types/src/message/ui/params.ts +98 -4
- package/packages/types/src/search.ts +16 -0
- package/packages/types/src/serverConfig.ts +2 -6
- package/packages/types/src/user/index.ts +13 -1
- package/packages/types/src/user/settings/index.ts +22 -0
- package/packages/web-crawler/src/crawImpl/firecrawl.ts +39 -12
- package/packages/web-crawler/tsconfig.json +0 -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/(workspace)/@conversation/features/ChatInput/V1Mobile/index.tsx +2 -2
- package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/V1Mobile/useSend.ts +6 -4
- package/src/app/[variants]/(main)/chat/(workspace)/@conversation/features/ChatInput/useSend.ts +15 -10
- package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/Actions.tsx +3 -28
- package/src/app/[variants]/(main)/chat/@session/features/SessionListContent/List/Item/index.tsx +4 -2
- package/src/app/[variants]/(main)/chat/_layout/Desktop/index.tsx +0 -2
- package/src/app/[variants]/(main)/chat/_layout/Mobile.tsx +1 -5
- 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 +3 -1
- 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)/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/_layout/SettingsContent.tsx +0 -3
- package/src/app/[variants]/(main)/settings/provider/(list)/ProviderGrid/Card.tsx +1 -1
- package/src/app/[variants]/(main)/settings/provider/detail/azure/index.tsx +5 -7
- 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 +9 -1
- 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/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/app.ts +5 -8
- package/src/envs/auth.ts +0 -179
- package/src/features/AgentSetting/AgentPlugin/index.tsx +2 -2
- package/src/features/ChatInput/ActionBar/STT/browser.tsx +2 -2
- package/src/features/ChatInput/ActionBar/STT/openai.tsx +2 -2
- package/src/features/ChatInput/ActionBar/Tools/useControls.tsx +1 -3
- package/src/features/Conversation/Error/ErrorJsonViewer.tsx +4 -3
- package/src/features/Conversation/Error/OllamaBizError/index.tsx +7 -2
- package/src/features/Conversation/Error/index.tsx +15 -5
- package/src/features/Conversation/MarkdownElements/LobeArtifact/Render/index.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/Extra/index.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/MessageContent.tsx +5 -3
- package/src/features/Conversation/Messages/Assistant/Tool/Inspector/BuiltinPluginTitle.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 +2 -2
- package/src/features/Conversation/Messages/Assistant/Tool/Render/index.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/Tool/index.tsx +2 -2
- package/src/features/Conversation/Messages/Assistant/index.tsx +4 -4
- package/src/features/Conversation/Messages/Default.tsx +2 -2
- package/src/features/Conversation/Messages/User/Extra.tsx +2 -2
- package/src/features/Conversation/Messages/User/index.tsx +4 -4
- package/src/features/Conversation/Messages/index.tsx +3 -3
- package/src/features/Conversation/components/AutoScroll.tsx +2 -2
- package/src/features/Conversation/components/Extras/Usage/UsageDetail/index.tsx +9 -6
- package/src/features/DataImporter/index.tsx +15 -60
- package/src/features/DevPanel/PostgresViewer/usePgTable.ts +3 -2
- package/src/features/PluginTag/index.tsx +1 -3
- package/src/features/PluginsUI/Render/BuiltinType/index.test.tsx +37 -28
- package/src/features/Portal/Artifacts/Body/index.tsx +2 -2
- package/src/helpers/isCanUseFC.ts +0 -8
- package/src/hooks/useEnabledChatModels.ts +0 -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/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/index.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/oidc-provider/provider.ts +1 -1
- package/src/libs/trpc/client/index.ts +0 -1
- package/src/libs/trpc/client/lambda.ts +8 -5
- package/src/libs/trpc/lambda/context.ts +4 -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/routers/desktop/mcp.ts +1 -3
- package/src/server/routers/lambda/__tests__/integration/message.integration.test.ts +0 -41
- 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/message.ts +17 -13
- package/src/server/routers/lambda/session.ts +8 -5
- package/src/server/routers/lambda/user.ts +24 -25
- package/src/server/routers/tools/mcp.ts +2 -3
- package/src/server/routers/tools/search.test.ts +1 -7
- package/src/server/routers/tools/search.ts +1 -4
- package/src/server/services/search/impls/firecrawl/index.ts +51 -11
- package/src/server/services/search/impls/firecrawl/type.ts +60 -9
- package/src/services/__tests__/tool.test.ts +0 -3
- package/src/services/aiModel/index.test.ts +0 -3
- package/src/services/aiModel/index.ts +1 -7
- package/src/services/aiProvider/index.test.ts +0 -3
- package/src/services/aiProvider/index.ts +1 -7
- package/src/services/chat/chat.test.ts +13 -40
- package/src/services/chat/contextEngineering.test.ts +0 -30
- package/src/services/chat/contextEngineering.ts +1 -12
- package/src/services/chat/helper.ts +7 -31
- package/src/services/chat/index.ts +2 -7
- package/src/services/chat/types.ts +1 -1
- package/src/services/chatGroup/index.ts +1 -10
- package/src/services/config.ts +1 -65
- package/src/services/export/index.ts +1 -4
- package/src/services/file/index.ts +1 -11
- package/src/services/import/index.ts +1 -7
- package/src/services/message/index.ts +1 -11
- package/src/services/message/server.ts +7 -6
- package/src/services/message/type.ts +6 -3
- package/src/services/models.ts +2 -11
- package/src/services/plugin/index.ts +1 -11
- package/src/services/session/index.ts +1 -11
- package/src/services/tableViewer/client.ts +12 -15
- package/src/services/thread/index.ts +1 -7
- package/src/services/topic/index.ts +1 -11
- package/src/services/user/index.ts +1 -13
- package/src/store/chat/helpers.test.ts +99 -0
- package/src/store/chat/helpers.ts +21 -2
- package/src/store/chat/selectors.ts +1 -1
- package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChat.test.ts +0 -241
- package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +26 -1
- package/src/store/chat/slices/aiChat/actions/__tests__/helpers.ts +3 -1
- package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +45 -155
- package/src/store/chat/slices/builtinTool/actions/index.ts +1 -4
- package/src/store/chat/slices/message/action.test.ts +5 -1
- package/src/store/chat/slices/message/action.ts +102 -14
- package/src/store/chat/slices/message/reducer.test.ts +363 -5
- package/src/store/chat/slices/message/reducer.ts +87 -3
- package/src/store/chat/slices/message/{selectors.test.ts → selectors/chat.test.ts} +266 -30
- package/src/store/chat/slices/message/{selectors.ts → selectors/chat.ts} +29 -79
- 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 +80 -0
- package/src/store/chat/slices/plugin/action.test.ts +34 -132
- package/src/store/chat/slices/plugin/action.ts +1 -44
- package/src/store/global/store.ts +1 -7
- 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/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/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/src/providers/InboxGuide.ts +0 -102
- package/packages/context-engine/src/providers/__tests__/InboxGuideProvider.test.ts +0 -121
- 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/src/app/(backend)/trpc/edge/[trpc]/route.ts +0 -26
- 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)/(mobile)/me/data/page.tsx +0 -29
- 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)/settings/llm/ProviderList/Azure/index.tsx +0 -93
- package/src/app/[variants]/(main)/settings/llm/ProviderList/Bedrock/index.tsx +0 -70
- package/src/app/[variants]/(main)/settings/llm/ProviderList/Cloudflare/index.tsx +0 -39
- package/src/app/[variants]/(main)/settings/llm/ProviderList/Github/index.tsx +0 -52
- package/src/app/[variants]/(main)/settings/llm/ProviderList/HuggingFace/index.tsx +0 -52
- package/src/app/[variants]/(main)/settings/llm/ProviderList/Ollama/index.tsx +0 -20
- package/src/app/[variants]/(main)/settings/llm/ProviderList/OpenAI/index.tsx +0 -17
- package/src/app/[variants]/(main)/settings/llm/ProviderList/providers.tsx +0 -132
- package/src/app/[variants]/(main)/settings/llm/components/Checker.tsx +0 -118
- package/src/app/[variants]/(main)/settings/llm/components/ProviderConfig/index.tsx +0 -303
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/CustomModelOption.tsx +0 -98
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelConfigModal/Form.tsx +0 -104
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelConfigModal/index.tsx +0 -77
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/ModelFetcher.tsx +0 -105
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/Option.tsx +0 -68
- package/src/app/[variants]/(main)/settings/llm/components/ProviderModelList/index.tsx +0 -146
- package/src/app/[variants]/(main)/settings/llm/const.ts +0 -20
- package/src/app/[variants]/(main)/settings/llm/features/Footer.tsx +0 -35
- package/src/app/[variants]/(main)/settings/llm/index.tsx +0 -30
- package/src/app/[variants]/(main)/settings/llm/type.ts +0 -5
- 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/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/next-auth/sso-providers/azure-ad.ts +0 -33
- 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/aiProvider/client.ts +0 -58
- 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/export/_deprecated.ts +0 -155
- package/src/services/export/client.ts +0 -15
- 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/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/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/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/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/thread/client.ts +0 -51
- 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/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/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/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/{middleware.ts → proxy.ts} +0 -0
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
-
|
|
3
|
-
exports[`ChatService > createAssistantMessage > with tools messages > work with dalle3 1`] = `
|
|
4
|
-
{
|
|
5
|
-
"enabledSearch": undefined,
|
|
6
|
-
"messages": [
|
|
7
|
-
{
|
|
8
|
-
"content": "<plugins description="The plugins you can use below">
|
|
9
|
-
<collection name="DALL·E 3">
|
|
10
|
-
<collection.instructions>Whenever a description of an image is given, use lobe-image-designer to create the images and then summarize the prompts used to generate the images in plain text. If the user does not ask for a specific number of images, default to creating four captions to send to lobe-image-designer that are written to be as diverse as possible.
|
|
11
|
-
|
|
12
|
-
All captions sent to lobe-image-designer must abide by the following policies:
|
|
13
|
-
|
|
14
|
-
1. If the description is not in English, then translate it.
|
|
15
|
-
2. Do not create more than 4 images, even if the user requests more.
|
|
16
|
-
3. Don't create images of politicians or other public figures. Recommend other ideas instead.
|
|
17
|
-
5. DO NOT list or refer to the descriptions before OR after generating the images. They should ONLY ever be written out ONCE, in the \`prompts\` field of the request. You do not need to ask for permission to generate, just do it!
|
|
18
|
-
6. Always mention the image type (photo, oil painting, watercolor painting, illustration, cartoon, drawing, vector, render, etc.) at the beginning of the caption. Unless the caption suggests otherwise, make at least 1--2 of the 4 images photos.
|
|
19
|
-
7. Diversify depictions of ALL images with people to include DESCENT and GENDER for EACH person using direct terms. Adjust only human descriptions.
|
|
20
|
-
- EXPLICITLY specify these attributes, not abstractly reference them. The attributes should be specified in a minimal way and should directly describe their physical form.
|
|
21
|
-
- Your choices should be grounded in reality. For example, all of a given OCCUPATION should not be the same gender or race. Additionally, focus on creating diverse, inclusive, and exploratory scenes via the properties you choose during rewrites. Make choices that may be insightful or unique sometimes.
|
|
22
|
-
- Use "various" or "diverse" ONLY IF the description refers to groups of more than 3 people. Do not change the number of people requested in the original description.
|
|
23
|
-
- Don't alter memes, fictional character origins, or unseen people. Maintain the original prompt's intent and prioritize quality.
|
|
24
|
-
- Do not create any imagery that would be offensive.
|
|
25
|
-
|
|
26
|
-
8. Silently modify descriptions that include names or hints or references of specific people or celebrities by carefully selecting a few minimal modifications to substitute references to the people with generic descriptions that don't divulge any information about their identities, except for their genders and physiques. Do this EVEN WHEN the instructions ask for the prompt to not be changed. Some special cases:
|
|
27
|
-
- Modify such prompts even if you don't know who the person is, or if their name is misspelled (e.g. "Barake Obema")
|
|
28
|
-
- If the reference to the person will only appear as TEXT out in the image, then use the reference as is and do not modify it.
|
|
29
|
-
- When making the substitutions, don't use prominent titles that could give away the person's identity. E.g., instead of saying "president", "prime minister", or "chancellor", say "politician"; instead of saying "king", "queen", "emperor", or "empress", say "public figure"; instead of saying "Pope", say "religious figure"; and so on.
|
|
30
|
-
- If any creative professional or studio is named, substitute the name with a description of their style that does not reference any specific people, or delete the reference if they are unknown. DO NOT refer to the artist or studio's style.
|
|
31
|
-
|
|
32
|
-
The prompt must intricately describe every part of the image in concrete, objective detail. THINK about what the end goal of the description is, and extrapolate that to what would make satisfying images.
|
|
33
|
-
All descriptions sent to lobe-image-designer should be a paragraph of text that is extremely descriptive and detailed. Each should be more than 3 sentences long.</collection.instructions>
|
|
34
|
-
<api identifier="lobe-image-designer____text2image____builtin">Create images from a text-only prompt.</api>
|
|
35
|
-
</collection>
|
|
36
|
-
</plugins>",
|
|
37
|
-
"role": "system",
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"content": "https://vercel.com/ 请分析 chatGPT 关键词
|
|
41
|
-
|
|
42
|
-
",
|
|
43
|
-
"role": "user",
|
|
44
|
-
},
|
|
45
|
-
],
|
|
46
|
-
"model": "gpt-3.5-turbo-1106",
|
|
47
|
-
"tools": [
|
|
48
|
-
{
|
|
49
|
-
"function": {
|
|
50
|
-
"description": "Create images from a text-only prompt.",
|
|
51
|
-
"name": "lobe-image-designer____text2image____builtin",
|
|
52
|
-
"parameters": {
|
|
53
|
-
"properties": {
|
|
54
|
-
"prompts": {
|
|
55
|
-
"description": "The user's original image description, potentially modified to abide by the lobe-image-designer policies. If the user does not suggest a number of captions to create, create four of them. If creating multiple captions, make them as diverse as possible. If the user requested modifications to previous images, the captions should not simply be longer, but rather it should be refactored to integrate the suggestions into each of the captions. Generate no more than 4 images, even if the user requests more.",
|
|
56
|
-
"items": {
|
|
57
|
-
"type": "string",
|
|
58
|
-
},
|
|
59
|
-
"maxItems": 4,
|
|
60
|
-
"minItems": 1,
|
|
61
|
-
"type": "array",
|
|
62
|
-
},
|
|
63
|
-
"quality": {
|
|
64
|
-
"default": "standard",
|
|
65
|
-
"description": "The quality of the image that will be generated. hd creates images with finer details and greater consistency across the image.",
|
|
66
|
-
"enum": [
|
|
67
|
-
"standard",
|
|
68
|
-
"hd",
|
|
69
|
-
],
|
|
70
|
-
"type": "string",
|
|
71
|
-
},
|
|
72
|
-
"seeds": {
|
|
73
|
-
"description": "A list of seeds to use for each prompt. If the user asks to modify a previous image, populate this field with the seed used to generate that image from the image lobe-image-designer metadata.",
|
|
74
|
-
"items": {
|
|
75
|
-
"type": "integer",
|
|
76
|
-
},
|
|
77
|
-
"type": "array",
|
|
78
|
-
},
|
|
79
|
-
"size": {
|
|
80
|
-
"default": "1024x1024",
|
|
81
|
-
"description": "The resolution of the requested image, which can be wide, square, or tall. Use 1024x1024 (square) as the default unless the prompt suggests a wide image, 1792x1024, or a full-body portrait, in which case 1024x1792 (tall) should be used instead. Always include this parameter in the request.",
|
|
82
|
-
"enum": [
|
|
83
|
-
"1792x1024",
|
|
84
|
-
"1024x1024",
|
|
85
|
-
"1024x1792",
|
|
86
|
-
],
|
|
87
|
-
"type": "string",
|
|
88
|
-
},
|
|
89
|
-
"style": {
|
|
90
|
-
"default": "vivid",
|
|
91
|
-
"description": "The style of the generated images. Must be one of vivid or natural. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images.",
|
|
92
|
-
"enum": [
|
|
93
|
-
"vivid",
|
|
94
|
-
"natural",
|
|
95
|
-
],
|
|
96
|
-
"type": "string",
|
|
97
|
-
},
|
|
98
|
-
},
|
|
99
|
-
"required": [
|
|
100
|
-
"prompts",
|
|
101
|
-
],
|
|
102
|
-
"type": "object",
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
"type": "function",
|
|
106
|
-
},
|
|
107
|
-
],
|
|
108
|
-
"top_p": 1,
|
|
109
|
-
}
|
|
110
|
-
`;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { clientDB } from '@/database/client/db';
|
|
2
|
-
import { ChatGroupModel } from '@/database/models/chatGroup';
|
|
3
|
-
import {
|
|
4
|
-
ChatGroupAgentItem,
|
|
5
|
-
ChatGroupItem,
|
|
6
|
-
NewChatGroup,
|
|
7
|
-
NewChatGroupAgent,
|
|
8
|
-
} from '@/database/schemas/chatGroup';
|
|
9
|
-
import { BaseClientService } from '@/services/baseClientService';
|
|
10
|
-
|
|
11
|
-
import { IChatGroupService } from './type';
|
|
12
|
-
|
|
13
|
-
export class ClientService extends BaseClientService implements IChatGroupService {
|
|
14
|
-
private get chatGroupModel(): ChatGroupModel {
|
|
15
|
-
return new ChatGroupModel(clientDB as any, this.userId);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async createGroup(params: Omit<NewChatGroup, 'userId'>): Promise<ChatGroupItem> {
|
|
19
|
-
return this.chatGroupModel.create(params);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
async updateGroup(id: string, value: Partial<ChatGroupItem>): Promise<ChatGroupItem> {
|
|
23
|
-
return this.chatGroupModel.update(id, value);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
async deleteGroup(id: string): Promise<any> {
|
|
27
|
-
return this.chatGroupModel.delete(id);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async deleteAllGroups(): Promise<any> {
|
|
31
|
-
return this.chatGroupModel.deleteAll();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async getGroup(id: string): Promise<ChatGroupItem | undefined> {
|
|
35
|
-
return this.chatGroupModel.findById(id);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
async getGroups(): Promise<ChatGroupItem[]> {
|
|
39
|
-
return this.chatGroupModel.queryWithMemberDetails();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
async addAgentsToGroup(groupId: string, agentIds: string[]): Promise<ChatGroupAgentItem[]> {
|
|
43
|
-
return this.chatGroupModel.addAgentsToGroup(groupId, agentIds);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async removeAgentsFromGroup(groupId: string, agentIds: string[]): Promise<any> {
|
|
47
|
-
for (const agentId of agentIds) {
|
|
48
|
-
await this.chatGroupModel.removeAgentFromGroup(groupId, agentId);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
async updateAgentInGroup(
|
|
53
|
-
groupId: string,
|
|
54
|
-
agentId: string,
|
|
55
|
-
updates: Partial<Pick<NewChatGroupAgent, 'order' | 'role'>>,
|
|
56
|
-
): Promise<ChatGroupAgentItem> {
|
|
57
|
-
return this.chatGroupModel.updateAgentInGroup(groupId, agentId, updates);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async getGroupAgents(groupId: string): Promise<ChatGroupAgentItem[]> {
|
|
61
|
-
return this.chatGroupModel.getGroupAgents(groupId);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { Migration } from '@/migrations';
|
|
2
|
-
import { messageService } from '@/services/message';
|
|
3
|
-
import { sessionService } from '@/services/session';
|
|
4
|
-
import { topicService } from '@/services/topic';
|
|
5
|
-
import { useSessionStore } from '@/store/session';
|
|
6
|
-
import { sessionSelectors } from '@/store/session/selectors';
|
|
7
|
-
import { useUserStore } from '@/store/user';
|
|
8
|
-
import { settingsSelectors } from '@/store/user/selectors';
|
|
9
|
-
import {
|
|
10
|
-
ConfigFileAgents,
|
|
11
|
-
ConfigFileAll,
|
|
12
|
-
ConfigFileSessions,
|
|
13
|
-
ConfigFileSettings,
|
|
14
|
-
ConfigFileSingleSession,
|
|
15
|
-
ConfigModelMap,
|
|
16
|
-
ExportType,
|
|
17
|
-
} from '@/types/exportConfig';
|
|
18
|
-
|
|
19
|
-
type CreateConfigFileState<T extends ExportType> = ConfigModelMap[T]['state'];
|
|
20
|
-
|
|
21
|
-
type CreateConfigFile<T extends ExportType> = ConfigModelMap[T]['file'];
|
|
22
|
-
|
|
23
|
-
const createConfigFile = <T extends ExportType>(
|
|
24
|
-
type: T,
|
|
25
|
-
state: CreateConfigFileState<T>,
|
|
26
|
-
): CreateConfigFile<T> => {
|
|
27
|
-
switch (type) {
|
|
28
|
-
case 'agents': {
|
|
29
|
-
return {
|
|
30
|
-
exportType: 'agents',
|
|
31
|
-
state,
|
|
32
|
-
version: Migration.targetVersion,
|
|
33
|
-
} as ConfigFileAgents;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
case 'sessions': {
|
|
37
|
-
return {
|
|
38
|
-
exportType: 'sessions',
|
|
39
|
-
state,
|
|
40
|
-
version: Migration.targetVersion,
|
|
41
|
-
} as ConfigFileSessions;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
case 'settings': {
|
|
45
|
-
return {
|
|
46
|
-
exportType: 'settings',
|
|
47
|
-
state,
|
|
48
|
-
version: Migration.targetVersion,
|
|
49
|
-
} as ConfigFileSettings;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
case 'singleSession': {
|
|
53
|
-
return {
|
|
54
|
-
exportType: 'sessions',
|
|
55
|
-
state,
|
|
56
|
-
version: Migration.targetVersion,
|
|
57
|
-
} as ConfigFileSingleSession;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
case 'all': {
|
|
61
|
-
return {
|
|
62
|
-
exportType: 'all',
|
|
63
|
-
state,
|
|
64
|
-
version: Migration.targetVersion,
|
|
65
|
-
} as ConfigFileAll;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
throw new Error('缺少正确的导出类型,请检查实现...');
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* @deprecated
|
|
74
|
-
*/
|
|
75
|
-
export class ConfigService {
|
|
76
|
-
/**
|
|
77
|
-
* export all agents
|
|
78
|
-
*/
|
|
79
|
-
exportAgents = async () => {
|
|
80
|
-
const agents = await sessionService.getSessionsByType('agent');
|
|
81
|
-
const sessionGroups = await sessionService.getSessionGroups();
|
|
82
|
-
|
|
83
|
-
return createConfigFile('agents', { sessionGroups, sessions: agents });
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* export all sessions
|
|
88
|
-
*/
|
|
89
|
-
exportSessions = async () => {
|
|
90
|
-
const sessions = await sessionService.getSessionsByType();
|
|
91
|
-
const sessionGroups = await sessionService.getSessionGroups();
|
|
92
|
-
const messages = await messageService.getAllMessages();
|
|
93
|
-
const topics = await topicService.getAllTopics();
|
|
94
|
-
|
|
95
|
-
return createConfigFile('sessions', { messages, sessionGroups, sessions, topics });
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* export a session
|
|
100
|
-
*/
|
|
101
|
-
exportSingleSession = async (id: string) => {
|
|
102
|
-
const session = this.getSession(id);
|
|
103
|
-
if (!session) return;
|
|
104
|
-
|
|
105
|
-
const messages = await messageService.getAllMessagesInSession(id);
|
|
106
|
-
const topics = await topicService.getTopics({ containerId: id });
|
|
107
|
-
|
|
108
|
-
const config = createConfigFile('singleSession', { messages, sessions: [session], topics });
|
|
109
|
-
return { config, title: `${session.meta?.title}-session` };
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
exportSingleAgent = async (id: string) => {
|
|
113
|
-
const agent = this.getAgent(id);
|
|
114
|
-
if (!agent) return;
|
|
115
|
-
|
|
116
|
-
const config = createConfigFile('agents', { sessionGroups: [], sessions: [agent] });
|
|
117
|
-
|
|
118
|
-
return { config, title: `${agent.meta?.title}-session` };
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* export settings
|
|
123
|
-
*/
|
|
124
|
-
exportSettings = async () => {
|
|
125
|
-
const settings = this.getSettings();
|
|
126
|
-
|
|
127
|
-
return createConfigFile('settings', { settings });
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* export all data
|
|
132
|
-
*/
|
|
133
|
-
exportAll = async () => {
|
|
134
|
-
const sessions = await sessionService.getSessionsByType();
|
|
135
|
-
const sessionGroups = await sessionService.getSessionGroups();
|
|
136
|
-
const messages = await messageService.getAllMessages();
|
|
137
|
-
const topics = await topicService.getAllTopics();
|
|
138
|
-
const settings = this.getSettings();
|
|
139
|
-
|
|
140
|
-
return createConfigFile('all', { messages, sessionGroups, sessions, settings, topics });
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
private getSettings = () => settingsSelectors.exportSettings(useUserStore.getState());
|
|
144
|
-
|
|
145
|
-
private getSession = (id: string) =>
|
|
146
|
-
sessionSelectors.getSessionById(id)(useSessionStore.getState());
|
|
147
|
-
|
|
148
|
-
private getAgent = (id: string) =>
|
|
149
|
-
sessionSelectors.getSessionById(id)(useSessionStore.getState());
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* @deprecated
|
|
154
|
-
*/
|
|
155
|
-
export const configService = new ConfigService();
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { clientDB } from '@/database/client/db';
|
|
2
|
-
import { DataExporterRepos } from '@/database/repositories/dataExporter';
|
|
3
|
-
import { BaseClientService } from '@/services/baseClientService';
|
|
4
|
-
|
|
5
|
-
export class ClientService extends BaseClientService {
|
|
6
|
-
private get dataExporterRepos(): DataExporterRepos {
|
|
7
|
-
return new DataExporterRepos(clientDB as any, this.userId);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
exportData = async () => {
|
|
11
|
-
const data = await this.dataExporterRepos.export();
|
|
12
|
-
|
|
13
|
-
return { data, url: undefined };
|
|
14
|
-
};
|
|
15
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { Mock, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
|
|
3
|
-
import { FileModel } from '@/database/_deprecated/models/file';
|
|
4
|
-
import { DB_File } from '@/database/_deprecated/schemas/files';
|
|
5
|
-
import { fileEnv } from '@/envs/file';
|
|
6
|
-
import { clientS3Storage } from '@/services/file/ClientS3';
|
|
7
|
-
import { serverConfigSelectors } from '@/store/serverConfig/selectors';
|
|
8
|
-
import { createServerConfigStore } from '@/store/serverConfig/store';
|
|
9
|
-
|
|
10
|
-
import { ClientService } from './_deprecated';
|
|
11
|
-
|
|
12
|
-
const fileService = new ClientService();
|
|
13
|
-
|
|
14
|
-
beforeAll(() => {
|
|
15
|
-
createServerConfigStore();
|
|
16
|
-
});
|
|
17
|
-
// Mocks for the FileModel
|
|
18
|
-
vi.mock('@/database/_deprecated/models/file', () => ({
|
|
19
|
-
FileModel: {
|
|
20
|
-
create: vi.fn(),
|
|
21
|
-
delete: vi.fn(),
|
|
22
|
-
findById: vi.fn(),
|
|
23
|
-
clear: vi.fn(),
|
|
24
|
-
},
|
|
25
|
-
}));
|
|
26
|
-
|
|
27
|
-
let s3Domain: string;
|
|
28
|
-
|
|
29
|
-
vi.mock('@/config/file', () => ({
|
|
30
|
-
fileEnv: {
|
|
31
|
-
get NEXT_PUBLIC_S3_DOMAIN() {
|
|
32
|
-
return s3Domain;
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
}));
|
|
36
|
-
|
|
37
|
-
// Mocks for the URL and Blob objects
|
|
38
|
-
global.URL.createObjectURL = vi.fn();
|
|
39
|
-
global.Blob = vi.fn();
|
|
40
|
-
|
|
41
|
-
beforeEach(() => {
|
|
42
|
-
// Reset all mocks before each test
|
|
43
|
-
vi.resetAllMocks();
|
|
44
|
-
s3Domain = '';
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
describe('FileService', () => {
|
|
48
|
-
it('createFile should save the file to the database', async () => {
|
|
49
|
-
const localFile = {
|
|
50
|
-
name: 'test',
|
|
51
|
-
fileType: 'image/png',
|
|
52
|
-
url: 'client-s3://123',
|
|
53
|
-
size: 1,
|
|
54
|
-
hash: '123',
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
await clientS3Storage.putObject(
|
|
58
|
-
'123',
|
|
59
|
-
new File([new ArrayBuffer(1)], 'test.png', { type: 'image/png' }),
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
(FileModel.create as Mock).mockResolvedValue(localFile);
|
|
63
|
-
|
|
64
|
-
const result = await fileService.createFile(localFile);
|
|
65
|
-
|
|
66
|
-
expect(result).toEqual({ url: 'data:image/png;base64,AA==' });
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
it('removeFile should delete the file from the database', async () => {
|
|
70
|
-
const fileId = '1';
|
|
71
|
-
(FileModel.delete as Mock).mockResolvedValue(true);
|
|
72
|
-
|
|
73
|
-
const result = await fileService.removeFile(fileId);
|
|
74
|
-
|
|
75
|
-
expect(FileModel.delete).toHaveBeenCalledWith(fileId);
|
|
76
|
-
expect(result).toBe(true);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
describe('getFile', () => {
|
|
80
|
-
it('should retrieve and convert local file info to FilePreview', async () => {
|
|
81
|
-
const fileId = '1';
|
|
82
|
-
const fileData = {
|
|
83
|
-
name: 'test',
|
|
84
|
-
data: new ArrayBuffer(1),
|
|
85
|
-
fileType: 'image/png',
|
|
86
|
-
saveMode: 'local',
|
|
87
|
-
size: 1,
|
|
88
|
-
createdAt: 1,
|
|
89
|
-
updatedAt: 2,
|
|
90
|
-
} as DB_File;
|
|
91
|
-
|
|
92
|
-
(FileModel.findById as Mock).mockResolvedValue(fileData);
|
|
93
|
-
(global.URL.createObjectURL as Mock).mockReturnValue('blob:test');
|
|
94
|
-
(global.Blob as Mock).mockImplementation(() => ['test']);
|
|
95
|
-
|
|
96
|
-
const result = await fileService.getFile(fileId);
|
|
97
|
-
|
|
98
|
-
expect(FileModel.findById).toHaveBeenCalledWith(fileId);
|
|
99
|
-
expect(result).toEqual({
|
|
100
|
-
createdAt: new Date(1),
|
|
101
|
-
id: '1',
|
|
102
|
-
size: 1,
|
|
103
|
-
type: 'image/png',
|
|
104
|
-
name: 'test',
|
|
105
|
-
url: 'blob:test',
|
|
106
|
-
updatedAt: new Date(2),
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it('should throw an error when the file is not found', async () => {
|
|
111
|
-
const fileId = 'non-existent';
|
|
112
|
-
(FileModel.findById as Mock).mockResolvedValue(null);
|
|
113
|
-
|
|
114
|
-
const getFilePromise = fileService.getFile(fileId);
|
|
115
|
-
|
|
116
|
-
await expect(getFilePromise).rejects.toThrow('file not found');
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
});
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { FileModel } from '@/database/_deprecated/models/file';
|
|
2
|
-
import { clientS3Storage } from '@/services/file/ClientS3';
|
|
3
|
-
import { FileItem, UploadFileParams } from '@/types/files';
|
|
4
|
-
|
|
5
|
-
import { IFileService } from './type';
|
|
6
|
-
|
|
7
|
-
export class ClientService implements IFileService {
|
|
8
|
-
async createFile(file: UploadFileParams) {
|
|
9
|
-
// save to local storage
|
|
10
|
-
// we may want to save to a remote server later
|
|
11
|
-
const res = await FileModel.create({
|
|
12
|
-
createdAt: Date.now(),
|
|
13
|
-
data: undefined,
|
|
14
|
-
fileHash: file.hash,
|
|
15
|
-
fileType: file.fileType,
|
|
16
|
-
metadata: file.metadata,
|
|
17
|
-
name: file.name,
|
|
18
|
-
saveMode: 'url',
|
|
19
|
-
size: file.size,
|
|
20
|
-
url: file.url,
|
|
21
|
-
} as any);
|
|
22
|
-
|
|
23
|
-
// get file to base64 url
|
|
24
|
-
const base64 = await this.getBase64ByFileHash(file.hash!);
|
|
25
|
-
|
|
26
|
-
return {
|
|
27
|
-
id: res.id,
|
|
28
|
-
url: `data:${file.fileType};base64,${base64}`,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
33
|
-
async checkFileHash(_hash: string) {
|
|
34
|
-
return { isExist: false, metadata: {}, url: '' };
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async getFile(id: string): Promise<FileItem> {
|
|
38
|
-
const item = await FileModel.findById(id);
|
|
39
|
-
if (!item) {
|
|
40
|
-
throw new Error('file not found');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// arrayBuffer to blob or base64 to blob
|
|
44
|
-
const blob = !!item.data
|
|
45
|
-
? new Blob([item.data!], { type: item.fileType })
|
|
46
|
-
: // @ts-ignore
|
|
47
|
-
new Blob([Buffer.from(item.base64!, 'base64')], { type: item.fileType });
|
|
48
|
-
|
|
49
|
-
const url = URL.createObjectURL(blob);
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
createdAt: new Date(item.createdAt),
|
|
53
|
-
id,
|
|
54
|
-
name: item.name,
|
|
55
|
-
size: item.size,
|
|
56
|
-
type: item.fileType,
|
|
57
|
-
updatedAt: new Date(item.updatedAt),
|
|
58
|
-
url,
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async removeFile(id: string) {
|
|
63
|
-
return FileModel.delete(id);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async removeFiles(ids: string[]) {
|
|
67
|
-
await Promise.all(ids.map((id) => FileModel.delete(id)));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async removeAllFiles() {
|
|
71
|
-
return FileModel.clear();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
private async getBase64ByFileHash(hash: string) {
|
|
75
|
-
const fileItem = await clientS3Storage.getObject(hash);
|
|
76
|
-
if (!fileItem) throw new Error('file not found');
|
|
77
|
-
|
|
78
|
-
return Buffer.from(await fileItem.arrayBuffer()).toString('base64');
|
|
79
|
-
}
|
|
80
|
-
}
|