mirror of
https://github.com/QwenLM/qwen-code.git
synced 2025-12-19 09:33:53 +00:00
feat(vscode-ide-companion): update approval mode cycling behavior
- Add NEXT_APPROVAL_MODE constant for cyclic mode mapping - Remove 'plan' mode from public toggle sequence - Simplify handleToggleEditMode implementation using NEXT_APPROVAL_MODE mapping - Update import statements to include NEXT_APPROVAL_MODE - Remove unused comment about plan mode in toggle sequence
This commit is contained in:
@@ -147,6 +147,18 @@ export {
|
|||||||
getApprovalModeInfoFromString,
|
getApprovalModeInfoFromString,
|
||||||
} from './approvalModeTypes.js';
|
} from './approvalModeTypes.js';
|
||||||
|
|
||||||
|
// Cyclic next-mode mapping used by UI toggles and other consumers
|
||||||
|
export const NEXT_APPROVAL_MODE: {
|
||||||
|
[k in ApprovalModeValue]: ApprovalModeValue;
|
||||||
|
} = {
|
||||||
|
// Hide "plan" from the public toggle sequence for now
|
||||||
|
// Cycle: default -> auto-edit -> yolo -> default
|
||||||
|
default: 'auto-edit',
|
||||||
|
'auto-edit': 'yolo',
|
||||||
|
plan: 'yolo',
|
||||||
|
yolo: 'default',
|
||||||
|
};
|
||||||
|
|
||||||
// Current mode update (sent by agent when mode changes)
|
// Current mode update (sent by agent when mode changes)
|
||||||
export interface CurrentModeUpdate extends BaseSessionUpdate {
|
export interface CurrentModeUpdate extends BaseSessionUpdate {
|
||||||
update: {
|
update: {
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ import {
|
|||||||
import { InputForm } from './components/layout/InputForm.js';
|
import { InputForm } from './components/layout/InputForm.js';
|
||||||
import { SessionSelector } from './components/layout/SessionSelector.js';
|
import { SessionSelector } from './components/layout/SessionSelector.js';
|
||||||
import { FileIcon, UserIcon } from './components/icons/index.js';
|
import { FileIcon, UserIcon } from './components/icons/index.js';
|
||||||
import { ApprovalMode } from '../types/acpTypes.js';
|
import { ApprovalMode, NEXT_APPROVAL_MODE } from '../types/acpTypes.js';
|
||||||
import type { ApprovalModeValue } from '../types/acpTypes.js';
|
import type { ApprovalModeValue } from '../types/acpTypes.js';
|
||||||
import type { PlanEntry } from '../types/chatTypes.js';
|
import type { PlanEntry } from '../types/chatTypes.js';
|
||||||
|
|
||||||
@@ -464,17 +464,11 @@ export const App: React.FC = () => {
|
|||||||
});
|
});
|
||||||
}, [vscode]);
|
}, [vscode]);
|
||||||
|
|
||||||
// Handle toggle edit mode (Default -> Auto-edit -> Plan -> YOLO -> Default)
|
// Handle toggle edit mode (Default -> Auto-edit -> YOLO -> Default)
|
||||||
const handleToggleEditMode = useCallback(() => {
|
const handleToggleEditMode = useCallback(() => {
|
||||||
setEditMode((prev) => {
|
setEditMode((prev) => {
|
||||||
const next: ApprovalModeValue =
|
const next: ApprovalModeValue = NEXT_APPROVAL_MODE[prev];
|
||||||
prev === ApprovalMode.DEFAULT
|
|
||||||
? ApprovalMode.AUTO_EDIT
|
|
||||||
: prev === ApprovalMode.AUTO_EDIT
|
|
||||||
? ApprovalMode.PLAN
|
|
||||||
: prev === ApprovalMode.PLAN
|
|
||||||
? ApprovalMode.YOLO
|
|
||||||
: ApprovalMode.DEFAULT;
|
|
||||||
// Notify extension to set approval mode via ACP
|
// Notify extension to set approval mode via ACP
|
||||||
try {
|
try {
|
||||||
vscode.postMessage({
|
vscode.postMessage({
|
||||||
@@ -661,9 +655,6 @@ export const App: React.FC = () => {
|
|||||||
<>
|
<>
|
||||||
{/* Render all messages and tool calls */}
|
{/* Render all messages and tool calls */}
|
||||||
{renderMessages()}
|
{renderMessages()}
|
||||||
|
|
||||||
{/* Changed to push each plan as a historical toolcall in useWebViewMessages to avoid duplicate display of the latest block */}
|
|
||||||
|
|
||||||
{messageHandling.isWaitingForResponse &&
|
{messageHandling.isWaitingForResponse &&
|
||||||
messageHandling.loadingMessage && (
|
messageHandling.loadingMessage && (
|
||||||
<WaitingMessage
|
<WaitingMessage
|
||||||
|
|||||||
Reference in New Issue
Block a user