新增: 初始化 DevFlow 项目仓库
Tauri 2 + Vue 3 + Vite 6 桌面应用,Rust workspace 含 13 个 crate (df-ai / df-storage / df-workflow / df-core / df-execute 等)。 核心能力:AI 聊天 agentic 循环(工具调用+人工审批)、工作流引擎、 任务/想法/项目/阶段管理、可追溯性,及配套前端组件。
This commit is contained in:
90
src/api/ai.ts
Normal file
90
src/api/ai.ts
Normal file
@@ -0,0 +1,90 @@
|
||||
//! AI 聊天 API — IPC invoke 封装 + 事件监听
|
||||
|
||||
import { invoke } from '@tauri-apps/api/core'
|
||||
import { listen, type UnlistenFn } from '@tauri-apps/api/event'
|
||||
import type { AiChatEvent, AiConversationDetail, AiConversationSummary, AiProviderConfig } from './types'
|
||||
|
||||
export const aiApi = {
|
||||
/** 发送消息(非阻塞,通过 ai-chat-event 流式返回) */
|
||||
sendMessage(message: string, language?: string): Promise<string> {
|
||||
return invoke('ai_chat_send', { message, language: language || 'zh-CN' })
|
||||
},
|
||||
|
||||
/** 批准/拒绝工具调用 */
|
||||
approve(toolCallId: string, approved: boolean): Promise<string> {
|
||||
return invoke('ai_approve', { toolCallId, approved })
|
||||
},
|
||||
|
||||
/** 清空对话 */
|
||||
clearChat(): Promise<void> {
|
||||
return invoke('ai_chat_clear')
|
||||
},
|
||||
|
||||
/** 停止当前生成 */
|
||||
stopChat(): Promise<void> {
|
||||
return invoke('ai_chat_stop')
|
||||
},
|
||||
|
||||
/** 列出所有 AI 提供商 */
|
||||
listProviders(): Promise<AiProviderConfig[]> {
|
||||
return invoke('ai_list_providers')
|
||||
},
|
||||
|
||||
/** 保存 AI 提供商 */
|
||||
saveProvider(input: {
|
||||
id?: string
|
||||
name: string
|
||||
providerType: string
|
||||
baseUrl: string
|
||||
apiKey: string
|
||||
defaultModel: string
|
||||
}): Promise<string> {
|
||||
return invoke('ai_save_provider', {
|
||||
id: input.id,
|
||||
name: input.name,
|
||||
providerType: input.providerType,
|
||||
baseUrl: input.baseUrl,
|
||||
apiKey: input.apiKey,
|
||||
defaultModel: input.defaultModel,
|
||||
})
|
||||
},
|
||||
|
||||
/** 设置活跃提供商 */
|
||||
setProvider(providerId: string): Promise<void> {
|
||||
return invoke('ai_set_provider', { providerId })
|
||||
},
|
||||
|
||||
/** 监听 AI 聊天事件 */
|
||||
onEvent(callback: (event: AiChatEvent) => void): Promise<UnlistenFn> {
|
||||
return listen<AiChatEvent>('ai-chat-event', (e) => {
|
||||
callback(e.payload)
|
||||
})
|
||||
},
|
||||
|
||||
// ── 对话管理 ──
|
||||
|
||||
/** 创建新对话 */
|
||||
createConversation(): Promise<{ id: string }> {
|
||||
return invoke('ai_conversation_create')
|
||||
},
|
||||
|
||||
/** 列出所有对话(摘要) */
|
||||
listConversations(): Promise<AiConversationSummary[]> {
|
||||
return invoke('ai_conversation_list')
|
||||
},
|
||||
|
||||
/** 切换到指定对话 */
|
||||
switchConversation(conversationId: string): Promise<AiConversationDetail> {
|
||||
return invoke('ai_conversation_switch', { conversationId })
|
||||
},
|
||||
|
||||
/** 删除对话 */
|
||||
deleteConversation(conversationId: string): Promise<void> {
|
||||
return invoke('ai_conversation_delete', { conversationId })
|
||||
},
|
||||
|
||||
/** 重命名对话标题 */
|
||||
renameConversation(conversationId: string, title: string): Promise<void> {
|
||||
return invoke('ai_conversation_rename', { conversationId, title })
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user