Commit Graph

11 Commits

Author SHA1 Message Date
kurihada f238368f87 feat(ui): 支持 Auto Edit 运行时切换立即生效
- 添加 config_update WebSocket 消息类型
- setAutoApprove 切换时立即发送配置更新到服务端
- 服务端实时更新会话的 auto-approve 配置
2025-12-15 19:52:06 +08:00
kurihada ec3c7bccf9 feat(ui): 实现 Agent 模式切换和 Auto Edit 功能
- 添加 AgentModeSelector 组件,支持 Build/Plan 模式切换
- Build 模式下显示 Auto Edit 开关,自动授权文件写入/编辑
- 扩展 useChat hook 添加会话级别的 agentMode/autoApprove 状态
- 服务端支持解析和应用 Agent 模式配置
- 权限处理器实现 auto-approve 检查(仅 write/edit,不含 delete)
2025-12-15 19:42:51 +08:00
kurihada f09f8f2b03 fix: 修复多个问题
- fix(core): 修复 todoManager 未初始化导致待办工具无法使用
- fix(core): 为 LSP 初始化添加 10 秒超时,防止 write_file 卡住
- fix(ui): 停止对话时保留已流式输出的内容
2025-12-15 18:40:07 +08:00
kurihada 3fd8fd98b8 feat(ui): 优化流式输出工具调用渲染
- 添加 tool_start/tool_end WebSocket 事件支持
- 流式消息复用 ChatMessage 组件渲染工具调用卡片
- 修复 AI SDK v5 格式兼容问题(input/output 字段)
- 修复会话恢复时 tool-result 格式错误
- 放宽 ToolState schema 中 input 字段类型为 unknown
2025-12-15 17:35:39 +08:00
kurihada cd0dd814ab feat(ui): 实现消息 parts 有序渲染
- Server: API 返回 parts 数组保持原始顺序
- Server: 添加 MessagePart 类型定义 (text/tool/reasoning)
- UI: ChatMessage 按 parts 顺序交叉渲染文本和工具调用
- UI: 新增 ToolPartItem 组件渲染单个工具 part
- UI: useChat 创建消息时添加 parts 字段
2025-12-15 14:46:00 +08:00
kurihada bbce1de60c fix(ui): 优化 WebSocket 连接和 PWA meta 标签
- WebSocket onopen 检查 isClosingRef,组件卸载后自动关闭连接
- 更新 PWA meta 标签为 mobile-web-app-capable
2025-12-15 10:29:49 +08:00
kurihada 9e55237dae fix(ui): 修复 React key 警告和 forwardRef 问题
- ChatMessage/SessionItem 使用 forwardRef 支持 AnimatePresence
- useChat 为 message_received/done 事件生成唯一消息 ID
- sessions API 为历史消息添加 ID 字段
- cli 添加 @types/inquirer 依赖
2025-12-15 10:24:45 +08:00
kurihada 32064a3531 fix(config): 优雅处理 Provider 未配置错误
- 添加 ConfigurationError 类替代 process.exit(1)
- Server 端捕获配置错误并返回友好消息
- UI 端支持 config_error 类型的 WebSocket 消息
- 服务器不再因配置缺失而崩溃
2025-12-14 22:24:51 +08:00
kurihada 1d69fd876d feat(permission): 实现 WebSocket 权限确认机制
重构权限系统,将终端 UI 代码从 core 模块移除,实现基于 WebSocket 的权限确认流程:

Core 模块清理:
- 删除 permission/prompt.ts 和 file-prompt.ts(终端交互)
- 删除 diff.ts 中的 chalk 渲染函数
- 删除 config.ts 中的 inquirer 交互
- 移除 chalk 依赖

Server 权限处理:
- 新增 permission/handler.ts,实现 WebSocket 权限请求/响应
- 更新 agent/adapter.ts 设置权限回调
- 更新 ws.ts 处理 permission_response 消息

Web 权限组件:
- 新增 PermissionDialog 组件,显示权限请求详情和 Diff
- 更新 useChat hook 管理权限状态
- 更新 Chat 页面集成权限弹窗
2025-12-13 01:09:35 +08:00
kurihada 65a23f1e71 feat: 添加会话标题自动生成功能
- 后端:首次 AI 回复后自动从用户消息提取标题
- 后端:通过 WebSocket 推送 session_updated 事件
- 前端:useChat hook 处理标题更新事件
- 前端:Sidebar 组件实时更新会话标题显示
2025-12-12 17:45:17 +08:00
kurihada 68ab6a2016 feat(ui): 创建共享 UI 组件包
将 web 和 desktop 的重复代码抽取到 @ai-assistant/ui 包:

- 添加可配置的 API 客户端 (configureApiClient)
- 迁移共享组件: ChatMessage, ChatInput, Sidebar, FileBrowser, ConfigPanel
- 迁移共享 hook: useChat
- 添加 responsive prop 支持响应式布局
- 更新 web/desktop 依赖并删除重复代码
2025-12-12 15:52:53 +08:00