mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-07 13:59:28 +08:00
refactor: prefer import type (#10190)
* style(linter): enable consistent-type-imports rule in typescript * chore: add biome to lint script for improved code formatting * chore: add oxlint-specific lint script for faster linting * refactor: use type-only imports for better type safety and clarity
This commit is contained in:
parent
59bf94b118
commit
d4b0272fe7
@ -141,7 +141,7 @@
|
|||||||
"typescript/await-thenable": "warn",
|
"typescript/await-thenable": "warn",
|
||||||
// "typescript/ban-ts-comment": "error",
|
// "typescript/ban-ts-comment": "error",
|
||||||
"typescript/no-array-constructor": "error",
|
"typescript/no-array-constructor": "error",
|
||||||
// "typescript/consistent-type-imports": "error",
|
"typescript/consistent-type-imports": "error",
|
||||||
"typescript/no-array-delete": "warn",
|
"typescript/no-array-delete": "warn",
|
||||||
"typescript/no-base-to-string": "warn",
|
"typescript/no-base-to-string": "warn",
|
||||||
"typescript/no-duplicate-enum-values": "error",
|
"typescript/no-duplicate-enum-values": "error",
|
||||||
|
|||||||
@ -65,7 +65,8 @@
|
|||||||
"test:e2e": "yarn playwright test",
|
"test:e2e": "yarn playwright test",
|
||||||
"test:lint": "oxlint --deny-warnings && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --cache",
|
"test:lint": "oxlint --deny-warnings && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --cache",
|
||||||
"test:scripts": "vitest scripts",
|
"test:scripts": "vitest scripts",
|
||||||
"lint": "oxlint --fix && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --cache && yarn typecheck && yarn check:i18n",
|
"lint": "oxlint --fix && eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --cache && biome lint --write && biome format --write && yarn typecheck && yarn check:i18n",
|
||||||
|
"lint:ox": "oxlint --fix && biome lint --write && biome format --write",
|
||||||
"format": "biome format --write && biome lint --write",
|
"format": "biome format --write && biome lint --write",
|
||||||
"format:check": "biome format && biome lint",
|
"format:check": "biome format && biome lint",
|
||||||
"prepare": "git config blame.ignoreRevsFile .git-blame-ignore-revs && husky",
|
"prepare": "git config blame.ignoreRevsFile .git-blame-ignore-revs && husky",
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
* 中间件管理器
|
* 中间件管理器
|
||||||
* 专注于 AI SDK 中间件的管理,与插件系统分离
|
* 专注于 AI SDK 中间件的管理,与插件系统分离
|
||||||
*/
|
*/
|
||||||
import { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建中间件列表
|
* 创建中间件列表
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* 中间件系统类型定义
|
* 中间件系统类型定义
|
||||||
*/
|
*/
|
||||||
import { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 具名中间件接口
|
* 具名中间件接口
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
* 模型包装工具函数
|
* 模型包装工具函数
|
||||||
* 用于将中间件应用到LanguageModel上
|
* 用于将中间件应用到LanguageModel上
|
||||||
*/
|
*/
|
||||||
import { LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
import { wrapLanguageModel } from 'ai'
|
import { wrapLanguageModel } from 'ai'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* 集成了来自 ModelCreator 的特殊处理逻辑
|
* 集成了来自 ModelCreator 的特殊处理逻辑
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EmbeddingModelV2, ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { EmbeddingModelV2, ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
|
|
||||||
import { wrapModelWithMiddlewares } from '../middleware/wrapper'
|
import { wrapModelWithMiddlewares } from '../middleware/wrapper'
|
||||||
import { DEFAULT_SEPARATOR, globalRegistryManagement } from '../providers/RegistryManagement'
|
import { DEFAULT_SEPARATOR, globalRegistryManagement } from '../providers/RegistryManagement'
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* Creation 模块类型定义
|
* Creation 模块类型定义
|
||||||
*/
|
*/
|
||||||
import { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
|
|
||||||
import type { ProviderId, ProviderSettingsMap } from '../providers/types'
|
import type { ProviderId, ProviderSettingsMap } from '../providers/types'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { ExtractProviderOptions, ProviderOptionsMap, TypedProviderOptions } from './types'
|
import type { ExtractProviderOptions, ProviderOptionsMap, TypedProviderOptions } from './types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建特定供应商的选项
|
* 创建特定供应商的选项
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import type { AiRequestContext } from '../../types'
|
|||||||
import { StreamEventManager } from './StreamEventManager'
|
import { StreamEventManager } from './StreamEventManager'
|
||||||
import { type TagConfig, TagExtractor } from './tagExtraction'
|
import { type TagConfig, TagExtractor } from './tagExtraction'
|
||||||
import { ToolExecutor } from './ToolExecutor'
|
import { ToolExecutor } from './ToolExecutor'
|
||||||
import { PromptToolUseConfig, ToolUseResult } from './type'
|
import type { PromptToolUseConfig, ToolUseResult } from './type'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工具使用标签配置
|
* 工具使用标签配置
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { ToolSet } from 'ai'
|
import type { ToolSet } from 'ai'
|
||||||
|
|
||||||
import { AiRequestContext } from '../..'
|
import type { AiRequestContext } from '../..'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解析结果类型
|
* 解析结果类型
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { anthropic } from '@ai-sdk/anthropic'
|
import type { anthropic } from '@ai-sdk/anthropic'
|
||||||
import { google } from '@ai-sdk/google'
|
import type { google } from '@ai-sdk/google'
|
||||||
import { openai } from '@ai-sdk/openai'
|
import type { openai } from '@ai-sdk/openai'
|
||||||
|
|
||||||
import { ProviderOptionsMap } from '../../../options/types'
|
import type { ProviderOptionsMap } from '../../../options/types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从 AI SDK 的工具函数中提取参数类型,以确保类型安全。
|
* 从 AI SDK 的工具函数中提取参数类型,以确保类型安全。
|
||||||
|
|||||||
@ -9,7 +9,8 @@ import { openai } from '@ai-sdk/openai'
|
|||||||
import { createXaiOptions, mergeProviderOptions } from '../../../options'
|
import { createXaiOptions, mergeProviderOptions } from '../../../options'
|
||||||
import { definePlugin } from '../../'
|
import { definePlugin } from '../../'
|
||||||
import type { AiRequestContext } from '../../types'
|
import type { AiRequestContext } from '../../types'
|
||||||
import { DEFAULT_WEB_SEARCH_CONFIG, WebSearchPluginConfig } from './helper'
|
import type { WebSearchPluginConfig } from './helper'
|
||||||
|
import { DEFAULT_WEB_SEARCH_CONFIG } from './helper'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 网络搜索插件
|
* 网络搜索插件
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { AiPlugin, AiRequestContext } from './types'
|
import type { AiPlugin, AiRequestContext } from './types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插件管理器
|
* 插件管理器
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* 例如: aihubmix:anthropic:claude-3.5-sonnet
|
* 例如: aihubmix:anthropic:claude-3.5-sonnet
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ProviderV2 } from '@ai-sdk/provider'
|
import type { ProviderV2 } from '@ai-sdk/provider'
|
||||||
import { customProvider } from 'ai'
|
import { customProvider } from 'ai'
|
||||||
|
|
||||||
import { globalRegistryManagement } from './RegistryManagement'
|
import { globalRegistryManagement } from './RegistryManagement'
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* 基于 AI SDK 原生的 createProviderRegistry
|
* 基于 AI SDK 原生的 createProviderRegistry
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EmbeddingModelV2, ImageModelV2, LanguageModelV2, ProviderV2 } from '@ai-sdk/provider'
|
import type { EmbeddingModelV2, ImageModelV2, LanguageModelV2, ProviderV2 } from '@ai-sdk/provider'
|
||||||
import { createProviderRegistry, type ProviderRegistryProvider } from 'ai'
|
import { createProviderRegistry, type ProviderRegistryProvider } from 'ai'
|
||||||
|
|
||||||
type PROVIDERS = Record<string, ProviderV2>
|
type PROVIDERS = Record<string, ProviderV2>
|
||||||
|
|||||||
@ -10,7 +10,8 @@ import { createGoogleGenerativeAI } from '@ai-sdk/google'
|
|||||||
import { createOpenAI, type OpenAIProviderSettings } from '@ai-sdk/openai'
|
import { createOpenAI, type OpenAIProviderSettings } from '@ai-sdk/openai'
|
||||||
import { createOpenAICompatible } from '@ai-sdk/openai-compatible'
|
import { createOpenAICompatible } from '@ai-sdk/openai-compatible'
|
||||||
import { createXai } from '@ai-sdk/xai'
|
import { createXai } from '@ai-sdk/xai'
|
||||||
import { customProvider, Provider } from 'ai'
|
import type { Provider } from 'ai'
|
||||||
|
import { customProvider } from 'ai'
|
||||||
import { z } from 'zod'
|
import { z } from 'zod'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { type DeepSeekProviderSettings } from '@ai-sdk/deepseek'
|
|||||||
import { type GoogleGenerativeAIProviderSettings } from '@ai-sdk/google'
|
import { type GoogleGenerativeAIProviderSettings } from '@ai-sdk/google'
|
||||||
import { type OpenAIProviderSettings } from '@ai-sdk/openai'
|
import { type OpenAIProviderSettings } from '@ai-sdk/openai'
|
||||||
import { type OpenAICompatibleProviderSettings } from '@ai-sdk/openai-compatible'
|
import { type OpenAICompatibleProviderSettings } from '@ai-sdk/openai-compatible'
|
||||||
import {
|
import type {
|
||||||
EmbeddingModelV2 as EmbeddingModel,
|
EmbeddingModelV2 as EmbeddingModel,
|
||||||
ImageModelV2 as ImageModel,
|
ImageModelV2 as ImageModel,
|
||||||
LanguageModelV2 as LanguageModel,
|
LanguageModelV2 as LanguageModel,
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { ImageModelV2 } from '@ai-sdk/provider'
|
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||||
import { experimental_generateImage as aiGenerateImage, NoImageGeneratedError } from 'ai'
|
import { experimental_generateImage as aiGenerateImage, NoImageGeneratedError } from 'ai'
|
||||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
|
|
||||||
|
|||||||
@ -2,12 +2,12 @@
|
|||||||
* 运行时执行器
|
* 运行时执行器
|
||||||
* 专注于插件化的AI调用处理
|
* 专注于插件化的AI调用处理
|
||||||
*/
|
*/
|
||||||
import { ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { ImageModelV2, LanguageModelV2, LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
|
import type { LanguageModel } from 'ai'
|
||||||
import {
|
import {
|
||||||
experimental_generateImage as _generateImage,
|
experimental_generateImage as _generateImage,
|
||||||
generateObject as _generateObject,
|
generateObject as _generateObject,
|
||||||
generateText as _generateText,
|
generateText as _generateText,
|
||||||
LanguageModel,
|
|
||||||
streamObject as _streamObject,
|
streamObject as _streamObject,
|
||||||
streamText as _streamText
|
streamText as _streamText
|
||||||
} from 'ai'
|
} from 'ai'
|
||||||
|
|||||||
@ -11,7 +11,7 @@ export type { RuntimeConfig } from './types'
|
|||||||
|
|
||||||
// === 便捷工厂函数 ===
|
// === 便捷工厂函数 ===
|
||||||
|
|
||||||
import { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
import type { LanguageModelV2Middleware } from '@ai-sdk/provider'
|
||||||
|
|
||||||
import { type AiPlugin } from '../plugins'
|
import { type AiPlugin } from '../plugins'
|
||||||
import { type ProviderId, type ProviderSettingsMap } from '../providers/types'
|
import { type ProviderId, type ProviderSettingsMap } from '../providers/types'
|
||||||
|
|||||||
@ -1,6 +1,13 @@
|
|||||||
/* eslint-disable @eslint-react/naming-convention/context-name */
|
/* eslint-disable @eslint-react/naming-convention/context-name */
|
||||||
import { ImageModelV2 } from '@ai-sdk/provider'
|
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||||
import { experimental_generateImage, generateObject, generateText, LanguageModel, streamObject, streamText } from 'ai'
|
import type {
|
||||||
|
experimental_generateImage,
|
||||||
|
generateObject,
|
||||||
|
generateText,
|
||||||
|
LanguageModel,
|
||||||
|
streamObject,
|
||||||
|
streamText
|
||||||
|
} from 'ai'
|
||||||
|
|
||||||
import { type AiPlugin, createContext, PluginManager } from '../plugins'
|
import { type AiPlugin, createContext, PluginManager } from '../plugins'
|
||||||
import { type ProviderId } from '../providers/types'
|
import { type ProviderId } from '../providers/types'
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* Runtime 层类型定义
|
* Runtime 层类型定义
|
||||||
*/
|
*/
|
||||||
import { ImageModelV2 } from '@ai-sdk/provider'
|
import type { ImageModelV2 } from '@ai-sdk/provider'
|
||||||
import { experimental_generateImage, generateObject, generateText, streamObject, streamText } from 'ai'
|
import type { experimental_generateImage, generateObject, generateText, streamObject, streamText } from 'ai'
|
||||||
|
|
||||||
import { type ModelConfig } from '../models/types'
|
import { type ModelConfig } from '../models/types'
|
||||||
import { type AiPlugin } from '../plugins'
|
import { type AiPlugin } from '../plugins'
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { Extension, Node } from '@tiptap/core'
|
import type { Node } from '@tiptap/core'
|
||||||
|
import { Extension } from '@tiptap/core'
|
||||||
|
|
||||||
import type { TableCellOptions } from '../cell/index.js'
|
import type { TableCellOptions } from '../cell/index.js'
|
||||||
import { TableCell } from '../cell/index.js'
|
import { TableCell } from '../cell/index.js'
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { SpanKind, SpanStatusCode } from '@opentelemetry/api'
|
import { SpanKind, SpanStatusCode } from '@opentelemetry/api'
|
||||||
import { ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
||||||
|
|
||||||
import { SpanEntity } from '../types/config'
|
import type { SpanEntity } from '../types/config'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* convert ReadableSpan to SpanEntity
|
* convert ReadableSpan to SpanEntity
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'
|
||||||
|
|
||||||
export interface TraceCache {
|
export interface TraceCache {
|
||||||
createSpan: (span: ReadableSpan) => void
|
createSpan: (span: ReadableSpan) => void
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { ExportResult, ExportResultCode } from '@opentelemetry/core'
|
import type { ExportResult } from '@opentelemetry/core'
|
||||||
import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
import { ExportResultCode } from '@opentelemetry/core'
|
||||||
|
import type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
||||||
|
|
||||||
export type SaveFunction = (spans: ReadableSpan[]) => Promise<void>
|
export type SaveFunction = (spans: ReadableSpan[]) => Promise<void>
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
import { Context, trace } from '@opentelemetry/api'
|
import type { Context } from '@opentelemetry/api'
|
||||||
import { BatchSpanProcessor, BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
import { trace } from '@opentelemetry/api'
|
||||||
|
import type { BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
||||||
|
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
||||||
|
|
||||||
import { TraceCache } from '../core/traceCache'
|
import type { TraceCache } from '../core/traceCache'
|
||||||
|
|
||||||
export class CacheBatchSpanProcessor extends BatchSpanProcessor {
|
export class CacheBatchSpanProcessor extends BatchSpanProcessor {
|
||||||
private cache: TraceCache
|
private cache: TraceCache
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { Context } from '@opentelemetry/api'
|
import type { Context } from '@opentelemetry/api'
|
||||||
import { BatchSpanProcessor, BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
import type { BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
||||||
import { EventEmitter } from 'stream'
|
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
||||||
|
import type { EventEmitter } from 'stream'
|
||||||
|
|
||||||
import { convertSpanToSpanEntity } from '../core/spanConvert'
|
import { convertSpanToSpanEntity } from '../core/spanConvert'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import { Context, trace } from '@opentelemetry/api'
|
import type { Context } from '@opentelemetry/api'
|
||||||
import { BatchSpanProcessor, BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
import { trace } from '@opentelemetry/api'
|
||||||
|
import type { BufferConfig, ReadableSpan, Span, SpanExporter } from '@opentelemetry/sdk-trace-base'
|
||||||
|
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
|
||||||
|
|
||||||
export type SpanFunction = (span: ReadableSpan) => void
|
export type SpanFunction = (span: ReadableSpan) => void
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { Link } from '@opentelemetry/api'
|
import type { Link } from '@opentelemetry/api'
|
||||||
import { TimedEvent } from '@opentelemetry/sdk-trace-base'
|
import type { TimedEvent } from '@opentelemetry/sdk-trace-base'
|
||||||
|
|
||||||
export type AttributeValue =
|
export type AttributeValue =
|
||||||
| string
|
| string
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
import { trace, Tracer } from '@opentelemetry/api'
|
import type { Tracer } from '@opentelemetry/api'
|
||||||
|
import { trace } from '@opentelemetry/api'
|
||||||
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'
|
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'
|
||||||
import { W3CTraceContextPropagator } from '@opentelemetry/core'
|
import { W3CTraceContextPropagator } from '@opentelemetry/core'
|
||||||
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
||||||
import { BatchSpanProcessor, ConsoleSpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base'
|
import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'
|
||||||
|
import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'
|
||||||
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
|
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
|
||||||
|
|
||||||
import { defaultConfig, TraceConfig } from '../trace-core/types/config'
|
import type { TraceConfig } from '../trace-core/types/config'
|
||||||
|
import { defaultConfig } from '../trace-core/types/config'
|
||||||
|
|
||||||
export class NodeTracer {
|
export class NodeTracer {
|
||||||
private static provider: NodeTracerProvider
|
private static provider: NodeTracerProvider
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { Context, ContextManager, ROOT_CONTEXT } from '@opentelemetry/api'
|
import type { Context, ContextManager } from '@opentelemetry/api'
|
||||||
|
import { ROOT_CONTEXT } from '@opentelemetry/api'
|
||||||
|
|
||||||
export class TopicContextManager implements ContextManager {
|
export class TopicContextManager implements ContextManager {
|
||||||
private topicContextStack: Map<string, Context[]>
|
private topicContextStack: Map<string, Context[]>
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { Context, context } from '@opentelemetry/api'
|
import type { Context } from '@opentelemetry/api'
|
||||||
|
import { context } from '@opentelemetry/api'
|
||||||
|
|
||||||
const originalPromise = globalThis.Promise
|
const originalPromise = globalThis.Promise
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
import { W3CTraceContextPropagator } from '@opentelemetry/core'
|
import { W3CTraceContextPropagator } from '@opentelemetry/core'
|
||||||
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'
|
||||||
import { BatchSpanProcessor, ConsoleSpanExporter, SpanProcessor } from '@opentelemetry/sdk-trace-base'
|
import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'
|
||||||
|
import { BatchSpanProcessor, ConsoleSpanExporter } from '@opentelemetry/sdk-trace-base'
|
||||||
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'
|
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'
|
||||||
|
|
||||||
import { defaultConfig, TraceConfig } from '../trace-core/types/config'
|
import type { TraceConfig } from '../trace-core/types/config'
|
||||||
|
import { defaultConfig } from '../trace-core/types/config'
|
||||||
import { TopicContextManager } from './TopicContextManager'
|
import { TopicContextManager } from './TopicContextManager'
|
||||||
|
|
||||||
export const contextManager = new TopicContextManager()
|
export const contextManager = new TopicContextManager()
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { ProcessingStatus } from '@types'
|
import type { ProcessingStatus } from '@types'
|
||||||
|
|
||||||
export type LoaderReturn = {
|
export type LoaderReturn = {
|
||||||
entriesAdded: number
|
entriesAdded: number
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
* Provides consistent error handling across renderer and main processes
|
* Provides consistent error handling across renderer and main processes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { DataApiError, ErrorCode } from './apiTypes'
|
import type { DataApiError } from './apiTypes'
|
||||||
|
import { ErrorCode } from './apiTypes'
|
||||||
|
|
||||||
// Re-export ErrorCode for convenience
|
// Re-export ErrorCode for convenience
|
||||||
export { ErrorCode } from './apiTypes'
|
export { ErrorCode } from './apiTypes'
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { PreferenceSchemas } from './preferenceSchemas'
|
import type { PreferenceSchemas } from './preferenceSchemas'
|
||||||
|
|
||||||
export type PreferenceDefaultScopeType = PreferenceSchemas['default']
|
export type PreferenceDefaultScopeType = PreferenceSchemas['default']
|
||||||
export type PreferenceKeyType = keyof PreferenceDefaultScopeType
|
export type PreferenceKeyType = keyof PreferenceDefaultScopeType
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// Original path: src/renderer/src/components/CopyButton.tsx
|
// Original path: src/renderer/src/components/CopyButton.tsx
|
||||||
import { Tooltip } from '@heroui/react'
|
import { Tooltip } from '@heroui/react'
|
||||||
import { Copy } from 'lucide-react'
|
import { Copy } from 'lucide-react'
|
||||||
import { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
|
|
||||||
interface CopyButtonProps {
|
interface CopyButtonProps {
|
||||||
tooltip?: string
|
tooltip?: string
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
// Original path: src/renderer/src/components/CustomCollapse.tsx
|
// Original path: src/renderer/src/components/CustomCollapse.tsx
|
||||||
import { ChevronRight } from 'lucide-react'
|
import { ChevronRight } from 'lucide-react'
|
||||||
import { FC, memo, useState } from 'react'
|
import type { FC } from 'react'
|
||||||
|
import { memo, useState } from 'react'
|
||||||
|
|
||||||
interface CustomCollapseProps {
|
interface CustomCollapseProps {
|
||||||
label: React.ReactNode
|
label: React.ReactNode
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
// Original path: src/renderer/src/components/Tags/CustomTag.tsx
|
// Original path: src/renderer/src/components/Tags/CustomTag.tsx
|
||||||
import { Tooltip } from '@heroui/react'
|
import { Tooltip } from '@heroui/react'
|
||||||
import { X } from 'lucide-react'
|
import { X } from 'lucide-react'
|
||||||
import { CSSProperties, FC, memo, MouseEventHandler, useMemo } from 'react'
|
import type { CSSProperties, FC, MouseEventHandler } from 'react'
|
||||||
|
import { memo, useMemo } from 'react'
|
||||||
|
|
||||||
export interface CustomTagProps {
|
export interface CustomTagProps {
|
||||||
icon?: React.ReactNode
|
icon?: React.ReactNode
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
// Original: src/renderer/src/components/DividerWithText.tsx
|
// Original: src/renderer/src/components/DividerWithText.tsx
|
||||||
import React, { CSSProperties } from 'react'
|
import type { CSSProperties } from 'react'
|
||||||
|
import React from 'react'
|
||||||
|
|
||||||
interface DividerWithTextProps {
|
interface DividerWithTextProps {
|
||||||
text: string
|
text: string
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Original path: src/renderer/src/components/EmojiIcon.tsx
|
// Original path: src/renderer/src/components/EmojiIcon.tsx
|
||||||
import { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
|
|
||||||
interface EmojiIconProps {
|
interface EmojiIconProps {
|
||||||
emoji: string
|
emoji: string
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
// Original path: src/renderer/src/components/ErrorBoundary.tsx
|
// Original path: src/renderer/src/components/ErrorBoundary.tsx
|
||||||
import { Button } from '@heroui/react'
|
import { Button } from '@heroui/react'
|
||||||
import { AlertTriangle } from 'lucide-react'
|
import { AlertTriangle } from 'lucide-react'
|
||||||
import { ComponentType, ReactNode } from 'react'
|
import type { ComponentType, ReactNode } from 'react'
|
||||||
import { ErrorBoundary, FallbackProps } from 'react-error-boundary'
|
import type { FallbackProps } from 'react-error-boundary'
|
||||||
|
import { ErrorBoundary } from 'react-error-boundary'
|
||||||
|
|
||||||
import { formatErrorMessage } from './utils'
|
import { formatErrorMessage } from './utils'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { AlertTriangleIcon, CheckIcon, CircleXIcon, InfoIcon, LucideIcon } from 'lucide-react'
|
import type { LucideIcon } from 'lucide-react'
|
||||||
|
import { AlertTriangleIcon, CheckIcon, CircleXIcon, InfoIcon } from 'lucide-react'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
|
||||||
import CustomTag from '../CustomTag'
|
import CustomTag from '../CustomTag'
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Original: src/renderer/src/components/TextBadge.tsx
|
// Original: src/renderer/src/components/TextBadge.tsx
|
||||||
import { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
|
|
||||||
interface TextBadgeProps {
|
interface TextBadgeProps {
|
||||||
text: string
|
text: string
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// Original path: src/renderer/src/components/ListItem/index.tsx
|
// Original path: src/renderer/src/components/ListItem/index.tsx
|
||||||
import { Tooltip } from '@heroui/react'
|
import { Tooltip } from '@heroui/react'
|
||||||
import { ReactNode } from 'react'
|
import type { ReactNode } from 'react'
|
||||||
|
|
||||||
import { cn } from '../../../utils'
|
import { cn } from '../../../utils'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// Original path: src/renderer/src/components/MaxContextCount.tsx
|
// Original path: src/renderer/src/components/MaxContextCount.tsx
|
||||||
import { Infinity as InfinityIcon } from 'lucide-react'
|
import { Infinity as InfinityIcon } from 'lucide-react'
|
||||||
import { CSSProperties } from 'react'
|
import type { CSSProperties } from 'react'
|
||||||
|
|
||||||
const MAX_CONTEXT_COUNT = 100
|
const MAX_CONTEXT_COUNT = 100
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Original path: src/renderer/src/components/Icons/FileIcons.tsx
|
// Original path: src/renderer/src/components/Icons/FileIcons.tsx
|
||||||
import { CSSProperties, SVGProps } from 'react'
|
import type { CSSProperties, SVGProps } from 'react'
|
||||||
|
|
||||||
interface BaseFileIconProps extends SVGProps<SVGSVGElement> {
|
interface BaseFileIconProps extends SVGProps<SVGSVGElement> {
|
||||||
size?: string | number
|
size?: string | number
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
|
import type { LucideIcon } from 'lucide-react'
|
||||||
import {
|
import {
|
||||||
AlignLeft,
|
AlignLeft,
|
||||||
Copy,
|
Copy,
|
||||||
Eye,
|
Eye,
|
||||||
LucideIcon,
|
|
||||||
Pencil,
|
Pencil,
|
||||||
RefreshCw,
|
RefreshCw,
|
||||||
RotateCcw,
|
RotateCcw,
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
// Original path: src/renderer/src/components/Icons/ReasoningIcon.tsx
|
// Original path: src/renderer/src/components/Icons/ReasoningIcon.tsx
|
||||||
import { Tooltip } from 'antd'
|
import { Tooltip } from 'antd'
|
||||||
import React, { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
|
import React from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Original path: src/renderer/src/components/Icons/SvgSpinners180Ring.tsx
|
// Original path: src/renderer/src/components/Icons/SvgSpinners180Ring.tsx
|
||||||
import { SVGProps } from 'react'
|
import type { SVGProps } from 'react'
|
||||||
|
|
||||||
export function SvgSpinners180Ring(props: SVGProps<SVGSVGElement> & { size?: number | string }) {
|
export function SvgSpinners180Ring(props: SVGProps<SVGSVGElement> & { size?: number | string }) {
|
||||||
const { size = '1em', ...svgProps } = props
|
const { size = '1em', ...svgProps } = props
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
// Original: src/renderer/src/components/Icons/ToolsCallingIcon.tsx
|
// Original: src/renderer/src/components/Icons/ToolsCallingIcon.tsx
|
||||||
import { ToolOutlined } from '@ant-design/icons'
|
import { ToolOutlined } from '@ant-design/icons'
|
||||||
import { Tooltip } from 'antd'
|
import { Tooltip } from 'antd'
|
||||||
import React, { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
|
import React from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
import CodeMirror, { Annotation, BasicSetupOptions, EditorView } from '@uiw/react-codemirror'
|
import type { BasicSetupOptions } from '@uiw/react-codemirror'
|
||||||
|
import CodeMirror, { Annotation, EditorView } from '@uiw/react-codemirror'
|
||||||
import { useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react'
|
import { useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react'
|
||||||
import { memo } from 'react'
|
import { memo } from 'react'
|
||||||
|
|
||||||
import { useBlurHandler, useHeightListener, useLanguageExtensions, useSaveKeymap } from './hooks'
|
import { useBlurHandler, useHeightListener, useLanguageExtensions, useSaveKeymap } from './hooks'
|
||||||
import { CodeEditorProps } from './types'
|
import type { CodeEditorProps } from './types'
|
||||||
import { prepareCodeChanges } from './utils'
|
import { prepareCodeChanges } from './utils'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
import { linter } from '@codemirror/lint' // statically imported by @uiw/codemirror-extensions-basic-setup
|
import { linter } from '@codemirror/lint' // statically imported by @uiw/codemirror-extensions-basic-setup
|
||||||
import { EditorView } from '@codemirror/view'
|
import { EditorView } from '@codemirror/view'
|
||||||
import { Extension, keymap } from '@uiw/react-codemirror'
|
import type { Extension } from '@uiw/react-codemirror'
|
||||||
|
import { keymap } from '@uiw/react-codemirror'
|
||||||
import { useEffect, useMemo, useState } from 'react'
|
import { useEffect, useMemo, useState } from 'react'
|
||||||
|
|
||||||
import { LanguageConfig } from './types'
|
import type { LanguageConfig } from './types'
|
||||||
import { getNormalizedExtension } from './utils'
|
import { getNormalizedExtension } from './utils'
|
||||||
|
|
||||||
/** 语言对应的 linter 加载器
|
/** 语言对应的 linter 加载器
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { BasicSetupOptions, Extension } from '@uiw/react-codemirror'
|
import type { BasicSetupOptions, Extension } from '@uiw/react-codemirror'
|
||||||
|
|
||||||
export type CodeMirrorTheme = 'light' | 'dark' | 'none' | Extension
|
export type CodeMirrorTheme = 'light' | 'dark' | 'none' | Extension
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import * as cmThemes from '@uiw/codemirror-themes-all'
|
import * as cmThemes from '@uiw/codemirror-themes-all'
|
||||||
import { Extension } from '@uiw/react-codemirror'
|
import type { Extension } from '@uiw/react-codemirror'
|
||||||
import diff from 'fast-diff'
|
import diff from 'fast-diff'
|
||||||
|
|
||||||
import { CodeMirrorTheme, LanguageConfig } from './types'
|
import type { CodeMirrorTheme, LanguageConfig } from './types'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Computes code changes using fast-diff and converts them to CodeMirror changes.
|
* Computes code changes using fast-diff and converts them to CodeMirror changes.
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
// Original path: src/renderer/src/components/CollapsibleSearchBar.tsx
|
// Original path: src/renderer/src/components/CollapsibleSearchBar.tsx
|
||||||
import { Input, InputRef, Tooltip } from 'antd'
|
import type { InputRef } from 'antd'
|
||||||
|
import { Input, Tooltip } from 'antd'
|
||||||
import { Search } from 'lucide-react'
|
import { Search } from 'lucide-react'
|
||||||
import { motion } from 'motion/react'
|
import { motion } from 'motion/react'
|
||||||
import React, { memo, useCallback, useEffect, useRef, useState } from 'react'
|
import React, { memo, useCallback, useEffect, useRef, useState } from 'react'
|
||||||
|
|||||||
@ -1,15 +1,14 @@
|
|||||||
// Original path: src/renderer/src/components/DraggableList/list.tsx
|
// Original path: src/renderer/src/components/DraggableList/list.tsx
|
||||||
import {
|
import type {
|
||||||
DragDropContext,
|
|
||||||
Draggable,
|
|
||||||
Droppable,
|
|
||||||
DroppableProps,
|
DroppableProps,
|
||||||
DropResult,
|
DropResult,
|
||||||
OnDragEndResponder,
|
OnDragEndResponder,
|
||||||
OnDragStartResponder,
|
OnDragStartResponder,
|
||||||
ResponderProvided
|
ResponderProvided
|
||||||
} from '@hello-pangea/dnd'
|
} from '@hello-pangea/dnd'
|
||||||
import { HTMLAttributes, Key, useCallback } from 'react'
|
import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd'
|
||||||
|
import type { HTMLAttributes, Key } from 'react'
|
||||||
|
import { useCallback } from 'react'
|
||||||
|
|
||||||
// Inline utility function from @renderer/utils
|
// Inline utility function from @renderer/utils
|
||||||
function droppableReorder<T>(list: T[], sourceIndex: number, destIndex: number, len: number = 1): T[] {
|
function droppableReorder<T>(list: T[], sourceIndex: number, destIndex: number, len: number = 1): T[] {
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
// Original path: src/renderer/src/components/DraggableList/useDraggableReorder.ts
|
// Original path: src/renderer/src/components/DraggableList/useDraggableReorder.ts
|
||||||
import { DropResult } from '@hello-pangea/dnd'
|
import type { DropResult } from '@hello-pangea/dnd'
|
||||||
import { Key, useCallback, useMemo } from 'react'
|
import type { Key } from 'react'
|
||||||
|
import { useCallback, useMemo } from 'react'
|
||||||
|
|
||||||
interface UseDraggableReorderParams<T> {
|
interface UseDraggableReorderParams<T> {
|
||||||
/** 原始的、完整的数据列表 */
|
/** 原始的、完整的数据列表 */
|
||||||
|
|||||||
@ -1,14 +1,12 @@
|
|||||||
import { Scrollbar } from '@cherrystudio/ui'
|
import { Scrollbar } from '@cherrystudio/ui'
|
||||||
import {
|
import type {
|
||||||
DragDropContext,
|
|
||||||
Draggable,
|
|
||||||
Droppable,
|
|
||||||
DroppableProps,
|
DroppableProps,
|
||||||
DropResult,
|
DropResult,
|
||||||
OnDragEndResponder,
|
OnDragEndResponder,
|
||||||
OnDragStartResponder,
|
OnDragStartResponder,
|
||||||
ResponderProvided
|
ResponderProvided
|
||||||
} from '@hello-pangea/dnd'
|
} from '@hello-pangea/dnd'
|
||||||
|
import { DragDropContext, Draggable, Droppable } from '@hello-pangea/dnd'
|
||||||
import { type ScrollToOptions, useVirtualizer, type VirtualItem } from '@tanstack/react-virtual'
|
import { type ScrollToOptions, useVirtualizer, type VirtualItem } from '@tanstack/react-virtual'
|
||||||
import { type Key, memo, useCallback, useImperativeHandle, useRef } from 'react'
|
import { type Key, memo, useCallback, useImperativeHandle, useRef } from 'react'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
// Original path: src/renderer/src/components/EditableNumber/index.tsx
|
// Original path: src/renderer/src/components/EditableNumber/index.tsx
|
||||||
import { InputNumber } from 'antd'
|
import { InputNumber } from 'antd'
|
||||||
import { FC, useEffect, useRef, useState } from 'react'
|
import type { FC } from 'react'
|
||||||
|
import { useEffect, useRef, useState } from 'react'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
export interface EditableNumberProps {
|
export interface EditableNumberProps {
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
// Original path: src/renderer/src/components/TooltipIcons/HelpTooltip.tsx
|
// Original path: src/renderer/src/components/TooltipIcons/HelpTooltip.tsx
|
||||||
import { Tooltip, TooltipProps } from 'antd'
|
import type { TooltipProps } from 'antd'
|
||||||
|
import { Tooltip } from 'antd'
|
||||||
import { HelpCircle } from 'lucide-react'
|
import { HelpCircle } from 'lucide-react'
|
||||||
|
|
||||||
type InheritedTooltipProps = Omit<TooltipProps, 'children'>
|
type InheritedTooltipProps = Omit<TooltipProps, 'children'>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
// Original path: src/renderer/src/components/InfoPopover.tsx
|
// Original path: src/renderer/src/components/InfoPopover.tsx
|
||||||
import { Popover, PopoverProps } from 'antd'
|
import type { PopoverProps } from 'antd'
|
||||||
|
import { Popover } from 'antd'
|
||||||
import { Info } from 'lucide-react'
|
import { Info } from 'lucide-react'
|
||||||
|
|
||||||
type InheritedPopoverProps = Omit<PopoverProps, 'children'>
|
type InheritedPopoverProps = Omit<PopoverProps, 'children'>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
// Original: src/renderer/src/components/TooltipIcons/InfoTooltip.tsx
|
// Original: src/renderer/src/components/TooltipIcons/InfoTooltip.tsx
|
||||||
import { Tooltip, TooltipProps } from 'antd'
|
import type { TooltipProps } from 'antd'
|
||||||
|
import { Tooltip } from 'antd'
|
||||||
import { Info } from 'lucide-react'
|
import { Info } from 'lucide-react'
|
||||||
|
|
||||||
type InheritedTooltipProps = Omit<TooltipProps, 'children'>
|
type InheritedTooltipProps = Omit<TooltipProps, 'children'>
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
// Original path: src/renderer/src/components/Selector.tsx
|
// Original path: src/renderer/src/components/Selector.tsx
|
||||||
import { Dropdown, DropdownProps } from 'antd'
|
import type { DropdownProps } from 'antd'
|
||||||
|
import { Dropdown } from 'antd'
|
||||||
import { Check, ChevronsUpDown } from 'lucide-react'
|
import { Check, ChevronsUpDown } from 'lucide-react'
|
||||||
import { ReactNode, useEffect, useMemo, useRef, useState } from 'react'
|
import type { ReactNode } from 'react'
|
||||||
|
import { useEffect, useMemo, useRef, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled, { css } from 'styled-components'
|
import styled, { css } from 'styled-components'
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
// Original path: src/renderer/src/components/TooltipIcons/WarnTooltip.tsx
|
// Original path: src/renderer/src/components/TooltipIcons/WarnTooltip.tsx
|
||||||
import { Tooltip, TooltipProps } from 'antd'
|
import type { TooltipProps } from 'antd'
|
||||||
|
import { Tooltip } from 'antd'
|
||||||
import { AlertTriangle } from 'lucide-react'
|
import { AlertTriangle } from 'lucide-react'
|
||||||
|
|
||||||
type InheritedTooltipProps = Omit<TooltipProps, 'children'>
|
type InheritedTooltipProps = Omit<TooltipProps, 'children'>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
// Original: src/renderer/src/components/Scrollbar/index.tsx
|
// Original: src/renderer/src/components/Scrollbar/index.tsx
|
||||||
import { throttle } from 'lodash'
|
import { throttle } from 'lodash'
|
||||||
import { FC, useCallback, useEffect, useRef, useState } from 'react'
|
import type { FC } from 'react'
|
||||||
|
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
export interface ScrollbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onScroll'> {
|
export interface ScrollbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onScroll'> {
|
||||||
|
|||||||
@ -2,7 +2,8 @@ import { Button } from '@heroui/react'
|
|||||||
import type { Meta, StoryObj } from '@storybook/react'
|
import type { Meta, StoryObj } from '@storybook/react'
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
|
|
||||||
import { CustomFallbackProps, ErrorBoundary } from '../../../src/components/base/ErrorBoundary'
|
import type { CustomFallbackProps } from '../../../src/components/base/ErrorBoundary'
|
||||||
|
import { ErrorBoundary } from '../../../src/components/base/ErrorBoundary'
|
||||||
|
|
||||||
// 错误组件 - 用于触发错误
|
// 错误组件 - 用于触发错误
|
||||||
const ThrowErrorComponent = ({ shouldThrow = false, errorMessage = '这是一个模拟错误' }) => {
|
const ThrowErrorComponent = ({ shouldThrow = false, errorMessage = '这是一个模拟错误' }) => {
|
||||||
|
|||||||
@ -1,11 +1,8 @@
|
|||||||
import type { Meta, StoryObj } from '@storybook/react-vite'
|
import type { Meta, StoryObj } from '@storybook/react-vite'
|
||||||
import { action } from 'storybook/actions'
|
import { action } from 'storybook/actions'
|
||||||
|
|
||||||
import CodeEditor, {
|
import type { LanguageConfig } from '../../../src/components/interactive/CodeEditor'
|
||||||
getCmThemeByName,
|
import CodeEditor, { getCmThemeByName, getCmThemeNames } from '../../../src/components/interactive/CodeEditor'
|
||||||
getCmThemeNames,
|
|
||||||
LanguageConfig
|
|
||||||
} from '../../../src/components/interactive/CodeEditor'
|
|
||||||
|
|
||||||
// 示例语言配置 - 为 Storybook 提供更丰富的语言支持演示
|
// 示例语言配置 - 为 Storybook 提供更丰富的语言支持演示
|
||||||
const exampleLanguageConfig: LanguageConfig = {
|
const exampleLanguageConfig: LanguageConfig = {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { ApiServerConfig } from '@types'
|
import type { ApiServerConfig } from '@types'
|
||||||
import { v4 as uuidv4 } from 'uuid'
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
|
|
||||||
import { loggerService } from '../services/LoggerService'
|
import { loggerService } from '../services/LoggerService'
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import crypto from 'crypto'
|
import crypto from 'crypto'
|
||||||
import { NextFunction, Request, Response } from 'express'
|
import type { NextFunction, Request, Response } from 'express'
|
||||||
|
|
||||||
import { config } from '../config'
|
import { config } from '../config'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { NextFunction, Request, Response } from 'express'
|
import type { NextFunction, Request, Response } from 'express'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { Express } from 'express'
|
import type { Express } from 'express'
|
||||||
import swaggerJSDoc from 'swagger-jsdoc'
|
import swaggerJSDoc from 'swagger-jsdoc'
|
||||||
import swaggerUi from 'swagger-ui-express'
|
import swaggerUi from 'swagger-ui-express'
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import express, { Request, Response } from 'express'
|
import type { Request, Response } from 'express'
|
||||||
|
import express from 'express'
|
||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
import { ChatCompletionCreateParams } from 'openai/resources'
|
import type { ChatCompletionCreateParams } from 'openai/resources'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
import { chatCompletionService } from '../services/chat-completion'
|
import { chatCompletionService } from '../services/chat-completion'
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import express, { Request, Response } from 'express'
|
import type { Request, Response } from 'express'
|
||||||
|
import express from 'express'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
import { mcpApiService } from '../services/mcp'
|
import { mcpApiService } from '../services/mcp'
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import express, { Request, Response } from 'express'
|
import type { Request, Response } from 'express'
|
||||||
|
import express from 'express'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
import { chatCompletionService } from '../services/chat-completion'
|
import { chatCompletionService } from '../services/chat-completion'
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
import { ChatCompletionCreateParams } from 'openai/resources'
|
import type { ChatCompletionCreateParams } from 'openai/resources'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
|
import type { OpenAICompatibleModel } from '../utils'
|
||||||
import {
|
import {
|
||||||
getProviderByModel,
|
getProviderByModel,
|
||||||
getRealProviderModel,
|
getRealProviderModel,
|
||||||
listAllAvailableModels,
|
listAllAvailableModels,
|
||||||
OpenAICompatibleModel,
|
|
||||||
transformModelToOpenAI,
|
transformModelToOpenAI,
|
||||||
validateProvider
|
validateProvider
|
||||||
} from '../utils'
|
} from '../utils'
|
||||||
|
|||||||
@ -1,16 +1,12 @@
|
|||||||
import mcpService from '@main/services/MCPService'
|
import mcpService from '@main/services/MCPService'
|
||||||
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp'
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp'
|
||||||
import {
|
import type { JSONRPCMessage, MessageExtraInfo } from '@modelcontextprotocol/sdk/types'
|
||||||
isJSONRPCRequest,
|
import { isJSONRPCRequest, JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types'
|
||||||
JSONRPCMessage,
|
import type { MCPServer } from '@types'
|
||||||
JSONRPCMessageSchema,
|
|
||||||
MessageExtraInfo
|
|
||||||
} from '@modelcontextprotocol/sdk/types'
|
|
||||||
import { MCPServer } from '@types'
|
|
||||||
import { randomUUID } from 'crypto'
|
import { randomUUID } from 'crypto'
|
||||||
import { EventEmitter } from 'events'
|
import { EventEmitter } from 'events'
|
||||||
import { Request, Response } from 'express'
|
import type { Request, Response } from 'express'
|
||||||
import { IncomingMessage, ServerResponse } from 'http'
|
import type { IncomingMessage, ServerResponse } from 'http'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
import { reduxService } from '../../services/ReduxService'
|
import { reduxService } from '../../services/ReduxService'
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { loggerService } from '@main/services/LoggerService'
|
import { loggerService } from '@main/services/LoggerService'
|
||||||
import { reduxService } from '@main/services/ReduxService'
|
import { reduxService } from '@main/services/ReduxService'
|
||||||
import { Model, Provider } from '@types'
|
import type { Model, Provider } from '@types'
|
||||||
|
|
||||||
const logger = loggerService.withContext('ApiServerUtils')
|
const logger = loggerService.withContext('ApiServerUtils')
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import mcpService from '@main/services/MCPService'
|
import mcpService from '@main/services/MCPService'
|
||||||
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js'
|
||||||
import { CallToolRequestSchema, ListToolsRequestSchema, ListToolsResult } from '@modelcontextprotocol/sdk/types.js'
|
import type { ListToolsResult } from '@modelcontextprotocol/sdk/types.js'
|
||||||
import { MCPServer } from '@types'
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'
|
||||||
|
import type { MCPServer } from '@types'
|
||||||
|
|
||||||
import { loggerService } from '../../services/LoggerService'
|
import { loggerService } from '../../services/LoggerService'
|
||||||
import { reduxService } from '../../services/ReduxService'
|
import { reduxService } from '../../services/ReduxService'
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { toDataApiError } from '@shared/data/api/errorCodes'
|
|||||||
import { IpcChannel } from '@shared/IpcChannel'
|
import { IpcChannel } from '@shared/IpcChannel'
|
||||||
import { ipcMain } from 'electron'
|
import { ipcMain } from 'electron'
|
||||||
|
|
||||||
import { ApiServer } from '../ApiServer'
|
import type { ApiServer } from '../ApiServer'
|
||||||
|
|
||||||
const logger = loggerService.withContext('DataApiIpcAdapter')
|
const logger = loggerService.withContext('DataApiIpcAdapter')
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas'
|
|||||||
import { and, eq } from 'drizzle-orm'
|
import { and, eq } from 'drizzle-orm'
|
||||||
|
|
||||||
import { configManager } from '../../../../services/ConfigManager'
|
import { configManager } from '../../../../services/ConfigManager'
|
||||||
import { DataRefactorMigrateService } from '../DataRefactorMigrateService'
|
import type { DataRefactorMigrateService } from '../DataRefactorMigrateService'
|
||||||
import { ELECTRON_STORE_MAPPINGS, REDUX_STORE_MAPPINGS } from './PreferencesMappings'
|
import { ELECTRON_STORE_MAPPINGS, REDUX_STORE_MAPPINGS } from './PreferencesMappings'
|
||||||
|
|
||||||
const logger = loggerService.withContext('PreferencesMigrator')
|
const logger = loggerService.withContext('PreferencesMigrator')
|
||||||
|
|||||||
@ -10,13 +10,14 @@ import { generateSignature } from '@main/integration/cherryin'
|
|||||||
import anthropicService from '@main/services/AnthropicService'
|
import anthropicService from '@main/services/AnthropicService'
|
||||||
import { getBinaryPath, isBinaryExists, runInstallScript } from '@main/utils/process'
|
import { getBinaryPath, isBinaryExists, runInstallScript } from '@main/utils/process'
|
||||||
import { handleZoomFactor } from '@main/utils/zoom'
|
import { handleZoomFactor } from '@main/utils/zoom'
|
||||||
import { SpanEntity, TokenUsage } from '@mcp-trace/trace-core'
|
import type { SpanEntity, TokenUsage } from '@mcp-trace/trace-core'
|
||||||
import { MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH } from '@shared/config/constant'
|
import { MIN_WINDOW_HEIGHT, MIN_WINDOW_WIDTH } from '@shared/config/constant'
|
||||||
import { UpgradeChannel } from '@shared/data/preference/preferenceTypes'
|
import type { UpgradeChannel } from '@shared/data/preference/preferenceTypes'
|
||||||
import { IpcChannel } from '@shared/IpcChannel'
|
import { IpcChannel } from '@shared/IpcChannel'
|
||||||
import { FileMetadata, Notification, OcrProvider, Provider, Shortcut, SupportedOcrFile } from '@types'
|
import type { FileMetadata, Notification, OcrProvider, Provider, Shortcut, SupportedOcrFile } from '@types'
|
||||||
import checkDiskSpace from 'check-disk-space'
|
import checkDiskSpace from 'check-disk-space'
|
||||||
import { BrowserWindow, dialog, ipcMain, ProxyConfig, session, shell, systemPreferences, webContents } from 'electron'
|
import type { ProxyConfig } from 'electron'
|
||||||
|
import { BrowserWindow, dialog, ipcMain, session, shell, systemPreferences, webContents } from 'electron'
|
||||||
import fontList from 'font-list'
|
import fontList from 'font-list'
|
||||||
|
|
||||||
import { apiServerService } from './services/ApiServerService'
|
import { apiServerService } from './services/ApiServerService'
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces'
|
import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces'
|
||||||
import { TraceMethod } from '@mcp-trace/trace-core'
|
import { TraceMethod } from '@mcp-trace/trace-core'
|
||||||
import { ApiClient } from '@types'
|
import type { ApiClient } from '@types'
|
||||||
|
|
||||||
import EmbeddingsFactory from './EmbeddingsFactory'
|
import EmbeddingsFactory from './EmbeddingsFactory'
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import type { BaseEmbeddings } from '@cherrystudio/embedjs-interfaces'
|
|||||||
import { OllamaEmbeddings } from '@cherrystudio/embedjs-ollama'
|
import { OllamaEmbeddings } from '@cherrystudio/embedjs-ollama'
|
||||||
import { OpenAiEmbeddings } from '@cherrystudio/embedjs-openai'
|
import { OpenAiEmbeddings } from '@cherrystudio/embedjs-openai'
|
||||||
import { AzureOpenAiEmbeddings } from '@cherrystudio/embedjs-openai/src/azure-openai-embeddings'
|
import { AzureOpenAiEmbeddings } from '@cherrystudio/embedjs-openai/src/azure-openai-embeddings'
|
||||||
import { ApiClient } from '@types'
|
import type { ApiClient } from '@types'
|
||||||
|
|
||||||
import { VoyageEmbeddings } from './VoyageEmbeddings'
|
import { VoyageEmbeddings } from './VoyageEmbeddings'
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
import { JsonLoader, LocalPathLoader, RAGApplication, TextLoader } from '@cherrystudio/embedjs'
|
import type { RAGApplication } from '@cherrystudio/embedjs'
|
||||||
|
import { JsonLoader, LocalPathLoader, TextLoader } from '@cherrystudio/embedjs'
|
||||||
import type { AddLoaderReturn } from '@cherrystudio/embedjs-interfaces'
|
import type { AddLoaderReturn } from '@cherrystudio/embedjs-interfaces'
|
||||||
import { WebLoader } from '@cherrystudio/embedjs-loader-web'
|
import { WebLoader } from '@cherrystudio/embedjs-loader-web'
|
||||||
import { loggerService } from '@logger'
|
import { loggerService } from '@logger'
|
||||||
import { readTextFileWithAutoEncoding } from '@main/utils/file'
|
import { readTextFileWithAutoEncoding } from '@main/utils/file'
|
||||||
import { LoaderReturn } from '@shared/config/types'
|
import type { LoaderReturn } from '@shared/config/types'
|
||||||
import { FileMetadata, KnowledgeBaseParams } from '@types'
|
import type { FileMetadata, KnowledgeBaseParams } from '@types'
|
||||||
|
|
||||||
import { DraftsExportLoader } from './draftsExportLoader'
|
import { DraftsExportLoader } from './draftsExportLoader'
|
||||||
import { EpubLoader } from './epubLoader'
|
import { EpubLoader } from './epubLoader'
|
||||||
|
|||||||
@ -3,7 +3,8 @@ import { cleanString } from '@cherrystudio/embedjs-utils'
|
|||||||
import { RecursiveCharacterTextSplitter } from '@langchain/textsplitters'
|
import { RecursiveCharacterTextSplitter } from '@langchain/textsplitters'
|
||||||
import { loggerService } from '@logger'
|
import { loggerService } from '@logger'
|
||||||
import md5 from 'md5'
|
import md5 from 'md5'
|
||||||
import { OfficeParserConfig, parseOfficeAsync } from 'officeparser'
|
import type { OfficeParserConfig } from 'officeparser'
|
||||||
|
import { parseOfficeAsync } from 'officeparser'
|
||||||
|
|
||||||
const logger = loggerService.withContext('OdLoader')
|
const logger = loggerService.withContext('OdLoader')
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import path from 'node:path'
|
|||||||
import { loggerService } from '@logger'
|
import { loggerService } from '@logger'
|
||||||
import { windowService } from '@main/services/WindowService'
|
import { windowService } from '@main/services/WindowService'
|
||||||
import { getFileExt, getTempDir } from '@main/utils/file'
|
import { getFileExt, getTempDir } from '@main/utils/file'
|
||||||
import { FileMetadata, PreprocessProvider } from '@types'
|
import type { FileMetadata, PreprocessProvider } from '@types'
|
||||||
import { PDFDocument } from 'pdf-lib'
|
import { PDFDocument } from 'pdf-lib'
|
||||||
|
|
||||||
const logger = loggerService.withContext('BasePreprocessProvider')
|
const logger = loggerService.withContext('BasePreprocessProvider')
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { FileMetadata, PreprocessProvider } from '@types'
|
import type { FileMetadata, PreprocessProvider } from '@types'
|
||||||
|
|
||||||
import BasePreprocessProvider from './BasePreprocessProvider'
|
import BasePreprocessProvider from './BasePreprocessProvider'
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import path from 'node:path'
|
|||||||
|
|
||||||
import { loggerService } from '@logger'
|
import { loggerService } from '@logger'
|
||||||
import { fileStorage } from '@main/services/FileStorage'
|
import { fileStorage } from '@main/services/FileStorage'
|
||||||
import { FileMetadata, PreprocessProvider } from '@types'
|
import type { FileMetadata, PreprocessProvider } from '@types'
|
||||||
import AdmZip from 'adm-zip'
|
import AdmZip from 'adm-zip'
|
||||||
import { net } from 'electron'
|
import { net } from 'electron'
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import path from 'node:path'
|
|||||||
|
|
||||||
import { loggerService } from '@logger'
|
import { loggerService } from '@logger'
|
||||||
import { fileStorage } from '@main/services/FileStorage'
|
import { fileStorage } from '@main/services/FileStorage'
|
||||||
import { FileMetadata, PreprocessProvider } from '@types'
|
import type { FileMetadata, PreprocessProvider } from '@types'
|
||||||
import AdmZip from 'adm-zip'
|
import AdmZip from 'adm-zip'
|
||||||
import { net } from 'electron'
|
import { net } from 'electron'
|
||||||
|
|
||||||
|
|||||||
@ -4,11 +4,12 @@ import { loggerService } from '@logger'
|
|||||||
import { fileStorage } from '@main/services/FileStorage'
|
import { fileStorage } from '@main/services/FileStorage'
|
||||||
import { MistralClientManager } from '@main/services/MistralClientManager'
|
import { MistralClientManager } from '@main/services/MistralClientManager'
|
||||||
import { MistralService } from '@main/services/remotefile/MistralService'
|
import { MistralService } from '@main/services/remotefile/MistralService'
|
||||||
import { Mistral } from '@mistralai/mistralai'
|
import type { Mistral } from '@mistralai/mistralai'
|
||||||
import { DocumentURLChunk } from '@mistralai/mistralai/models/components/documenturlchunk'
|
import type { DocumentURLChunk } from '@mistralai/mistralai/models/components/documenturlchunk'
|
||||||
import { ImageURLChunk } from '@mistralai/mistralai/models/components/imageurlchunk'
|
import type { ImageURLChunk } from '@mistralai/mistralai/models/components/imageurlchunk'
|
||||||
import { OCRResponse } from '@mistralai/mistralai/models/components/ocrresponse'
|
import type { OCRResponse } from '@mistralai/mistralai/models/components/ocrresponse'
|
||||||
import { FileMetadata, FileTypes, PreprocessProvider, Provider } from '@types'
|
import type { FileMetadata, PreprocessProvider, Provider } from '@types'
|
||||||
|
import { FileTypes } from '@types'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
|
||||||
import BasePreprocessProvider from './BasePreprocessProvider'
|
import BasePreprocessProvider from './BasePreprocessProvider'
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { FileMetadata, PreprocessProvider as Provider } from '@types'
|
import type { FileMetadata, PreprocessProvider as Provider } from '@types'
|
||||||
|
|
||||||
import BasePreprocessProvider from './BasePreprocessProvider'
|
import type BasePreprocessProvider from './BasePreprocessProvider'
|
||||||
import PreprocessProviderFactory from './PreprocessProviderFactory'
|
import PreprocessProviderFactory from './PreprocessProviderFactory'
|
||||||
|
|
||||||
export default class PreprocessProvider {
|
export default class PreprocessProvider {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import { PreprocessProvider } from '@types'
|
import type { PreprocessProvider } from '@types'
|
||||||
|
|
||||||
import BasePreprocessProvider from './BasePreprocessProvider'
|
import type BasePreprocessProvider from './BasePreprocessProvider'
|
||||||
import DefaultPreprocessProvider from './DefaultPreprocessProvider'
|
import DefaultPreprocessProvider from './DefaultPreprocessProvider'
|
||||||
import Doc2xPreprocessProvider from './Doc2xPreprocessProvider'
|
import Doc2xPreprocessProvider from './Doc2xPreprocessProvider'
|
||||||
import MineruPreprocessProvider from './MineruPreprocessProvider'
|
import MineruPreprocessProvider from './MineruPreprocessProvider'
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { DEFAULT_DOCUMENT_COUNT, DEFAULT_RELEVANT_SCORE } from '@main/utils/knowledge'
|
import { DEFAULT_DOCUMENT_COUNT, DEFAULT_RELEVANT_SCORE } from '@main/utils/knowledge'
|
||||||
import { KnowledgeBaseParams, KnowledgeSearchResult } from '@types'
|
import type { KnowledgeBaseParams, KnowledgeSearchResult } from '@types'
|
||||||
|
|
||||||
import { MultiModalDocument, RerankStrategy } from './strategies/RerankStrategy'
|
import type { MultiModalDocument, RerankStrategy } from './strategies/RerankStrategy'
|
||||||
import { StrategyFactory } from './strategies/StrategyFactory'
|
import { StrategyFactory } from './strategies/StrategyFactory'
|
||||||
|
|
||||||
export default abstract class BaseReranker {
|
export default abstract class BaseReranker {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { KnowledgeBaseParams, KnowledgeSearchResult } from '@types'
|
import type { KnowledgeBaseParams, KnowledgeSearchResult } from '@types'
|
||||||
import { net } from 'electron'
|
import { net } from 'electron'
|
||||||
|
|
||||||
import BaseReranker from './BaseReranker'
|
import BaseReranker from './BaseReranker'
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { KnowledgeBaseParams, KnowledgeSearchResult } from '@types'
|
import type { KnowledgeBaseParams, KnowledgeSearchResult } from '@types'
|
||||||
|
|
||||||
import GeneralReranker from './GeneralReranker'
|
import GeneralReranker from './GeneralReranker'
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { MultiModalDocument, RerankStrategy } from './RerankStrategy'
|
import type { MultiModalDocument, RerankStrategy } from './RerankStrategy'
|
||||||
export class BailianStrategy implements RerankStrategy {
|
export class BailianStrategy implements RerankStrategy {
|
||||||
buildUrl(): string {
|
buildUrl(): string {
|
||||||
return 'https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank'
|
return 'https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank'
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { MultiModalDocument, RerankStrategy } from './RerankStrategy'
|
import type { MultiModalDocument, RerankStrategy } from './RerankStrategy'
|
||||||
export class DefaultStrategy implements RerankStrategy {
|
export class DefaultStrategy implements RerankStrategy {
|
||||||
buildUrl(baseURL?: string): string {
|
buildUrl(baseURL?: string): string {
|
||||||
if (baseURL && baseURL.endsWith('/')) {
|
if (baseURL && baseURL.endsWith('/')) {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { MultiModalDocument, RerankStrategy } from './RerankStrategy'
|
import type { MultiModalDocument, RerankStrategy } from './RerankStrategy'
|
||||||
export class JinaStrategy implements RerankStrategy {
|
export class JinaStrategy implements RerankStrategy {
|
||||||
buildUrl(baseURL?: string): string {
|
buildUrl(baseURL?: string): string {
|
||||||
if (baseURL && baseURL.endsWith('/')) {
|
if (baseURL && baseURL.endsWith('/')) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user