♻️ refactor: refactor package types (#10233)

* refactor packages types

* remove lite mode
This commit is contained in:
Arvin Xu
2025-11-16 00:37:55 +08:00
committed by GitHub
parent 319a622778
commit 9872409d98
38 changed files with 68 additions and 358 deletions
-272
View File
@@ -1,272 +0,0 @@
## Set global build ENV
ARG NODEJS_VERSION="24"
## Base image for all building stages
FROM node:${NODEJS_VERSION}-slim AS base
ARG USE_CN_MIRROR
ENV DEBIAN_FRONTEND="noninteractive"
RUN \
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list.d/debian.sources"; \
fi \
# Add required package
&& apt update \
&& apt install ca-certificates proxychains-ng -qy \
# Prepare required package to distroless
&& mkdir -p /distroless/bin /distroless/etc /distroless/etc/ssl/certs /distroless/lib \
# Copy proxychains to distroless
&& cp /usr/lib/$(arch)-linux-gnu/libproxychains.so.4 /distroless/lib/libproxychains.so.4 \
&& cp /usr/lib/$(arch)-linux-gnu/libdl.so.2 /distroless/lib/libdl.so.2 \
&& cp /usr/bin/proxychains4 /distroless/bin/proxychains \
&& cp /etc/proxychains4.conf /distroless/etc/proxychains4.conf \
# Copy node to distroless
&& cp /usr/lib/$(arch)-linux-gnu/libstdc++.so.6 /distroless/lib/libstdc++.so.6 \
&& cp /usr/lib/$(arch)-linux-gnu/libgcc_s.so.1 /distroless/lib/libgcc_s.so.1 \
&& cp /usr/local/bin/node /distroless/bin/node \
# Copy CA certificates to distroless
&& cp /etc/ssl/certs/ca-certificates.crt /distroless/etc/ssl/certs/ca-certificates.crt \
# Cleanup temp files
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
## Builder image, install all the dependencies and build the app
FROM base AS builder
ARG USE_CN_MIRROR
ARG NEXT_PUBLIC_BASE_PATH
ARG NEXT_PUBLIC_SENTRY_DSN
ARG NEXT_PUBLIC_ANALYTICS_POSTHOG
ARG NEXT_PUBLIC_POSTHOG_HOST
ARG NEXT_PUBLIC_POSTHOG_KEY
ARG NEXT_PUBLIC_ANALYTICS_UMAMI
ARG NEXT_PUBLIC_UMAMI_SCRIPT_URL
ARG NEXT_PUBLIC_UMAMI_WEBSITE_ID
ARG FEATURE_FLAGS
ENV NEXT_PUBLIC_CLIENT_DB="pglite"
ENV NEXT_PUBLIC_BASE_PATH="${NEXT_PUBLIC_BASE_PATH}" \
FEATURE_FLAGS="${FEATURE_FLAGS}"
# Sentry
ENV NEXT_PUBLIC_SENTRY_DSN="${NEXT_PUBLIC_SENTRY_DSN}" \
SENTRY_ORG="" \
SENTRY_PROJECT=""
ENV APP_URL="http://app.com"
# Posthog
ENV NEXT_PUBLIC_ANALYTICS_POSTHOG="${NEXT_PUBLIC_ANALYTICS_POSTHOG}" \
NEXT_PUBLIC_POSTHOG_HOST="${NEXT_PUBLIC_POSTHOG_HOST}" \
NEXT_PUBLIC_POSTHOG_KEY="${NEXT_PUBLIC_POSTHOG_KEY}"
# Umami
ENV NEXT_PUBLIC_ANALYTICS_UMAMI="${NEXT_PUBLIC_ANALYTICS_UMAMI}" \
NEXT_PUBLIC_UMAMI_SCRIPT_URL="${NEXT_PUBLIC_UMAMI_SCRIPT_URL}" \
NEXT_PUBLIC_UMAMI_WEBSITE_ID="${NEXT_PUBLIC_UMAMI_WEBSITE_ID}"
# Node
ENV NODE_OPTIONS="--max-old-space-size=6144"
WORKDIR /app
COPY package.json pnpm-workspace.yaml ./
COPY .npmrc ./
COPY packages ./packages
RUN \
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
export SENTRYCLI_CDNURL="https://npmmirror.com/mirrors/sentry-cli"; \
npm config set registry "https://registry.npmmirror.com/"; \
echo 'canvas_binary_host_mirror=https://npmmirror.com/mirrors/canvas' >> .npmrc; \
fi \
# Set the registry for corepack
&& export COREPACK_NPM_REGISTRY=$(npm config get registry | sed 's/\/$//') \
# Update corepack to latest (nodejs/corepack#612)
&& npm i -g corepack@latest \
# Enable corepack
&& corepack enable \
# Use pnpm for corepack
&& corepack use $(sed -n 's/.*"packageManager": "\(.*\)".*/\1/p' package.json) \
# Install the dependencies
&& pnpm i
COPY . .
# run build standalone for docker version
RUN npm run build:docker
## Application image, copy all the files for production
FROM busybox:latest AS app
COPY --from=base /distroless/ /
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder /app/.next/standalone /app/
# Copy server launcher
COPY --from=builder /app/scripts/serverLauncher/startServer.js /app/startServer.js
RUN \
# Add nextjs:nodejs to run the app
addgroup -S -g 1001 nodejs \
&& adduser -D -G nodejs -H -S -h /app -u 1001 nextjs \
# Set permission for nextjs:nodejs
&& chown -R nextjs:nodejs /app /etc/proxychains4.conf
## Production image, copy all the files and run next
FROM scratch
# Copy all the files from app, set the correct permission for prerender cache
COPY --from=app / /
ENV NODE_ENV="production" \
NODE_OPTIONS="--dns-result-order=ipv4first --use-openssl-ca" \
NODE_EXTRA_CA_CERTS="" \
NODE_TLS_REJECT_UNAUTHORIZED="" \
SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt"
# Make the middleware rewrite through local as default
# refs: https://github.com/lobehub/lobe-chat/issues/5876
ENV MIDDLEWARE_REWRITE_THROUGH_LOCAL="1"
# set hostname to localhost
ENV HOSTNAME="0.0.0.0" \
PORT="3210"
# General Variables
ENV ACCESS_CODE="" \
API_KEY_SELECT_MODE="" \
DEFAULT_AGENT_CONFIG="" \
SYSTEM_AGENT="" \
FEATURE_FLAGS="" \
PROXY_URL="" \
ENABLE_AUTH_PROTECTION=""
# Model Variables
ENV \
# AI21
AI21_API_KEY="" AI21_MODEL_LIST="" \
# Ai360
AI360_API_KEY="" AI360_MODEL_LIST="" \
# AiHubMix
AIHUBMIX_API_KEY="" AIHUBMIX_MODEL_LIST="" \
# Anthropic
ANTHROPIC_API_KEY="" ANTHROPIC_MODEL_LIST="" ANTHROPIC_PROXY_URL="" \
# Amazon Bedrock
ENABLED_AWS_BEDROCK="" AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_REGION="" AWS_BEDROCK_MODEL_LIST="" \
# Azure OpenAI
AZURE_API_KEY="" AZURE_API_VERSION="" AZURE_ENDPOINT="" AZURE_MODEL_LIST="" \
# Baichuan
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
# Cloudflare
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
# Cohere
COHERE_API_KEY="" COHERE_MODEL_LIST="" COHERE_PROXY_URL="" \
# ComfyUI
ENABLED_COMFYUI="" COMFYUI_BASE_URL="" COMFYUI_AUTH_TYPE="" \
COMFYUI_API_KEY="" COMFYUI_USERNAME="" COMFYUI_PASSWORD="" COMFYUI_CUSTOM_HEADERS="" \
# DeepSeek
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
# Fireworks AI
FIREWORKSAI_API_KEY="" FIREWORKSAI_MODEL_LIST="" \
# Gitee AI
GITEE_AI_API_KEY="" GITEE_AI_MODEL_LIST="" \
# GitHub
GITHUB_TOKEN="" GITHUB_MODEL_LIST="" \
# Google
GOOGLE_API_KEY="" GOOGLE_MODEL_LIST="" GOOGLE_PROXY_URL="" \
# Groq
GROQ_API_KEY="" GROQ_MODEL_LIST="" GROQ_PROXY_URL="" \
# Higress
HIGRESS_API_KEY="" HIGRESS_MODEL_LIST="" HIGRESS_PROXY_URL="" \
# HuggingFace
HUGGINGFACE_API_KEY="" HUGGINGFACE_MODEL_LIST="" HUGGINGFACE_PROXY_URL="" \
# Hunyuan
HUNYUAN_API_KEY="" HUNYUAN_MODEL_LIST="" \
# InternLM
INTERNLM_API_KEY="" INTERNLM_MODEL_LIST="" \
# Jina
JINA_API_KEY="" JINA_MODEL_LIST="" JINA_PROXY_URL="" \
# Minimax
MINIMAX_API_KEY="" MINIMAX_MODEL_LIST="" \
# Mistral
MISTRAL_API_KEY="" MISTRAL_MODEL_LIST="" \
# ModelScope
MODELSCOPE_API_KEY="" MODELSCOPE_MODEL_LIST="" MODELSCOPE_PROXY_URL="" \
# Moonshot
MOONSHOT_API_KEY="" MOONSHOT_MODEL_LIST="" MOONSHOT_PROXY_URL="" \
# Nebius
NEBIUS_API_KEY="" NEBIUS_MODEL_LIST="" NEBIUS_PROXY_URL="" \
# NewAPI
NEWAPI_API_KEY="" NEWAPI_PROXY_URL="" \
# Novita
NOVITA_API_KEY="" NOVITA_MODEL_LIST="" \
# Nvidia NIM
NVIDIA_API_KEY="" NVIDIA_MODEL_LIST="" NVIDIA_PROXY_URL="" \
# Ollama
ENABLED_OLLAMA="" OLLAMA_MODEL_LIST="" OLLAMA_PROXY_URL="" \
# OpenAI
ENABLED_OPENAI="" OPENAI_API_KEY="" OPENAI_MODEL_LIST="" OPENAI_PROXY_URL="" \
# OpenRouter
OPENROUTER_API_KEY="" OPENROUTER_MODEL_LIST="" \
# Perplexity
PERPLEXITY_API_KEY="" PERPLEXITY_MODEL_LIST="" PERPLEXITY_PROXY_URL="" \
# Qiniu
QINIU_API_KEY="" QINIU_MODEL_LIST="" QINIU_PROXY_URL="" \
# Qwen
QWEN_API_KEY="" QWEN_MODEL_LIST="" QWEN_PROXY_URL="" \
# SambaNova
SAMBANOVA_API_KEY="" SAMBANOVA_MODEL_LIST="" \
# SenseNova
SENSENOVA_API_KEY="" SENSENOVA_MODEL_LIST="" \
# SiliconCloud
SILICONCLOUD_API_KEY="" SILICONCLOUD_MODEL_LIST="" SILICONCLOUD_PROXY_URL="" \
# Spark
SPARK_API_KEY="" SPARK_MODEL_LIST="" SPARK_PROXY_URL="" SPARK_SEARCH_MODE="" \
# Stepfun
STEPFUN_API_KEY="" STEPFUN_MODEL_LIST="" \
# Taichu
TAICHU_API_KEY="" TAICHU_MODEL_LIST="" \
# TogetherAI
TOGETHERAI_API_KEY="" TOGETHERAI_MODEL_LIST="" \
# Upstage
UPSTAGE_API_KEY="" UPSTAGE_MODEL_LIST="" \
# v0 (Vercel)
V0_API_KEY="" V0_MODEL_LIST="" \
# vLLM
VLLM_API_KEY="" VLLM_MODEL_LIST="" VLLM_PROXY_URL="" \
# Wenxin
WENXIN_API_KEY="" WENXIN_MODEL_LIST="" \
# xAI
XAI_API_KEY="" XAI_MODEL_LIST="" XAI_PROXY_URL="" \
# Xinference
XINFERENCE_API_KEY="" XINFERENCE_MODEL_LIST="" XINFERENCE_PROXY_URL="" \
# 01.AI
ZEROONE_API_KEY="" ZEROONE_MODEL_LIST="" \
# Zhipu
ZHIPU_API_KEY="" ZHIPU_MODEL_LIST="" \
# Tencent Cloud
TENCENT_CLOUD_API_KEY="" TENCENT_CLOUD_MODEL_LIST="" \
# Infini-AI
INFINIAI_API_KEY="" INFINIAI_MODEL_LIST="" \
# 302.AI
AI302_API_KEY="" AI302_MODEL_LIST="" \
# FAL
ENABLED_FAL="" FAL_API_KEY="" FAL_MODEL_LIST="" \
# BFL
BFL_API_KEY="" BFL_MODEL_LIST="" \
# Vercel AI Gateway
VERCELAIGATEWAY_API_KEY="" VERCELAIGATEWAY_MODEL_LIST=""
USER nextjs
EXPOSE 3210/tcp
ENTRYPOINT ["/bin/node"]
CMD ["/app/startServer.js"]
-1
View File
@@ -75,7 +75,6 @@
"release": "semantic-release",
"self-hosting:docker": "docker build -t lobehub:local .",
"self-hosting:docker-cn": "docker build -t lobehub-local --build-arg USE_CN_MIRROR=true .",
"self-hosting:docker-cn@lite": "docker build -t lobehub-lite-local -f Dockerfile.lite --build-arg USE_CN_MIRROR=true .",
"start": "next start -p 3210",
"stylelint": "stylelint \"src/**/*.{js,jsx,ts,tsx}\" --fix",
"test": "npm run test-app && npm run test-server",
+2 -1
View File
@@ -1,6 +1,7 @@
/* eslint-disable sort-keys-fix/sort-keys-fix, typescript-sort-keys/interface */
import { ChatToolPayload } from '@lobechat/types';
import type { AgentState, ToolsCalling } from './state';
import { ChatToolPayload } from '@/types/message';
export interface AgentEventInit {
type: 'init';
@@ -1,7 +1,6 @@
import type { AssistantContentBlock } from '@lobechat/types';
import { describe, expect, it } from 'vitest';
import type { AssistantContentBlock } from '@/types/index';
import type { Message } from '../../types';
import { MessageTransformer } from '../MessageTransformer';
+1 -2
View File
@@ -1,7 +1,6 @@
import { ClientDBLoadingProgress, DatabaseLoadingState } from '@lobechat/types';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { ClientDBLoadingProgress, DatabaseLoadingState } from '@/types/clientDB';
import { DatabaseManager } from './db';
// Mock 所有外部依赖
+6 -6
View File
@@ -1,13 +1,13 @@
import {
type ClientDBLoadingProgress,
DatabaseLoadingState,
type MigrationSQL,
type MigrationTableItem,
} from '@lobechat/types';
import { sql } from 'drizzle-orm';
import { PgliteDatabase, drizzle } from 'drizzle-orm/pglite';
import { Md5 } from 'ts-md5';
import {
ClientDBLoadingProgress,
DatabaseLoadingState,
MigrationSQL,
MigrationTableItem,
} from '@/types/clientDB';
import { sleep } from '@/utils/sleep';
import migrations from '../core/migrations.json';
+1 -1
View File
@@ -1,11 +1,11 @@
import { PGlite } from '@electric-sql/pglite';
import { vector } from '@electric-sql/pglite/vector';
import type { MigrationTableItem } from '@lobechat/types';
import { drizzle as pgliteDrizzle } from 'drizzle-orm/pglite';
import fs from 'node:fs';
import { Md5 } from 'ts-md5';
import { electronIpcClient } from '@/server/modules/ElectronIPCClient';
import { MigrationTableItem } from '@/types/clientDB';
import { DrizzleMigrationModel } from '../models/drizzleMigration';
import * as schema from '../schemas';
@@ -1,9 +1,8 @@
// @vitest-environment node
import { AsyncTaskStatus, AsyncTaskType } from '@lobechat/types';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { AsyncTaskStatus, AsyncTaskType } from '@/types/asyncTask';
import { asyncTasks, users } from '../../schemas';
import { LobeChatDatabase } from '../../type';
import { ASYNC_TASK_TIMEOUT, AsyncTaskModel } from '../asyncTask';
@@ -1,9 +1,8 @@
// @vitest-environment node
import { FilesTabs, SortType } from '@lobechat/types';
import { eq, inArray } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { FilesTabs, SortType } from '@/types/files';
import {
chunks,
embeddings,
@@ -1,10 +1,9 @@
// @vitest-environment node
import { AsyncTaskStatus, ImageGenerationAsset } from '@lobechat/types';
import { FileSource } from '@lobechat/types';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { FileSource } from '@/types/files';
import {
NewGeneration,
asyncTasks,
@@ -1,10 +1,9 @@
// @vitest-environment node
import { GenerationConfig } from '@lobechat/types';
import { AsyncTaskStatus } from '@lobechat/types';
import { eq } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { AsyncTaskStatus } from '@/types/asyncTask';
import {
NewGenerationBatch,
generationBatches,
+7 -7
View File
@@ -1,15 +1,15 @@
import { and, asc, desc, eq } from 'drizzle-orm';
import { isEmpty } from 'lodash-es';
import { ModelProvider } from 'model-bank';
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
import {
import type {
AiProviderDetailItem,
AiProviderListItem,
AiProviderRuntimeConfig,
CreateAiProviderParams,
UpdateAiProviderConfigParams,
} from '@/types/aiProvider';
} from '@lobechat/types';
import { and, asc, desc, eq } from 'drizzle-orm';
import { isEmpty } from 'lodash-es';
import { ModelProvider } from 'model-bank';
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
import { merge } from '@/utils/merge';
import { AiProviderSelectItem, aiModels, aiProviders } from '../schemas';
@@ -1,14 +1,14 @@
import type {
AiProviderDetailItem,
AiProviderListItem,
AiProviderRuntimeConfig,
EnabledProvider,
} from '@lobechat/types';
import { AiProviderModelListItem, EnabledAiModel } from 'model-bank';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
import { clientDB, initializeDB } from '@/database/client/db';
import {
AiProviderDetailItem,
AiProviderListItem,
AiProviderRuntimeConfig,
EnabledProvider,
} from '@/types/aiProvider';
import { AiInfraRepos } from './index';
@@ -1,3 +1,10 @@
import type {
AiProviderDetailItem,
AiProviderListItem,
AiProviderRuntimeState,
EnabledProvider,
ProviderConfig,
} from '@lobechat/types';
import { isEmpty } from 'lodash-es';
import {
AIChatModelCard,
@@ -8,13 +15,6 @@ import {
import pMap from 'p-map';
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
import {
AiProviderDetailItem,
AiProviderListItem,
AiProviderRuntimeState,
EnabledProvider,
} from '@/types/aiProvider';
import { ProviderConfig } from '@/types/user/settings';
import { merge, mergeArrayById } from '@/utils/merge';
import { AiModelModel } from '../../models/aiModel';
@@ -1,8 +1,7 @@
import type { ImportPgDataStructure } from '@lobechat/types';
import { eq, inArray } from 'drizzle-orm';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { ImportPgDataStructure } from '@/types/export';
import { getTestDB } from '../../../models/__tests__/_util';
import * as Schema from '../../../schemas';
import { DataImporterRepos } from '../index';
@@ -1,4 +1,5 @@
// @vitest-environment node
import type { ImporterEntryData } from '@lobechat/types';
import { eq, inArray } from 'drizzle-orm';
import { beforeEach, describe, expect, it, vi } from 'vitest';
@@ -12,7 +13,6 @@ import {
topics,
users,
} from '@/database/schemas';
import { ImporterEntryData } from '@/types/importer';
import { DeprecatedDataImporterRepos as DataImporterRepos } from '../index';
import mockImportData from './fixtures/messages.json';
@@ -1,6 +1,6 @@
import type { ImporterEntryData } from '@lobechat/types';
import { and, eq, inArray, sql } from 'drizzle-orm';
import { ImporterEntryData } from '@/types/importer';
import { sanitizeUTF8 } from '@/utils/sanitizeUTF8';
import {
@@ -1,7 +1,6 @@
import type { ImportPgDataStructure, ImportResultData, ImporterEntryData } from '@lobechat/types';
import { and, eq, inArray } from 'drizzle-orm';
import { ImportPgDataStructure } from '@/types/export';
import { ImportResultData, ImporterEntryData } from '@/types/importer';
import { uuid } from '@/utils/uuid';
import * as EXPORT_TABLES from '../../schemas';
@@ -1,12 +1,11 @@
import { sql } from 'drizzle-orm';
import pMap from 'p-map';
import {
import type {
FilterCondition,
PaginationParams,
TableBasicInfo,
TableColumnInfo,
} from '@/types/tableViewer';
} from '@lobechat/types';
import { sql } from 'drizzle-orm';
import pMap from 'p-map';
import { LobeChatDatabase } from '../../type';
+1 -2
View File
@@ -1,4 +1,5 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import type { LobeAgentChatConfig, LobeAgentTTSConfig } from '@lobechat/types';
import {
boolean,
index,
@@ -11,8 +12,6 @@ import {
} from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { LobeAgentChatConfig, LobeAgentTTSConfig } from '@/types/agent';
import { idGenerator, randomSlug } from '../utils/idGenerator';
import { timestamps } from './_helpers';
import { files, knowledgeBases } from './file';
+1 -2
View File
@@ -1,9 +1,8 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import type { AiProviderConfig, AiProviderSettings } from '@lobechat/types';
import { boolean, integer, jsonb, pgTable, primaryKey, text, varchar } from 'drizzle-orm/pg-core';
import { AiModelSettings } from 'model-bank';
import { AiProviderConfig, AiProviderSettings } from '@/types/aiProvider';
import { timestamps } from './_helpers';
import { users } from './user';
+1 -2
View File
@@ -1,4 +1,5 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import type { LobeDocumentPage } from '@lobechat/types';
import {
index,
integer,
@@ -12,8 +13,6 @@ import {
} from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { LobeDocumentPage } from '@/types/document';
import { idGenerator } from '../utils/idGenerator';
import { createdAt, timestamps } from './_helpers';
import { files } from './file';
+1 -2
View File
@@ -1,4 +1,5 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import { FileSource } from '@lobechat/types';
import {
boolean,
index,
@@ -13,8 +14,6 @@ import {
} from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { FileSource } from '@/types/files';
import { idGenerator } from '../utils/idGenerator';
import { accessedAt, createdAt, timestamps } from './_helpers';
import { asyncTasks } from './asyncTask';
+1 -2
View File
@@ -1,9 +1,8 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import type { ChatTopicMetadata } from '@lobechat/types';
import { boolean, index, jsonb, pgTable, primaryKey, text, uniqueIndex } from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { ChatTopicMetadata } from '@/types/topic';
import { idGenerator } from '../utils/idGenerator';
import { createdAt, timestamps, timestamptz } from './_helpers';
import { chatGroups } from './chatGroup';
+1 -1
View File
@@ -1,9 +1,9 @@
/* eslint-disable sort-keys-fix/sort-keys-fix */
import type { CustomPluginParams } from '@lobechat/types';
import { LobeChatPluginManifest } from '@lobehub/chat-plugin-sdk';
import { boolean, jsonb, pgTable, primaryKey, text } from 'drizzle-orm/pg-core';
import { DEFAULT_PREFERENCE } from '@/const/user';
import { CustomPluginParams } from '@/types/tool/plugin';
import { timestamps, timestamptz } from './_helpers';
@@ -1,3 +1,4 @@
import type { UserGuide, UserPreference } from '@lobechat/types';
import { TRPCError } from '@trpc/server';
import dayjs from 'dayjs';
import { count, eq } from 'drizzle-orm';
@@ -5,7 +6,6 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { INBOX_SESSION_ID } from '@/const/session';
import { KeyVaultsGateKeeper } from '@/server/modules/KeyVaultsEncrypt';
import { UserGuide, UserPreference } from '@/types/user';
import { getTestDBInstance } from '../../../core/dbForTest';
import { SessionModel } from '../../../models/session';
@@ -1,6 +1,5 @@
import { GenerateContentResponse } from '@google/genai';
import { GroundingSearch } from '@/types/search';
import { GroundingSearch } from '@lobechat/types';
import { nanoid } from '../../utils/uuid';
import { convertGoogleAIUsage } from '../usageConverters/google-ai';
@@ -1,9 +1,8 @@
// @vitest-environment node
import type { ComfyUIKeyVault } from '@lobechat/types';
import { createBasicAuthCredentials } from '@lobechat/utils';
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import type { ComfyUIKeyVault } from '@/types/index';
import type { CreateImagePayload } from '../../../types/image';
import { LobeComfyUI } from '../index';
@@ -1,7 +1,6 @@
import type { ComfyUIKeyVault } from '@lobechat/types';
import { createBasicAuthCredentials } from '@lobechat/utils';
import type { ComfyUIKeyVault } from '@/types/index';
export interface BasicCredentials {
password: string;
type: 'basic';
@@ -1,14 +1,9 @@
import type { ComfyUIKeyVault } from '@lobechat/types';
import { createBasicAuthCredentials } from '@lobechat/utils';
import debug from 'debug';
import type { ComfyUIKeyVault } from '@/types/index';
import { LobeRuntimeAI } from '../../core/BaseAI';
import {
AuthenticatedImageRuntime,
CreateImagePayload,
CreateImageResponse,
} from '../../types/image';
import { AuthenticatedImageRuntime, CreateImagePayload, CreateImageResponse } from '../../types';
import { parseComfyUIErrorMessage } from '../../utils/comfyuiErrorParser';
import { AgentRuntimeError } from '../../utils/createError';
+1 -1
View File
@@ -1,6 +1,6 @@
import { z } from 'zod';
import { AsyncTaskStatus } from '@/types/asyncTask';
import type { AsyncTaskStatus } from '../asyncTask';
export interface FileListItem {
chunkCount: number | null;
+1 -1
View File
@@ -1,6 +1,6 @@
import { z } from 'zod';
import { FileParsingTask } from '@/types/asyncTask';
import type { FileParsingTask } from '../asyncTask';
export interface FileUploadState {
progress: number;
+2 -2
View File
@@ -116,7 +116,7 @@ export enum ImportStage {
Finished,
}
export interface FileUploadState {
export interface ImportFileUploadState {
progress: number;
/**
* rest time in ms
@@ -137,7 +137,7 @@ export interface ErrorShape {
export interface OnImportCallbacks {
onError?: (error: ErrorShape) => void;
onFileUploading?: (state: FileUploadState) => void;
onFileUploading?: (state: ImportFileUploadState) => void;
onStageChange?: (stage: ImportStage) => void;
/**
*
+4
View File
@@ -8,11 +8,14 @@ export * from './chatGroup';
export * from './chunk';
export * from './clientDB';
export * from './discover';
export * from './document';
export * from './eval';
export * from './export';
export * from './fetch';
export * from './files';
export * from './generation';
export * from './hotkey';
export * from './importer';
export * from './knowledgeBase';
export * from './llm';
export * from './message';
@@ -23,6 +26,7 @@ export * from './search';
export * from './serverConfig';
export * from './service';
export * from './session';
export * from './tableViewer';
export * from './tool';
export * from './topic';
export * from './user';
+1 -1
View File
@@ -1,4 +1,4 @@
import { DallEImageQuality, DallEImageSize, DallEImageStyle } from '@/types/tool/dalle';
import type { DallEImageQuality, DallEImageSize, DallEImageStyle } from '../tool/dalle';
export interface OpenAIImagePayload {
model: 'dall-e-2' | 'dall-e-3';
+1 -1
View File
@@ -1,4 +1,4 @@
import { BaseDataModel } from '@/types/meta';
import type { BaseDataModel } from '../meta';
// 类型定义
export type TimeGroupId =
+1 -1
View File
@@ -1,3 +1,3 @@
import { HotkeyId } from '@/types/hotkey';
import type { HotkeyId } from '../../hotkey';
export type UserHotkeyConfig = Record<HotkeyId, string>;
+2 -2
View File
@@ -1,5 +1,6 @@
'use client';
import { ErrorShape, ImportFileUploadState, ImportStage } from '@lobechat/types';
import { Upload } from 'antd';
import { createStyles } from 'antd-style';
import { ImportIcon } from 'lucide-react';
@@ -12,7 +13,6 @@ import { importService } from '@/services/import';
import { useChatStore } from '@/store/chat';
import { useSessionStore } from '@/store/session';
import { ImportPgDataStructure } from '@/types/export';
import { ErrorShape, FileUploadState, ImportStage } from '@/types/importer';
import ImportError from './Error';
import { FileUploading } from './FileUploading';
@@ -64,7 +64,7 @@ const DataImporter = memo<DataImporterProps>(({ children, onFinishImport }) => {
const [duration, setDuration] = useState(0);
const [importState, setImportState] = useState(ImportStage.Start);
const [fileUploadingState, setUploadingState] = useState<FileUploadState | undefined>();
const [fileUploadingState, setUploadingState] = useState<ImportFileUploadState | undefined>();
const [importError, setImportError] = useState<ErrorShape | undefined>();
const [importResults, setImportResults] = useState<ImportResults | undefined>();
const [showImportModal, setShowImportModal] = useState(false);