mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-05-05 15:31:27 +00:00
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>
This commit is contained in:
parent
6bc37c6c23
commit
6b55c8161f
73 changed files with 11225 additions and 417 deletions
|
|
@ -20,6 +20,10 @@ import { AuthDialog } from '../auth/AuthDialog.js';
|
|||
import { EditorSettingsDialog } from './EditorSettingsDialog.js';
|
||||
import { PermissionsModifyTrustDialog } from './PermissionsModifyTrustDialog.js';
|
||||
import { ModelDialog } from './ModelDialog.js';
|
||||
import { ArenaStartDialog } from './ArenaStartDialog.js';
|
||||
import { ArenaSelectDialog } from './ArenaSelectDialog.js';
|
||||
import { ArenaStopDialog } from './ArenaStopDialog.js';
|
||||
import { ArenaStatusDialog } from './ArenaStatusDialog.js';
|
||||
import { ApprovalModeDialog } from './ApprovalModeDialog.js';
|
||||
import { theme } from '../semantic-colors.js';
|
||||
import { useUIState } from '../contexts/UIStateContext.js';
|
||||
|
|
@ -236,6 +240,48 @@ export const DialogManager = ({
|
|||
if (uiState.isModelDialogOpen) {
|
||||
return <ModelDialog onClose={uiActions.closeModelDialog} />;
|
||||
}
|
||||
if (uiState.activeArenaDialog === 'start') {
|
||||
return (
|
||||
<ArenaStartDialog
|
||||
onClose={() => uiActions.closeArenaDialog()}
|
||||
onConfirm={(models) => uiActions.handleArenaModelsSelected?.(models)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
if (uiState.activeArenaDialog === 'status') {
|
||||
const arenaManager = config.getArenaManager();
|
||||
if (arenaManager) {
|
||||
return (
|
||||
<ArenaStatusDialog
|
||||
manager={arenaManager}
|
||||
closeArenaDialog={uiActions.closeArenaDialog}
|
||||
width={mainAreaWidth}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
if (uiState.activeArenaDialog === 'stop') {
|
||||
return (
|
||||
<ArenaStopDialog
|
||||
config={config}
|
||||
addItem={addItem}
|
||||
closeArenaDialog={uiActions.closeArenaDialog}
|
||||
/>
|
||||
);
|
||||
}
|
||||
if (uiState.activeArenaDialog === 'select') {
|
||||
const arenaManager = config.getArenaManager();
|
||||
if (arenaManager) {
|
||||
return (
|
||||
<ArenaSelectDialog
|
||||
manager={arenaManager}
|
||||
config={config}
|
||||
addItem={addItem}
|
||||
closeArenaDialog={uiActions.closeArenaDialog}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
if (uiState.isVisionSwitchDialogOpen) {
|
||||
return <ModelSwitchDialog onSelect={uiActions.handleVisionSwitchSelect} />;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue