@huyooo/ai-chat-frontend-vue 0.1.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.
Files changed (45) hide show
  1. package/dist/adapter.d.ts +87 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/components/ChatInput.vue.d.ts +54 -0
  4. package/dist/components/ChatInput.vue.d.ts.map +1 -0
  5. package/dist/components/ChatPanel.vue.d.ts +38 -0
  6. package/dist/components/ChatPanel.vue.d.ts.map +1 -0
  7. package/dist/components/chat/SearchResultBlock.vue.d.ts +8 -0
  8. package/dist/components/chat/SearchResultBlock.vue.d.ts.map +1 -0
  9. package/dist/components/chat/ThinkingBlock.vue.d.ts +7 -0
  10. package/dist/components/chat/ThinkingBlock.vue.d.ts.map +1 -0
  11. package/dist/components/chat/ToolCallBlock.vue.d.ts +9 -0
  12. package/dist/components/chat/ToolCallBlock.vue.d.ts.map +1 -0
  13. package/dist/components/chat/messages/ExecutionSteps.vue.d.ts +13 -0
  14. package/dist/components/chat/messages/ExecutionSteps.vue.d.ts.map +1 -0
  15. package/dist/components/chat/messages/MessageBubble.vue.d.ts +28 -0
  16. package/dist/components/chat/messages/MessageBubble.vue.d.ts.map +1 -0
  17. package/dist/components/chat/ui/ChatHeader.vue.d.ts +34 -0
  18. package/dist/components/chat/ui/ChatHeader.vue.d.ts.map +1 -0
  19. package/dist/components/chat/ui/WelcomeMessage.vue.d.ts +7 -0
  20. package/dist/components/chat/ui/WelcomeMessage.vue.d.ts.map +1 -0
  21. package/dist/composables/useChat.d.ts +96 -0
  22. package/dist/composables/useChat.d.ts.map +1 -0
  23. package/dist/index.d.ts +37 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +1497 -0
  26. package/dist/preload/preload.d.ts +6 -0
  27. package/dist/preload/preload.d.ts.map +1 -0
  28. package/dist/style.css +1 -0
  29. package/dist/types/index.d.ts +107 -0
  30. package/dist/types/index.d.ts.map +1 -0
  31. package/package.json +59 -0
  32. package/src/adapter.ts +160 -0
  33. package/src/components/ChatInput.vue +649 -0
  34. package/src/components/ChatPanel.vue +309 -0
  35. package/src/components/chat/SearchResultBlock.vue +155 -0
  36. package/src/components/chat/ThinkingBlock.vue +109 -0
  37. package/src/components/chat/ToolCallBlock.vue +213 -0
  38. package/src/components/chat/messages/ExecutionSteps.vue +281 -0
  39. package/src/components/chat/messages/MessageBubble.vue +272 -0
  40. package/src/components/chat/ui/ChatHeader.vue +535 -0
  41. package/src/components/chat/ui/WelcomeMessage.vue +135 -0
  42. package/src/composables/useChat.ts +423 -0
  43. package/src/index.ts +82 -0
  44. package/src/preload/preload.ts +79 -0
  45. package/src/types/index.ts +164 -0
