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 页面集成权限弹窗
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
StreamingMessage,
|
||||
TypingIndicator,
|
||||
ChatInput,
|
||||
PermissionDialog,
|
||||
} from '@ai-assistant/ui';
|
||||
|
||||
interface ChatPageProps {
|
||||
@@ -50,6 +51,9 @@ export function ChatPage({
|
||||
streamingContent,
|
||||
sendMessage,
|
||||
cancelProcessing,
|
||||
permissionRequest,
|
||||
allowPermission,
|
||||
denyPermission,
|
||||
} = useChat({
|
||||
sessionId,
|
||||
onError: (error) => {
|
||||
@@ -264,6 +268,16 @@ export function ChatPage({
|
||||
disabled={!isConnected}
|
||||
responsive={responsive}
|
||||
/>
|
||||
|
||||
{/* Permission Dialog */}
|
||||
{permissionRequest && (
|
||||
<PermissionDialog
|
||||
request={permissionRequest}
|
||||
onAllow={(requestId, remember) => allowPermission(requestId, remember)}
|
||||
onDeny={(requestId, remember) => denyPermission(requestId, remember)}
|
||||
responsive={responsive}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user