@lobehub/chat 1.124.0 → 1.124.2
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.example +5 -0
- package/.github/scripts/pr-comment.js +11 -2
- package/.github/workflows/desktop-pr-build.yml +86 -12
- package/.github/workflows/release-desktop-beta.yml +91 -20
- package/CHANGELOG.md +58 -0
- package/Dockerfile +2 -0
- package/Dockerfile.database +2 -0
- package/Dockerfile.pglite +2 -0
- package/apps/desktop/electron-builder.js +8 -4
- package/changelog/v1.json +21 -0
- package/docs/self-hosting/environment-variables/model-provider.mdx +18 -0
- package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +20 -0
- package/locales/ar/chat.json +2 -0
- package/locales/bg-BG/chat.json +2 -0
- package/locales/de-DE/chat.json +2 -0
- package/locales/en-US/chat.json +2 -0
- package/locales/es-ES/chat.json +2 -0
- package/locales/fa-IR/chat.json +2 -0
- package/locales/fr-FR/chat.json +2 -0
- package/locales/it-IT/chat.json +2 -0
- package/locales/ja-JP/chat.json +2 -0
- package/locales/ko-KR/chat.json +2 -0
- package/locales/nl-NL/chat.json +2 -0
- package/locales/pl-PL/chat.json +2 -0
- package/locales/pt-BR/chat.json +2 -0
- package/locales/ru-RU/chat.json +2 -0
- package/locales/tr-TR/chat.json +2 -0
- package/locales/vi-VN/chat.json +2 -0
- package/locales/zh-CN/chat.json +2 -0
- package/locales/zh-CN/modelProvider.json +1 -1
- package/locales/zh-TW/chat.json +2 -0
- package/package.json +1 -1
- package/packages/const/src/hotkeys.ts +1 -1
- package/packages/const/src/index.ts +1 -0
- package/packages/const/src/settings/hotkey.ts +3 -2
- package/packages/const/src/trace.ts +1 -1
- package/packages/const/src/user.ts +1 -2
- package/packages/database/src/client/db.test.ts +19 -13
- package/packages/electron-server-ipc/src/ipcClient.test.ts +783 -1
- package/packages/file-loaders/src/loadFile.test.ts +61 -0
- package/packages/file-loaders/src/utils/isTextReadableFile.test.ts +43 -0
- package/packages/file-loaders/src/utils/parser-utils.test.ts +155 -0
- package/packages/model-bank/src/aiModels/aihubmix.ts +38 -4
- package/packages/model-bank/src/aiModels/groq.ts +26 -8
- package/packages/model-bank/src/aiModels/hunyuan.ts +3 -3
- package/packages/model-bank/src/aiModels/modelscope.ts +13 -2
- package/packages/model-bank/src/aiModels/moonshot.ts +25 -5
- package/packages/model-bank/src/aiModels/novita.ts +40 -9
- package/packages/model-bank/src/aiModels/openrouter.ts +0 -13
- package/packages/model-bank/src/aiModels/qwen.ts +62 -1
- package/packages/model-bank/src/aiModels/siliconcloud.ts +20 -0
- package/packages/model-bank/src/aiModels/volcengine.ts +141 -15
- package/packages/model-runtime/package.json +2 -1
- package/packages/model-runtime/src/ai21/index.test.ts +2 -2
- package/packages/model-runtime/src/ai360/index.test.ts +2 -2
- package/packages/model-runtime/src/akashchat/index.test.ts +19 -0
- package/packages/model-runtime/src/anthropic/index.test.ts +1 -2
- package/packages/model-runtime/src/baichuan/index.test.ts +1 -2
- package/packages/model-runtime/src/bedrock/index.test.ts +1 -2
- package/packages/model-runtime/src/bfl/createImage.test.ts +1 -2
- package/packages/model-runtime/src/bfl/index.test.ts +1 -2
- package/packages/model-runtime/src/cloudflare/index.test.ts +1 -2
- package/packages/model-runtime/src/cohere/index.test.ts +19 -0
- package/packages/model-runtime/src/deepseek/index.test.ts +2 -2
- package/packages/model-runtime/src/fireworksai/index.test.ts +2 -2
- package/packages/model-runtime/src/giteeai/index.test.ts +2 -2
- package/packages/model-runtime/src/github/index.test.ts +2 -2
- package/packages/model-runtime/src/google/createImage.test.ts +1 -2
- package/packages/model-runtime/src/google/index.test.ts +1 -1
- package/packages/model-runtime/src/groq/index.test.ts +2 -3
- package/packages/model-runtime/src/huggingface/index.test.ts +40 -0
- package/packages/model-runtime/src/hunyuan/index.test.ts +2 -3
- package/packages/model-runtime/src/internlm/index.test.ts +2 -2
- package/packages/model-runtime/src/jina/index.test.ts +19 -0
- package/packages/model-runtime/src/lmstudio/index.test.ts +2 -2
- package/packages/model-runtime/src/minimax/index.test.ts +19 -0
- package/packages/model-runtime/src/mistral/index.test.ts +2 -3
- package/packages/model-runtime/src/modelscope/index.test.ts +19 -0
- package/packages/model-runtime/src/moonshot/index.test.ts +1 -2
- package/packages/model-runtime/src/nebius/index.test.ts +19 -0
- package/packages/model-runtime/src/newapi/index.test.ts +49 -42
- package/packages/model-runtime/src/newapi/index.ts +124 -143
- package/packages/model-runtime/src/novita/index.test.ts +3 -4
- package/packages/model-runtime/src/nvidia/index.test.ts +19 -0
- package/packages/model-runtime/src/openrouter/index.test.ts +2 -3
- package/packages/model-runtime/src/perplexity/index.test.ts +2 -3
- package/packages/model-runtime/src/ppio/index.test.ts +3 -4
- package/packages/model-runtime/src/qwen/index.test.ts +2 -2
- package/packages/model-runtime/src/sambanova/index.test.ts +19 -0
- package/packages/model-runtime/src/search1api/index.test.ts +19 -0
- package/packages/model-runtime/src/sensenova/index.test.ts +2 -2
- package/packages/model-runtime/src/spark/index.test.ts +2 -2
- package/packages/model-runtime/src/stepfun/index.test.ts +2 -2
- package/packages/model-runtime/src/taichu/index.test.ts +4 -5
- package/packages/model-runtime/src/tencentcloud/index.test.ts +1 -1
- package/packages/model-runtime/src/togetherai/index.test.ts +1 -2
- package/packages/model-runtime/src/upstage/index.test.ts +1 -2
- package/packages/model-runtime/src/utils/openaiCompatibleFactory/index.test.ts +9 -7
- package/packages/model-runtime/src/utils/streams/anthropic.ts +2 -2
- package/packages/model-runtime/src/utils/streams/openai/openai.ts +20 -13
- package/packages/model-runtime/src/utils/streams/openai/responsesStream.test.ts +1 -2
- package/packages/model-runtime/src/utils/streams/openai/responsesStream.ts +2 -2
- package/packages/model-runtime/src/utils/streams/protocol.ts +2 -2
- package/packages/model-runtime/src/wenxin/index.test.ts +2 -3
- package/packages/model-runtime/src/xai/index.test.ts +2 -2
- package/packages/model-runtime/src/zeroone/index.test.ts +1 -2
- package/packages/model-runtime/src/zhipu/index.test.ts +2 -3
- package/packages/model-runtime/vitest.config.mts +0 -7
- package/packages/types/src/index.ts +2 -0
- package/packages/types/src/message/base.ts +1 -1
- package/packages/types/src/openai/chat.ts +2 -3
- package/packages/utils/package.json +2 -1
- package/packages/utils/src/_deprecated/parseModels.test.ts +1 -1
- package/packages/utils/src/_deprecated/parseModels.ts +1 -1
- package/packages/utils/src/client/topic.test.ts +1 -2
- package/packages/utils/src/client/topic.ts +1 -2
- package/packages/utils/src/electron/desktopRemoteRPCFetch.ts +1 -1
- package/packages/utils/src/fetch/fetchSSE.ts +7 -8
- package/packages/utils/src/fetch/parseError.ts +1 -3
- package/packages/utils/src/format.test.ts +1 -2
- package/packages/utils/src/index.ts +1 -0
- package/packages/utils/src/toolManifest.ts +1 -2
- package/packages/utils/src/trace.ts +1 -1
- package/packages/utils/vitest.config.mts +1 -1
- package/packages/web-crawler/src/__tests__/urlRules.test.ts +275 -0
- package/packages/web-crawler/src/crawImpl/__tests__/exa.test.ts +269 -0
- package/packages/web-crawler/src/crawImpl/__tests__/firecrawl.test.ts +284 -0
- package/packages/web-crawler/src/crawImpl/__tests__/naive.test.ts +234 -0
- package/packages/web-crawler/src/crawImpl/__tests__/tavily.test.ts +359 -0
- package/packages/web-crawler/src/utils/__tests__/errorType.test.ts +217 -0
- package/packages/web-crawler/vitest.config.mts +3 -0
- package/scripts/electronWorkflow/mergeMacReleaseFiles.ts +207 -0
- package/src/app/[variants]/(main)/settings/provider/(detail)/newapi/page.tsx +1 -1
- package/src/components/Thinking/index.tsx +2 -3
- package/src/config/llm.ts +8 -0
- package/src/features/ChatInput/Desktop/index.tsx +16 -4
- package/src/features/ChatInput/StoreUpdater.tsx +2 -0
- package/src/libs/traces/index.ts +1 -1
- package/src/locales/default/chat.ts +1 -0
- package/src/locales/default/modelProvider.ts +1 -1
- package/src/server/modules/ModelRuntime/trace.ts +1 -2
- package/src/store/chat/slices/aiChat/actions/__tests__/cancel-functionality.test.ts +107 -0
- package/src/store/chat/slices/aiChat/actions/__tests__/generateAIChatV2.test.ts +352 -7
- package/src/store/chat/slices/aiChat/actions/generateAIChatV2.ts +2 -1
- package/packages/model-runtime/src/openrouter/__snapshots__/index.test.ts.snap +0 -113
@@ -1,7 +1,7 @@
|
|
1
1
|
import OpenAI from 'openai';
|
2
2
|
import type { Stream } from 'openai/streaming';
|
3
3
|
|
4
|
-
import {
|
4
|
+
import { ChatCitationItem, ChatMessageError } from '@/types/message';
|
5
5
|
|
6
6
|
import { ChatStreamCallbacks } from '../../../types';
|
7
7
|
import { AgentRuntimeErrorType, ILobeAgentRuntimeErrorType } from '../../../types/error';
|
@@ -21,24 +21,24 @@ import {
|
|
21
21
|
} from '../protocol';
|
22
22
|
|
23
23
|
// Process markdown base64 images: extract URLs and clean text in one pass
|
24
|
-
const processMarkdownBase64Images = (text: string): { cleanedText: string
|
24
|
+
const processMarkdownBase64Images = (text: string): { cleanedText: string; urls: string[] } => {
|
25
25
|
if (!text) return { cleanedText: text, urls: [] };
|
26
|
-
|
26
|
+
|
27
27
|
const urls: string[] = [];
|
28
28
|
const mdRegex = /!\[[^\]]*]\(\s*(data:image\/[\d+.A-Za-z-]+;base64,[^\s)]+)\s*\)/g;
|
29
29
|
let cleanedText = text;
|
30
30
|
let m: RegExpExecArray | null;
|
31
|
-
|
31
|
+
|
32
32
|
// Reset regex lastIndex to ensure we start from the beginning
|
33
33
|
mdRegex.lastIndex = 0;
|
34
|
-
|
34
|
+
|
35
35
|
while ((m = mdRegex.exec(text)) !== null) {
|
36
36
|
if (m[1]) urls.push(m[1]);
|
37
37
|
}
|
38
|
-
|
38
|
+
|
39
39
|
// Remove all markdown base64 image segments
|
40
40
|
cleanedText = text.replaceAll(mdRegex, '').trim();
|
41
|
-
|
41
|
+
|
42
42
|
return { cleanedText, urls };
|
43
43
|
};
|
44
44
|
|
@@ -159,14 +159,17 @@ const transformOpenAIStream = (
|
|
159
159
|
return { data: null, id: chunk.id, type: 'text' };
|
160
160
|
}
|
161
161
|
|
162
|
-
|
163
162
|
const text = item.delta.content as string;
|
164
163
|
const { urls: images, cleanedText: cleaned } = processMarkdownBase64Images(text);
|
165
164
|
if (images.length > 0) {
|
166
165
|
const arr: StreamProtocolChunk[] = [];
|
167
166
|
if (cleaned) arr.push({ data: cleaned, id: chunk.id, type: 'text' });
|
168
167
|
arr.push(
|
169
|
-
...images.map((url: string) => ({
|
168
|
+
...images.map((url: string) => ({
|
169
|
+
data: url,
|
170
|
+
id: chunk.id,
|
171
|
+
type: 'base64_image' as const,
|
172
|
+
})),
|
170
173
|
);
|
171
174
|
return arr;
|
172
175
|
}
|
@@ -187,7 +190,7 @@ const transformOpenAIStream = (
|
|
187
190
|
({
|
188
191
|
title: item.url_citation.title,
|
189
192
|
url: item.url_citation.url,
|
190
|
-
}) as
|
193
|
+
}) as ChatCitationItem,
|
191
194
|
),
|
192
195
|
},
|
193
196
|
id: chunk.id,
|
@@ -209,7 +212,7 @@ const transformOpenAIStream = (
|
|
209
212
|
({
|
210
213
|
title: item.url,
|
211
214
|
url: item.url,
|
212
|
-
}) as
|
215
|
+
}) as ChatCitationItem,
|
213
216
|
),
|
214
217
|
},
|
215
218
|
id: chunk.id,
|
@@ -236,7 +239,7 @@ const transformOpenAIStream = (
|
|
236
239
|
({
|
237
240
|
title: item,
|
238
241
|
url: item,
|
239
|
-
}) as
|
242
|
+
}) as ChatCitationItem,
|
240
243
|
),
|
241
244
|
},
|
242
245
|
id: chunk.id,
|
@@ -348,7 +351,11 @@ const transformOpenAIStream = (
|
|
348
351
|
const arr: StreamProtocolChunk[] = [];
|
349
352
|
if (cleaned) arr.push({ data: cleaned, id: chunk.id, type: 'text' });
|
350
353
|
arr.push(
|
351
|
-
...urls.map((url: string) => ({
|
354
|
+
...urls.map((url: string) => ({
|
355
|
+
data: url,
|
356
|
+
id: chunk.id,
|
357
|
+
type: 'base64_image' as const,
|
358
|
+
})),
|
352
359
|
);
|
353
360
|
return arr;
|
354
361
|
}
|
@@ -1,7 +1,6 @@
|
|
1
|
+
import { AgentRuntimeErrorType } from '@lobechat/model-runtime';
|
1
2
|
import { describe, expect, it, vi } from 'vitest';
|
2
3
|
|
3
|
-
import { AgentRuntimeErrorType } from '@/libs/model-runtime';
|
4
|
-
|
5
4
|
import { FIRST_CHUNK_ERROR_KEY } from '../protocol';
|
6
5
|
import { createReadableStream, readStreamChunk } from '../utils';
|
7
6
|
import { OpenAIResponsesStream } from './responsesStream';
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import OpenAI from 'openai';
|
2
2
|
import type { Stream } from 'openai/streaming';
|
3
3
|
|
4
|
-
import {
|
4
|
+
import { ChatCitationItem, ChatMessageError } from '@/types/message';
|
5
5
|
|
6
6
|
import { AgentRuntimeErrorType } from '../../../types/error';
|
7
7
|
import { convertResponseUsage } from '../../usageConverter';
|
@@ -126,7 +126,7 @@ const transformOpenAIStream = (
|
|
126
126
|
streamContext.returnedCitationArray.push({
|
127
127
|
title: citations.title,
|
128
128
|
url: citations.url,
|
129
|
-
} as
|
129
|
+
} as ChatCitationItem);
|
130
130
|
}
|
131
131
|
|
132
132
|
return { data: null, id: chunk.item_id, type: 'text' };
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ChatCitationItem, ModelSpeed, ModelTokensUsage } from '@/types/message';
|
2
2
|
|
3
3
|
import { parseToolCalls } from '../../helpers';
|
4
4
|
import { ChatStreamCallbacks } from '../../types';
|
@@ -23,7 +23,7 @@ export interface StreamContext {
|
|
23
23
|
* relevant to that specific portion of the generated content.
|
24
24
|
* This array accumulates all citation items received during the streaming response.
|
25
25
|
*/
|
26
|
-
returnedCitationArray?:
|
26
|
+
returnedCitationArray?: ChatCitationItem[];
|
27
27
|
/**
|
28
28
|
* O series models need a condition to separate part
|
29
29
|
*/
|
@@ -1,9 +1,8 @@
|
|
1
1
|
// @vitest-environment node
|
2
|
+
import { LobeOpenAICompatibleRuntime, ModelProvider } from '@lobechat/model-runtime';
|
2
3
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
3
4
|
|
4
|
-
import {
|
5
|
-
import { testProvider } from '@/libs/model-runtime/providerTestUtils';
|
6
|
-
|
5
|
+
import { testProvider } from '../providerTestUtils';
|
7
6
|
import { LobeWenxinAI } from './index';
|
8
7
|
|
9
8
|
testProvider({
|
@@ -1,7 +1,7 @@
|
|
1
1
|
// @vitest-environment node
|
2
|
-
import { ModelProvider } from '
|
3
|
-
import { testProvider } from '@/libs/model-runtime/providerTestUtils';
|
2
|
+
import { ModelProvider } from '@lobechat/model-runtime';
|
4
3
|
|
4
|
+
import { testProvider } from '../providerTestUtils';
|
5
5
|
import { LobeXAI } from './index';
|
6
6
|
|
7
7
|
testProvider({
|
@@ -1,10 +1,9 @@
|
|
1
1
|
// @vitest-environment node
|
2
|
+
import { ChatStreamCallbacks, LobeOpenAICompatibleRuntime } from '@lobechat/model-runtime';
|
2
3
|
import { OpenAI } from 'openai';
|
3
4
|
import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
5
|
|
5
|
-
import
|
6
|
-
import * as debugStreamModule from '@/libs/model-runtime/utils/debugStream';
|
7
|
-
|
6
|
+
import * as debugStreamModule from '../utils/debugStream';
|
8
7
|
import { LobeZhipuAI } from './index';
|
9
8
|
|
10
9
|
const bizErrorType = 'ProviderBizError';
|
@@ -4,14 +4,7 @@ import { defineConfig } from 'vitest/config';
|
|
4
4
|
export default defineConfig({
|
5
5
|
test: {
|
6
6
|
alias: {
|
7
|
-
/* eslint-disable sort-keys-fix/sort-keys-fix */
|
8
|
-
'@/libs/model-runtime': resolve(__dirname, './src'),
|
9
|
-
'@/types': resolve(__dirname, '../types/src'),
|
10
|
-
'@/utils/errorResponse': resolve(__dirname, '../../src/utils/errorResponse'),
|
11
|
-
'@/utils': resolve(__dirname, '../utils/src'),
|
12
|
-
'@/const': resolve(__dirname, '../const/src'),
|
13
7
|
'@': resolve(__dirname, '../../src'),
|
14
|
-
/* eslint-enable */
|
15
8
|
},
|
16
9
|
coverage: {
|
17
10
|
reporter: ['text', 'json', 'lcov', 'text-summary'],
|
@@ -14,6 +14,7 @@ export * from './llm';
|
|
14
14
|
export * from './message';
|
15
15
|
export * from './meta';
|
16
16
|
export * from './rag';
|
17
|
+
export * from './search';
|
17
18
|
export * from './serverConfig';
|
18
19
|
export * from './session';
|
19
20
|
export * from './topic';
|
@@ -22,5 +23,6 @@ export * from './user/settings';
|
|
22
23
|
// FIXME: I think we need a refactor for the "openai" types
|
23
24
|
// it more likes the UI message payload
|
24
25
|
export * from './openai/chat';
|
26
|
+
export * from './openai/plugin';
|
25
27
|
export * from './trace';
|
26
28
|
export * from './zustand';
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import { LLMRoleType } from '
|
2
|
-
import { MessageToolCall } from '
|
3
|
-
|
1
|
+
import { LLMRoleType } from '../llm';
|
2
|
+
import { MessageToolCall } from '../message';
|
4
3
|
import { OpenAIFunctionCall } from './functionCall';
|
5
4
|
|
6
5
|
interface UserMessageContentPartText {
|
@@ -1,7 +1,7 @@
|
|
1
|
+
import { ChatModelCard } from '@lobechat/types';
|
1
2
|
import { describe, expect, it } from 'vitest';
|
2
3
|
|
3
4
|
import { LOBE_DEFAULT_MODEL_LIST, OpenAIProviderCard } from '@/config/modelProviders';
|
4
|
-
import { ChatModelCard } from '@/types/llm';
|
5
5
|
|
6
6
|
import { parseModelString, transformToChatModelCards } from './parseModels';
|
7
7
|
|
@@ -1,8 +1,7 @@
|
|
1
|
+
import { ChatTopic } from '@lobechat/types';
|
1
2
|
import dayjs from 'dayjs';
|
2
3
|
import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest';
|
3
4
|
|
4
|
-
import { ChatTopic } from '@/types/topic';
|
5
|
-
|
6
5
|
import { groupTopicsByTime } from './topic';
|
7
6
|
|
8
7
|
// Mock current date to ensure consistent test results
|
@@ -1,9 +1,8 @@
|
|
1
|
+
import { ChatTopic, GroupedTopic, TimeGroupId } from '@lobechat/types';
|
1
2
|
import dayjs from 'dayjs';
|
2
3
|
import isToday from 'dayjs/plugin/isToday';
|
3
4
|
import isYesterday from 'dayjs/plugin/isYesterday';
|
4
5
|
|
5
|
-
import { ChatTopic, GroupedTopic, TimeGroupId } from '@/types/topic';
|
6
|
-
|
7
6
|
// 初始化 dayjs 插件
|
8
7
|
dayjs.extend(isToday);
|
9
8
|
dayjs.extend(isYesterday);
|
@@ -1,7 +1,7 @@
|
|
1
|
+
import { isDesktop } from '@lobechat/const';
|
1
2
|
import { ProxyTRPCRequestParams, dispatch, streamInvoke } from '@lobechat/electron-client-ipc';
|
2
3
|
import debug from 'debug';
|
3
4
|
|
4
|
-
import { isDesktop } from '@/const/version';
|
5
5
|
import { getElectronStoreState } from '@/store/electron';
|
6
6
|
import { electronSyncSelectors } from '@/store/electron/selectors';
|
7
7
|
import { getRequestBody, headersToRecord } from '@/utils/fetch';
|
@@ -1,20 +1,19 @@
|
|
1
|
+
import { LOBE_CHAT_OBSERVATION_ID, LOBE_CHAT_TRACE_ID, MESSAGE_CANCEL_FLAT } from '@lobechat/const';
|
1
2
|
import { parseToolCalls } from '@lobechat/model-runtime';
|
2
|
-
import { ChatErrorType } from '@lobechat/types';
|
3
|
-
|
4
|
-
import { MESSAGE_CANCEL_FLAT } from '@/const/message';
|
5
|
-
import { LOBE_CHAT_OBSERVATION_ID, LOBE_CHAT_TRACE_ID } from '@/const/trace';
|
6
|
-
import { ResponseAnimation, ResponseAnimationStyle } from '@lobechat/types';
|
7
3
|
import {
|
4
|
+
ChatErrorType,
|
5
|
+
ChatImageChunk,
|
8
6
|
ChatMessageError,
|
7
|
+
GroundingSearch,
|
9
8
|
MessageToolCall,
|
10
9
|
MessageToolCallChunk,
|
11
10
|
MessageToolCallSchema,
|
12
11
|
ModelReasoning,
|
13
12
|
ModelSpeed,
|
14
13
|
ModelTokensUsage,
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
ResponseAnimation,
|
15
|
+
ResponseAnimationStyle,
|
16
|
+
} from '@lobechat/types';
|
18
17
|
|
19
18
|
import { nanoid } from '../uuid';
|
20
19
|
import { fetchEventSource } from './fetchEventSource';
|
@@ -1,8 +1,6 @@
|
|
1
|
-
import { ErrorResponse, ErrorType } from '@lobechat/types';
|
1
|
+
import { ChatMessageError, ErrorResponse, ErrorType } from '@lobechat/types';
|
2
2
|
import { t } from 'i18next';
|
3
3
|
|
4
|
-
import { ChatMessageError } from '@/types/message';
|
5
|
-
|
6
4
|
export const getMessageError = async (response: Response) => {
|
7
5
|
let chatMessageError: ChatMessageError;
|
8
6
|
|
@@ -1,9 +1,8 @@
|
|
1
|
+
import { ChatCompletionTool , OpenAIPluginManifest } from '@lobechat/types';
|
1
2
|
import { LobeChatPluginManifest, pluginManifestSchema } from '@lobehub/chat-plugin-sdk';
|
2
3
|
import { uniqBy } from 'lodash-es';
|
3
4
|
|
4
5
|
import { API_ENDPOINTS } from '@/services/_url';
|
5
|
-
import { ChatCompletionTool } from '@/types/openai/chat';
|
6
|
-
import { OpenAIPluginManifest } from '@/types/openai/plugin';
|
7
6
|
import { genToolCallingName } from '@/utils/toolCall';
|
8
7
|
|
9
8
|
const fetchJSON = async <T = any>(url: string, proxy = false): Promise<T> => {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { LOBE_CHAT_TRACE_HEADER, LOBE_CHAT_TRACE_ID, TracePayload } from '
|
1
|
+
import { LOBE_CHAT_TRACE_HEADER, LOBE_CHAT_TRACE_ID, TracePayload } from '@lobechat/const';
|
2
2
|
|
3
3
|
export const getTracePayload = (req: Request): TracePayload | undefined => {
|
4
4
|
const header = req.headers.get(LOBE_CHAT_TRACE_HEADER);
|
@@ -7,11 +7,11 @@ export default defineConfig({
|
|
7
7
|
/* eslint-disable sort-keys-fix/sort-keys-fix */
|
8
8
|
'@/types': resolve(__dirname, '../types/src'),
|
9
9
|
'@/const': resolve(__dirname, '../const/src'),
|
10
|
-
'@/libs/model-runtime': resolve(__dirname, '../model-runtime/src'),
|
11
10
|
'@': resolve(__dirname, '../../src'),
|
12
11
|
/* eslint-enable */
|
13
12
|
},
|
14
13
|
coverage: {
|
14
|
+
all: false,
|
15
15
|
reporter: ['text', 'json', 'lcov', 'text-summary'],
|
16
16
|
},
|
17
17
|
environment: 'happy-dom',
|