Commit graph

356 commits

Author SHA1 Message Date
tanzhenxin
edd8388b27 Merge branch 'main' into feature/arena-agent-collaboration 2026-03-17 14:00:47 +08:00
LaZzyMan
d129ddc489 Merge branch 'main' into feat/support-permission 2026-03-16 11:42:37 +08:00
tanzhenxin
b83e9ea393
Merge pull request #2333 from chen893/fix/slash-command-i18n
fix(i18n): localize slash command descriptions
2026-03-15 20:12:15 +08:00
pomelo-nwu
4de9688543 feat(cli): add detail mode to /context and track loaded skill bodies
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-15 14:39:33 +08:00
Shaojin Wen
1b651d5c4f refactor(cli): make /btw non-blocking with fire-and-forget API call
Run the /btw API call as fire-and-forget in interactive mode so the
main conversation is not blocked while waiting for the answer. The
action now returns immediately after setting the pending item, and
the background promise updates the UI when the answer arrives.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:41:28 +08:00
Shaojin Wen
b1b5f72507 fix(cli): revert tools:[] to empty config for provider compatibility
Revert tools:[] to empty config {} to avoid provider compatibility
issues. Empty tools array is truthy and gets passed through to API
requests, which can cause errors on some providers. Omitting the
tools field entirely achieves the same effect (no tool access).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:24:57 +08:00
Shaojin Wen
ed9a4edc40 fix(cli): add model guard and explicit tools:[] for /btw command
Explicitly pass tools:[] to generateContent to prevent tool invocation
in side questions. Add model undefined guard for defensive safety.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:44:13 +08:00
Shaojin Wen
d285c4409a fix(cli): extract duplicate error formatting and add tests for /btw command
Extract repeated error formatting into formatBtwError helper, remove
no-op marginTop={0}, and add comprehensive test coverage for all three
execution modes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:20:21 +08:00
Shaojin Wen
fda065314f refactor(cli): simplify /btw by passing geminiClient directly to askBtw
Remove redundant null check by passing the already-validated client and
model to the helper function instead of re-extracting them.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:04:10 +08:00
Shaojin Wen
8b90b145b3 fix(cli): address audit issues in /btw command
- Add ACP mode support with stream_messages async generator
- Add non-interactive mode support with simple message return
- Add wrap="wrap" to Text components for long text handling
- Extract askBtw helper to reduce duplication across execution modes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:56:39 +08:00
Shaojin Wen
8dc34c385d fix(cli): address review issues in /btw command
- Add pendingItem conflict guard to prevent overwriting other operations
- Use finally block to ensure setPendingItem(null) is always called
- Wrap "Thinking..." with t() for i18n support
- Remove unnecessary type assertion, use typed variable instead

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:53:14 +08:00
Shaojin Wen
3818f8acd4 feat(cli): add /btw slash command for ephemeral side questions
Allow users to ask quick "by the way" questions that use the current
conversation context but don't pollute the main conversation history.

Closes #2370

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:50:41 +08:00
Shaojin Wen
1359563f45
feat(skills): add bundled /review skill for out-of-the-box code review (#2348)
feat(skills): add bundled /review skill for out-of-the-box code review
2026-03-14 15:15:08 +08:00
胡玮文
7e46c5bc56 fix(cli): /memory show --project and --global now display all configured context files
Previously, `/memory show --project` and `/memory show --global` only checked
the first filename from `getCurrentGeminiMdFilename()` (i.e., `QWEN.md`),
ignoring other configured context files like `AGENTS.md`. This caused the
commands to report empty even when `AGENTS.md` existed and was being loaded
by the actual memory loading mechanism (`loadServerHierarchicalMemory`).

Changes:
- Replace `getCurrentGeminiMdFilename()` with `getAllGeminiMdFilenames()` in
  memoryCommand.ts
- Add `findAllExistingMemoryFiles()` helper that iterates all configured
  filenames and aggregates content from all existing files
- Update both `--project` and `--global` subcommands to display content from
  all found memory files
- Add tests for fallback (only AGENTS.md exists) and dual-file scenarios
2026-03-14 13:28:08 +08:00
tanzhenxin
eff6543d05 Merge branch 'main' into feature/arena-agent-collaboration 2026-03-13 21:16:49 +08:00
LaZzyMan
c01a309cda fix core tool config 2026-03-13 17:58:34 +08:00
chen893
cc120712c1 fix(i18n): localize slash command descriptions 2026-03-13 00:16:31 +08:00
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
LaZzyMan
7450067e37 Merge branch 'main' into feat/support-permission 2026-03-11 17:11:28 +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
pomelo-nwu
f13a2fdf17 fix: export command should use current session ID instead of loadLastSession
The /export commands (html, md, json, jsonl) were incorrectly using
loadLastSession() which loads the last modified session from disk,
rather than the currently active session.

This fix uses config.getSessionId() to get the current session ID
and loads the correct session with loadSession(sessionId).

Fixes #2267

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-11 11:16:29 +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
LaZzyMan
e793e82729 feat(permissions): add workspace directory management tab
- Add Workspace tab to PermissionsDialog with full directory management UI
  - Directory list view: initial (non-removable) dirs shown inline,
    runtime-added dirs selectable; "Add directory…" always first
  - Add directory input view: filesystem autocomplete with ↑/↓ navigation
    and Tab-to-complete; path validation (existence, type, duplicate,
    subdirectory checks)
  - Remove directory confirmation view
  - Save directly to project settings (SettingScope.Workspace), no scope
    selection step
- Add onTab/onUp/onDown props to TextInput to intercept keys before buffer
- Add removeDirectory() and isInitialDirectory() to WorkspaceContext
- Add --add-dir CLI alias for --include-directories
- Add /add-dir slash command (alias for /directory add)
- Add permissions.additionalDirectories settings field
- Add i18n keys for all workspace directory UI strings (en/zh/de/ja/pt/ru)"
2026-03-11 10:54:59 +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
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
LaZzyMan
db0e373ad7 feat test tool permissions 2026-03-10 16:30:22 +08:00
DennisYu07
98fb607ad1 merge main 2026-03-10 00:29:08 -07: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
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
15b5bc3bfc fix mcp ui 2026-03-09 15:20:30 +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
DennisYu07
3458c1d68b merge main de resolve conflict 2026-03-06 16:00:51 -08:00
LaZzyMan
43faa51378 Merge branch 'main' into feature/extension-management-tui 2026-03-06 17:19:40 +08:00
LaZzyMan
32d499944a Merge branch 'main' into feat/mcp-tui 2026-03-06 16:55:38 +08:00
LaZzyMan
2699b88661 Merge branch 'main' into feature/extension-management-tui 2026-03-06 16:25:08 +08:00
tanzhenxin
ca3a2be2ec Merge branch 'main' into feat/shell-pty-default-and-enhancements 2026-03-06 14:36:18 +08:00
LaZzyMan
7b227a7eb5 Merge branch 'main' into feat/mcp-tui 2026-03-06 14:27:56 +08:00
pomelo-nwu
b629de35cf docs: remove CONTEXT_COMMAND.md from source directory
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-05 14:43:42 +08:00
pomelo-nwu
a811d442b2 Merge remote-tracking branch 'origin/main' into feat/context-usage 2026-03-05 11:58:35 +08:00
tanzhenxin
ca7a5111d9 test(bugCommand): update test to match new system info format
Auth and Base URL are now displayed as separate fields in system info.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-05 11:35:08 +08:00
LaZzyMan
eeb4d85785 feat(permissions): add permission system and rename folder trust command 2026-03-04 19:24:43 +08:00
DennisYu07
f0cc28f80f implementation SessionStart and SessionEnd hook 2026-03-03 23:39:57 -08:00
tanzhenxin
74b342623c Merge branch 'main' into feature/arena-agent-collaboration 2026-02-28 22:01:10 +08:00
LaZzyMan
4879ea4a36 fix: 修复 extensionsCommand 测试并简化 listAction
- 更新 extensionsCommand.test.ts 以匹配新的命令结构
- 移除对已删除子命令(update, uninstall, disable, enable, detail)的测试
- 简化 listAction 函数,始终返回 extensions_manage 对话框
- 移除未使用的 showMessageIfNoExtensions 函数
2026-02-28 17:20:18 +08:00
LaZzyMan
4d27950a95 feat: Add interactive TUI for extension management 2026-02-28 16:06:34 +08:00
DennisYu07
1ce5bfb629 resole conflict and remove hook extension definition 2026-02-27 17:58:07 -08:00
tanzhenxin
e93b287329
Merge pull request #1796 from QwenLM/feat/support-cancel-execute-pr
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
fix: unblock input after ESC cancel
2026-02-27 21:32:13 +08:00