Commit graph

179 commits

Author SHA1 Message Date
tanzhenxin
d6f5d9997f fix(cli): prevent terminal response leakage on high-latency SSH
When SSHing into a VM with network latency, terminal responses to startup
queries (kitty protocol detection) can arrive after the 200ms timeout expires.
The original code immediately restored raw mode, causing late responses to
leak through as visible text.

This fix adds two layers of defense:
1. Drain handler in kittyProtocolDetector: Adds a 100ms window after timeout
   to silently consume late-arriving responses
2. Regex filter in KeypressContext: Catches any terminal response patterns
   that make it past the detection phase, regardless of timing

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 12:09:37 +00:00
wenshao
13423f0676 fix(cli): harden /btw command error handling and type safety
- Add null/undefined guard in formatBtwError to avoid "null"/"undefined" strings
- Add type guard for btw property in HistoryItemDisplay to prevent crash
- Extract isBtwCommand regex to module-level constant and simplify with [/?]

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 01:21:07 +08:00
yiliang114
905f2c3f36 Merge branch 'main' into fix/pr2371-btw-complete 2026-03-21 01:10:48 +08:00
tanzhenxin
9824e395a8 refactor(core): rename read_file parameter from absolute_path to file_path
This unifies the parameter naming convention across file-related tools
(edit, write_file, read_file) to consistently use file_path.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-20 11:05:47 +08:00
tanzhenxin
9d6aca8efe Merge branch 'main' into refactor/task-to-agent-tool 2026-03-20 10:23:25 +08:00
yiliang114
bd77eef46f Merge remote-tracking branch 'origin/main' into fix/pr2371-btw-complete
# Conflicts:
#	packages/cli/src/ui/AppContainer.tsx
#	packages/cli/src/ui/hooks/useGeminiStream.ts
#	packages/cli/src/ui/layouts/DefaultAppLayout.tsx
#	packages/cli/src/ui/types.ts
#	packages/core/src/core/client.test.ts
2026-03-20 00:55:29 +08:00
yiliang114
0a1ffd98eb feat(cli): make /btw command non-blocking with parallel execution
- Add btwItem state management independent from pendingItem
- Add cancelBtw functionality to abort in-flight BTW API calls
- Allow /btw commands to execute concurrently with main responses
- Add isBtwCommand utility function
- Update BtwMessage UI with cleaner styling (remove spinner)
- Add tests for concurrent /btw execution scenarios
- Update layouts to render BTW messages in fixed bottom area

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-20 00:25:51 +08:00
tanzhenxin
8891f4219d refactor(core): rename TaskTool to AgentTool
Rename the Task tool to Agent tool for clearer semantics and better
alignment with industry terminology. This change includes:

- Rename TaskTool -> AgentTool, TaskParams -> AgentParams
- Rename TaskResultDisplay -> AgentResultDisplay
- Add 'Explore' built-in agent for read-only codebase exploration
- Add backward compatibility mappings for legacy tool names
- Improve Agent tool description with clearer usage guidelines
- Add case-insensitive agent name matching
- Fallback to built-in agents when subagent loading fails

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:55:14 +08:00
mingholy.lmh
9060663f60 refactor(export): clean up unnecessary fields and simplify data structure
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:33:33 +08:00
mingholy.lmh
8e221a3606 feat: optimize export data structure and UI display
- Simplify export data by removing filesRead stat, keep only written files count and paths
- Restore lines-related statistics (linesAdded and linesRemoved)
- Update HTML display to show only file operation stats instead of total files count
- Change 'Written' label to 'Files modified'
- Remove distinction between requestId and sessionId, always display sessionId
- Remove Session ID and Export Time from Header (already shown in MetadataSidebar)
- Display Project field with raw value and support multiline display
- Fix filesWritten calculation to count unique files instead of operations

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:10:41 +08:00
mingholy.lmh
a24400ccfc fix(export): correct export metadata accuracy issues
Fix four accuracy bugs in export metadata/sidebar feature:

1. File read counting: Now properly counts read_file operations by checking
   functionResponse.name and args.absolute_path, instead of relying on
   resultDisplay which returns string for reads.

2. Unique file tracking: Uses full file path from args.file_path or
   args.absolute_path instead of basename-only fileName, preventing
   collision between same-named files in different directories.

3. TaskTool token aggregation: Includes tokens from TaskTool executionSummary
   in total token count, fixing under-reporting when subagents are used.

4. Context window display: Removes hardcoded '128k' fallback in HTML sidebar,
   now only displays context usage when contextWindowSize is actually defined.

