lobe-chat

Форк
0
/
importer.ts 
128 строк · 2.3 Кб
1
import { LobeAgentConfig } from '@/types/agent';
2
import {
3
  ChatMessageError,
4
  ChatPluginPayload,
5
  ChatTTS,
6
  ChatToolPayload,
7
  ChatTranslate,
8
  MessageRoleType,
9
} from '@/types/message';
10
import { MetaData } from '@/types/meta';
11
import { SessionGroupId, SessionGroupItem } from '@/types/session';
12
import { ChatTopic } from '@/types/topic';
13

14
interface ImportSession {
15
  config: LobeAgentConfig;
16
  createdAt: string;
17
  group?: SessionGroupId;
18
  id: string;
19
  meta: MetaData;
20
  pinned?: boolean;
21
  type: 'agent' | 'group';
22
  updatedAt: string;
23
}
24

25
interface ImportMessage {
26
  content: string;
27
  createdAt: number;
28
  error?: ChatMessageError;
29

30
  // 扩展字段
31
  extra?: {
32
    fromModel?: string;
33
    fromProvider?: string;
34
    // 翻译
35
    translate?: ChatTranslate | false | null;
36
    // TTS
37
    tts?: ChatTTS;
38
  } & Record<string, any>;
39
  files?: string[];
40
  id: string;
41

42
  /**
43
   * observation id
44
   */
45
  observationId?: string;
46

47
  /**
48
   * parent message id
49
   */
50
  parentId?: string;
51
  plugin?: ChatPluginPayload;
52
  pluginState?: any;
53

54
  quotaId?: string;
55
  role: MessageRoleType;
56

57
  sessionId?: string;
58
  tool_call_id?: string;
59
  tools?: ChatToolPayload[];
60

61
  topicId?: string;
62
  traceId?: string;
63

64
  updatedAt: number;
65
}
66

67
export interface ImporterEntryData {
68
  messages?: ImportMessage[];
69
  sessionGroups?: SessionGroupItem[];
70
  sessions?: ImportSession[];
71
  topics?: ChatTopic[];
72
  version: number;
73
}
74

75
export interface ImportResult {
76
  added: number;
77
  errors: number;
78
  skips: number;
79
}
80

81
export interface ImportResults {
82
  messages?: ImportResult;
83
  sessionGroups?: ImportResult;
84
  sessions?: ImportResult;
85
  topics?: ImportResult;
86
  type?: string;
87
}
88

89
export enum ImportStage {
90
  Start,
91
  Preparing,
92
  Uploading,
93
  Importing,
94
  Success,
95
  Error,
96
  Finished,
97
}
98

99
export interface FileUploadState {
100
  progress: number;
101
  /**
102
   * rest time in ms
103
   */
104
  restTime: number;
105
  /**
106
   * upload speed in KB/s
107
   */
108
  speed: number;
109
}
110

111
export interface ErrorShape {
112
  code: string;
113
  httpStatus: number;
114
  message: string;
115
  path?: string;
116
}
117

118
export interface OnImportCallbacks {
119
  onError?: (error: ErrorShape) => void;
120
  onFileUploading?: (state: FileUploadState) => void;
121
  onStageChange?: (stage: ImportStage) => void;
122
  /**
123
   *
124
   * @param results
125
   * @param duration in ms
126
   */
127
  onSuccess?: (results: ImportResults, duration: number) => void;
128
}
129

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.