Commit graph

4396 commits

Author SHA1 Message Date
tanzhenxin
4ee94715df feat(arena): improve cancellation handling and simplify to in-process mode
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

- Track user-initiated cancellation separately from failures

- Cancel round immediately when user denies a tool call

- Add message queue to handle input during streaming

- Add info messages during Arena operations (apply, stop, cleanup)

- Disable tmux/iTerm2 backends (only in-process mode supported)

- Polish UI: green tool count, updated warning prefix

This improves the Arena UX by providing clearer feedback and

properly handling user cancellations without treating them as failures.
2026-03-12 16:57:44 +08:00
tanzhenxin
3233d16b5c feat(arena): add system reminder and status file support for agent collaboration
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

Extract atomic file write utility into reusable module. Add arena system reminder injection so orchestrating agents can discover active arena sessions. Support in-process mode status file writing for external consumers.

This enables agent-to-agent collaboration where a parent agent can monitor and coordinate arena sessions via file-based status files.
2026-03-11 11:56:05 +08:00
tanzhenxin
cecc960254 feat(arena): improve agent UI with header info and simplify worktree branches
- Add AgentHeader component showing model, path, and git branch
- Separate modelId and modelName in RegisteredAgent for cleaner display
- Simplify worktree branch naming from worktrees/session/name to base-session-name
- Change loading text from "Agent is working…" to "Thinking…"
- Make agent footer always visible (not just when input is active)

This improves the agent collaboration UX by providing context about each
agent's environment and simplifies the git worktree management.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 11:04:46 +08:00
tanzhenxin
d7aa98a0c0 refactor(arena): move arena-bridge to context and add reactive manager tracking
- Move useArenaInProcess from AppContainer to AgentViewProvider
- Replace polling with config.onArenaManagerChange() callback
- Add success-type progress messages when agents finish tasks
- Add isSuccessStatus helper for IDLE/COMPLETED status checks
- Reset input history position when arena session starts

This improves separation of concerns and eliminates the 500ms polling
interval in favor of immediate reactive updates when the arena manager
changes.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 21:45:30 +08:00
tanzhenxin
addbdcb0ef feat(arena): add info message for forwarded chat history
- Add info message when chatHistory is passed to spawned agents
- Add tests for info message presence and absence

This provides visibility to users when chat history context is included
in spawned agent sessions.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 20:37:08 +08:00
tanzhenxin
9f7e3e054f feat(arena): forward chat history to spawned agents
Add stripStartupContext to remove env-info from parent history and pass
chatHistory through ArenaManager → InProcessBackend → AgentInteractive →
AgentCore. This allows arena agents to start with conversational context
from the main session.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 19:45:14 +08:00
tanzhenxin
89f8751233 feat(cli): add agent composer UI and refactor text input handling
- Extract shared BaseTextInput component with readline keyboard handling
- Add AgentComposer and AgentFooter components for agent interaction
- Add useAgentStreamingState hook for managing agent streaming state
- Refactor InputPrompt to use BaseTextInput with agent tab bar focus support
- Move calculatePromptWidths to shared layoutUtils
- Disable auto-accept indicator on agent tabs (agents handle their own)

This enables a dedicated input experience for agent tabs with proper
focus management and keyboard navigation between main input and agent tabs.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-10 16:53:10 +08:00
tanzhenxin
eaef9efe90 feat(arena): add IDLE status for agent follow-up task support
- Introduce AgentStatus.IDLE for agents that finished work but can accept follow-up messages
- Add isSettledStatus() helper to check if agent is settled (IDLE or terminal)
- Update ArenaManager to transition to IDLE after agents finish initial task
- Keep agent tabs visible when session is IDLE so users can continue interacting
- Fix listener cleanup to not detach on IDLE (agents remain alive)
- Update tests to expect 'idle' status after successful completion