Also fixes lint errors (Array<T> type annotations) and applies formatting.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:10:40 +08:00
mingholy.lmh
186103fe4e feat(export): enhance JSONL and Markdown formatters with comprehensive metadata
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:10:40 +08:00
mingholy.lmh
ccecc472dc feat(export): refactor HTML export components and improve metadata
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:10:39 +08:00
mingholy.lmh
d59e668729 feat(export): add metadata and statistics to export data
- Add ExportMetadata type with session info, token stats, file operation stats
- Track response_id from LLM API for telemetry correlation
- Collect usageMetadata from assistant messages
- Calculate file stats (files read/written, lines added/removed)
- Calculate token stats (total tokens, context usage percentage)
- Add metadata sidebar to HTML export template
- Support metadata in JSONL and Markdown formatters
- Update chatRecordingService to record response_id

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-19 14:10:38 +08:00
qqqys
b66b390d55
Merge branch 'main' into feat/token_display 2026-03-18 21:40:16 +08:00
qqqys
03e59256c4 feat(ui): enhance LoadingIndicator to display token counts and improve formatting
- Added candidatesTokens prop to LoadingIndicator for displaying token counts.
- Updated formatting to show elapsed time and token counts inline.
- Refactored tests to validate new token display functionality and formatting changes.
- Introduced formatTokenCount utility for consistent token count representation.

This improves user feedback during loading states by providing clearer information on token usage.
2026-03-17 20:10:54 +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
f9d4fa0a39 Merge branch 'main' into feature/arena-agent-collaboration 2026-03-09 11:13:31 +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
18f9e5ac34 fix: update colorizeCode calls to use new parameter order
The colorizeCode function signature was changed to have tabWidth as the
last parameter with a default value. Update all call sites to match.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-04 20:12:58 +08:00
lgzzzz
2819c7d887 feat: add tabWidth support for code highlighting and replace tabs with spaces in CodeColorizer
(cherry picked from commit 2849f907f68022ed2879216a764668878a0bb282)
2026-03-04 15:45:49 +08:00
tanzhenxin
74b342623c Merge branch 'main' into feature/arena-agent-collaboration 2026-02-28 22:01:10 +08:00
tanzhenxin
a172696b86 Merge branch 'main' into feat/support-insight-command
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-26 21:05:41 +08:00
tanzhenxin
9e4c5ee891 refactor: Extract web-templates package and unify build/pack workflow
Moves export-html and insight templates from cli/assets to a new
dedicated web-templates package. Updates Dockerfile and build scripts
to use consolidated bundle/prepare:package/pack workflow.

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-26 21:02:46 +08:00
tanzhenxin
d4cfb18f79 feat(core,cli)!: Implement in-process agent backend for arenas
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

Add InProcessBackend to run subagents in-process rather than via subprocess,

enabling faster initialization and better resource management for agent

collaboration arenas.

Key changes:

- Add InProcessBackend with sandboxed in-process agent execution

- Refactor agent runtime into headless vs interactive modes

- Add AsyncMessageQueue utility for agent message passing

- Update ArenaManager with backend selection (in-process vs subprocess)

- Refactor subagent types/exports; consolidate in subagents/types

- Remove deprecated agent-hooks.ts (functionality merged into runtime)

- Update task tool to support new agent lifecycle

Breaking: Subagent type exports restructured; import from subagents/types
2026-02-21 21:08:20 +08:00
tanzhenxin
6b55c8161f feat(arena): Add agent collaboration arena feature
Introduces a new Arena system for running multiple AI agents in parallel
terminal sessions with support for iTerm and Tmux backends.

Core:
- Add ArenaManager and ArenaAgentClient for orchestrating multi-agent sessions
- Add terminal backends (ITermBackend, TmuxBackend) with feature detection
- Add git worktree service for isolated agent workspaces
- Add arena event system for real-time status updates

CLI:
- Add /arena command with start, stop, status, and select subcommands
- Add Arena dialogs (Select, Start, Status, Stop)
- Add ArenaCards component for displaying parallel agent outputs
- Consolidate message components into StatusMessages and ConversationMessages
- Add MultiSelect component for agent selection