@@ -0,0 +1,164 @@
1
+ /**
2
+ * AI Chat 前端类型定义
3
+ */
4
+
5
+ /** 搜索结果 */
6
+ export interface SearchResult {
7
+ title: string
8
+ url: string
9
+ snippet: string
10
+ }
11
+
12
+ /** 工具调用 */
13
+ export interface ToolCall {
14
+ name: string
15
+ args?: Record<string, unknown>
16
+ result?: string
17
+ status: 'running' | 'success' | 'error'
18
+ }
19
+
20
+ /** 模型提供商 */
21
+ export type ModelProvider = 'openrouter' | 'doubao' | 'deepseek' | 'qwen' | 'gemini' | 'ark'
22
+
23
+ /** 模型配置 */
24
+ export interface ModelConfig {
25
+ provider: ModelProvider
26
+ model: string
27
+ displayName: string
28
+ supportsTools: boolean
29
+ supportsWebSearch: boolean
30
+ supportedThinkingModes: ThinkingMode[]
31
+ }
32
+
33
+ /** 思考模式 */
34
+ export type ThinkingMode = 'enabled' | 'disabled'
35
+
36
+ /** 聊天模式 */
37
+ export type ChatMode = 'agent' | 'ask'
38
+
39
+ /** 聊天消息 */
40
+ export interface ChatMessage {
41
+ id: string
42
+ role: 'user' | 'assistant'
43
+ content: string
44
+ images?: string[]
45
+ thinking?: string
46
+ thinkingComplete?: boolean
47
+ searchResults?: SearchResult[]
48
+ searching?: boolean
49
+ toolCalls?: ToolCall[]
50
+ copied?: boolean
51
+ loading?: boolean
52
+ timestamp?: Date
53
+ }
54
+
55
+ /** 会话记录 */
56
+ export interface SessionRecord {
57
+ id: string
58
+ title: string
59
+ model: string
60
+ mode: ChatMode
61
+ createdAt: Date
62
+ updatedAt: Date
63
+ }
64
+
65
+ /** 消息记录 */
66
+ export interface MessageRecord {
67
+ id: string
68
+ sessionId: string
69
+ role: 'user' | 'assistant'
70
+ content: string
71
+ thinking?: string
72
+ toolCalls?: string
73
+ searchResults?: string
74
+ timestamp: Date
75
+ }
76
+
77
+ /** 默认模型列表 */
78
+ export const DEFAULT_MODELS: ModelConfig[] = [
79
+ {
80
+ provider: 'openrouter',
81
+ model: 'anthropic/claude-opus-4.5',
82
+ displayName: 'Claude Opus 4.5',
83
+ supportsTools: true,
84
+ supportsWebSearch: true,
85
+ supportedThinkingModes: ['enabled', 'disabled'],
86
+ },
87
+ {
88
+ provider: 'doubao',
89
+ model: 'doubao-seed-1-6-251015',
90
+ displayName: 'Doubao Seed',
91
+ supportsTools: true,
92
+ supportsWebSearch: true,
93
+ supportedThinkingModes: ['enabled', 'disabled'],
94
+ },
95
+ {
96
+ provider: 'deepseek',
97
+ model: 'deepseek-v3-1-terminus',
98
+ displayName: 'DeepSeek V3',
99
+ supportsTools: true,
100
+ supportsWebSearch: true,
101
+ supportedThinkingModes: ['enabled', 'disabled'],
102
+ },
103
+ {
104
+ provider: 'qwen',
105
+ model: 'qwen3-max-preview',
106
+ displayName: 'Qwen Max',
107
+ supportsTools: true,
108
+ supportsWebSearch: true,
109
+ supportedThinkingModes: ['enabled', 'disabled'],
110
+ },
111
+ {
112
+ provider: 'gemini',
113
+ model: 'gemini-3-pro-preview',
114
+ displayName: 'Gemini 3 Pro',
115
+ supportsTools: true,
116
+ supportsWebSearch: true,
117
+ supportedThinkingModes: ['enabled', 'disabled'],
118
+ },
119
+ ]
120
+
121
+ // ================ 以下为向后兼容的类型 ================
122
+
123
+ /** @deprecated 使用 SessionRecord */
124
+ export interface ChatSession {
125
+ id: string
126
+ title: string
127
+ messages: ChatMessage[]
128
+ createdAt: Date
129
+ updatedAt: Date
130
+ }
131
+
132
+ /** 音视频操作类型 */
133
+ export interface MediaOperation {
134
+ id: string
135
+ type: 'clip' | 'transcode' | 'merge' | 'extract_audio' | 'add_subtitle' | 'analyze'
136
+ description: string
137
+ sourceFiles: string[]
138
+ targetFile?: string
139
+ parameters?: Record<string, unknown>
140
+ status?: 'pending' | 'applied' | 'rejected'
141
+ preview?: string
142
+ }
143
+
144
+ /** @deprecated 使用字符串枚举 */
145
+ export type AiModel = 'gemini-3-pro-preview' | 'gemini-3-pro-image-preview'
146
+
147
+ export enum FileType {
148
+ FOLDER = 'folder',
149
+ IMAGE = 'image',
150
+ VIDEO = 'video',
151
+ AUDIO = 'audio',
152
+ TEXT = 'text',
153
+ PDF = 'pdf',
154
+ CODE = 'code',
155
+ ARCHIVE = 'archive',
156
+ OTHER = 'other'
157
+ }
158
+
159
+ export interface DiffStat {
160
+ file: string
161
+ additions: number
162
+ deletions: number
163
+ type: 'modified' | 'added' | 'deleted'
164
+ }