wave-code 0.5.0 → 0.6.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/components/BackgroundTaskManager.d.ts +6 -0
- package/dist/components/BackgroundTaskManager.d.ts.map +1 -0
- package/dist/components/{TaskManager.js → BackgroundTaskManager.js} +1 -1
- package/dist/components/ChatInterface.d.ts.map +1 -1
- package/dist/components/ChatInterface.js +55 -5
- package/dist/components/CommandSelector.d.ts.map +1 -1
- package/dist/components/CommandSelector.js +10 -2
- package/dist/components/CompressDisplay.d.ts.map +1 -1
- package/dist/components/CompressDisplay.js +6 -10
- package/dist/components/ConfirmationDetails.d.ts +9 -0
- package/dist/components/ConfirmationDetails.d.ts.map +1 -0
- package/dist/components/ConfirmationDetails.js +53 -0
- package/dist/components/{Confirmation.d.ts → ConfirmationSelector.d.ts} +3 -3
- package/dist/components/ConfirmationSelector.d.ts.map +1 -0
- package/dist/components/{Confirmation.js → ConfirmationSelector.js} +34 -96
- package/dist/components/DiffDisplay.d.ts.map +1 -1
- package/dist/components/DiffDisplay.js +44 -1
- package/dist/components/FileSelector.d.ts.map +1 -1
- package/dist/components/FileSelector.js +2 -2
- package/dist/components/HistorySearch.d.ts.map +1 -1
- package/dist/components/HistorySearch.js +12 -4
- package/dist/components/InputBox.d.ts +1 -2
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +5 -9
- package/dist/components/LoadingIndicator.d.ts +11 -0
- package/dist/components/LoadingIndicator.d.ts.map +1 -0
- package/dist/components/LoadingIndicator.js +6 -0
- package/dist/components/Markdown.d.ts.map +1 -1
- package/dist/components/Markdown.js +114 -121
- package/dist/components/MessageItem.d.ts.map +1 -1
- package/dist/components/MessageItem.js +1 -2
- package/dist/components/MessageList.d.ts +2 -3
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +7 -7
- package/dist/components/PlanDisplay.d.ts.map +1 -1
- package/dist/components/PlanDisplay.js +4 -12
- package/dist/components/SubagentBlock.d.ts.map +1 -1
- package/dist/components/SubagentBlock.js +9 -6
- package/dist/components/TaskList.d.ts +3 -0
- package/dist/components/TaskList.d.ts.map +1 -0
- package/dist/components/TaskList.js +49 -0
- package/dist/components/ToolResultDisplay.js +1 -1
- package/dist/contexts/useChat.d.ts +5 -2
- package/dist/contexts/useChat.d.ts.map +1 -1
- package/dist/contexts/useChat.js +25 -25
- package/dist/hooks/useInputManager.d.ts +2 -7
- package/dist/hooks/useInputManager.d.ts.map +1 -1
- package/dist/hooks/useInputManager.js +8 -40
- package/dist/hooks/useTasks.d.ts +2 -0
- package/dist/hooks/useTasks.d.ts.map +1 -0
- package/dist/hooks/useTasks.js +5 -0
- package/dist/managers/InputManager.d.ts +4 -19
- package/dist/managers/InputManager.d.ts.map +1 -1
- package/dist/managers/InputManager.js +22 -65
- package/package.json +5 -6
- package/src/components/{TaskManager.tsx → BackgroundTaskManager.tsx} +4 -2
- package/src/components/ChatInterface.tsx +100 -20
- package/src/components/CommandSelector.tsx +35 -17
- package/src/components/CompressDisplay.tsx +5 -22
- package/src/components/ConfirmationDetails.tsx +108 -0
- package/src/components/{Confirmation.tsx → ConfirmationSelector.tsx} +69 -184
- package/src/components/DiffDisplay.tsx +62 -1
- package/src/components/FileSelector.tsx +0 -2
- package/src/components/HistorySearch.tsx +45 -21
- package/src/components/InputBox.tsx +9 -24
- package/src/components/LoadingIndicator.tsx +56 -0
- package/src/components/Markdown.tsx +126 -323
- package/src/components/MessageItem.tsx +1 -3
- package/src/components/MessageList.tsx +10 -67
- package/src/components/PlanDisplay.tsx +4 -27
- package/src/components/SubagentBlock.tsx +25 -16
- package/src/components/TaskList.tsx +70 -0
- package/src/components/ToolResultDisplay.tsx +2 -2
- package/src/contexts/useChat.tsx +38 -33
- package/src/hooks/useInputManager.ts +9 -47
- package/src/hooks/useTasks.ts +6 -0
- package/src/managers/InputManager.ts +25 -83
- package/dist/components/Confirmation.d.ts.map +0 -1
- package/dist/components/MemoryDisplay.d.ts +0 -8
- package/dist/components/MemoryDisplay.d.ts.map +0 -1
- package/dist/components/MemoryDisplay.js +0 -25
- package/dist/components/MemoryTypeSelector.d.ts +0 -8
- package/dist/components/MemoryTypeSelector.d.ts.map +0 -1
- package/dist/components/MemoryTypeSelector.js +0 -38
- package/dist/components/TaskManager.d.ts +0 -6
- package/dist/components/TaskManager.d.ts.map +0 -1
- package/src/components/MemoryDisplay.tsx +0 -62
- package/src/components/MemoryTypeSelector.tsx +0 -98
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useChat } from "../contexts/useChat.js";
|
|
3
|
+
import { Box, Text, useStdout } from "ink";
|
|
4
|
+
import { useTasks } from "../hooks/useTasks.js";
|
|
5
|
+
export const TaskList = () => {
|
|
6
|
+
const tasks = useTasks();
|
|
7
|
+
const { isTaskListVisible } = useChat();
|
|
8
|
+
const { stdout } = useStdout();
|
|
9
|
+
const terminalWidth = stdout?.columns ?? 80;
|
|
10
|
+
const maxSubjectWidth = Math.max(20, terminalWidth - 10);
|
|
11
|
+
if (tasks.length === 0 || !isTaskListVisible) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const getStatusIcon = (status, isBlocked) => {
|
|
15
|
+
if (isBlocked) {
|
|
16
|
+
return _jsx(Text, { color: "red", children: "\uD83D\uDD12" });
|
|
17
|
+
}
|
|
18
|
+
switch (status) {
|
|
19
|
+
case "pending":
|
|
20
|
+
return _jsx(Text, { color: "gray", children: "\u25CB" });
|
|
21
|
+
case "in_progress":
|
|
22
|
+
return _jsx(Text, { color: "yellow", children: "\u25CF" });
|
|
23
|
+
case "completed":
|
|
24
|
+
return _jsx(Text, { color: "green", children: "\u2713" });
|
|
25
|
+
case "deleted":
|
|
26
|
+
return _jsx(Text, { color: "red", children: "\u2715" });
|
|
27
|
+
default:
|
|
28
|
+
return _jsx(Text, { color: "gray", children: "?" });
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const truncate = (text, maxWidth) => {
|
|
32
|
+
if (text.length <= maxWidth) {
|
|
33
|
+
return text;
|
|
34
|
+
}
|
|
35
|
+
return text.slice(0, maxWidth - 3) + "...";
|
|
36
|
+
};
|
|
37
|
+
return (_jsx(Box, { flexDirection: "column", children: tasks.map((task) => {
|
|
38
|
+
const isDimmed = task.status === "completed" || task.status === "deleted";
|
|
39
|
+
const isBlocked = task.blockedBy && task.blockedBy.length > 0;
|
|
40
|
+
const blockingTaskIds = isBlocked
|
|
41
|
+
? task.blockedBy.map((id) => `#${id}`)
|
|
42
|
+
: [];
|
|
43
|
+
const blockedByText = isBlocked && blockingTaskIds.length > 0
|
|
44
|
+
? ` (Blocked by: ${blockingTaskIds.join(", ")})`
|
|
45
|
+
: "";
|
|
46
|
+
const fullText = `${task.subject}${blockedByText}`;
|
|
47
|
+
return (_jsxs(Box, { gap: 1, children: [getStatusIcon(task.status, isBlocked), _jsx(Text, { dimColor: isDimmed, children: truncate(fullText, maxSubjectWidth) })] }, task.id));
|
|
48
|
+
}) }));
|
|
49
|
+
};
|
|
@@ -50,5 +50,5 @@ export const ToolResultDisplay = ({ block, isExpanded = false, }) => {
|
|
|
50
50
|
return null;
|
|
51
51
|
};
|
|
52
52
|
const shortResult = getShortResult();
|
|
53
|
-
return (_jsxs(Box, { flexDirection: "column",
|
|
53
|
+
return (_jsxs(Box, { flexDirection: "column", 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: "gray", 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 }))] }));
|
|
54
54
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type { Message, McpServerStatus, BackgroundTask, SlashCommand, PermissionDecision, PermissionMode } from "wave-agent-sdk";
|
|
2
|
+
import type { Message, McpServerStatus, BackgroundTask, Task, SlashCommand, PermissionDecision, PermissionMode } from "wave-agent-sdk";
|
|
3
3
|
export interface ChatContextType {
|
|
4
4
|
messages: Message[];
|
|
5
5
|
isLoading: boolean;
|
|
@@ -7,6 +7,8 @@ export interface ChatContextType {
|
|
|
7
7
|
isCompressing: boolean;
|
|
8
8
|
userInputHistory: string[];
|
|
9
9
|
isExpanded: boolean;
|
|
10
|
+
isTaskListVisible: boolean;
|
|
11
|
+
setIsTaskListVisible: (visible: boolean) => void;
|
|
10
12
|
sessionId: string;
|
|
11
13
|
sendMessage: (content: string, images?: Array<{
|
|
12
14
|
path: string;
|
|
@@ -14,11 +16,11 @@ export interface ChatContextType {
|
|
|
14
16
|
}>) => Promise<void>;
|
|
15
17
|
abortMessage: () => void;
|
|
16
18
|
latestTotalTokens: number;
|
|
17
|
-
saveMemory: (message: string, type: "project" | "user") => Promise<void>;
|
|
18
19
|
mcpServers: McpServerStatus[];
|
|
19
20
|
connectMcpServer: (serverName: string) => Promise<boolean>;
|
|
20
21
|
disconnectMcpServer: (serverName: string) => Promise<boolean>;
|
|
21
22
|
backgroundTasks: BackgroundTask[];
|
|
23
|
+
sessionTasks: Task[];
|
|
22
24
|
getBackgroundTaskOutput: (taskId: string) => {
|
|
23
25
|
stdout: string;
|
|
24
26
|
stderr: string;
|
|
@@ -28,6 +30,7 @@ export interface ChatContextType {
|
|
|
28
30
|
slashCommands: SlashCommand[];
|
|
29
31
|
hasSlashCommand: (commandId: string) => boolean;
|
|
30
32
|
subagentMessages: Record<string, Message[]>;
|
|
33
|
+
subagentLatestTokens: Record<string, number>;
|
|
31
34
|
permissionMode: PermissionMode;
|
|
32
35
|
setPermissionMode: (mode: PermissionMode) => void;
|
|
33
36
|
isConfirmationVisible: boolean;
|
|
@@ -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,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACf,MAAM,gBAAgB,CAAC;AAUxB,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,UAAU,EAAE,OAAO,CAAC;
|
|
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
|
@@ -17,6 +17,7 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
17
17
|
const { restoreSessionId, continueLastSession } = useAppConfig();
|
|
18
18
|
// Message Display State
|
|
19
19
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
20
|
+
const [isTaskListVisible, setIsTaskListVisible] = useState(true);
|
|
20
21
|
// AI State
|
|
21
22
|
const [messages, setMessages] = useState([]);
|
|
22
23
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -29,10 +30,13 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
29
30
|
const [mcpServers, setMcpServers] = useState([]);
|
|
30
31
|
// Background tasks state
|
|
31
32
|
const [backgroundTasks, setBackgroundTasks] = useState([]);
|
|
33
|
+
// Session tasks state
|
|
34
|
+
const [sessionTasks, setSessionTasks] = useState([]);
|
|
32
35
|
// Command state
|
|
33
36
|
const [slashCommands, setSlashCommands] = useState([]);
|
|
34
37
|
// Subagent messages state
|
|
35
38
|
const [subagentMessages, setSubagentMessages] = useState({});
|
|
39
|
+
const [subagentLatestTokens, setSubagentLatestTokens] = useState({});
|
|
36
40
|
// Permission state
|
|
37
41
|
const [permissionMode, setPermissionModeState] = useState("default");
|
|
38
42
|
// Confirmation state with queue-based architecture
|
|
@@ -69,9 +73,7 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
69
73
|
setMcpServers([...servers]);
|
|
70
74
|
},
|
|
71
75
|
onSessionIdChange: (sessionId) => {
|
|
72
|
-
|
|
73
|
-
setSessionId(sessionId);
|
|
74
|
-
});
|
|
76
|
+
setSessionId(sessionId);
|
|
75
77
|
},
|
|
76
78
|
onLatestTotalTokensChange: (tokens) => {
|
|
77
79
|
setlatestTotalTokens(tokens);
|
|
@@ -85,6 +87,9 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
85
87
|
onTasksChange: (tasks) => {
|
|
86
88
|
setBackgroundTasks([...tasks]);
|
|
87
89
|
},
|
|
90
|
+
onSessionTasksChange: (tasks) => {
|
|
91
|
+
setSessionTasks([...tasks]);
|
|
92
|
+
},
|
|
88
93
|
onSubagentMessagesChange: (subagentId, messages) => {
|
|
89
94
|
logger.debug("onSubagentMessagesChange", subagentId, messages.length);
|
|
90
95
|
setSubagentMessages((prev) => ({
|
|
@@ -92,6 +97,12 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
92
97
|
[subagentId]: [...messages],
|
|
93
98
|
}));
|
|
94
99
|
},
|
|
100
|
+
onSubagentLatestTotalTokensChange: (subagentId, tokens) => {
|
|
101
|
+
setSubagentLatestTokens((prev) => ({
|
|
102
|
+
...prev,
|
|
103
|
+
[subagentId]: tokens,
|
|
104
|
+
}));
|
|
105
|
+
},
|
|
95
106
|
onPermissionModeChange: (mode) => {
|
|
96
107
|
setPermissionModeState(mode);
|
|
97
108
|
},
|
|
@@ -179,15 +190,6 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
179
190
|
if (!hasTextContent && !hasImageAttachments)
|
|
180
191
|
return;
|
|
181
192
|
try {
|
|
182
|
-
// Handle memory mode - check if it's a memory message (starts with # and only one line)
|
|
183
|
-
if (content.startsWith("#") && !content.includes("\n")) {
|
|
184
|
-
const memoryText = content.substring(1).trim();
|
|
185
|
-
if (!memoryText)
|
|
186
|
-
return;
|
|
187
|
-
// In memory mode, don't add user message, only wait for user to choose memory type then add assistant message
|
|
188
|
-
// Don't auto-save, wait for user to choose memory type
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
193
|
// Handle bash mode - check if it's a bash command (starts with ! and only one line)
|
|
192
194
|
if (content.startsWith("!") && !content.includes("\n")) {
|
|
193
195
|
const command = content.substring(1).trim();
|
|
@@ -227,10 +229,6 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
227
229
|
const abortMessage = useCallback(() => {
|
|
228
230
|
agentRef.current?.abortMessage();
|
|
229
231
|
}, []);
|
|
230
|
-
// Memory save function - delegate to Agent
|
|
231
|
-
const saveMemory = useCallback(async (message, type) => {
|
|
232
|
-
await agentRef.current?.saveMemory(message, type);
|
|
233
|
-
}, []);
|
|
234
232
|
// Permission management methods
|
|
235
233
|
const setPermissionMode = useCallback((mode) => {
|
|
236
234
|
setPermissionModeState((prev) => {
|
|
@@ -309,9 +307,7 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
309
307
|
try {
|
|
310
308
|
await agentRef.current.truncateHistory(index);
|
|
311
309
|
// Clear terminal screen after rewind
|
|
312
|
-
|
|
313
|
-
setRewindId((prev) => prev + 1);
|
|
314
|
-
});
|
|
310
|
+
setRewindId((prev) => prev + 1);
|
|
315
311
|
}
|
|
316
312
|
catch (error) {
|
|
317
313
|
logger.error("Failed to rewind:", error);
|
|
@@ -322,13 +318,14 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
322
318
|
useInput((input, key) => {
|
|
323
319
|
if (key.ctrl && input === "o") {
|
|
324
320
|
// Clear terminal screen when expanded state changes
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
return newExpanded;
|
|
329
|
-
});
|
|
321
|
+
setIsExpanded((prev) => {
|
|
322
|
+
const newExpanded = !prev;
|
|
323
|
+
return newExpanded;
|
|
330
324
|
});
|
|
331
325
|
}
|
|
326
|
+
if (key.ctrl && input === "t") {
|
|
327
|
+
setIsTaskListVisible((prev) => !prev);
|
|
328
|
+
}
|
|
332
329
|
// Handle ESC key to cancel confirmation
|
|
333
330
|
if (key.escape && isConfirmationVisible) {
|
|
334
331
|
handleConfirmationCancel();
|
|
@@ -340,21 +337,24 @@ export const ChatProvider = ({ children, bypassPermissions, pluginDirs, }) => {
|
|
|
340
337
|
isCommandRunning,
|
|
341
338
|
userInputHistory,
|
|
342
339
|
isExpanded,
|
|
340
|
+
isTaskListVisible,
|
|
341
|
+
setIsTaskListVisible,
|
|
343
342
|
sessionId,
|
|
344
343
|
sendMessage,
|
|
345
344
|
abortMessage,
|
|
346
345
|
latestTotalTokens,
|
|
347
346
|
isCompressing,
|
|
348
|
-
saveMemory,
|
|
349
347
|
mcpServers,
|
|
350
348
|
connectMcpServer,
|
|
351
349
|
disconnectMcpServer,
|
|
352
350
|
backgroundTasks,
|
|
351
|
+
sessionTasks,
|
|
353
352
|
getBackgroundTaskOutput,
|
|
354
353
|
stopBackgroundTask,
|
|
355
354
|
slashCommands,
|
|
356
355
|
hasSlashCommand,
|
|
357
356
|
subagentMessages,
|
|
357
|
+
subagentLatestTokens,
|
|
358
358
|
permissionMode,
|
|
359
359
|
setPermissionMode,
|
|
360
360
|
isConfirmationVisible,
|
|
@@ -14,9 +14,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
14
14
|
slashPosition: number;
|
|
15
15
|
showHistorySearch: boolean;
|
|
16
16
|
historySearchQuery: string;
|
|
17
|
-
|
|
18
|
-
memoryMessage: string;
|
|
19
|
-
showTaskManager: boolean;
|
|
17
|
+
showBackgroundTaskManager: boolean;
|
|
20
18
|
showMcpManager: boolean;
|
|
21
19
|
showRewindManager: boolean;
|
|
22
20
|
permissionMode: PermissionMode;
|
|
@@ -51,9 +49,6 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
51
49
|
checkForSlashDeletion: (cursorPos: number) => boolean;
|
|
52
50
|
handleHistorySearchSelect: (prompt: string) => void;
|
|
53
51
|
handleCancelHistorySearch: () => void;
|
|
54
|
-
activateMemoryTypeSelector: (message: string) => void;
|
|
55
|
-
handleMemoryTypeSelect: (type: "project" | "user") => Promise<void>;
|
|
56
|
-
handleCancelMemoryTypeSelect: () => void;
|
|
57
52
|
setUserInputHistory: (history: string[]) => void;
|
|
58
53
|
navigateHistory: (direction: "up" | "down", currentInput: string) => {
|
|
59
54
|
newInput: string;
|
|
@@ -61,7 +56,7 @@ export declare const useInputManager: (callbacks?: Partial<InputManagerCallbacks
|
|
|
61
56
|
};
|
|
62
57
|
resetHistoryNavigation: () => void;
|
|
63
58
|
handleSpecialCharInput: (char: string) => void;
|
|
64
|
-
|
|
59
|
+
setShowBackgroundTaskManager: (show: boolean) => void;
|
|
65
60
|
setShowMcpManager: (show: boolean) => void;
|
|
66
61
|
setShowRewindManager: (show: boolean) => void;
|
|
67
62
|
setPermissionMode: (mode: PermissionMode) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM
|
|
1
|
+
{"version":3,"file":"useInputManager.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,eAAe,GAC1B,YAAW,OAAO,CAAC,qBAAqB,CAAM;;;;;;;;;;;;;;;;;;+BAiHpC,MAAM,aACD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;oCAQrD,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI;;;;;;qCA2Bd,MAAM;iCAK7C,MAAM;;;;;mCAe+B,MAAM;oCAIL,MAAM;wCAKF,MAAM;mCAKjD,MAAM;;;;mCAYN,MAAM;;;;;sCAemC,MAAM;uCAIL,MAAM;wCAKL,MAAM;;mCASX,MAAM,EAAE;iCAK5C,IAAI,GAAG,MAAM,gBAAgB,MAAM;;;;;mCAgBC,MAAM;yCAuEL,OAAO;8BAGlB,OAAO;iCAGJ,OAAO;8BAIV,cAAc;0BAMlB,MAAM,YAAY,MAAM;2BAGvB,MAAM;;;8BAWH,MAAM;mCAKxB,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO;uCAUkB,MAAM;;yBAU1C,MAAM,OACR,GAAG,kBACQ,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,cAC1D,OAAO,qBACA,OAAO,gBACX,MAAM,IAAI;yBAhIgB,MAAM;kCAIG,MAAM;;CAmJ9D,CAAC"}
|
|
@@ -22,11 +22,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
22
22
|
show: false,
|
|
23
23
|
query: "",
|
|
24
24
|
});
|
|
25
|
-
const [
|
|
26
|
-
show: false,
|
|
27
|
-
message: "",
|
|
28
|
-
});
|
|
29
|
-
const [showTaskManager, setShowTaskManager] = useState(false);
|
|
25
|
+
const [showBackgroundTaskManager, setShowBackgroundTaskManager] = useState(false);
|
|
30
26
|
const [showMcpManager, setShowMcpManager] = useState(false);
|
|
31
27
|
const [showRewindManager, setShowRewindManager] = useState(false);
|
|
32
28
|
const [permissionMode, setPermissionModeState] = useState("default");
|
|
@@ -48,11 +44,8 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
48
44
|
onHistorySearchStateChange: (show, query) => {
|
|
49
45
|
setHistorySearchState({ show, query });
|
|
50
46
|
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
},
|
|
54
|
-
onTaskManagerStateChange: (show) => {
|
|
55
|
-
setShowTaskManager(show);
|
|
47
|
+
onBackgroundTaskManagerStateChange: (show) => {
|
|
48
|
+
setShowBackgroundTaskManager(show);
|
|
56
49
|
},
|
|
57
50
|
onMcpManagerStateChange: (show) => {
|
|
58
51
|
setShowMcpManager(show);
|
|
@@ -65,9 +58,6 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
65
58
|
callbacks.onPermissionModeChange?.(mode);
|
|
66
59
|
},
|
|
67
60
|
onImagesStateChange: setAttachedImages,
|
|
68
|
-
onShowTaskManager: () => setShowTaskManager(true),
|
|
69
|
-
onShowMcpManager: () => setShowMcpManager(true),
|
|
70
|
-
onShowRewindManager: () => setShowRewindManager(true),
|
|
71
61
|
...callbacks,
|
|
72
62
|
});
|
|
73
63
|
managerRef.current = manager;
|
|
@@ -88,11 +78,8 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
88
78
|
onHistorySearchStateChange: (show, query) => {
|
|
89
79
|
setHistorySearchState({ show, query });
|
|
90
80
|
},
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
onTaskManagerStateChange: (show) => {
|
|
95
|
-
setShowTaskManager(show);
|
|
81
|
+
onBackgroundTaskManagerStateChange: (show) => {
|
|
82
|
+
setShowBackgroundTaskManager(show);
|
|
96
83
|
},
|
|
97
84
|
onMcpManagerStateChange: (show) => {
|
|
98
85
|
setShowMcpManager(show);
|
|
@@ -105,9 +92,6 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
105
92
|
callbacks.onPermissionModeChange?.(mode);
|
|
106
93
|
},
|
|
107
94
|
onImagesStateChange: setAttachedImages,
|
|
108
|
-
onShowTaskManager: () => setShowTaskManager(true),
|
|
109
|
-
onShowMcpManager: () => setShowMcpManager(true),
|
|
110
|
-
onShowRewindManager: () => setShowRewindManager(true),
|
|
111
95
|
...callbacks,
|
|
112
96
|
});
|
|
113
97
|
}
|
|
@@ -193,16 +177,6 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
193
177
|
const handleCancelHistorySearch = useCallback(() => {
|
|
194
178
|
managerRef.current?.handleCancelHistorySearch();
|
|
195
179
|
}, []);
|
|
196
|
-
// Memory type selector methods
|
|
197
|
-
const activateMemoryTypeSelector = useCallback((message) => {
|
|
198
|
-
managerRef.current?.activateMemoryTypeSelector(message);
|
|
199
|
-
}, []);
|
|
200
|
-
const handleMemoryTypeSelect = useCallback(async (type) => {
|
|
201
|
-
await managerRef.current?.handleMemoryTypeSelect(type);
|
|
202
|
-
}, []);
|
|
203
|
-
const handleCancelMemoryTypeSelect = useCallback(() => {
|
|
204
|
-
managerRef.current?.handleCancelMemoryTypeSelect();
|
|
205
|
-
}, []);
|
|
206
180
|
// Input history methods
|
|
207
181
|
const setUserInputHistory = useCallback((history) => {
|
|
208
182
|
managerRef.current?.setUserInputHistory(history);
|
|
@@ -241,9 +215,7 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
241
215
|
slashPosition: commandSelectorState.position,
|
|
242
216
|
showHistorySearch: historySearchState.show,
|
|
243
217
|
historySearchQuery: historySearchState.query,
|
|
244
|
-
|
|
245
|
-
memoryMessage: memoryTypeSelectorState.message,
|
|
246
|
-
showTaskManager,
|
|
218
|
+
showBackgroundTaskManager,
|
|
247
219
|
showMcpManager,
|
|
248
220
|
showRewindManager,
|
|
249
221
|
permissionMode,
|
|
@@ -273,10 +245,6 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
273
245
|
// History search
|
|
274
246
|
handleHistorySearchSelect,
|
|
275
247
|
handleCancelHistorySearch,
|
|
276
|
-
// Memory type selector
|
|
277
|
-
activateMemoryTypeSelector,
|
|
278
|
-
handleMemoryTypeSelect,
|
|
279
|
-
handleCancelMemoryTypeSelect,
|
|
280
248
|
// Input history
|
|
281
249
|
setUserInputHistory,
|
|
282
250
|
navigateHistory,
|
|
@@ -284,8 +252,8 @@ export const useInputManager = (callbacks = {}) => {
|
|
|
284
252
|
// Special handling
|
|
285
253
|
handleSpecialCharInput,
|
|
286
254
|
// Bash/MCP Manager
|
|
287
|
-
|
|
288
|
-
managerRef.current?.
|
|
255
|
+
setShowBackgroundTaskManager: useCallback((show) => {
|
|
256
|
+
managerRef.current?.setShowBackgroundTaskManager(show);
|
|
289
257
|
}, []),
|
|
290
258
|
setShowMcpManager: useCallback((show) => {
|
|
291
259
|
managerRef.current?.setShowMcpManager(show);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTasks.d.ts","sourceRoot":"","sources":["../../src/hooks/useTasks.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,uCAGpB,CAAC"}
|
|
@@ -12,12 +12,8 @@ export interface InputManagerCallbacks {
|
|
|
12
12
|
onFileSelectorStateChange?: (show: boolean, files: FileItem[], query: string, position: number) => void;
|
|
13
13
|
onCommandSelectorStateChange?: (show: boolean, query: string, position: number) => void;
|
|
14
14
|
onHistorySearchStateChange?: (show: boolean, query: string) => void;
|
|
15
|
-
|
|
16
|
-
onShowTaskManager?: () => void;
|
|
17
|
-
onTaskManagerStateChange?: (show: boolean) => void;
|
|
18
|
-
onShowMcpManager?: () => void;
|
|
15
|
+
onBackgroundTaskManagerStateChange?: (show: boolean) => void;
|
|
19
16
|
onMcpManagerStateChange?: (show: boolean) => void;
|
|
20
|
-
onShowRewindManager?: () => void;
|
|
21
17
|
onRewindManagerStateChange?: (show: boolean) => void;
|
|
22
18
|
onImagesStateChange?: (images: AttachedImage[]) => void;
|
|
23
19
|
onSendMessage?: (content: string, images?: Array<{
|
|
@@ -25,7 +21,6 @@ export interface InputManagerCallbacks {
|
|
|
25
21
|
mimeType: string;
|
|
26
22
|
}>) => void | Promise<void>;
|
|
27
23
|
onHasSlashCommand?: (commandId: string) => boolean;
|
|
28
|
-
onSaveMemory?: (message: string, type: "project" | "user") => Promise<void>;
|
|
29
24
|
onAbortMessage?: () => void;
|
|
30
25
|
onBackgroundCurrentTask?: () => void;
|
|
31
26
|
onResetHistoryNavigation?: () => void;
|
|
@@ -45,8 +40,6 @@ export declare class InputManager {
|
|
|
45
40
|
private commandSearchQuery;
|
|
46
41
|
private showHistorySearch;
|
|
47
42
|
private historySearchQuery;
|
|
48
|
-
private showMemoryTypeSelector;
|
|
49
|
-
private memoryMessage;
|
|
50
43
|
private userInputHistory;
|
|
51
44
|
private historyIndex;
|
|
52
45
|
private historyBuffer;
|
|
@@ -58,7 +51,7 @@ export declare class InputManager {
|
|
|
58
51
|
private longTextMap;
|
|
59
52
|
private attachedImages;
|
|
60
53
|
private imageIdCounter;
|
|
61
|
-
private
|
|
54
|
+
private showBackgroundTaskManager;
|
|
62
55
|
private showMcpManager;
|
|
63
56
|
private showRewindManager;
|
|
64
57
|
private permissionMode;
|
|
@@ -100,9 +93,6 @@ export declare class InputManager {
|
|
|
100
93
|
};
|
|
101
94
|
handleCancelCommandSelect(): void;
|
|
102
95
|
checkForSlashDeletion(cursorPosition: number): boolean;
|
|
103
|
-
activateMemoryTypeSelector(message: string): void;
|
|
104
|
-
handleMemoryTypeSelect(type: "project" | "user"): Promise<void>;
|
|
105
|
-
handleCancelMemoryTypeSelect(): void;
|
|
106
96
|
setUserInputHistory(history: string[]): void;
|
|
107
97
|
navigateHistory(direction: "up" | "down", currentInput: string): {
|
|
108
98
|
newInput: string;
|
|
@@ -111,7 +101,6 @@ export declare class InputManager {
|
|
|
111
101
|
resetHistoryNavigation(): void;
|
|
112
102
|
isFileSelectorActive(): boolean;
|
|
113
103
|
isCommandSelectorActive(): boolean;
|
|
114
|
-
isMemoryTypeSelectorActive(): boolean;
|
|
115
104
|
getFileSelectorState(): {
|
|
116
105
|
show: boolean;
|
|
117
106
|
files: FileItem[];
|
|
@@ -123,10 +112,6 @@ export declare class InputManager {
|
|
|
123
112
|
query: string;
|
|
124
113
|
position: number;
|
|
125
114
|
};
|
|
126
|
-
getMemoryTypeSelectorState(): {
|
|
127
|
-
show: boolean;
|
|
128
|
-
message: string;
|
|
129
|
-
};
|
|
130
115
|
private updateSearchQueriesForActiveSelectors;
|
|
131
116
|
handleSpecialCharInput(char: string): void;
|
|
132
117
|
generateCompressedText(originalText: string): string;
|
|
@@ -138,8 +123,8 @@ export declare class InputManager {
|
|
|
138
123
|
clearImages(): void;
|
|
139
124
|
getAttachedImages(): AttachedImage[];
|
|
140
125
|
handlePasteImage(): Promise<boolean>;
|
|
141
|
-
|
|
142
|
-
|
|
126
|
+
getShowBackgroundTaskManager(): boolean;
|
|
127
|
+
setShowBackgroundTaskManager(show: boolean): void;
|
|
143
128
|
getShowMcpManager(): boolean;
|
|
144
129
|
setShowMcpManager(show: boolean): void;
|
|
145
130
|
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
|
|
1
|
+
{"version":3,"file":"InputManager.d.ts","sourceRoot":"","sources":["../../src/managers/InputManager.ts"],"names":[],"mappings":"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"}
|