Config:
- Add arena-related settings to schema and config

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-18 10:51:35 +08:00
LaZzyMan
b488126830 feat add multi-platform support 2026-02-10 14:38:01 +08:00
LaZzyMan
56030f9291 Merge branch 'main' into feat/image-attachment 2026-02-10 14:16:21 +08:00
tanzhenxin
4abec5c055 Merge remote-tracking branch 'origin/main' into feat/debug-logging-refactor 2026-02-05 20:23:48 +08:00
tanzhenxin
42da41381a Merge origin/main into refactor/read-many-files-util
Resolved conflicts by:
- index.ts: Adopted main's organized structure, added readManyFiles.js export
- atCommandProcessor.ts: Kept refactored readManyFiles utility approach
- atCommandProcessor.test.ts: Kept tests for refactored approach
2026-02-05 19:27:29 +08:00
mingholy.lmh
a364c8212e fix(export): fix TodoWrite tool call display in HTML export
- Restore plan update handling in collect.ts, formatting todo data as markdown checklist
- Skip todo_write tool_result processing in normalize.ts to avoid duplicates
- Add getMessageTimestamp() and getMessageUuid() methods to maintain message order
- Fix version parsing to support @latest tags
- Fix Windows spawn EINVAL error (CVE-2024-27980)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-05 16:48:27 +08:00
mingholy.lmh
a5a6bddc31 fix: template 2026-02-05 16:47:36 +08:00
mingholy.lmh
54bb39f6ab fix: use fixed react version 2026-02-05 16:47:36 +08:00
mingholy.lmh
86a43618a7 refactor(export): built-in package for assets export
1. use built-in assets package to support html export
2. improve markdown export
2026-02-05 16:47:36 +08:00
mingholy.lmh
a4630d39e4 feat(export): support html/json/jsonl/md export 2026-02-05 16:47:35 +08:00
mingholy.lmh
660017706f fix: update exportUtils to use embedded html template 2026-02-05 16:47:35 +08:00
mingholy.lmh
feeae875a0 feat: add export command draft for session history with markdown and HTML formats 2026-02-05 16:47:35 +08:00
LaZzyMan
30b4b47cd7 fix ci test 2026-02-02 20:16:18 +08:00
tanzhenxin
89e3c2cd7a refactor(debug): replace ConsolePatcher with debugLogger and update error reporting
- Replace ConsolePatcher with centralized debugLogger utility
- Refactor errorReporting to use debugLogger instead of file-based reporting
- Remove user-facing console message components:
  - Delete ConsolePatcher.ts, useConsoleMessages.ts/hook
  - Delete ConsoleSummaryDisplay.tsx, DetailedMessagesDisplay.tsx
- Update all tests in packages/core and packages/cli:
  - Mock debugLogger where needed
  - Remove assertions for console output on non-critical errors
  - Keep debugLogger assertions for fatal/network errors
  - Use HOME directory mocking for hermetic file system tests

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-02 17:37:54 +08:00
LaZzyMan
1050163804 fix paste image on windows 2026-02-02 17:07:39 +08:00
tanzhenxin
135df54f27 Merge branch 'main' into feat/debug-logging-refactor
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-01 20:47:38 +08:00
tanzhenxin
7e5c1ae43a refactor: remove read_many_files tool, add readManyFiles utility for user @-commands
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-31 12:17:46 +08:00
LaZzyMan
6dc06cc34e fix ci test 2026-01-28 16:56:07 +08:00
LaZzyMan
3d1fc7ab78 fix test of windows 2026-01-28 11:44:39 +08:00
LaZzyMan
d9a3f7a716 fix clipboard cleanup 2026-01-28 10:47:35 +08:00
LaZzyMan
aba4abf6ad feat: add attachment ui 2026-01-26 16:15:08 +08:00
LaZzyMan
9a3e0bb72b feat: support for pasting image 2026-01-26 15:17:26 +08:00
tanzhenxin
7995c65571 feat(cli): migrate console calls to debugLogger and stdioHelpers (M3 Phase 7-9)
Route CLI console.* calls to structured logging:
- Debug/internal diagnostics → debugLogger (logfile)
- User-facing output → writeStdoutLine/writeStderrLine/clearScreen (stdioHelpers)
- Add stdioHelpers.ts with writeStdoutLine, writeStderrLine, clearScreen
- Migrate pre-session files (gemini.tsx, sandbox.ts, config.ts) to stdioHelpers
- Migrate extension/MCP commands to stdioHelpers
- Migrate non-interactive session/control to debugLogger
- Migrate UI hooks and components to debugLogger
2026-01-26 15:02:37 +08:00
tanzhenxin
3959b73bce feat(core,cli): migrate console.debug to debugLogger (M3 Phase 1-3) 2026-01-25 20:57:25 +08:00