@huyooo/ai-chat-frontend-vue 0.1.3 → 0.1.4

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.
@@ -1,6 +1,10 @@
1
- /**
2
- * AI Chat 前端类型定义
3
- */
1
+ import { ChatMode as ChatModeType, ModelConfig as ModelConfigType, ModelProvider as ModelProviderType, ThinkingMode as ThinkingModeType, SessionRecord as SessionRecordType, MessageRecord as MessageRecordType } from '@huyooo/ai-chat-bridge-electron/renderer';
2
+ export type ChatMode = ChatModeType;
3
+ export type ModelConfig = ModelConfigType;
4
+ export type ModelProvider = ModelProviderType;
5
+ export type ThinkingMode = ThinkingModeType;
6
+ export type SessionRecord = SessionRecordType;
7
+ export type MessageRecord = MessageRecordType;
4
8
  /** 搜索结果 */
5
9
  export interface SearchResult {
6
10
  title: string;
@@ -14,22 +18,7 @@ export interface ToolCall {
14
18
  result?: string;
15
19
  status: 'running' | 'success' | 'error';
16
20
  }
17
- /** 模型提供商 */
18
- export type ModelProvider = 'openrouter' | 'doubao' | 'deepseek' | 'qwen' | 'gemini' | 'ark';
19
- /** 模型配置 */
20
- export interface ModelConfig {
21
- provider: ModelProvider;
22
- model: string;
23
- displayName: string;
24
- supportsTools: boolean;
25
- supportsWebSearch: boolean;
26
- supportedThinkingModes: ThinkingMode[];
27
- }
28
- /** 思考模式 */
29
- export type ThinkingMode = 'enabled' | 'disabled';
30
- /** 聊天模式 */
31
- export type ChatMode = 'agent' | 'ask';
32
- /** 聊天消息 */
21
+ /** 聊天消息(前端显示用) */
33
22
  export interface ChatMessage {
34
23
  id: string;
35
24
  role: 'user' | 'assistant';
@@ -44,28 +33,8 @@ export interface ChatMessage {
44
33
  loading?: boolean;
45
34
  timestamp?: Date;
46
35
  }
47
- /** 会话记录 */
48
- export interface SessionRecord {
49
- id: string;
50
- title: string;
51
- model: string;
52
- mode: ChatMode;
53
- createdAt: Date;
54
- updatedAt: Date;
55
- }
56
- /** 消息记录 */
57
- export interface MessageRecord {
58
- id: string;
59
- sessionId: string;
60
- role: 'user' | 'assistant';
61
- content: string;
62
- thinking?: string;
63
- toolCalls?: string;
64
- searchResults?: string;
65
- timestamp: Date;
66
- }
67
36
  /** 默认模型列表 */
68
- export declare const DEFAULT_MODELS: ModelConfig[];
37
+ export declare const DEFAULT_MODELS: ModelConfigType[];
69
38
  /** @deprecated 使用 SessionRecord */
70
39
  export interface ChatSession {
71
40
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huyooo/ai-chat-frontend-vue",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "AI Chat Frontend - Vue components with adapter pattern",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,6 +29,7 @@
29
29
  "vue": "^3.4.0"
30
30
  },
31
31
  "dependencies": {
32
+ "@huyooo/ai-chat-bridge-electron": "^0.1.4",
32
33
  "lucide-vue-next": "^0.460.0",
33
34
  "vscode-uri": "^3.1.0"
34
35
  },
package/src/adapter.ts CHANGED
@@ -1,21 +1,13 @@
1
1
  /**
2
- * Chat Adapter 接口定义
3
- * 解耦前端组件与后端通信方式
2
+ * Chat Adapter 辅助类型和工具
3
+ * 核心 ChatAdapter 接口从 bridge-electron 导入
4
4
  */
5
5
 
6
- import type { SessionRecord, MessageRecord, ChatMode, ThinkingMode, SearchResult, ToolCall } from './types'
6
+ import type { ChatAdapter as ChatAdapterType, ChatMode, ThinkingMode } from '@huyooo/ai-chat-bridge-electron/renderer'
7
7
 
8
- /** 聊天进度类型 */
9
- export type ChatProgressType =
10
- | 'thinking'
11
- | 'search_start'
12
- | 'search_result'
13
- | 'tool_call'
14
- | 'tool_result'
15
- | 'text_delta'
16
- | 'text'
17
- | 'done'
18
- | 'error'
8
+ // 重新导出 ChatAdapter 类型供内部组件使用
9
+ export type ChatAdapter = ChatAdapterType
10
+ import type { SearchResult } from './types'
19
11
 
20
12
  /** 思考数据 */
21
13
  export interface ThinkingData {
@@ -41,12 +33,6 @@ export interface ImageData {
41
33
  mimeType: string
42
34
  }
43
35
 
44
- /** 聊天进度事件 */
45
- export interface ChatProgress {
46
- type: ChatProgressType
47
- data: string | ThinkingData | ToolCallData | ToolResultData | { results: SearchResult[] }
48
- }
49
-
50
36
  /** 发送消息选项 */
51
37
  export interface SendMessageOptions {
52
38
  mode: ChatMode
@@ -79,78 +65,62 @@ export interface SaveMessageOptions {
79
65
  searchResults?: string
80
66
  }
81
67
 
82
- /**
83
- * Chat Adapter 接口
84
- * 所有后端通信实现都需要实现此接口
85
- */
86
- export interface ChatAdapter {
87
- /** 获取所有会话 */
88
- getSessions(): Promise<SessionRecord[]>
89
-
90
- /** 创建新会话 */
91
- createSession(options: CreateSessionOptions): Promise<SessionRecord>
92
-
93
- /** 更新会话 */
94
- updateSession(sessionId: string, options: UpdateSessionOptions): Promise<void>
95
-
96
- /** 删除会话 */
97
- deleteSession(sessionId: string): Promise<void>
98
-
99
- /** 获取会话消息 */
100
- getMessages(sessionId: string): Promise<MessageRecord[]>
101
-
102
- /** 保存消息 */
103
- saveMessage(options: SaveMessageOptions): Promise<MessageRecord>
104
-
105
- /** 发送消息并获取流式响应 */
106
- sendMessage(
107
- content: string,
108
- options: SendMessageOptions,
109
- images?: string[]
110
- ): AsyncGenerator<ChatProgress, void, unknown>
111
-
112
- /** 取消当前请求 */
113
- cancel(): void
114
-
115
- /** 设置工作目录 */
116
- setWorkingDir?(dir: string): void
117
- }
118
-
119
68
  /**
120
69
  * 创建空 Adapter(用于测试或无后端场景)
121
70
  */
122
- export function createNullAdapter(): ChatAdapter {
71
+ export function createNullAdapter(): ChatAdapterType {
123
72
  return {
73
+ async getModels() {
74
+ return []
75
+ },
124
76
  async getSessions() {
125
77
  return []
126
78
  },
127
- async createSession(options) {
79
+ async getSession() {
80
+ return null
81
+ },
82
+ async createSession(params) {
128
83
  return {
129
84
  id: Date.now().toString(),
130
- title: options.title,
131
- model: options.model,
132
- mode: options.mode,
85
+ appId: null,
86
+ userId: null,
87
+ title: params?.title || '新对话',
88
+ model: params?.model || '',
89
+ mode: (params?.mode || 'agent') as ChatMode,
133
90
  createdAt: new Date(),
134
91
  updatedAt: new Date(),
135
92
  }
136
93
  },
137
- async updateSession() {},
94
+ async updateSession() {
95
+ return null
96
+ },
138
97
  async deleteSession() {},
139
98
  async getMessages() {
140
99
  return []
141
100
  },
142
- async saveMessage(options) {
101
+ async saveMessage(params) {
143
102
  return {
144
103
  id: Date.now().toString(),
145
- sessionId: options.sessionId,
146
- role: options.role,
147
- content: options.content,
148
- thinking: options.thinking,
149
- toolCalls: options.toolCalls,
150
- searchResults: options.searchResults,
104
+ sessionId: params.sessionId,
105
+ role: params.role,
106
+ content: params.content,
107
+ thinking: params.thinking || null,
108
+ toolCalls: params.toolCalls || null,
109
+ searchResults: params.searchResults || null,
110
+ operationIds: null,
151
111
  timestamp: new Date(),
152
112
  }
153
113
  },
114
+ async deleteMessagesAfter() {},
115
+ async getOperations() {
116
+ return []
117
+ },
118
+ async getTrashItems() {
119
+ return []
120
+ },
121
+ async restoreFromTrash() {
122
+ return undefined
123
+ },
154
124
  async *sendMessage() {
155
125
  yield { type: 'text', data: '无可用的 Adapter' }
156
126
  yield { type: 'done', data: '' }
@@ -4,17 +4,16 @@
4
4
  * 使用 Adapter 模式解耦后端通信
5
5
  */
6
6
 
7
- import { ref, computed, shallowRef } from 'vue'
8
- import type { ChatAdapter, ChatProgress } from '../adapter'
9
- import { createNullAdapter } from '../adapter'
7
+ import { ref, shallowRef } from 'vue'
10
8
  import type {
11
- ChatMessage,
9
+ ChatAdapter,
10
+ ChatProgress,
12
11
  ChatMode,
13
12
  SessionRecord,
14
13
  MessageRecord,
15
- SearchResult,
16
- ToolCall,
17
- } from '../types'
14
+ } from '@huyooo/ai-chat-bridge-electron/renderer'
15
+ import { createNullAdapter } from '../adapter'
16
+ import type { ChatMessage, SearchResult, ToolCall } from '../types'
18
17
 
19
18
  /** 生成唯一 ID */
20
19
  function generateId(): string {
package/src/index.ts CHANGED
@@ -1,16 +1,30 @@
1
1
  /**
2
- * @huyooo/ai-chat-frontend
2
+ * @huyooo/ai-chat-frontend-vue
3
3
  *
4
- * AI Chat 前端组件库
4
+ * AI Chat 前端组件库 - Vue 版本
5
5
  *
6
6
  * 使用 adapter 模式,与后端通信方式解耦
7
7
  */
8
8
 
9
- // 导出 Adapter 接口和类型
9
+ // bridge-electron 重新导出核心类型,确保类型一致性
10
10
  export type {
11
11
  ChatAdapter,
12
12
  ChatProgress,
13
13
  ChatProgressType,
14
+ ChatOptions,
15
+ ChatMode,
16
+ ModelConfig,
17
+ ModelProvider,
18
+ ThinkingMode,
19
+ SessionRecord,
20
+ MessageRecord,
21
+ } from '@huyooo/ai-chat-bridge-electron/renderer'
22
+
23
+ // 导出 createElectronAdapter 便于使用
24
+ export { createElectronAdapter } from '@huyooo/ai-chat-bridge-electron/renderer'
25
+
26
+ // 导出本地定义的辅助类型
27
+ export type {
14
28
  ThinkingData,
15
29
  ToolCallData,
16
30
  ToolResultData,
@@ -47,15 +61,9 @@ export { default as ThinkingBlock } from './components/chat/ThinkingBlock.vue';
47
61
  export { default as ToolCallBlock } from './components/chat/ToolCallBlock.vue';
48
62
  export { default as SearchResultBlock } from './components/chat/SearchResultBlock.vue';
49
63
 
50
- // 导出类型
64
+ // 导出前端特有类型(不与 bridge-electron 重复)
51
65
  export type {
52
66
  ChatMessage,
53
- ChatMode,
54
- ModelConfig,
55
- ModelProvider,
56
- ThinkingMode,
57
- SessionRecord,
58
- MessageRecord,
59
67
  SearchResult,
60
68
  ToolCall,
61
69
  // 向后兼容
@@ -69,14 +77,16 @@ export { DEFAULT_MODELS, FileType } from './types';
69
77
  /**
70
78
  * 使用说明:
71
79
  *
72
- * 1. 创建 adapter(使用桥接包):
73
- * import { createElectronAdapter } from '@huyooo/ai-chat-bridge-electron/renderer';
74
- * const adapter = createElectronAdapter();
80
+ * 1. 导入样式:
81
+ * import '@huyooo/ai-chat-frontend-vue/style.css'
75
82
  *
76
- * 2. Vue 组件中使用:
83
+ * 2. 创建 adapter 和使用组件(一行导入):
84
+ * import { ChatPanel, createElectronAdapter } from '@huyooo/ai-chat-frontend-vue'
85
+ * const adapter = createElectronAdapter()
77
86
  * <ChatPanel :adapter="adapter" />
78
87
  *
79
- * 3. 或使用 useChat composable:
80
- * const chat = useChat({ adapter });
81
- * // 然后自定义 UI
88
+ * 3. 或使用 useChat composable 自定义 UI
89
+ * import { useChat, createElectronAdapter } from '@huyooo/ai-chat-frontend-vue'
90
+ * const adapter = createElectronAdapter()
91
+ * const chat = useChat({ adapter })
82
92
  */
@@ -1,7 +1,26 @@
1
1
  /**
2
2
  * AI Chat 前端类型定义
3
+ * 核心类型从 bridge-electron 导出,保持类型一致性
3
4
  */
4
5
 
6
+ // 从 bridge-electron 导入类型
7
+ import type {
8
+ ChatMode as ChatModeType,
9
+ ModelConfig as ModelConfigType,
10
+ ModelProvider as ModelProviderType,
11
+ ThinkingMode as ThinkingModeType,
12
+ SessionRecord as SessionRecordType,
13
+ MessageRecord as MessageRecordType,
14
+ } from '@huyooo/ai-chat-bridge-electron/renderer'
15
+
16
+ // 重新导出核心类型
17
+ export type ChatMode = ChatModeType
18
+ export type ModelConfig = ModelConfigType
19
+ export type ModelProvider = ModelProviderType
20
+ export type ThinkingMode = ThinkingModeType
21
+ export type SessionRecord = SessionRecordType
22
+ export type MessageRecord = MessageRecordType
23
+
5
24
  /** 搜索结果 */
6
25
  export interface SearchResult {
7
26
  title: string
@@ -17,26 +36,7 @@ export interface ToolCall {
17
36
  status: 'running' | 'success' | 'error'
18
37
  }
19
38
 
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
- /** 聊天消息 */
39
+ /** 聊天消息(前端显示用) */
40
40
  export interface ChatMessage {
41
41
  id: string
42
42
  role: 'user' | 'assistant'
@@ -52,30 +52,8 @@ export interface ChatMessage {
52
52
  timestamp?: Date
53
53
  }
54
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
55
  /** 默认模型列表 */
78
- export const DEFAULT_MODELS: ModelConfig[] = [
56
+ export const DEFAULT_MODELS: ModelConfigType[] = [
79
57
  {
80
58
  provider: 'openrouter',
81
59
  model: 'anthropic/claude-opus-4.5',