This enables the arena collaboration feature where agents can receive
additional tasks after completing their initial work.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-09 21:33:48 +08:00
tanzhenxin
4a681f435d Merge branch 'main' into feature/arena-agent-collaboration 2026-03-09 20:43:25 +08:00
tanzhenxin
426e9c240c
Merge pull request #2218 from QwenLM/fix-test-assertion-trailing-newline
fix(test): use toContain instead of toBe for file content assertion
2026-03-09 20:38:32 +08:00
tanzhenxin
377a4f183e fix(test): use toContain instead of toBe for file content assertion
The test was failing because readFile returns content with a trailing
newline, causing '1.0.1\n' to not equal '1.0.1' with toBe.
Using toContain handles this gracefully.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-09 20:37:11 +08:00
tanzhenxin
983f448342
Merge pull request #2208 from QwenLM/fix-mcp-extension-ui
fix: improve MCP Management & Extension Management TUI based on 0.12.0 feedback
2026-03-09 20:02:18 +08:00
LaZzyMan
817f24e0ea fix bugs 2026-03-09 19:11:40 +08:00
LaZzyMan
a02ed08d26 fix ui 2026-03-09 18:26:01 +08:00
tanzhenxin
fa2f2fd5ce feat(arena): Short worktree names and UX improvements
- Use 8-char short names derived from session UUID for worktrees
- Fix cleanup to use short worktreeDirName
- Simplify model display names (remove authType prefix)
- Improve messaging when <2 models available
- Show agent worktree paths in startup output

Prevents long path issues and provides clearer model setup guidance.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-09 16:21:28 +08:00
LaZzyMan
0c21071bf6 fix ci test 2026-03-09 16:08:11 +08:00
LaZzyMan
a19f1b1ab3 add i18n 2026-03-09 16:01:16 +08:00
LaZzyMan
597ce85335 fix extension ui 2026-03-09 15:49:02 +08:00
LaZzyMan
15b5bc3bfc fix mcp ui 2026-03-09 15:20:30 +08:00
LaZzyMan
9e34b5db4a fix: 重写 AuthenticateStep 使用正确的 OAuth 流程
- 按照 mcpCommand.ts 中的 auth 实现重写 AuthenticateStep
- 使用 MCPOAuthProvider + MCPOAuthTokenStorage 进行实际 OAuth 认证
- 通过 appEvents/AppEvent.OauthDisplayMessage 展示认证过程消息
- 认证成功后自动触发 tool re-discovery 和 client tools 更新
- 只在 server.config.oauth?.enabled 为 true 时显示 Authenticate 选项
- 认证成功后 reload servers 刷新列表
2026-03-09 12:05:27 +08:00
tanzhenxin
c905b94d78 feat(agents): add settings schema for multi-agent collaboration
Add agents.displayMode, arena/team/swarm settings, and refactor
acpAgent to use local ApprovalModeValue type.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-09 11:23:08 +08:00
tanzhenxin
f9d4fa0a39 Merge branch 'main' into feature/arena-agent-collaboration 2026-03-09 11:13:31 +08:00
LaZzyMan
8c693ba738 test: 修复 extensionsCommand 测试
- 更新 mock ExtensionManager 以通过 instanceof 检查
- 确保测试与新的错误处理逻辑兼容
2026-03-09 11:12:46 +08:00
LaZzyMan
2d5088e58f fix: 修复 Extension Management 命令报错 (问题 6)
- 在 listAction 中添加 ExtensionManager 可用性检查
- 当 ExtensionManager 不可用时显示友好的错误提示
- 改进:避免用户遇到静默失败,提供明确的环境不支持信息
2026-03-09 11:11:18 +08:00
LaZzyMan
4dfaa12e16 refactor: 优化 Dialog 2 工具列表 (问题 5)
- 移除多余的序号,简化视觉元素
- 统一选中状态颜色方案 (与 Dialog 1 一致使用 accent 色)
- 保留工具功能说明 (annotations),提升可读性
2026-03-09 11:09:47 +08:00
LaZzyMan
2b1088682c refactor: 优化 Dialog 1 布局 (问题 4)
- 移除重复的服务器统计信息 (已在标题显示)
- 减少多余的空格和边距,使布局更紧凑
- 优化视觉层次,提升用户体验
2026-03-09 11:08:30 +08:00
LaZzyMan
9d3d51a283 feat: 简化 MCP 服务器禁用流程
- 问题 3: 自动匹配 scope,无需用户手动选择
- 改进:根据服务器配置位置 (user/workspace) 自动确定禁用 scope
- 改进:禁用操作一步完成,提升用户体验
- 注意:Extension 类型的服务器不支持通过此方式禁用
2026-03-09 11:06:47 +08:00
LaZzyMan
23c3518dff fix: 添加 handleAuthenticate 到依赖数组
- 修复 React Hooks exhaustive-deps 警告
2026-03-09 11:05:11 +08:00
LaZzyMan
41bb300542 fix: 修复 MCP 服务器禁用状态下的操作选项
- 问题 2.1: 禁用的服务器不再显示'查看工具'选项,避免用户查看空工具列表
- 问题 2.2: 禁用的服务器不再显示'重新连接'选项,保持逻辑一致性
- 改进:根据服务器状态动态生成可用操作列表
- 改进:启用/禁用选项始终显示,方便用户切换状态
2026-03-09 10:59:20 +08:00
tanzhenxin
d63798cc0d
Merge pull request #1828 from QwenLM/feat/ask-user-question-tool
Some checks failed
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Has been cancelled
Qwen Code CI / CodeQL (push) Has been cancelled
Qwen Code CI / Lint (push) Has been cancelled
E2E Tests / E2E Test (Linux) - sandbox:none (push) Has been cancelled
E2E Tests / E2E Test - macOS (push) Has been cancelled
Qwen Code CI / Test (push) Has been cancelled
Qwen Code CI / Test-1 (push) Has been cancelled
Qwen Code CI / Test-2 (push) Has been cancelled
Qwen Code CI / Test-3 (push) Has been cancelled
Qwen Code CI / Test-4 (push) Has been cancelled
Qwen Code CI / Test-5 (push) Has been cancelled
Qwen Code CI / Test-6 (push) Has been cancelled
Qwen Code CI / Test-7 (push) Has been cancelled
Qwen Code CI / Test-8 (push) Has been cancelled
Qwen Code CI / Post Coverage Comment (push) Has been cancelled
feat: Implement AskUserQuestionTool for interactive user queries
2026-03-08 23:21:03 +08:00
tanzhenxin
2e91f0a4cd Merge remote-tracking branch 'origin/main' into feat/ask-user-question-tool 2026-03-08 23:05:32 +08:00
tanzhenxin
411ebd03b8 fix(cli): improve ask_user_question tool handling and UI
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

