@lobehub/chat 1.114.2 → 1.114.4
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/.github/scripts/docker-pr-comment.js +89 -0
- package/.github/workflows/desktop-pr-build.yml +8 -0
- package/.github/workflows/docker-database.yml +21 -0
- package/.github/workflows/release-desktop-beta.yml +8 -0
- package/.github/workflows/release.yml +7 -5
- package/.github/workflows/test.yml +9 -7
- package/CHANGELOG.md +42 -0
- package/Dockerfile.database +1 -1
- package/apps/desktop/electron-builder.js +1 -1
- package/changelog/v1.json +14 -0
- package/codecov.yml +30 -2
- package/docs/development/basic/image-generation-setup.mdx +190 -0
- package/docs/development/basic/image-generation-setup.zh-CN.mdx +190 -0
- package/docs/development/database-schema.dbml +14 -0
- package/drizzle.config.ts +2 -2
- package/package.json +5 -5
- package/packages/const/src/index.ts +2 -0
- package/{src/utils → packages/const/src/settings}/genUserLLMConfig.test.ts +1 -1
- package/{src/utils → packages/const/src/settings}/genUserLLMConfig.ts +1 -1
- package/packages/const/src/settings/index.ts +0 -2
- package/packages/const/src/settings/llm.ts +1 -1
- package/{src → packages}/database/migrations/0028_oauth_handoffs.sql +1 -1
- package/{src → packages}/database/migrations/0029_add_apikey_manage.sql +1 -1
- package/packages/database/package.json +24 -0
- package/{src/database → packages/database/src}/client/db.ts +2 -2
- package/{src/database → packages/database/src}/core/db-adaptor.ts +3 -3
- package/{src/database → packages/database/src}/core/dbForTest.ts +1 -1
- package/{src/database → packages/database/src}/core/electron.ts +3 -3
- package/{src/database/client → packages/database/src/core}/migrations.json +12 -2
- package/{src/database → packages/database/src}/core/web-server.ts +2 -3
- package/{src/database → packages/database/src}/models/__tests__/_test_template.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/_util.ts +3 -3
- package/{src/database → packages/database/src}/models/__tests__/agent.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/aiModel.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/aiProvider.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/asyncTask.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/chunk.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/file.test.ts +1 -1
- package/{src/database → packages/database/src}/models/__tests__/generation.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/generationBatch.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/generationTopic.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/knowledgeBase.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/message.test.ts +2 -2
- package/{src/database → packages/database/src}/models/__tests__/plugin.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/session.test.ts +2 -2
- package/{src/database → packages/database/src}/models/__tests__/sessionGroup.test.ts +1 -2
- package/{src/database → packages/database/src}/models/__tests__/topic.test.ts +1 -2
- package/{src/database → packages/database/src}/models/_template.ts +1 -2
- package/{src/database → packages/database/src}/models/agent.ts +2 -2
- package/{src/database → packages/database/src}/models/aiModel.ts +1 -1
- package/{src/database → packages/database/src}/models/aiProvider.ts +1 -1
- package/{src/database → packages/database/src}/models/apiKey.ts +1 -1
- package/{src/database → packages/database/src}/models/asyncTask.ts +1 -1
- package/{src/database → packages/database/src}/models/chunk.ts +1 -1
- package/{src/database → packages/database/src}/models/document.ts +1 -1
- package/{src/database → packages/database/src}/models/drizzleMigration.ts +1 -1
- package/{src/database → packages/database/src}/models/embedding.ts +1 -1
- package/{src/database → packages/database/src}/models/file.ts +1 -1
- package/{src/database → packages/database/src}/models/generation.ts +1 -1
- package/{src/database → packages/database/src}/models/generationBatch.ts +1 -1
- package/{src/database → packages/database/src}/models/generationTopic.ts +1 -1
- package/{src/database → packages/database/src}/models/knowledgeBase.ts +1 -1
- package/{src/database → packages/database/src}/models/message.ts +3 -3
- package/{src/database → packages/database/src}/models/oauthHandoff.ts +1 -1
- package/{src/database → packages/database/src}/models/plugin.ts +1 -1
- package/{src/database → packages/database/src}/models/session.ts +3 -3
- package/{src/database → packages/database/src}/models/sessionGroup.ts +2 -2
- package/{src/database → packages/database/src}/models/thread.ts +1 -1
- package/{src/database → packages/database/src}/models/topic.ts +3 -3
- package/{src/database → packages/database/src}/models/user.ts +1 -1
- package/{src/database → packages/database/src}/repositories/aiInfra/index.ts +4 -3
- package/{src/database → packages/database/src}/repositories/dataExporter/index.ts +2 -2
- package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/index.test.ts +2 -2
- package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/index.ts +6 -5
- package/{src/database → packages/database/src}/repositories/dataImporter/index.ts +2 -2
- package/{src/database → packages/database/src}/repositories/tableViewer/index.test.ts +1 -1
- package/{src/database → packages/database/src}/repositories/tableViewer/index.ts +2 -1
- package/{src/database → packages/database/src}/schemas/agent.ts +1 -1
- package/{src/database → packages/database/src}/schemas/aiInfra.ts +3 -2
- package/{src/database → packages/database/src}/schemas/document.ts +2 -2
- package/{src/database → packages/database/src}/schemas/file.ts +1 -1
- package/{src/database → packages/database/src}/schemas/generation.ts +1 -1
- package/{src/database → packages/database/src}/schemas/message.ts +1 -1
- package/{src/database → packages/database/src}/schemas/ragEvals.ts +1 -1
- package/{src/database → packages/database/src}/schemas/relations.ts +1 -2
- package/{src/database → packages/database/src}/schemas/session.ts +1 -2
- package/{src/database → packages/database/src}/schemas/topic.ts +2 -2
- package/{src/database → packages/database/src}/server/models/__tests__/adapter.test.ts +5 -4
- package/{src/database → packages/database/src}/server/models/__tests__/nextauth.test.ts +4 -4
- package/{src/database → packages/database/src}/server/models/__tests__/user.test.ts +1 -2
- package/{src/database → packages/database/src}/server/models/ragEval/dataset.ts +3 -3
- package/{src/database → packages/database/src}/server/models/ragEval/datasetRecord.ts +3 -3
- package/{src/database → packages/database/src}/server/models/ragEval/evaluation.ts +3 -3
- package/{src/database → packages/database/src}/server/models/ragEval/evaluationRecord.ts +2 -2
- package/{src/database → packages/database/src}/utils/idGenerator.ts +4 -1
- package/{vitest.config.server.ts → packages/database/vitest.config.ts} +8 -7
- package/packages/model-runtime/package.json +1 -0
- package/packages/model-runtime/src/bfl/createImage.test.ts +4 -4
- package/packages/model-runtime/src/bfl/createImage.ts +1 -1
- package/packages/model-runtime/src/google/index.test.ts +1 -1
- package/packages/model-runtime/src/google/index.ts +1 -3
- package/packages/model-runtime/src/ollama/index.ts +3 -2
- package/packages/model-runtime/src/utils/anthropicHelpers.test.ts +2 -3
- package/packages/model-runtime/src/utils/anthropicHelpers.ts +1 -2
- package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.ts +1 -1
- package/packages/model-runtime/src/utils/openaiHelpers.test.ts +2 -3
- package/packages/model-runtime/src/utils/openaiHelpers.ts +2 -2
- package/packages/model-runtime/src/utils/streams/bedrock/claude.ts +1 -2
- package/packages/model-runtime/src/utils/streams/bedrock/llama.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/bedrock/llama.ts +1 -2
- package/packages/model-runtime/src/utils/streams/google-ai.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/google-ai.ts +1 -1
- package/packages/model-runtime/src/utils/streams/ollama.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/ollama.ts +1 -1
- package/packages/model-runtime/src/utils/streams/protocol.ts +2 -2
- package/packages/model-runtime/src/utils/streams/vertex-ai.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/vertex-ai.ts +1 -1
- package/packages/model-runtime/vitest.config.ts +2 -0
- package/packages/types/src/index.ts +5 -0
- package/packages/utils/package.json +17 -0
- package/{src/utils → packages/utils/src}/client/cookie.test.ts +1 -3
- package/{src/utils → packages/utils/src}/client/cookie.ts +1 -1
- package/{src/utils → packages/utils/src}/client/parserPlaceholder.test.ts +2 -2
- package/{src/utils → packages/utils/src}/client/parserPlaceholder.ts +77 -73
- package/{src/utils → packages/utils/src}/client/topic.test.ts +1 -1
- package/{src/utils → packages/utils/src}/compressImage.test.ts +2 -0
- package/{src/utils → packages/utils/src}/fetch/__tests__/fetchSSE.test.ts +3 -4
- package/{src/utils → packages/utils/src}/fetch/fetchSSE.ts +1 -1
- package/{src/utils → packages/utils/src}/getFallbackModelProperty.test.ts +1 -1
- package/packages/utils/src/index.ts +5 -0
- package/{src/utils → packages/utils/src}/locale.ts +2 -1
- package/{src/utils → packages/utils/src}/merge.test.ts +1 -3
- package/{src/utils → packages/utils/src}/parseModels.ts +3 -2
- package/{src/utils → packages/utils/src}/platform.test.ts +1 -1
- package/{src/utils → packages/utils/src}/platform.ts +1 -1
- package/{src/utils → packages/utils/src}/sanitizeUTF8.test.ts +2 -0
- package/{src/utils → packages/utils/src}/server/__tests__/geo.test.ts +1 -1
- package/{src/utils → packages/utils/src}/server/xor.test.ts +1 -2
- package/{src/utils → packages/utils/src}/url.test.ts +1 -1
- package/packages/utils/tests/setup.ts +10 -0
- package/packages/utils/vitest.config.ts +16 -0
- package/scripts/dbmlWorkflow/index.ts +1 -1
- package/scripts/migrateClientDB/compile-migrations.ts +2 -2
- package/scripts/migrateServerDB/index.ts +2 -2
- package/scripts/setup-image-generation-dev.sh +81 -0
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/CreateDataset/CreateForm.tsx +1 -1
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetDetail/index.tsx +1 -1
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetList/Item.tsx +1 -2
- package/src/app/[variants]/(main)/repos/[id]/evals/dataset/DatasetList/index.tsx +1 -2
- package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/CreateEvaluation/CreateForm.tsx +1 -1
- package/src/app/[variants]/(main)/repos/[id]/evals/evaluation/EvaluationList/index.tsx +1 -1
- package/src/features/AgentSetting/store/index.ts +1 -2
- package/src/server/routers/async/ragEval.ts +1 -1
- package/src/server/routers/lambda/ragEval.ts +9 -9
- package/src/services/config.ts +1 -1
- package/src/services/ragEval.ts +4 -3
- package/src/store/knowledgeBase/slices/ragEval/actions/dataset.ts +6 -6
- package/src/store/knowledgeBase/slices/ragEval/actions/evaluation.ts +1 -1
- package/src/store/serverConfig/store.ts +1 -1
- package/src/utils/client/switchLang.test.ts +2 -2
- package/src/utils/client/switchLang.ts +2 -3
- package/tests/setup.ts +0 -11
- package/tsconfig.json +2 -0
- package/vitest.config.ts +6 -2
- /package/{src → packages}/database/migrations/0000_init.sql +0 -0
- /package/{src → packages}/database/migrations/0001_add_client_id.sql +0 -0
- /package/{src → packages}/database/migrations/0002_amusing_puma.sql +0 -0
- /package/{src → packages}/database/migrations/0003_naive_echo.sql +0 -0
- /package/{src → packages}/database/migrations/0004_add_next_auth.sql +0 -0
- /package/{src → packages}/database/migrations/0005_pgvector.sql +0 -0
- /package/{src → packages}/database/migrations/0006_add_knowledge_base.sql +0 -0
- /package/{src → packages}/database/migrations/0007_fix_embedding_table.sql +0 -0
- /package/{src → packages}/database/migrations/0008_add_rag_evals.sql +0 -0
- /package/{src → packages}/database/migrations/0009_remove_unused_user_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0010_add_accessed_at_and_clean_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0011_add_topic_history_summary.sql +0 -0
- /package/{src → packages}/database/migrations/0012_add_thread.sql +0 -0
- /package/{src → packages}/database/migrations/0013_add_ai_infra.sql +0 -0
- /package/{src → packages}/database/migrations/0014_add_message_reasoning.sql +0 -0
- /package/{src → packages}/database/migrations/0015_add_message_search_metadata.sql +0 -0
- /package/{src → packages}/database/migrations/0016_add_message_index.sql +0 -0
- /package/{src → packages}/database/migrations/0017_add_user_id_to_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0018_add_client_id_for_entities.sql +0 -0
- /package/{src → packages}/database/migrations/0019_add_hotkey_user_settings.sql +0 -0
- /package/{src → packages}/database/migrations/0020_add_oidc.sql +0 -0
- /package/{src → packages}/database/migrations/0021_add_agent_opening_settings.sql +0 -0
- /package/{src → packages}/database/migrations/0022_add_documents.sql +0 -0
- /package/{src → packages}/database/migrations/0023_remove_param_and_doubao.sql +0 -0
- /package/{src → packages}/database/migrations/0024_add_rbac_tables.sql +0 -0
- /package/{src → packages}/database/migrations/0025_add_provider_config.sql +0 -0
- /package/{src → packages}/database/migrations/0026_add_autovacuum_tuning.sql +0 -0
- /package/{src → packages}/database/migrations/0027_ai_image.sql +0 -0
- /package/{src → packages}/database/migrations/meta/0000_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0001_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0002_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0003_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0004_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0005_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0006_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0007_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0008_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0009_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0010_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0011_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0012_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0013_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0014_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0015_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0016_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0017_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0018_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0019_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0020_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0021_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0022_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0023_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0024_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0025_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0026_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0027_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0028_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/0029_snapshot.json +0 -0
- /package/{src → packages}/database/migrations/meta/_journal.json +0 -0
- /package/{src/database → packages/database/src}/client/db.test.ts +0 -0
- /package/{src/database → packages/database/src}/client/pglite.ts +0 -0
- /package/{src/database → packages/database/src}/client/pglite.worker.ts +0 -0
- /package/{src/database → packages/database/src}/client/type.ts +0 -0
- /package/{src/database → packages/database/src}/models/__tests__/fixtures/embedding.ts +0 -0
- /package/{src/database → packages/database/src}/repositories/aiInfra/index.test.ts +0 -0
- /package/{src/database → packages/database/src}/repositories/dataExporter/index.test.ts +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/agents.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/agentsToSessions.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/topic.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/userSettings.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/__tests__/fixtures/with-client-id.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/__tests__/fixtures/messages.json +0 -0
- /package/{src/database → packages/database/src}/repositories/dataImporter/deprecated/__tests__/index.test.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/_helpers.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/apiKey.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/asyncTask.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/index.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/nextauth.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/oidc.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/rag.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/rbac.ts +0 -0
- /package/{src/database → packages/database/src}/schemas/user.ts +0 -0
- /package/{src/database → packages/database/src}/server/index.ts +0 -0
- /package/{src/database → packages/database/src}/server/models/ragEval/index.ts +0 -0
- /package/{src/database → packages/database/src}/type.ts +0 -0
- /package/{src/database → packages/database/src}/utils/genWhere.ts +0 -0
- /package/{src/database → packages/database/src}/utils/idGenerator.test.ts +0 -0
- /package/{tests → packages/database/tests}/setup-db.ts +0 -0
- /package/{src/utils → packages/types/src}/zustand.ts +0 -0
- /package/{src/utils → packages/utils/src}/__snapshots__/parseModels.test.ts.snap +0 -0
- /package/{src/utils → packages/utils/src}/_deprecated/__snapshots__/parseModels.test.ts.snap +0 -0
- /package/{src/utils → packages/utils/src}/_deprecated/parseModels.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/_deprecated/parseModels.ts +0 -0
- /package/{src/utils → packages/utils/src}/apiKey.ts +0 -0
- /package/{src/utils → packages/utils/src}/basePath.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/GlobalAgentContextManager.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/downloadFile.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/exportFile.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/topic.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/xor-obfuscation.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/client/xor-obfuscation.ts +0 -0
- /package/{src/utils → packages/utils/src}/clientIP.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/clientIP.ts +0 -0
- /package/{src/utils → packages/utils/src}/clipboard.ts +0 -0
- /package/{src/utils → packages/utils/src}/colorUtils.ts +0 -0
- /package/{src/utils → packages/utils/src}/compass.ts +0 -0
- /package/{src/utils → packages/utils/src}/compressImage.ts +0 -0
- /package/{src/utils → packages/utils/src}/difference.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/difference.ts +0 -0
- /package/{src/utils → packages/utils/src}/electron/desktopRemoteRPCFetch.ts +0 -0
- /package/{src/utils → packages/utils/src}/env.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/__tests__/parseError.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/fetchEventSource/index.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/fetchEventSource/parse.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/headers.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/index.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/parseError.ts +0 -0
- /package/{src/utils → packages/utils/src}/fetch/request.ts +0 -0
- /package/{src/utils → packages/utils/src}/format.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/format.ts +0 -0
- /package/{src/utils → packages/utils/src}/genOG.ts +0 -0
- /package/{src/utils → packages/utils/src}/getFallbackModelProperty.ts +0 -0
- /package/{src/utils → packages/utils/src}/imageToBase64.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/imageToBase64.ts +0 -0
- /package/{src/utils → packages/utils/src}/isChunkingUnsupported.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/isChunkingUnsupported.ts +0 -0
- /package/{src/utils → packages/utils/src}/keyboard.ts +0 -0
- /package/{src/utils → packages/utils/src}/localStorage.ts +0 -0
- /package/{src/utils → packages/utils/src}/locale.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/merge.ts +0 -0
- /package/{src/utils → packages/utils/src}/number.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/number.ts +0 -0
- /package/{src/utils → packages/utils/src}/object.ts +0 -0
- /package/{src/utils → packages/utils/src}/parseMarkdown.ts +0 -0
- /package/{src/utils → packages/utils/src}/parseModels.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/pricing.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/pricing.ts +0 -0
- /package/{src/utils → packages/utils/src}/promptTemplate.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/promptTemplate.ts +0 -0
- /package/{src/utils → packages/utils/src}/safeParseJSON.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/safeParseJSON.ts +0 -0
- /package/{src/utils → packages/utils/src}/sanitizeUTF8.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/__tests__/auth.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/auth.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/correctOIDCUrl.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/geo.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/pageProps.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/responsive.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/routeVariants.ts +0 -0
- /package/{src/utils → packages/utils/src}/server/xor.ts +0 -0
- /package/{src/utils → packages/utils/src}/sleep.ts +0 -0
- /package/{src/utils → packages/utils/src}/storeDebug.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/storeDebug.ts +0 -0
- /package/{src/utils → packages/utils/src}/time.test.ts +0 -0
- /package/{src/utils → packages/utils/src}/time.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/client.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/estimated.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/index.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/server.ts +0 -0
- /package/{src/utils → packages/utils/src}/tokenizer/tokenizer.worker.ts +0 -0
- /package/{src/utils → packages/utils/src}/toolCall.ts +0 -0
- /package/{src/utils → packages/utils/src}/toolManifest.ts +0 -0
- /package/{src/utils → packages/utils/src}/trace.ts +0 -0
- /package/{src/utils → packages/utils/src}/units.ts +0 -0
- /package/{src/utils → packages/utils/src}/uploadFIle.ts +0 -0
- /package/{src/utils → packages/utils/src}/url.ts +0 -0
- /package/{src/utils → packages/utils/src}/uuid.ts +0 -0
@@ -0,0 +1,190 @@
|
|
1
|
+
---
|
2
|
+
title: 图像生成开发环境配置
|
3
|
+
description: 配置本地环境以开发文本生图和图像处理功能
|
4
|
+
---
|
5
|
+
|
6
|
+
# 图像生成开发环境配置
|
7
|
+
|
8
|
+
本指南帮助开发者配置本地环境,用于开发图像生成功能(文生图、图生图)等和文件存储能力。
|
9
|
+
|
10
|
+
## 前置条件
|
11
|
+
|
12
|
+
- 已安装并运行 Docker
|
13
|
+
- 已安装 Node.js 和 pnpm
|
14
|
+
- PostgreSQL 客户端工具(可选,用于调试)
|
15
|
+
|
16
|
+
<Callout type="warning">
|
17
|
+
**安全提醒**:此配置仅适用于本地开发。使用的默认凭据和开放权限不适合生产环境。
|
18
|
+
</Callout>
|
19
|
+
|
20
|
+
## 快速配置
|
21
|
+
|
22
|
+
运行提供的脚本来自动配置所有必需的服务:
|
23
|
+
|
24
|
+
```bash
|
25
|
+
# 配置 PostgreSQL 和 MinIO 用于图像存储
|
26
|
+
./scripts/setup-image-generation-dev.sh
|
27
|
+
|
28
|
+
# 启动开发服务器
|
29
|
+
pnpm dev:desktop
|
30
|
+
```
|
31
|
+
|
32
|
+
此脚本将执行:
|
33
|
+
|
34
|
+
1. 启动 PostgreSQL(本地开发无需身份验证)
|
35
|
+
2. 运行数据库迁移以初始化模式
|
36
|
+
3. 启动 MinIO(S3 兼容存储)
|
37
|
+
4. 创建并配置存储桶
|
38
|
+
5. 在 `.env.desktop` 中添加必要的 S3 环境变量
|
39
|
+
|
40
|
+
## 架构概览
|
41
|
+
|
42
|
+
图像生成功能需要:
|
43
|
+
|
44
|
+
- **PostgreSQL**:存储生成图像的元数据
|
45
|
+
- **MinIO/S3**:存储实际的图像文件
|
46
|
+
- **服务器模式**:文件处理所需(`NEXT_PUBLIC_SERVICE_MODE=server`)
|
47
|
+
|
48
|
+
## 环境配置
|
49
|
+
|
50
|
+
以下环境变量会被配置脚本自动设置:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
# S3 存储配置(本地开发使用 MinIO)
|
54
|
+
S3_ACCESS_KEY_ID=minioadmin
|
55
|
+
S3_SECRET_ACCESS_KEY=minioadmin
|
56
|
+
S3_ENDPOINT=http://localhost:9000
|
57
|
+
S3_BUCKET=lobe-chat
|
58
|
+
S3_REGION=us-east-1
|
59
|
+
S3_PUBLIC_DOMAIN=http://localhost:9000/lobe-chat
|
60
|
+
S3_ENABLE_PATH_STYLE=1 # MinIO 必需
|
61
|
+
```
|
62
|
+
|
63
|
+
## 开发工作流
|
64
|
+
|
65
|
+
### 1. 图像生成 API
|
66
|
+
|
67
|
+
在开发图像生成功能时,生成的图像将:
|
68
|
+
|
69
|
+
1. 由 AI 模型创建
|
70
|
+
2. 通过预签名 URL 上传到 S3/MinIO
|
71
|
+
3. 元数据存储在 PostgreSQL 中
|
72
|
+
4. 通过公共 S3 URL 提供服务
|
73
|
+
|
74
|
+
### 2. 文件存储结构
|
75
|
+
|
76
|
+
```
|
77
|
+
lobe-chat/ # S3 存储桶
|
78
|
+
├── generated/ # 生成的图像
|
79
|
+
│ └── {userId}/
|
80
|
+
│ └── {sessionId}/
|
81
|
+
│ └── {imageId}.png
|
82
|
+
└── uploads/ # 用户上传的图像处理文件
|
83
|
+
└── {userId}/
|
84
|
+
└── {fileId}.{ext}
|
85
|
+
```
|
86
|
+
|
87
|
+
### 3. 测试您的实现
|
88
|
+
|
89
|
+
配置环境后,您可以测试:
|
90
|
+
|
91
|
+
```typescript
|
92
|
+
// 示例:上传生成的图像
|
93
|
+
const uploadUrl = await trpc.upload.createPresignedUrl.mutate({
|
94
|
+
filename: 'generated-image.png',
|
95
|
+
contentType: 'image/png',
|
96
|
+
});
|
97
|
+
|
98
|
+
// 上传到 S3
|
99
|
+
await fetch(uploadUrl, {
|
100
|
+
method: 'PUT',
|
101
|
+
body: imageBlob,
|
102
|
+
headers: { 'Content-Type': 'image/png' },
|
103
|
+
});
|
104
|
+
```
|
105
|
+
|
106
|
+
## 手动配置
|
107
|
+
|
108
|
+
如果您希望手动配置服务:
|
109
|
+
|
110
|
+
### PostgreSQL
|
111
|
+
|
112
|
+
```bash
|
113
|
+
docker run -d --name lobe-postgres \
|
114
|
+
-p 5432:5432 \
|
115
|
+
-e POSTGRES_HOST_AUTH_METHOD=trust \
|
116
|
+
-e POSTGRES_DB=postgres \
|
117
|
+
postgres:15
|
118
|
+
```
|
119
|
+
|
120
|
+
### MinIO
|
121
|
+
|
122
|
+
```bash
|
123
|
+
# 启动 MinIO
|
124
|
+
docker run -d --name lobe-minio \
|
125
|
+
-p 9000:9000 -p 9001:9001 \
|
126
|
+
-e MINIO_ROOT_USER=minioadmin \
|
127
|
+
-e MINIO_ROOT_PASSWORD=minioadmin \
|
128
|
+
quay.io/minio/minio:RELEASE.2025-04-22T22-12-26Z \
|
129
|
+
server /data --console-address ":9001"
|
130
|
+
|
131
|
+
# 创建存储桶
|
132
|
+
docker run --rm \
|
133
|
+
--link lobe-minio:minio \
|
134
|
+
--entrypoint bash \
|
135
|
+
quay.io/minio/mc:RELEASE.2025-04-18T16-45-00Z \
|
136
|
+
-c "
|
137
|
+
mc config host add minio http://minio:9000 minioadmin minioadmin &&
|
138
|
+
mc mb minio/lobe-chat &&
|
139
|
+
mc anonymous set public minio/lobe-chat
|
140
|
+
"
|
141
|
+
```
|
142
|
+
|
143
|
+
## 服务地址
|
144
|
+
|
145
|
+
- **PostgreSQL**:`postgres://postgres@localhost:5432/postgres`
|
146
|
+
- **MinIO API**:`http://localhost:9000`
|
147
|
+
- **MinIO 控制台**:`http://localhost:9001` (minioadmin/minioadmin)
|
148
|
+
- **应用程序**:`http://localhost:3015`
|
149
|
+
|
150
|
+
## 故障排除
|
151
|
+
|
152
|
+
### 端口冲突
|
153
|
+
|
154
|
+
如果端口已被占用:
|
155
|
+
|
156
|
+
```bash
|
157
|
+
# 检查端口使用情况
|
158
|
+
lsof -i :5432 # PostgreSQL
|
159
|
+
lsof -i :9000 # MinIO API
|
160
|
+
lsof -i :9001 # MinIO 控制台
|
161
|
+
```
|
162
|
+
|
163
|
+
### 重置环境
|
164
|
+
|
165
|
+
要完全重置开发环境:
|
166
|
+
|
167
|
+
```bash
|
168
|
+
# 停止并删除容器
|
169
|
+
docker stop lobe-postgres lobe-minio
|
170
|
+
docker rm lobe-postgres lobe-minio
|
171
|
+
|
172
|
+
# 重新运行配置
|
173
|
+
./scripts/setup-image-generation-dev.sh
|
174
|
+
```
|
175
|
+
|
176
|
+
### 数据库迁移
|
177
|
+
|
178
|
+
配置脚本会自动运行迁移。如需手动运行:
|
179
|
+
|
180
|
+
```bash
|
181
|
+
pnpm db:migrate
|
182
|
+
```
|
183
|
+
|
184
|
+
注意:在使用 `pnpm dev:desktop` 的开发模式下,迁移也会在启动时自动运行。
|
185
|
+
|
186
|
+
## 相关文档
|
187
|
+
|
188
|
+
- [服务器数据库配置](/docs/self-hosting/server-database)
|
189
|
+
- [S3 存储配置](/docs/self-hosting/advanced/s3)
|
190
|
+
- [环境变量](/docs/self-hosting/environment-variables)
|
@@ -104,6 +104,19 @@ table ai_providers {
|
|
104
104
|
}
|
105
105
|
}
|
106
106
|
|
107
|
+
table api_keys {
|
108
|
+
id integer [pk, not null]
|
109
|
+
name varchar(256) [not null]
|
110
|
+
key varchar(256) [not null, unique]
|
111
|
+
enabled boolean [default: true]
|
112
|
+
expires_at "timestamp with time zone"
|
113
|
+
last_used_at "timestamp with time zone"
|
114
|
+
user_id text [not null]
|
115
|
+
accessed_at "timestamp with time zone" [not null, default: `now()`]
|
116
|
+
created_at "timestamp with time zone" [not null, default: `now()`]
|
117
|
+
updated_at "timestamp with time zone" [not null, default: `now()`]
|
118
|
+
}
|
119
|
+
|
107
120
|
table async_tasks {
|
108
121
|
id uuid [pk, not null, default: `gen_random_uuid()`]
|
109
122
|
type text
|
@@ -702,6 +715,7 @@ table rbac_roles {
|
|
702
715
|
description text
|
703
716
|
is_system boolean [not null, default: false]
|
704
717
|
is_active boolean [not null, default: true]
|
718
|
+
metadata jsonb [default: `{}`]
|
705
719
|
accessed_at "timestamp with time zone" [not null, default: `now()`]
|
706
720
|
created_at "timestamp with time zone" [not null, default: `now()`]
|
707
721
|
updated_at "timestamp with time zone" [not null, default: `now()`]
|
package/drizzle.config.ts
CHANGED
@@ -22,8 +22,8 @@ export default {
|
|
22
22
|
url: connectionString,
|
23
23
|
},
|
24
24
|
dialect: 'postgresql',
|
25
|
-
out: './
|
25
|
+
out: './packages/database/migrations',
|
26
26
|
|
27
|
-
schema: './
|
27
|
+
schema: './packages/database/src/schemas',
|
28
28
|
strict: true,
|
29
29
|
} satisfies Config;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.114.
|
3
|
+
"version": "1.114.4",
|
4
4
|
"description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
5
5
|
"keywords": [
|
6
6
|
"framework",
|
@@ -73,8 +73,6 @@
|
|
73
73
|
"test": "npm run test-app && npm run test-server",
|
74
74
|
"test-app": "vitest run --config vitest.config.ts",
|
75
75
|
"test-app:coverage": "vitest run --config vitest.config.ts --coverage",
|
76
|
-
"test-server": "vitest run --config vitest.config.server.ts",
|
77
|
-
"test-server:coverage": "vitest run --config vitest.config.server.ts --coverage",
|
78
76
|
"test:update": "vitest -u",
|
79
77
|
"type-check": "tsgo --noEmit",
|
80
78
|
"webhook:ngrok": "ngrok http http://localhost:3011",
|
@@ -141,11 +139,14 @@
|
|
141
139
|
"@icons-pack/react-simple-icons": "9.6.0",
|
142
140
|
"@khmyznikov/pwa-install": "0.3.9",
|
143
141
|
"@langchain/community": "^0.3.50",
|
142
|
+
"@lobechat/const": "workspace:*",
|
143
|
+
"@lobechat/database": "workspace:*",
|
144
144
|
"@lobechat/electron-client-ipc": "workspace:*",
|
145
145
|
"@lobechat/electron-server-ipc": "workspace:*",
|
146
146
|
"@lobechat/file-loaders": "workspace:*",
|
147
147
|
"@lobechat/model-runtime": "workspace:*",
|
148
148
|
"@lobechat/prompts": "workspace:*",
|
149
|
+
"@lobechat/utils": "workspace:*",
|
149
150
|
"@lobechat/web-crawler": "workspace:*",
|
150
151
|
"@lobehub/analytics": "^1.6.0",
|
151
152
|
"@lobehub/charts": "^2.0.0",
|
@@ -361,8 +362,7 @@
|
|
361
362
|
"unified": "^11.0.5",
|
362
363
|
"unist-util-visit": "^5.0.0",
|
363
364
|
"vite": "^5.4.19",
|
364
|
-
"vitest": "^3.2.4"
|
365
|
-
"vitest-canvas-mock": "^0.3.3"
|
365
|
+
"vitest": "^3.2.4"
|
366
366
|
},
|
367
367
|
"packageManager": "pnpm@10.14.0",
|
368
368
|
"publishConfig": {
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { ModelProvider } from '@lobechat/model-runtime';
|
2
|
+
import { UserModelProviderConfig } from '@lobechat/types';
|
2
3
|
|
3
4
|
import * as ProviderCards from '@/config/modelProviders';
|
4
5
|
import { ModelProviderCard } from '@/types/llm';
|
5
|
-
import { UserModelProviderConfig } from '@/types/user/settings';
|
6
6
|
|
7
7
|
export const genUserLLMConfig = (specificConfig: Record<any, any>): UserModelProviderConfig => {
|
8
8
|
return Object.keys(ModelProvider).reduce((config, providerKey) => {
|
@@ -9,8 +9,6 @@ import { DEFAULT_SYSTEM_AGENT_CONFIG } from './systemAgent';
|
|
9
9
|
import { DEFAULT_TOOL_CONFIG } from './tool';
|
10
10
|
import { DEFAULT_TTS_CONFIG } from './tts';
|
11
11
|
|
12
|
-
export const COOKIE_CACHE_DAYS = 30;
|
13
|
-
|
14
12
|
export * from './agent';
|
15
13
|
export * from './hotkey';
|
16
14
|
export * from './llm';
|
@@ -12,5 +12,5 @@ CREATE TABLE IF NOT EXISTS "api_keys" (
|
|
12
12
|
CONSTRAINT "api_keys_key_unique" UNIQUE("key")
|
13
13
|
);
|
14
14
|
--> statement-breakpoint
|
15
|
-
ALTER TABLE "rbac_roles" ADD COLUMN "metadata" jsonb DEFAULT '{}'::jsonb;--> statement-breakpoint
|
15
|
+
ALTER TABLE "rbac_roles" ADD COLUMN IF NOT EXISTS "metadata" jsonb DEFAULT '{}'::jsonb;--> statement-breakpoint
|
16
16
|
ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;
|
@@ -0,0 +1,24 @@
|
|
1
|
+
{
|
2
|
+
"name": "@lobechat/database",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"private": true,
|
5
|
+
"main": "src/index.ts",
|
6
|
+
"types": "src/index.ts",
|
7
|
+
"scripts": {
|
8
|
+
"test": "vitest",
|
9
|
+
"test:coverage": "vitest --coverage"
|
10
|
+
},
|
11
|
+
"dependencies": {
|
12
|
+
"@electric-sql/pglite": "^0.2.17",
|
13
|
+
"@lobechat/const": "workspace:*",
|
14
|
+
"@lobechat/types": "workspace:*",
|
15
|
+
"@lobechat/utils": "workspace:*",
|
16
|
+
"dayjs": "^1.11.13",
|
17
|
+
"drizzle-orm": "^0.44.4",
|
18
|
+
"nanoid": "^5.1.5",
|
19
|
+
"pg": "^8.16.3",
|
20
|
+
"random-words": "^2.0.1",
|
21
|
+
"ts-md5": "^2.0.1",
|
22
|
+
"ws": "^8.18.3"
|
23
|
+
}
|
24
|
+
}
|
@@ -2,7 +2,6 @@ import { sql } from 'drizzle-orm';
|
|
2
2
|
import { PgliteDatabase, drizzle } from 'drizzle-orm/pglite';
|
3
3
|
import { Md5 } from 'ts-md5';
|
4
4
|
|
5
|
-
import { DrizzleMigrationModel } from '@/database/models/drizzleMigration';
|
6
5
|
import {
|
7
6
|
ClientDBLoadingProgress,
|
8
7
|
DatabaseLoadingState,
|
@@ -11,8 +10,9 @@ import {
|
|
11
10
|
} from '@/types/clientDB';
|
12
11
|
import { sleep } from '@/utils/sleep';
|
13
12
|
|
13
|
+
import migrations from '../core/migrations.json';
|
14
|
+
import { DrizzleMigrationModel } from '../models/drizzleMigration';
|
14
15
|
import * as schema from '../schemas';
|
15
|
-
import migrations from './migrations.json';
|
16
16
|
|
17
17
|
const pgliteSchemaHashCache = 'LOBE_CHAT_PGLITE_SCHEMA_HASH';
|
18
18
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { isDesktop } from '
|
2
|
-
import { getDBInstance } from '@/database/core/web-server';
|
3
|
-
import { LobeChatDatabase } from '@/database/type';
|
1
|
+
import { isDesktop } from '@lobechat/const';
|
4
2
|
|
3
|
+
import { LobeChatDatabase } from '../type';
|
5
4
|
import { getPgliteInstance } from './electron';
|
5
|
+
import { getDBInstance } from './web-server';
|
6
6
|
|
7
7
|
/**
|
8
8
|
* 懒加载数据库实例
|
@@ -11,7 +11,7 @@ import { serverDBEnv } from '@/config/db';
|
|
11
11
|
|
12
12
|
import * as schema from '../schemas';
|
13
13
|
|
14
|
-
const migrationsFolder = join(__dirname, '
|
14
|
+
const migrationsFolder = join(__dirname, '../../migrations');
|
15
15
|
|
16
16
|
export const getTestDBInstance = async () => {
|
17
17
|
let connectionString = serverDBEnv.DATABASE_TEST_URL;
|
@@ -4,13 +4,13 @@ import { drizzle as pgliteDrizzle } from 'drizzle-orm/pglite';
|
|
4
4
|
import fs from 'node:fs';
|
5
5
|
import { Md5 } from 'ts-md5';
|
6
6
|
|
7
|
-
import { DrizzleMigrationModel } from '@/database/models/drizzleMigration';
|
8
|
-
import * as schema from '@/database/schemas';
|
9
7
|
import { electronIpcClient } from '@/server/modules/ElectronIPCClient';
|
10
8
|
import { MigrationTableItem } from '@/types/clientDB';
|
11
9
|
|
12
|
-
import
|
10
|
+
import { DrizzleMigrationModel } from '../models/drizzleMigration';
|
11
|
+
import * as schema from '../schemas';
|
13
12
|
import { LobeChatDatabase } from '../type';
|
13
|
+
import migrations from './migrations.json';
|
14
14
|
|
15
15
|
// 用于实例管理的全局对象
|
16
16
|
interface LobeGlobal {
|
@@ -544,10 +544,20 @@
|
|
544
544
|
},
|
545
545
|
{
|
546
546
|
"sql": [
|
547
|
-
"CREATE TABLE \"oauth_handoffs\" (\n\t\"id\" text PRIMARY KEY NOT NULL,\n\t\"client\" varchar(50) NOT NULL,\n\t\"payload\" jsonb NOT NULL,\n\t\"accessed_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"updated_at\" timestamp with time zone DEFAULT now() NOT NULL\n);\n"
|
547
|
+
"CREATE TABLE IF NOT EXISTS \"oauth_handoffs\" (\n\t\"id\" text PRIMARY KEY NOT NULL,\n\t\"client\" varchar(50) NOT NULL,\n\t\"payload\" jsonb NOT NULL,\n\t\"accessed_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"updated_at\" timestamp with time zone DEFAULT now() NOT NULL\n);\n"
|
548
548
|
],
|
549
549
|
"bps": true,
|
550
550
|
"folderMillis": 1752567402506,
|
551
|
-
"hash": "
|
551
|
+
"hash": "83c410b18ef5c8667b4bdfd7880ef7db4c3278d826e6e87e9d3e05dde67fe8e1"
|
552
|
+
},
|
553
|
+
{
|
554
|
+
"sql": [
|
555
|
+
"CREATE TABLE IF NOT EXISTS \"api_keys\" (\n\t\"id\" integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (sequence name \"api_keys_id_seq\" INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 START WITH 1 CACHE 1),\n\t\"name\" varchar(256) NOT NULL,\n\t\"key\" varchar(256) NOT NULL,\n\t\"enabled\" boolean DEFAULT true,\n\t\"expires_at\" timestamp with time zone,\n\t\"last_used_at\" timestamp with time zone,\n\t\"user_id\" text NOT NULL,\n\t\"accessed_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\t\"updated_at\" timestamp with time zone DEFAULT now() NOT NULL,\n\tCONSTRAINT \"api_keys_key_unique\" UNIQUE(\"key\")\n);\n",
|
556
|
+
"\nALTER TABLE \"rbac_roles\" ADD COLUMN IF NOT EXISTS \"metadata\" jsonb DEFAULT '{}'::jsonb;",
|
557
|
+
"\nALTER TABLE \"api_keys\" ADD CONSTRAINT \"api_keys_user_id_users_id_fk\" FOREIGN KEY (\"user_id\") REFERENCES \"public\".\"users\"(\"id\") ON DELETE cascade ON UPDATE no action;\n"
|
558
|
+
],
|
559
|
+
"bps": true,
|
560
|
+
"folderMillis": 1753201379817,
|
561
|
+
"hash": "fe5c0d7c2768189771c42ef93693fc1d58586b468c4bdde7fb6f2dc58cc9931c"
|
552
562
|
}
|
553
563
|
]
|
@@ -5,13 +5,12 @@ import { Pool as NodePool } from 'pg';
|
|
5
5
|
import ws from 'ws';
|
6
6
|
|
7
7
|
import { serverDBEnv } from '@/config/db';
|
8
|
-
import { isServerMode } from '@/const/version';
|
9
|
-
import * as schema from '@/database/schemas';
|
10
8
|
|
9
|
+
import * as schema from '../schemas';
|
11
10
|
import { LobeChatDatabase } from '../type';
|
12
11
|
|
13
12
|
export const getDBInstance = (): LobeChatDatabase => {
|
14
|
-
if (!
|
13
|
+
if (!(process.env.NEXT_PUBLIC_SERVICE_MODE === 'server')) return {} as any;
|
15
14
|
|
16
15
|
if (!serverDBEnv.KEY_VAULTS_SECRET) {
|
17
16
|
throw new Error(
|
@@ -2,9 +2,8 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/database/type';
|
6
|
-
|
7
5
|
import { sessionGroups, users } from '../../schemas';
|
6
|
+
import { LobeChatDatabase } from '../../type';
|
8
7
|
import { SessionGroupModel } from '../sessionGroup';
|
9
8
|
import { getTestDB } from './_util';
|
10
9
|
|
@@ -1,11 +1,11 @@
|
|
1
|
-
import { clientDB, initializeDB } from '
|
2
|
-
import { LobeChatDatabase } from '
|
1
|
+
import { clientDB, initializeDB } from '../../client/db';
|
2
|
+
import { LobeChatDatabase } from '../../type';
|
3
3
|
|
4
4
|
const isServerDBMode = process.env.TEST_SERVER_DB === '1';
|
5
5
|
|
6
6
|
export const getTestDB = async () => {
|
7
7
|
if (isServerDBMode) {
|
8
|
-
const { getTestDBInstance } = await import('
|
8
|
+
const { getTestDBInstance } = await import('../../core/dbForTest');
|
9
9
|
return await getTestDBInstance();
|
10
10
|
}
|
11
11
|
|
@@ -2,10 +2,10 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/database/type';
|
6
5
|
import { AiProviderModelListItem } from '@/types/aiModel';
|
7
6
|
|
8
7
|
import { AiModelSelectItem, NewAiModelItem, aiModels, users } from '../../schemas';
|
8
|
+
import { LobeChatDatabase } from '../../type';
|
9
9
|
import { AiModelModel } from '../aiModel';
|
10
10
|
import { getTestDB } from './_util';
|
11
11
|
|
@@ -3,10 +3,10 @@ import { ModelProvider } from '@lobechat/model-runtime';
|
|
3
3
|
import { eq } from 'drizzle-orm';
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
5
5
|
|
6
|
-
import { LobeChatDatabase } from '@/database/type';
|
7
6
|
import { sleep } from '@/utils/sleep';
|
8
7
|
|
9
8
|
import { aiProviders, users } from '../../schemas';
|
9
|
+
import { LobeChatDatabase } from '../../type';
|
10
10
|
import { AiProviderModel } from '../aiProvider';
|
11
11
|
import { getTestDB } from './_util';
|
12
12
|
|
@@ -2,10 +2,10 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/database/type';
|
6
5
|
import { AsyncTaskStatus, AsyncTaskType } from '@/types/asyncTask';
|
7
6
|
|
8
7
|
import { asyncTasks, users } from '../../schemas';
|
8
|
+
import { LobeChatDatabase } from '../../type';
|
9
9
|
import { ASYNC_TASK_TIMEOUT, AsyncTaskModel } from '../asyncTask';
|
10
10
|
import { getTestDB } from './_util';
|
11
11
|
|
@@ -2,8 +2,7 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/
|
6
|
-
import { uuid } from '@/utils/uuid';
|
5
|
+
import { LobeChatDatabase } from '../../type';import { uuid } from '@/utils/uuid';
|
7
6
|
|
8
7
|
import { chunks, embeddings, fileChunks, files, unstructuredChunks, users } from '../../schemas';
|
9
8
|
import { ChunkModel } from '../chunk';
|
@@ -2,10 +2,10 @@
|
|
2
2
|
import { eq, inArray } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/database/type';
|
6
5
|
import { FilesTabs, SortType } from '@/types/files';
|
7
6
|
|
8
7
|
import { files, globalFiles, knowledgeBaseFiles, knowledgeBases, users } from '../../schemas';
|
8
|
+
import { LobeChatDatabase } from '../../type';
|
9
9
|
import { FileModel } from '../file';
|
10
10
|
import { getTestDB } from './_util';
|
11
11
|
|
@@ -2,8 +2,7 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/
|
6
|
-
import { AsyncTaskStatus } from '@/types/asyncTask';
|
5
|
+
import { LobeChatDatabase } from '../../type';import { AsyncTaskStatus } from '@/types/asyncTask';
|
7
6
|
import { FileSource } from '@/types/files';
|
8
7
|
import { ImageGenerationAsset } from '@/types/generation';
|
9
8
|
|
@@ -2,8 +2,7 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/
|
6
|
-
import { AsyncTaskStatus } from '@/types/asyncTask';
|
5
|
+
import { LobeChatDatabase } from '../../type';import { AsyncTaskStatus } from '@/types/asyncTask';
|
7
6
|
import { GenerationConfig } from '@/types/generation';
|
8
7
|
|
9
8
|
import {
|
@@ -2,8 +2,7 @@
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/
|
6
|
-
import { FileService } from '@/server/services/file';
|
5
|
+
import { LobeChatDatabase } from '../../type';import { FileService } from '@/server/services/file';
|
7
6
|
import { ImageGenerationTopic } from '@/types/generation';
|
8
7
|
|
9
8
|
import { generationBatches, generationTopics, generations, users } from '../../schemas';
|
@@ -2,8 +2,7 @@
|
|
2
2
|
import { and, eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
4
4
|
|
5
|
-
import { LobeChatDatabase } from '@/
|
6
|
-
import { sleep } from '@/utils/sleep';
|
5
|
+
import { LobeChatDatabase } from '../../type';import { sleep } from '@/utils/sleep';
|
7
6
|
|
8
7
|
import {
|
9
8
|
NewKnowledgeBase,
|
@@ -2,11 +2,10 @@ import dayjs from 'dayjs';
|
|
2
2
|
import { eq } from 'drizzle-orm';
|
3
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
4
|
|
5
|
-
import { getTestDB } from '@/database/models/__tests__/_util';
|
6
|
-
import { LobeChatDatabase } from '@/database/type';
|
7
5
|
import { MessageItem } from '@/types/message';
|
8
6
|
import { uuid } from '@/utils/uuid';
|
9
7
|
|
8
|
+
import { getTestDB } from '../../models/__tests__/_util';
|
10
9
|
import {
|
11
10
|
chunks,
|
12
11
|
embeddings,
|
@@ -23,6 +22,7 @@ import {
|
|
23
22
|
topics,
|
24
23
|
users,
|
25
24
|
} from '../../schemas';
|
25
|
+
import { LobeChatDatabase } from '../../type';
|
26
26
|
import { MessageModel } from '../message';
|
27
27
|
import { codeEmbedding } from './fixtures/embedding';
|
28
28
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
// @vitest-environment node
|
2
2
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
3
3
|
|
4
|
-
import { LobeChatDatabase } from '
|
5
|
-
|
4
|
+
import { LobeChatDatabase } from '../../type';
|
6
5
|
import { NewInstalledPlugin, userInstalledPlugins, users } from '../../schemas';
|
7
6
|
import { PluginModel } from '../plugin';
|
8
7
|
import { getTestDB } from './_util';
|