wave-code 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/plugin/uninstall.js +1 -1
- package/dist/components/CommandSelector.js +3 -3
- package/dist/components/Confirmation.d.ts.map +1 -1
- package/dist/components/Confirmation.js +72 -19
- package/dist/components/DiffDisplay.d.ts +0 -1
- package/dist/components/DiffDisplay.d.ts.map +1 -1
- package/dist/components/DiffDisplay.js +38 -59
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +6 -5
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/Markdown.js +2 -1
- package/dist/components/PlanDisplay.d.ts.map +1 -1
- package/dist/components/PlanDisplay.js +2 -2
- package/dist/components/PluginDetail.js +1 -1
- package/dist/components/SubagentBlock.d.ts.map +1 -1
- package/dist/components/SubagentBlock.js +4 -0
- package/dist/components/TaskManager.d.ts +6 -0
- package/dist/components/TaskManager.d.ts.map +1 -0
- package/dist/components/TaskManager.js +114 -0
- package/dist/components/ToolResultDisplay.d.ts.map +1 -1
- package/dist/components/ToolResultDisplay.js +2 -1
- package/dist/contexts/useChat.d.ts +5 -4
- package/dist/contexts/useChat.d.ts.map +1 -1
- package/dist/contexts/useChat.js +16 -12
- package/dist/hooks/useInputManager.d.ts +2 -2
- package/dist/hooks/useInputManager.js +10 -10
- package/dist/hooks/usePluginManager.d.ts.map +1 -1
- package/dist/hooks/usePluginManager.js +8 -4
- package/dist/managers/InputManager.d.ts +7 -6
- package/dist/managers/InputManager.d.ts.map +1 -1
- package/dist/managers/InputManager.js +17 -12
- package/package.json +6 -6
- package/src/commands/plugin/uninstall.ts +1 -1
- package/src/components/CommandSelector.tsx +3 -3
- package/src/components/Confirmation.tsx +114 -24
- package/src/components/DiffDisplay.tsx +60 -106
- package/src/components/InputBox.tsx +9 -7
- package/src/components/Markdown.tsx +7 -2
- package/src/components/PlanDisplay.tsx +14 -19
- package/src/components/PluginDetail.tsx +1 -1
- package/src/components/SubagentBlock.tsx +5 -0
- package/src/components/{BashShellManager.tsx → TaskManager.tsx} +79 -75
- package/src/components/ToolResultDisplay.tsx +4 -0
- package/src/contexts/useChat.tsx +25 -20
- package/src/hooks/useInputManager.ts +10 -10
- package/src/hooks/usePluginManager.ts +10 -4
- package/src/managers/InputManager.ts +22 -15
- package/dist/components/BashShellManager.d.ts +0 -6
- package/dist/components/BashShellManager.d.ts.map +0 -1
- package/dist/components/BashShellManager.js +0 -116
|
@@ -33,6 +33,7 @@ export const ToolResultDisplay = ({ block, isExpanded = false, }) => {
|
|
|
33
33
|
return imageCount === 1 ? "🖼️" : `🖼️×${imageCount}`;
|
|
34
34
|
};
|
|
35
35
|
const toolName = name ? String(name) : "Tool";
|
|
36
|
+
const isBackgroundable = stage === "running" && (toolName === "Bash" || toolName === "Task");
|
|
36
37
|
// Get shortResult, if not available show last 5 lines of result
|
|
37
38
|
const getShortResult = () => {
|
|
38
39
|
if (block.shortResult) {
|
|
@@ -49,5 +50,5 @@ export const ToolResultDisplay = ({ block, isExpanded = false, }) => {
|
|
|
49
50
|
return null;
|
|
50
51
|
};
|
|
51
52
|
const shortResult = getShortResult();
|
|
52
|
-
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: "magenta", children: "\uD83D\uDD27 " }), _jsx(Text, { color: "white", children: toolName }), !isExpanded && compactParams && (_jsxs(Text, { color: "gray", children: [" ", compactParams] })), _jsxs(Text, { color: getStatusColor(), children: [" ", getStatusText()] }), hasImages() && _jsxs(Text, { color: "blue", children: [" ", getImageIndicator()] })] }), !isExpanded && shortResult && !error && (_jsx(Box, { paddingLeft: 2, borderLeft: true, borderColor: "gray", flexDirection: "column", children: shortResult.split("\n").map((line, index) => (_jsx(Text, { color: "white", children: line }, index))) })), isExpanded && parameters && (_jsxs(Box, { paddingLeft: 2, borderLeft: true, borderColor: "gray", flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: "Parameters:" }), _jsx(Text, { color: "gray", children: parameters })] })), isExpanded && result && (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { paddingLeft: 2, borderLeft: true, borderColor: "green", flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: "Result:" }), _jsx(Text, { color: "white", children: result })] }) })), error && (_jsx(Box, { children: _jsxs(Text, { color: "red", children: ["Error: ", typeof error === "string" ? error : String(error)] }) })), stage === "end" && success && (_jsx(DiffDisplay, { toolName: name, parameters: parameters }))] }));
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: "magenta", children: "\uD83D\uDD27 " }), _jsx(Text, { color: "white", children: toolName }), !isExpanded && compactParams && (_jsxs(Text, { color: "gray", children: [" ", compactParams] })), _jsxs(Text, { color: getStatusColor(), children: [" ", getStatusText()] }), hasImages() && _jsxs(Text, { color: "blue", children: [" ", getImageIndicator()] }), isBackgroundable && _jsx(Text, { color: "gray", children: " [Ctrl-B] Background" })] }), !isExpanded && shortResult && !error && (_jsx(Box, { paddingLeft: 2, borderLeft: true, borderColor: "gray", flexDirection: "column", children: shortResult.split("\n").map((line, index) => (_jsx(Text, { color: "white", children: line }, index))) })), isExpanded && parameters && (_jsxs(Box, { paddingLeft: 2, borderLeft: true, borderColor: "gray", flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: "Parameters:" }), _jsx(Text, { color: "gray", children: parameters })] })), isExpanded && result && (_jsx(Box, { flexDirection: "column", children: _jsxs(Box, { paddingLeft: 2, borderLeft: true, borderColor: "green", flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: "Result:" }), _jsx(Text, { color: "white", children: result })] }) })), error && (_jsx(Box, { children: _jsxs(Text, { color: "red", children: ["Error: ", typeof error === "string" ? error : String(error)] }) })), stage === "end" && success && (_jsx(DiffDisplay, { toolName: name, parameters: parameters }))] }));
|
|
53
54
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { Message, McpServerStatus,
|
|
2
|
+
import type { Message, McpServerStatus, BackgroundTask, SlashCommand, PermissionDecision, PermissionMode } from "wave-agent-sdk";
|
|
3
3
|
export interface ChatContextType {
|
|
4
4
|
messages: Message[];
|
|
5
5
|
isLoading: boolean;
|
|
@@ -18,13 +18,13 @@ export interface ChatContextType {
|
|
|
18
18
|
mcpServers: McpServerStatus[];
|
|
19
19
|
connectMcpServer: (serverName: string) => Promise<boolean>;
|
|
20
20
|
disconnectMcpServer: (serverName: string) => Promise<boolean>;
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
backgroundTasks: BackgroundTask[];
|
|
22
|
+
getBackgroundTaskOutput: (taskId: string) => {
|
|
23
23
|
stdout: string;
|
|
24
24
|
stderr: string;
|
|
25
25
|
status: string;
|
|
26
26
|
} | null;
|
|
27
|
-
|
|
27
|
+
stopBackgroundTask: (taskId: string) => boolean;
|
|
28
28
|
slashCommands: SlashCommand[];
|
|
29
29
|
hasSlashCommand: (commandId: string) => boolean;
|
|
30
30
|
subagentMessages: Record<string, Message[]>;
|
|
@@ -41,6 +41,7 @@ export interface ChatContextType {
|
|
|
41
41
|
hideConfirmation: () => void;
|
|
42
42
|
handleConfirmationDecision: (decision: PermissionDecision) => void;
|
|
43
43
|
handleConfirmationCancel: () => void;
|
|
44
|
+
backgroundCurrentTask: () => void;
|
|
44
45
|
rewindId: number;
|
|
45
46
|
handleRewindSelect: (index: number) => Promise<void>;
|
|
46
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/contexts/useChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/contexts/useChat.tsx"],"names":[],"mappings":"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"}
|
package/dist/contexts/useChat.js
CHANGED
|
@@ -27,8 +27,8 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
27
27
|
const [userInputHistory, setUserInputHistory] = useState([]);
|
|
28
28
|
// MCP State
|
|
29
29
|
const [mcpServers, setMcpServers] = useState([]);
|
|
30
|
-
// Background
|
|
31
|
-
const [
|
|
30
|
+
// Background tasks state
|
|
31
|
+
const [backgroundTasks, setBackgroundTasks] = useState([]);
|
|
32
32
|
// Command state
|
|
33
33
|
const [slashCommands, setSlashCommands] = useState([]);
|
|
34
34
|
// Subagent messages state
|
|
@@ -82,8 +82,8 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
82
82
|
onCompressionStateChange: (isCompressingState) => {
|
|
83
83
|
setIsCompressing(isCompressingState);
|
|
84
84
|
},
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
onTasksChange: (tasks) => {
|
|
86
|
+
setBackgroundTasks([...tasks]);
|
|
87
87
|
},
|
|
88
88
|
onSubagentMessagesChange: (subagentId, messages) => {
|
|
89
89
|
logger.debug("onSubagentMessagesChange", subagentId, messages.length);
|
|
@@ -249,16 +249,16 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
249
249
|
const disconnectMcpServer = useCallback(async (serverName) => {
|
|
250
250
|
return (await agentRef.current?.disconnectMcpServer(serverName)) ?? false;
|
|
251
251
|
}, []);
|
|
252
|
-
// Background
|
|
253
|
-
const
|
|
252
|
+
// Background task management methods - delegate to Agent
|
|
253
|
+
const getBackgroundTaskOutput = useCallback((taskId) => {
|
|
254
254
|
if (!agentRef.current)
|
|
255
255
|
return null;
|
|
256
|
-
return agentRef.current.
|
|
256
|
+
return agentRef.current.getBackgroundTaskOutput(taskId);
|
|
257
257
|
}, []);
|
|
258
|
-
const
|
|
258
|
+
const stopBackgroundTask = useCallback((taskId) => {
|
|
259
259
|
if (!agentRef.current)
|
|
260
260
|
return false;
|
|
261
|
-
return agentRef.current.
|
|
261
|
+
return agentRef.current.stopBackgroundTask(taskId);
|
|
262
262
|
}, []);
|
|
263
263
|
const hasSlashCommand = useCallback((commandId) => {
|
|
264
264
|
if (!agentRef.current)
|
|
@@ -301,6 +301,9 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
301
301
|
}
|
|
302
302
|
hideConfirmation();
|
|
303
303
|
}, [currentConfirmation, hideConfirmation]);
|
|
304
|
+
const backgroundCurrentTask = useCallback(() => {
|
|
305
|
+
agentRef.current?.backgroundCurrentTask();
|
|
306
|
+
}, []);
|
|
304
307
|
const handleRewindSelect = useCallback(async (index) => {
|
|
305
308
|
if (agentRef.current) {
|
|
306
309
|
try {
|
|
@@ -346,9 +349,9 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
346
349
|
mcpServers,
|
|
347
350
|
connectMcpServer,
|
|
348
351
|
disconnectMcpServer,
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
+
backgroundTasks,
|
|
353
|
+
getBackgroundTaskOutput,
|
|
354
|
+
stopBackgroundTask,
|
|
352
355
|
slashCommands,
|
|
353
356
|
hasSlashCommand,
|
|
354
357
|
subagentMessages,
|
|
@@ -360,6 +363,7 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
360
363
|
hideConfirmation,
|
|
361
364
|
handleConfirmationDecision,
|
|
362
365
|
handleConfirmationCancel,
|
|
366
|
+
backgroundCurrentTask,
|
|
363
367
|
rewindId,
|
|
364
368
|
handleRewindSelect,
|
|
365
369
|
};
|
|
@@ -16,7 +16,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
16
16
|
historySearchQuery: string;
|
|
17
17
|
showMemoryTypeSelector: boolean;
|
|
18
18
|
memoryMessage: string;
|
|
19
|
-
|
|
19
|
+
showTaskManager: boolean;
|
|
20
20
|
showMcpManager: boolean;
|
|
21
21
|
showRewindManager: boolean;
|
|
22
22
|
permissionMode: PermissionMode;
|
|
@@ -61,7 +61,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
61
61
|
};
|
|
62
62
|
resetHistoryNavigation: () => void;
|
|
63
63
|
handleSpecialCharInput: (char: string) => void;
|
|
64
|
-
|
|
64
|
+
setShowTaskManager: (show: boolean) => void;
|
|
65
65
|
setShowMcpManager: (show: boolean) => void;
|
|
66
66
|
setShowRewindManager: (show: boolean) => void;
|
|
67
67
|
setPermissionMode: (mode: PermissionMode) => void;
|
|
@@ -26,7 +26,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
26
26
|
show: false,
|
|
27
27
|
message: "",
|
|
28
28
|
});
|
|
29
|
-
const [
|
|
29
|
+
const [showTaskManager, setShowTaskManager] = useState(false);
|
|
30
30
|
const [showMcpManager, setShowMcpManager] = useState(false);
|
|
31
31
|
const [showRewindManager, setShowRewindManager] = useState(false);
|
|
32
32
|
const [permissionMode, setPermissionModeState] = useState("default");
|
|
@@ -51,8 +51,8 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
51
51
|
onMemoryTypeSelectorStateChange: (show, message) => {
|
|
52
52
|
setMemoryTypeSelectorState({ show, message });
|
|
53
53
|
},
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
onTaskManagerStateChange: (show) => {
|
|
55
|
+
setShowTaskManager(show);
|
|
56
56
|
},
|
|
57
57
|
onMcpManagerStateChange: (show) => {
|
|
58
58
|
setShowMcpManager(show);
|
|
@@ -65,7 +65,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
65
65
|
callbacks.onPermissionModeChange?.(mode);
|
|
66
66
|
},
|
|
67
67
|
onImagesStateChange: setAttachedImages,
|
|
68
|
-
|
|
68
|
+
onShowTaskManager: () => setShowTaskManager(true),
|
|
69
69
|
onShowMcpManager: () => setShowMcpManager(true),
|
|
70
70
|
onShowRewindManager: () => setShowRewindManager(true),
|
|
71
71
|
...callbacks,
|
|
@@ -91,8 +91,8 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
91
91
|
onMemoryTypeSelectorStateChange: (show, message) => {
|
|
92
92
|
setMemoryTypeSelectorState({ show, message });
|
|
93
93
|
},
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
onTaskManagerStateChange: (show) => {
|
|
95
|
+
setShowTaskManager(show);
|
|
96
96
|
},
|
|
97
97
|
onMcpManagerStateChange: (show) => {
|
|
98
98
|
setShowMcpManager(show);
|
|
@@ -105,7 +105,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
105
105
|
callbacks.onPermissionModeChange?.(mode);
|
|
106
106
|
},
|
|
107
107
|
onImagesStateChange: setAttachedImages,
|
|
108
|
-
|
|
108
|
+
onShowTaskManager: () => setShowTaskManager(true),
|
|
109
109
|
onShowMcpManager: () => setShowMcpManager(true),
|
|
110
110
|
onShowRewindManager: () => setShowRewindManager(true),
|
|
111
111
|
...callbacks,
|
|
@@ -243,7 +243,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
243
243
|
historySearchQuery: historySearchState.query,
|
|
244
244
|
showMemoryTypeSelector: memoryTypeSelectorState.show,
|
|
245
245
|
memoryMessage: memoryTypeSelectorState.message,
|
|
246
|
-
|
|
246
|
+
showTaskManager,
|
|
247
247
|
showMcpManager,
|
|
248
248
|
showRewindManager,
|
|
249
249
|
permissionMode,
|
|
@@ -284,8 +284,8 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
284
284
|
// Special handling
|
|
285
285
|
handleSpecialCharInput,
|
|
286
286
|
// Bash/MCP Manager
|
|
287
|
-
|
|
288
|
-
managerRef.current?.
|
|
287
|
+
setShowTaskManager: useCallback((show) => {
|
|
288
|
+
managerRef.current?.setShowTaskManager(show);
|
|
289
289
|
}, []),
|
|
290
290
|
setShowMcpManager: useCallback((show) => {
|
|
291
291
|
managerRef.current?.setShowMcpManager(show);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePluginManager.d.ts","sourceRoot":"","sources":["../../src/hooks/usePluginManager.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAE7C,wBAAgB,gBAAgB,IAAI,wBAAwB,
|
|
1
|
+
{"version":3,"file":"usePluginManager.d.ts","sourceRoot":"","sources":["../../src/hooks/usePluginManager.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,wBAAwB,EACzB,MAAM,qCAAqC,CAAC;AAE7C,wBAAgB,gBAAgB,IAAI,wBAAwB,CA6R3D"}
|
|
@@ -149,7 +149,8 @@ export function usePluginManager() {
|
|
|
149
149
|
}));
|
|
150
150
|
try {
|
|
151
151
|
const pluginId = `${name}@${marketplace}`;
|
|
152
|
-
|
|
152
|
+
const workdir = process.cwd();
|
|
153
|
+
await marketplaceService.installPlugin(pluginId, workdir);
|
|
153
154
|
await pluginScopeManager.enablePlugin(scope, pluginId);
|
|
154
155
|
await refresh();
|
|
155
156
|
}
|
|
@@ -169,10 +170,13 @@ export function usePluginManager() {
|
|
|
169
170
|
}));
|
|
170
171
|
try {
|
|
171
172
|
const pluginId = `${name}@${marketplace}`;
|
|
172
|
-
|
|
173
|
+
const workdir = process.cwd();
|
|
174
|
+
// 1. Remove from global registry and potentially clean up cache
|
|
175
|
+
await marketplaceService.uninstallPlugin(pluginId, workdir);
|
|
176
|
+
// 2. Find the scope where it's currently enabled and remove it from there
|
|
173
177
|
const scope = pluginScopeManager.findPluginScope(pluginId);
|
|
174
178
|
if (scope) {
|
|
175
|
-
await configurationService.removeEnabledPlugin(
|
|
179
|
+
await configurationService.removeEnabledPlugin(workdir, scope, pluginId);
|
|
176
180
|
}
|
|
177
181
|
await refresh();
|
|
178
182
|
}
|
|
@@ -183,7 +187,7 @@ export function usePluginManager() {
|
|
|
183
187
|
error: error instanceof Error ? error.message : String(error),
|
|
184
188
|
}));
|
|
185
189
|
}
|
|
186
|
-
}, [configurationService, pluginScopeManager, refresh]);
|
|
190
|
+
}, [configurationService, marketplaceService, pluginScopeManager, refresh]);
|
|
187
191
|
const updatePlugin = useCallback(async (name, marketplace) => {
|
|
188
192
|
setState((prev) => ({
|
|
189
193
|
...prev,
|
|
@@ -13,11 +13,11 @@ export interface InputManagerCallbacks {
|
|
|
13
13
|
onCommandSelectorStateChange?: (show: boolean, query: string, position: number) => void;
|
|
14
14
|
onHistorySearchStateChange?: (show: boolean, query: string) => void;
|
|
15
15
|
onMemoryTypeSelectorStateChange?: (show: boolean, message: string) => void;
|
|
16
|
-
|
|
16
|
+
onShowTaskManager?: () => void;
|
|
17
|
+
onTaskManagerStateChange?: (show: boolean) => void;
|
|
17
18
|
onShowMcpManager?: () => void;
|
|
18
|
-
onShowRewindManager?: () => void;
|
|
19
|
-
onBashManagerStateChange?: (show: boolean) => void;
|
|
20
19
|
onMcpManagerStateChange?: (show: boolean) => void;
|
|
20
|
+
onShowRewindManager?: () => void;
|
|
21
21
|
onRewindManagerStateChange?: (show: boolean) => void;
|
|
22
22
|
onImagesStateChange?: (images: AttachedImage[]) => void;
|
|
23
23
|
onSendMessage?: (content: string, images?: Array<{
|
|
@@ -27,6 +27,7 @@ export interface InputManagerCallbacks {
|
|
|
27
27
|
onHasSlashCommand?: (commandId: string) => boolean;
|
|
28
28
|
onSaveMemory?: (message: string, type: "project" | "user") => Promise<void>;
|
|
29
29
|
onAbortMessage?: () => void;
|
|
30
|
+
onBackgroundCurrentTask?: () => void;
|
|
30
31
|
onResetHistoryNavigation?: () => void;
|
|
31
32
|
onPermissionModeChange?: (mode: PermissionMode) => void;
|
|
32
33
|
logger?: Logger;
|
|
@@ -57,7 +58,7 @@ export declare class InputManager {
|
|
|
57
58
|
private longTextMap;
|
|
58
59
|
private attachedImages;
|
|
59
60
|
private imageIdCounter;
|
|
60
|
-
private
|
|
61
|
+
private showTaskManager;
|
|
61
62
|
private showMcpManager;
|
|
62
63
|
private showRewindManager;
|
|
63
64
|
private permissionMode;
|
|
@@ -137,8 +138,8 @@ export declare class InputManager {
|
|
|
137
138
|
clearImages(): void;
|
|
138
139
|
getAttachedImages(): AttachedImage[];
|
|
139
140
|
handlePasteImage(): Promise<boolean>;
|
|
140
|
-
|
|
141
|
-
|
|
141
|
+
getShowTaskManager(): boolean;
|
|
142
|
+
setShowTaskManager(show: boolean): void;
|
|
142
143
|
getShowMcpManager(): boolean;
|
|
143
144
|
setShowMcpManager(show: boolean): void;
|
|
144
145
|
getShowRewindManager(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAEL,cAAc,EACd,MAAM,EAEP,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,sBAAsB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,yBAAyB,CAAC,EAAE,CAC1B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,4BAA4B,CAAC,EAAE,CAC7B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,0BAA0B,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,+BAA+B,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ export class InputManager {
|
|
|
37
37
|
this.attachedImages = [];
|
|
38
38
|
this.imageIdCounter = 1;
|
|
39
39
|
// Additional UI state
|
|
40
|
-
this.
|
|
40
|
+
this.showTaskManager = false;
|
|
41
41
|
this.showMcpManager = false;
|
|
42
42
|
this.showRewindManager = false;
|
|
43
43
|
// Permission mode state
|
|
@@ -220,8 +220,8 @@ export class InputManager {
|
|
|
220
220
|
}
|
|
221
221
|
// If not an agent command or execution failed, check local commands
|
|
222
222
|
if (!commandExecuted) {
|
|
223
|
-
if (command === "
|
|
224
|
-
this.callbacks.
|
|
223
|
+
if (command === "tasks" && this.callbacks.onShowTaskManager) {
|
|
224
|
+
this.callbacks.onShowTaskManager();
|
|
225
225
|
commandExecuted = true;
|
|
226
226
|
}
|
|
227
227
|
else if (command === "mcp" && this.callbacks.onShowMcpManager) {
|
|
@@ -538,13 +538,13 @@ export class InputManager {
|
|
|
538
538
|
return false;
|
|
539
539
|
}
|
|
540
540
|
}
|
|
541
|
-
//
|
|
542
|
-
|
|
543
|
-
return this.
|
|
541
|
+
// Task manager state methods
|
|
542
|
+
getShowTaskManager() {
|
|
543
|
+
return this.showTaskManager;
|
|
544
544
|
}
|
|
545
|
-
|
|
546
|
-
this.
|
|
547
|
-
this.callbacks.
|
|
545
|
+
setShowTaskManager(show) {
|
|
546
|
+
this.showTaskManager = show;
|
|
547
|
+
this.callbacks.onTaskManagerStateChange?.(show);
|
|
548
548
|
}
|
|
549
549
|
getShowMcpManager() {
|
|
550
550
|
return this.showMcpManager;
|
|
@@ -734,6 +734,11 @@ export class InputManager {
|
|
|
734
734
|
this.activateHistorySearch();
|
|
735
735
|
return true;
|
|
736
736
|
}
|
|
737
|
+
// Handle Ctrl+B for backgrounding current task
|
|
738
|
+
if (key.ctrl && input === "b") {
|
|
739
|
+
this.callbacks.onBackgroundCurrentTask?.();
|
|
740
|
+
return true;
|
|
741
|
+
}
|
|
737
742
|
// Handle up/down keys for history navigation (only when no selector is active)
|
|
738
743
|
if (key.upArrow && !this.showFileSelector && !this.showCommandSelector) {
|
|
739
744
|
this.navigateHistory("up", this.inputText);
|
|
@@ -784,14 +789,14 @@ export class InputManager {
|
|
|
784
789
|
this.showCommandSelector ||
|
|
785
790
|
this.showHistorySearch ||
|
|
786
791
|
this.showMemoryTypeSelector ||
|
|
787
|
-
this.
|
|
792
|
+
this.showTaskManager ||
|
|
788
793
|
this.showMcpManager ||
|
|
789
794
|
this.showRewindManager) {
|
|
790
795
|
if (this.showMemoryTypeSelector ||
|
|
791
|
-
this.
|
|
796
|
+
this.showTaskManager ||
|
|
792
797
|
this.showMcpManager ||
|
|
793
798
|
this.showRewindManager) {
|
|
794
|
-
// Memory type selector,
|
|
799
|
+
// Memory type selector, task manager, MCP manager and Rewind don't need to handle input, handled by component itself
|
|
795
800
|
return false;
|
|
796
801
|
}
|
|
797
802
|
if (this.showHistorySearch) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wave-code",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "CLI-based code assistant powered by AI, built with React and Ink",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,19 +38,19 @@
|
|
|
38
38
|
"react": "^19.2.4",
|
|
39
39
|
"react-dom": "19.2.4",
|
|
40
40
|
"yargs": "^17.7.2",
|
|
41
|
-
"wave-agent-sdk": "0.
|
|
41
|
+
"wave-agent-sdk": "0.5.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/react": "^19.1.8",
|
|
45
45
|
"@types/yargs": "^17.0.0",
|
|
46
|
-
"@vitest/coverage-v8": "^
|
|
46
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
47
47
|
"eslint-plugin-react": "^7.37.5",
|
|
48
48
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
49
49
|
"ink-testing-library": "^4.0.0",
|
|
50
50
|
"rimraf": "^6.1.2",
|
|
51
51
|
"tsc-alias": "^1.8.16",
|
|
52
52
|
"tsx": "^4.20.4",
|
|
53
|
-
"vitest": "^
|
|
53
|
+
"vitest": "^4.0.18"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"react": ">=18.0.0"
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"build": "rimraf dist && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
65
65
|
"type-check": "tsc --noEmit --incremental",
|
|
66
66
|
"watch": "tsc -p tsconfig.build.json --watch & tsc-alias -p tsconfig.build.json --watch",
|
|
67
|
-
"test": "vitest run",
|
|
68
|
-
"test:coverage": "vitest run --coverage",
|
|
67
|
+
"test": "vitest run --reporter=dot",
|
|
68
|
+
"test:coverage": "vitest run --coverage --reporter=dot",
|
|
69
69
|
"lint": "eslint --cache",
|
|
70
70
|
"format": "prettier --write .",
|
|
71
71
|
"version:patch": "node ../../scripts/version.js patch",
|
|
@@ -10,7 +10,7 @@ export async function uninstallPluginCommand(argv: { plugin: string }) {
|
|
|
10
10
|
const workdir = process.cwd();
|
|
11
11
|
|
|
12
12
|
try {
|
|
13
|
-
await marketplaceService.uninstallPlugin(argv.plugin);
|
|
13
|
+
await marketplaceService.uninstallPlugin(argv.plugin, workdir);
|
|
14
14
|
console.log(`Successfully uninstalled plugin: ${argv.plugin}`);
|
|
15
15
|
|
|
16
16
|
const configurationService = new ConfigurationService();
|
|
@@ -4,9 +4,9 @@ import type { SlashCommand } from "wave-agent-sdk";
|
|
|
4
4
|
|
|
5
5
|
const AVAILABLE_COMMANDS: SlashCommand[] = [
|
|
6
6
|
{
|
|
7
|
-
id: "
|
|
8
|
-
name: "
|
|
9
|
-
description: "View and manage background
|
|
7
|
+
id: "tasks",
|
|
8
|
+
name: "tasks",
|
|
9
|
+
description: "View and manage background tasks (shells and subagents)",
|
|
10
10
|
handler: () => {}, // Handler here won't be used, actual processing is in the hook
|
|
11
11
|
},
|
|
12
12
|
{
|