- In ACP mode: allow ask_user_question in YOLO mode (user must respond)

- In ACP mode: allow ask_user_question in plan mode for clarifications

- Hide footer when confirmation dialog is active

- Fix tab index overflow with functional state updates

- Fix ask_user_question detection in VSCode companion (use rawInput)

- Add cleanup for pending ACP promises on panel/provider dispose

- Use theme.text.accent consistently for highlighted elements

- Remove unused 'answers' param from AskUserQuestionParams

This ensures users can always respond to clarification questions

in ACP mode regardless of approval mode, and improves dialog UX.
2026-03-08 22:15:18 +08:00
DennisYu07
0b7ad066b5
Merge pull request #2183 from QwenLM/feat/hook-stop-implementation
Some checks failed
Qwen Code CI / Lint (push) Has been cancelled
Qwen Code CI / CodeQL (push) Has been cancelled
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Has been cancelled
E2E Tests / E2E Test (Linux) - sandbox:none (push) Has been cancelled
E2E Tests / E2E Test - macOS (push) Has been cancelled
Qwen Code CI / Test (push) Has been cancelled
Qwen Code CI / Test-1 (push) Has been cancelled
Qwen Code CI / Test-2 (push) Has been cancelled
Qwen Code CI / Test-3 (push) Has been cancelled
Qwen Code CI / Test-4 (push) Has been cancelled
Qwen Code CI / Test-5 (push) Has been cancelled
Qwen Code CI / Test-6 (push) Has been cancelled
Qwen Code CI / Test-7 (push) Has been cancelled
Qwen Code CI / Test-8 (push) Has been cancelled
Qwen Code CI / Post Coverage Comment (push) Has been cancelled
fix: Hooks online integration test failed
2026-03-07 07:27:29 +08:00
DennisYu07
08ecaf50aa remove non-deterministic test 2026-03-06 09:58:42 -08:00
DennisYu07
b467369fd5 align command output with online env 2026-03-06 07:37:42 -08:00
Mingholy
f241b7e79c
Merge pull request #2063 from QwenLM/mingholy/refactor/use-acp-sdk
Some checks are pending
Qwen Code CI / Lint (push) Waiting to run
Qwen Code CI / Test (push) Blocked by required conditions
Qwen Code CI / Test-1 (push) Blocked by required conditions
Qwen Code CI / Test-2 (push) Blocked by required conditions
Qwen Code CI / Test-3 (push) Blocked by required conditions
Qwen Code CI / Test-4 (push) Blocked by required conditions
Qwen Code CI / Test-5 (push) Blocked by required conditions
Qwen Code CI / Test-6 (push) Blocked by required conditions
Qwen Code CI / Test-7 (push) Blocked by required conditions
Qwen Code CI / Test-8 (push) Blocked by required conditions
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
refactor(acp): migrate ACP integration to @agentclientprotocol/sdk
2026-03-06 23:36:08 +08:00
mingholy.lmh
f1c88e9bc9 style: apply formatting and linting fixes across codebase
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-06 21:58:22 +08:00
mingholy.lmh
b3bbd33846 fix(acp): resolve permission option IDs and preserve session state baselines
- Fix permission handling to map between kind (e.g. "allow_once") and optionId (e.g. "proceed_once")
- Add baseline state tracking for mode/model to handle partial session/load responses
- Introduce extractSessionModeState utility for mode state extraction
- Ensure UI consistency when session load omits optional fields

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-06 21:57:41 +08:00
mingholy.lmh
c044d4dba1 refactor(acp): migrate to @agentclientprotocol/sdk and clean up handlers
- Replace deprecated ACP session manager with new SDK integration
- Add acpFileHandler test coverage
- Remove obsolete acpMessageHandler and acpSessionManager
- Update type definitions and connection handlers
- Apply code formatting fixes

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-06 21:57:41 +08:00
mingholy.lmh
180dcd8b36 refactor(acp): migrate ACP integration to use @agentclientprotocol/sdk
- Remove acp.ts and schema.ts in favor of SDK types
- Refactor acpAgent.ts to leverage SDK client
- Update session management types and implementations
- Adjust all test cases for new SDK-based architecture
- Update integration tests and export utilities

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-06 21:57:35 +08:00
tanzhenxin
79adac930f
Merge pull request #2008 from QwenLM/feature/extension-management-tui
Some checks are pending
Qwen Code CI / Lint (push) Waiting to run
Qwen Code CI / Test (push) Blocked by required conditions
Qwen Code CI / Test-1 (push) Blocked by required conditions
Qwen Code CI / Test-2 (push) Blocked by required conditions
Qwen Code CI / Test-3 (push) Blocked by required conditions
Qwen Code CI / Test-4 (push) Blocked by required conditions
Qwen Code CI / Test-5 (push) Blocked by required conditions
Qwen Code CI / Test-6 (push) Blocked by required conditions
Qwen Code CI / Test-7 (push) Blocked by required conditions
Qwen Code CI / Test-8 (push) Blocked by required conditions
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
feat: Add interactive TUI for extension management
2026-03-06 20:43:16 +08:00
DennisYu07
b4e64b6c7d
Merge pull request #2156 from QwenLM/feat/hook-stop-implementation
fix(hooks): Move enable from hooks to hookConfig and add max turns
2026-03-06 18:58:00 +08:00
DennisYu07
d7b9024d29 move enable from hooks to hookConfig and add max turns 2026-03-06 02:33:14 -08:00
DennisYu07
f3b56f5a31
Merge pull request #2139 from QwenLM/feat/hook-stop-implementation
fix(hooks):  fix result aggregator for userPromptSubmit and fix enable for integration test
2026-03-06 17:19:46 +08:00
LaZzyMan
43faa51378 Merge branch 'main' into feature/extension-management-tui 2026-03-06 17:19:40 +08:00
TianHao Zhang
ed6608ed19
Merge pull request #2137 from kkhomej33-netizen/fix/kitty-keypad-private-use
fix(keyboard): handle Kitty keypad private-use keycodes
2026-03-06 17:12:46 +08:00
顾盼
f5ec6ae7a3
Merge pull request #1831 from QwenLM/feat/mcp-tui
feat: Enhance MCP Management TUI with dynamic enable/disable and runtime updates
2026-03-06 17:12:25 +08:00
DragonnZhang
6d112a1c0e fix(keyboard): add comments for kitty keypad private-use keycodes 2026-03-06 17:10:15 +08:00
DennisYu07
b71904d24e fix intergration test 2026-03-06 01:02:24 -08:00
LaZzyMan
32d499944a Merge branch 'main' into feat/mcp-tui 2026-03-06 16:55:38 +08:00