claude-code-best
|
2e9aaf4993
|
feat: ACP 协议版本 remote control (#293)
* fix: 添加 usage 字段缺失时的防御性防护
第三方 API(如智谱 GLM)在某些流式响应中不返回 usage 字段,
导致 usage.input_tokens 访问 undefined 崩溃并连锁影响后续所有请求。
- claude.ts: content_block_stop 创建消息时 fallback 到 EMPTY_USAGE
- LocalAgentTask.tsx: usage 为 undefined 时提前返回
- tokens.ts: getTokenCountFromUsage 加 null guard 和 ?? 0
- cost-tracker.ts: input_tokens/output_tokens 加 ?? 0
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: ACP Plan 展示 — 支持 session/update plan 类型的可视化
补全 PlanUpdate 类型定义(PlanEntry/Priority/Status),新建 PlanView 组件
渲染进度条、状态图标和优先级标签,在 ChatInterface 中处理 plan 更新逻辑。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: 穷鬼模式下跳过 verification agent 以节省 token
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: 补充 RCS 后端 + 前端测试覆盖 (+116 tests)
后端新增 3 个测试文件 (70 tests):
- automationState: normalize/snapshot/equals 纯函数
- client-payload: toClientPayload 协议转换
- transport-normalize: normalizePayload + extractContent
前端新增 2 个测试文件 (46 tests):
- utils: formatTime/statusClass/truncate/extractEventText 等
- api-client: getUuid/setUuid/api GET/POST 错误处理
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: RCS ACP 页面添加权限模式选择器 + 权限响应修复
- 新增权限模式选择器 UI(6种模式:默认/自动接受编辑/跳过权限/规划/不询问/自动判断)
- 权限模式通过 ACP _meta 从 web → acp-link → agent 全链路传递
- 修复 PermissionPanel 点击"允许"发送 cancelled 而非 selected 的 bug
- 权限模式和模型选择持久化到 localStorage
- acp-link 直接连接路径同步支持 permissionMode 透传
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: RCS Web UI 重构 + QR 修复 + ACP 扫描自动跳转
- RCS Web UI 组件全面重构: Dialog 迁移 Radix UI, lazy loading,
主题系统改进, 组件样式优化
- IdentityPanel QR 码显示修复: requestAnimationFrame 延迟绘制
解决 Radix Dialog Portal 挂载时序问题
- ACP QR 扫描自动跳转: IdentityPanel 扫描 ACP 格式 { url, token }
后存储 sessionStorage 并跳转 /code/?acp=1
- 新增 ACPDirectView 组件: ACP 直连视图, 用 ACPClient 连接并
渲染 ACPMain 聊天界面
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: ACP 权限管道改进 — 模式同步 + bypass 检测 + 统一权限流水线
- agent.ts: applySessionMode 同步 appState.toolPermissionContext.mode
- agent.ts: bypassPermissions 可用性检测 (非 root 或 sandbox 环境)
- permissions.ts: createAcpCanUseTool 接入 hasPermissionsToUseTool
统一权限流水线, 替代原来分散的处理逻辑
- permissions.ts: 支持 onModeChange 回调, 模式变更时实时同步
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: acp-link 支持 permissionMode 默认值传递给 agent
客户端 (Zed/VS Code 等) 的 new_session 不一定携带 permissionMode,
导致 agent 收到 _meta: undefined, permission 回退到 default。
修复: handleNewSession 使用 fallback 链:
客户端传值 > config.permissionMode > ACP_PERMISSION_MODE 环境变量
使用: ACP_PERMISSION_MODE=auto acp-link claude
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: 更新文档及说明
* fix: 修复类型错误
* chore: 提交脚本
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-18 21:54:22 +08:00 |
|
claude-code-best
|
34154ee3f5
|
feat: 支持 acp-link 包进行 acp 通用的 remote-control (#292)
* fix: 修复超时问题
* feat: 添加 acp-link 代码
* refactor: 样式重构完成
* feat: RCS 添加 ACP 后端支持
- 新增 ACP WebSocket handler (agent 注册、EventBus 订阅)
- 新增 relay handler (前端 WS → acp-link 透传 + EventBus inbound 转发)
- 新增 SSE event stream 供外部消费者订阅 channel group 事件
- ACP REST 接口无鉴权 (agents、channel-groups)
- WebSocket 端点保留 token 鉴权
- SPA 路由 /acp/ 指向 acp.html
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: 添加 ACP 专属前端界面
- 新增 /acp/ SPA 页面 (agent 列表 + 实时交互)
- Agent 列表按 channel group 分组,显示在线状态
- 通过 RCS WebSocket relay 与 agent 通信
- Vite multi-page 构建 (index.html + acp.html)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: acp-link 支持 RCS relay 双向通信
- rcs-upstream 新增 messageHandler 转发非控制消息
- server.ts 新增虚拟 WS + relay client state 处理 relay ACP 消息
- newSession/loadSession 补充 mcpServers 参数
- 连接成功后显示 ACP Dashboard URL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 移除 FileExplorer 及文件操作相关代码
- 删除 FileExplorer 组件
- ACPMain 移除 Files tab,仅保留 Chat 和 History
- client.ts 移除 listDir/readFile/onFileChanges 等方法
- types.ts 移除 FileItem/FileContent/FileChange 等类型
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: 修复类型问题
* feat: RCS 后端统一 ACP/Bridge 注册逻辑
- store: EnvironmentRecord 增加 capabilities 字段、storeFindEnvironmentByMachineName 复用逻辑
- store: 新增 storeGetSessionOwners,支持未绑定 session 自动 claim
- environment: registerEnvironment 支持 ACP 复用已有记录,返回 session_id
- session: resolveOwnedWebSessionId 支持无 owner session 自动绑定
- acp-ws-handler: 新增 handleIdentify 支持 REST+WS 两步注册
- acp routes: /acp/relay 和 /acp/agents 支持 UUID 认证
- event-bus: 增加 error 类型 payload 日志
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: acp-link 改 REST 注册 + WS identify 两步流程
- rcs-upstream: 新增 registerViaRest() 通过 POST /v1/environments/bridge 注册
- rcs-upstream: WS 连接后发送 identify 替代 register,携带 agentId
- rcs-upstream: 入口链接改为 /code/?sid=${sessionId} 实现用户绑定
- server: 修复心跳跳过 relay 虚拟连接的 bug
- server: maxSessions 配置传入 RCS upstream
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: 前端统一 Chat 组件 + ACP 聊天界面重构
- 新增 chat/ 组件: ChatView, ChatInput, MessageBubble, ToolCallGroup, PermissionPanel, SessionSidebar, CommandMenu
- ACPMain: 重构支持完整 ACP 协议交互(session/prompt/permission)
- rcs-chat-adapter: 统一 bridge session SSE 适配器
- ACPClient: 增强 session 管理、permission 流程、streaming 支持
- index.css: 新增 chat 相关样式、动画、布局
- useCommands: 新增快捷命令 hook
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 删除 /acp/ 独立页面,ACP 聊天统一到 /code/:sessionId
- 删除 acp.html、acp-main.tsx 入口文件和 pages/acp/ 目录
- SessionDetail: ACP session 在同一页面渲染 ACPSessionDetail 组件
- App.tsx: ?sid= 参数自动调用 apiBind 绑定用户 UUID
- Dashboard: 统一 session 列表导航,ACP 显示紫色标签
- relay-client: 改用 UUID 认证替代 API token
- EnvironmentList: 显示 workerType 标签(ACP Agent / Claude Code)
- index.ts: 移除 /acp/ SPA 路由,vite.config 移除 acp 入口
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* build: 更新构建及测试修复
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-18 17:59:29 +08:00 |
|