wave-code 0.0.4 → 0.0.5

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.
Files changed (78) hide show
  1. package/dist/components/InputBox.d.ts.map +1 -1
  2. package/dist/components/InputBox.js +69 -95
  3. package/dist/components/MessageList.d.ts.map +1 -1
  4. package/dist/components/MessageList.js +2 -1
  5. package/dist/components/SubagentBlock.d.ts +1 -1
  6. package/dist/components/SubagentBlock.d.ts.map +1 -1
  7. package/dist/components/SubagentBlock.js +12 -2
  8. package/dist/components/ToolResultDisplay.js +1 -1
  9. package/dist/contexts/useChat.d.ts +2 -1
  10. package/dist/contexts/useChat.d.ts.map +1 -1
  11. package/dist/contexts/useChat.js +18 -0
  12. package/dist/hooks/useInputManager.d.ts +91 -0
  13. package/dist/hooks/useInputManager.d.ts.map +1 -0
  14. package/dist/hooks/useInputManager.js +319 -0
  15. package/dist/index.js +9 -9
  16. package/dist/managers/InputManager.d.ts +169 -0
  17. package/dist/managers/InputManager.d.ts.map +1 -0
  18. package/dist/managers/InputManager.js +806 -0
  19. package/dist/print-cli.d.ts +7 -0
  20. package/dist/print-cli.d.ts.map +1 -0
  21. package/dist/{plain-cli.js → print-cli.js} +21 -2
  22. package/dist/utils/constants.d.ts +1 -1
  23. package/dist/utils/constants.js +1 -1
  24. package/dist/utils/fileSearch.d.ts +20 -0
  25. package/dist/utils/fileSearch.d.ts.map +1 -0
  26. package/dist/utils/fileSearch.js +102 -0
  27. package/dist/utils/logger.js +3 -3
  28. package/dist/utils/usageSummary.d.ts +27 -0
  29. package/dist/utils/usageSummary.d.ts.map +1 -0
  30. package/dist/utils/usageSummary.js +82 -0
  31. package/package.json +2 -2
  32. package/src/components/InputBox.tsx +114 -153
  33. package/src/components/MessageList.tsx +14 -10
  34. package/src/components/SubagentBlock.tsx +14 -3
  35. package/src/components/ToolResultDisplay.tsx +1 -1
  36. package/src/contexts/useChat.tsx +23 -0
  37. package/src/hooks/useInputManager.ts +443 -0
  38. package/src/index.ts +9 -9
  39. package/src/managers/InputManager.ts +1102 -0
  40. package/src/{plain-cli.ts → print-cli.ts} +21 -3
  41. package/src/utils/constants.ts +1 -1
  42. package/src/utils/fileSearch.ts +133 -0
  43. package/src/utils/logger.ts +3 -3
  44. package/src/utils/usageSummary.ts +125 -0
  45. package/dist/hooks/useBashHistorySelector.d.ts +0 -15
  46. package/dist/hooks/useBashHistorySelector.d.ts.map +0 -1
  47. package/dist/hooks/useBashHistorySelector.js +0 -61
  48. package/dist/hooks/useCommandSelector.d.ts +0 -24
  49. package/dist/hooks/useCommandSelector.d.ts.map +0 -1
  50. package/dist/hooks/useCommandSelector.js +0 -98
  51. package/dist/hooks/useFileSelector.d.ts +0 -16
  52. package/dist/hooks/useFileSelector.d.ts.map +0 -1
  53. package/dist/hooks/useFileSelector.js +0 -174
  54. package/dist/hooks/useImageManager.d.ts +0 -13
  55. package/dist/hooks/useImageManager.d.ts.map +0 -1
  56. package/dist/hooks/useImageManager.js +0 -46
  57. package/dist/hooks/useInputHistory.d.ts +0 -11
  58. package/dist/hooks/useInputHistory.d.ts.map +0 -1
  59. package/dist/hooks/useInputHistory.js +0 -64
  60. package/dist/hooks/useInputKeyboardHandler.d.ts +0 -83
  61. package/dist/hooks/useInputKeyboardHandler.d.ts.map +0 -1
  62. package/dist/hooks/useInputKeyboardHandler.js +0 -507
  63. package/dist/hooks/useInputState.d.ts +0 -14
  64. package/dist/hooks/useInputState.d.ts.map +0 -1
  65. package/dist/hooks/useInputState.js +0 -57
  66. package/dist/hooks/useMemoryTypeSelector.d.ts +0 -9
  67. package/dist/hooks/useMemoryTypeSelector.d.ts.map +0 -1
  68. package/dist/hooks/useMemoryTypeSelector.js +0 -27
  69. package/dist/plain-cli.d.ts +0 -7
  70. package/dist/plain-cli.d.ts.map +0 -1
  71. package/src/hooks/useBashHistorySelector.ts +0 -77
  72. package/src/hooks/useCommandSelector.ts +0 -131
  73. package/src/hooks/useFileSelector.ts +0 -227
  74. package/src/hooks/useImageManager.ts +0 -64
  75. package/src/hooks/useInputHistory.ts +0 -74
  76. package/src/hooks/useInputKeyboardHandler.ts +0 -778
  77. package/src/hooks/useInputState.ts +0 -66
  78. package/src/hooks/useMemoryTypeSelector.ts +0 -40
@@ -0,0 +1,319 @@
1
+ import { useEffect, useRef, useState, useCallback } from "react";
2
+ import { InputManager, } from "../managers/InputManager.js";
3
+ export const useInputManager = (callbacks = {}) => {
4
+ const managerRef = useRef(null);
5
+ // React state that mirrors InputManager state
6
+ const [inputText, setInputText] = useState("");
7
+ const [cursorPosition, setCursorPosition] = useState(0);
8
+ const [fileSelectorState, setFileSelectorState] = useState({
9
+ show: false,
10
+ files: [],
11
+ query: "",
12
+ position: -1,
13
+ });
14
+ const [commandSelectorState, setCommandSelectorState] = useState({
15
+ show: false,
16
+ query: "",
17
+ position: -1,
18
+ });
19
+ const [bashHistorySelectorState, setBashHistorySelectorState] = useState({
20
+ show: false,
21
+ query: "",
22
+ position: -1,
23
+ });
24
+ const [memoryTypeSelectorState, setMemoryTypeSelectorState] = useState({
25
+ show: false,
26
+ message: "",
27
+ });
28
+ const [showBashManager, setShowBashManager] = useState(false);
29
+ const [showMcpManager, setShowMcpManager] = useState(false);
30
+ const [attachedImages, setAttachedImages] = useState([]);
31
+ // Create InputManager on mount and update callbacks when they change
32
+ useEffect(() => {
33
+ if (!managerRef.current) {
34
+ // Create InputManager on first mount
35
+ const manager = new InputManager({
36
+ onInputTextChange: setInputText,
37
+ onCursorPositionChange: setCursorPosition,
38
+ onFileSelectorStateChange: (show, files, query, position) => {
39
+ setFileSelectorState({ show, files, query, position });
40
+ },
41
+ onCommandSelectorStateChange: (show, query, position) => {
42
+ setCommandSelectorState({ show, query, position });
43
+ },
44
+ onBashHistorySelectorStateChange: (show, query, position) => {
45
+ setBashHistorySelectorState({ show, query, position });
46
+ },
47
+ onMemoryTypeSelectorStateChange: (show, message) => {
48
+ setMemoryTypeSelectorState({ show, message });
49
+ },
50
+ onBashManagerStateChange: (show) => {
51
+ setShowBashManager(show);
52
+ },
53
+ onMcpManagerStateChange: (show) => {
54
+ setShowMcpManager(show);
55
+ },
56
+ onImagesStateChange: setAttachedImages,
57
+ ...callbacks,
58
+ });
59
+ managerRef.current = manager;
60
+ }
61
+ else {
62
+ // Update callbacks on existing manager
63
+ managerRef.current.updateCallbacks({
64
+ onInputTextChange: setInputText,
65
+ onCursorPositionChange: setCursorPosition,
66
+ onFileSelectorStateChange: (show, files, query, position) => {
67
+ setFileSelectorState({ show, files, query, position });
68
+ },
69
+ onCommandSelectorStateChange: (show, query, position) => {
70
+ setCommandSelectorState({ show, query, position });
71
+ },
72
+ onBashHistorySelectorStateChange: (show, query, position) => {
73
+ setBashHistorySelectorState({ show, query, position });
74
+ },
75
+ onMemoryTypeSelectorStateChange: (show, message) => {
76
+ setMemoryTypeSelectorState({ show, message });
77
+ },
78
+ onBashManagerStateChange: (show) => {
79
+ setShowBashManager(show);
80
+ },
81
+ onMcpManagerStateChange: (show) => {
82
+ setShowMcpManager(show);
83
+ },
84
+ onImagesStateChange: setAttachedImages,
85
+ ...callbacks,
86
+ });
87
+ }
88
+ }, [callbacks]);
89
+ // Cleanup on unmount
90
+ useEffect(() => {
91
+ return () => {
92
+ if (managerRef.current) {
93
+ managerRef.current.destroy();
94
+ }
95
+ };
96
+ }, []);
97
+ // Expose manager methods
98
+ const insertTextAtCursor = useCallback((text, callback) => {
99
+ managerRef.current?.insertTextAtCursor(text, callback);
100
+ }, []);
101
+ const deleteCharAtCursor = useCallback((callback) => {
102
+ managerRef.current?.deleteCharAtCursor(callback);
103
+ }, []);
104
+ const clearInput = useCallback(() => {
105
+ managerRef.current?.clearInput();
106
+ }, []);
107
+ const moveCursorLeft = useCallback(() => {
108
+ managerRef.current?.moveCursorLeft();
109
+ }, []);
110
+ const moveCursorRight = useCallback(() => {
111
+ managerRef.current?.moveCursorRight();
112
+ }, []);
113
+ const moveCursorToStart = useCallback(() => {
114
+ managerRef.current?.moveCursorToStart();
115
+ }, []);
116
+ const moveCursorToEnd = useCallback(() => {
117
+ managerRef.current?.moveCursorToEnd();
118
+ }, []);
119
+ // File selector methods
120
+ const activateFileSelector = useCallback((position) => {
121
+ managerRef.current?.activateFileSelector(position);
122
+ }, []);
123
+ const handleFileSelect = useCallback((filePath) => {
124
+ return (managerRef.current?.handleFileSelect(filePath) || {
125
+ newInput: inputText,
126
+ newCursorPosition: cursorPosition,
127
+ });
128
+ }, [inputText, cursorPosition]);
129
+ const handleCancelFileSelect = useCallback(() => {
130
+ managerRef.current?.handleCancelFileSelect();
131
+ }, []);
132
+ const updateFileSearchQuery = useCallback((query) => {
133
+ managerRef.current?.updateFileSearchQuery(query);
134
+ }, []);
135
+ const checkForAtDeletion = useCallback((cursorPos) => {
136
+ return managerRef.current?.checkForAtDeletion(cursorPos) || false;
137
+ }, []);
138
+ // Command selector methods
139
+ const activateCommandSelector = useCallback((position) => {
140
+ managerRef.current?.activateCommandSelector(position);
141
+ }, []);
142
+ const handleCommandSelect = useCallback((command) => {
143
+ return (managerRef.current?.handleCommandSelect(command) || {
144
+ newInput: inputText,
145
+ newCursorPosition: cursorPosition,
146
+ });
147
+ }, [inputText, cursorPosition]);
148
+ const handleCommandInsert = useCallback((command) => {
149
+ return (managerRef.current?.handleCommandInsert(command) || {
150
+ newInput: inputText,
151
+ newCursorPosition: cursorPosition,
152
+ });
153
+ }, [inputText, cursorPosition]);
154
+ const handleCancelCommandSelect = useCallback(() => {
155
+ managerRef.current?.handleCancelCommandSelect();
156
+ }, []);
157
+ const updateCommandSearchQuery = useCallback((query) => {
158
+ managerRef.current?.updateCommandSearchQuery(query);
159
+ }, []);
160
+ const checkForSlashDeletion = useCallback((cursorPos) => {
161
+ return managerRef.current?.checkForSlashDeletion(cursorPos) || false;
162
+ }, []);
163
+ // Bash history selector methods
164
+ const activateBashHistorySelector = useCallback((position) => {
165
+ managerRef.current?.activateBashHistorySelector(position);
166
+ }, []);
167
+ const handleBashHistorySelect = useCallback((command) => {
168
+ return (managerRef.current?.handleBashHistorySelect(command) || {
169
+ newInput: inputText,
170
+ newCursorPosition: cursorPosition,
171
+ });
172
+ }, [inputText, cursorPosition]);
173
+ const handleCancelBashHistorySelect = useCallback(() => {
174
+ managerRef.current?.handleCancelBashHistorySelect();
175
+ }, []);
176
+ const updateBashHistorySearchQuery = useCallback((query) => {
177
+ managerRef.current?.updateBashHistorySearchQuery(query);
178
+ }, []);
179
+ const handleBashHistoryExecute = useCallback((command) => {
180
+ return managerRef.current?.handleBashHistoryExecute(command) || command;
181
+ }, []);
182
+ const checkForExclamationDeletion = useCallback((cursorPos) => {
183
+ return managerRef.current?.checkForExclamationDeletion(cursorPos) || false;
184
+ }, []);
185
+ // Memory type selector methods
186
+ const activateMemoryTypeSelector = useCallback((message) => {
187
+ managerRef.current?.activateMemoryTypeSelector(message);
188
+ }, []);
189
+ const handleMemoryTypeSelect = useCallback((type) => {
190
+ managerRef.current?.handleMemoryTypeSelect(type);
191
+ }, []);
192
+ const handleCancelMemoryTypeSelect = useCallback(() => {
193
+ managerRef.current?.handleCancelMemoryTypeSelect();
194
+ }, []);
195
+ // Input history methods
196
+ const setUserInputHistory = useCallback((history) => {
197
+ managerRef.current?.setUserInputHistory(history);
198
+ }, []);
199
+ const navigateHistory = useCallback((direction, currentInput) => {
200
+ return (managerRef.current?.navigateHistory(direction, currentInput) || {
201
+ newInput: currentInput,
202
+ newCursorPosition: currentInput.length,
203
+ });
204
+ }, []);
205
+ const resetHistoryNavigation = useCallback(() => {
206
+ managerRef.current?.resetHistoryNavigation();
207
+ }, []);
208
+ // Special character handling
209
+ const handleSpecialCharInput = useCallback((char) => {
210
+ managerRef.current?.handleSpecialCharInput(char);
211
+ }, []);
212
+ // Direct state access methods (for compatibility with existing code)
213
+ const setInputTextDirect = useCallback((text) => {
214
+ managerRef.current?.setInputText(text);
215
+ }, []);
216
+ const setCursorPositionDirect = useCallback((position) => {
217
+ managerRef.current?.setCursorPosition(position);
218
+ }, []);
219
+ return {
220
+ // State
221
+ inputText,
222
+ cursorPosition,
223
+ showFileSelector: fileSelectorState.show,
224
+ filteredFiles: fileSelectorState.files,
225
+ fileSearchQuery: fileSelectorState.query,
226
+ atPosition: fileSelectorState.position,
227
+ showCommandSelector: commandSelectorState.show,
228
+ commandSearchQuery: commandSelectorState.query,
229
+ slashPosition: commandSelectorState.position,
230
+ showBashHistorySelector: bashHistorySelectorState.show,
231
+ bashHistorySearchQuery: bashHistorySelectorState.query,
232
+ exclamationPosition: bashHistorySelectorState.position,
233
+ showMemoryTypeSelector: memoryTypeSelectorState.show,
234
+ memoryMessage: memoryTypeSelectorState.message,
235
+ showBashManager,
236
+ showMcpManager,
237
+ attachedImages,
238
+ // Methods
239
+ insertTextAtCursor,
240
+ deleteCharAtCursor,
241
+ clearInput,
242
+ moveCursorLeft,
243
+ moveCursorRight,
244
+ moveCursorToStart,
245
+ moveCursorToEnd,
246
+ // File selector
247
+ activateFileSelector,
248
+ handleFileSelect,
249
+ handleCancelFileSelect,
250
+ updateFileSearchQuery,
251
+ checkForAtDeletion,
252
+ // Command selector
253
+ activateCommandSelector,
254
+ handleCommandSelect,
255
+ handleCommandInsert,
256
+ handleCancelCommandSelect,
257
+ updateCommandSearchQuery,
258
+ checkForSlashDeletion,
259
+ // Bash history selector
260
+ activateBashHistorySelector,
261
+ handleBashHistorySelect,
262
+ handleCancelBashHistorySelect,
263
+ updateBashHistorySearchQuery,
264
+ handleBashHistoryExecute,
265
+ checkForExclamationDeletion,
266
+ // Memory type selector
267
+ activateMemoryTypeSelector,
268
+ handleMemoryTypeSelect,
269
+ handleCancelMemoryTypeSelect,
270
+ // Input history
271
+ setUserInputHistory,
272
+ navigateHistory,
273
+ resetHistoryNavigation,
274
+ // Special handling
275
+ handleSpecialCharInput,
276
+ // Bash/MCP Manager
277
+ setShowBashManager: useCallback((show) => {
278
+ managerRef.current?.setShowBashManager(show);
279
+ }, []),
280
+ setShowMcpManager: useCallback((show) => {
281
+ managerRef.current?.setShowMcpManager(show);
282
+ }, []),
283
+ // Image management
284
+ addImage: useCallback((imagePath, mimeType) => {
285
+ return managerRef.current?.addImage(imagePath, mimeType);
286
+ }, []),
287
+ removeImage: useCallback((imageId) => {
288
+ managerRef.current?.removeImage(imageId);
289
+ }, []),
290
+ clearImages: useCallback(() => {
291
+ managerRef.current?.clearImages();
292
+ }, []),
293
+ handlePasteImage: useCallback(async () => {
294
+ return (await managerRef.current?.handlePasteImage()) || false;
295
+ }, []),
296
+ // Paste and text handling
297
+ handlePasteInput: useCallback((input) => {
298
+ managerRef.current?.handlePasteInput(input);
299
+ }, []),
300
+ handleSubmit: useCallback(async (attachedImages, isLoading = false, isCommandRunning = false) => {
301
+ await managerRef.current?.handleSubmit(attachedImages, isLoading, isCommandRunning);
302
+ }, []),
303
+ expandLongTextPlaceholders: useCallback((text) => {
304
+ return managerRef.current?.expandLongTextPlaceholders(text) || text;
305
+ }, []),
306
+ clearLongTextMap: useCallback(() => {
307
+ managerRef.current?.clearLongTextMap();
308
+ }, []),
309
+ // Main input handler
310
+ handleInput: useCallback(async (input, key, attachedImages, isLoading = false, isCommandRunning = false, clearImages) => {
311
+ return ((await managerRef.current?.handleInput(input, key, attachedImages, isLoading, isCommandRunning, clearImages)) || false);
312
+ }, []),
313
+ // Direct state setters (for React compatibility)
314
+ setInputText: setInputTextDirect,
315
+ setCursorPosition: setCursorPositionDirect,
316
+ // Manager reference for advanced usage
317
+ manager: managerRef.current,
318
+ };
319
+ };
package/dist/index.js CHANGED
@@ -15,9 +15,9 @@ export async function main() {
15
15
  description: "Continue from last session",
16
16
  type: "boolean",
17
17
  })
18
- .option("plain", {
18
+ .option("print", {
19
19
  alias: "p",
20
- description: "Plain mode with message to send",
20
+ description: "Print response without interactive mode",
21
21
  type: "string",
22
22
  })
23
23
  .option("list-sessions", {
@@ -29,8 +29,8 @@ export async function main() {
29
29
  .example("$0", "Start CLI with default settings")
30
30
  .example("$0 --restore session_123", "Restore specific session")
31
31
  .example("$0 --continue", "Continue from last session")
32
- .example("$0 --plain 'Hello'", "Send message in plain mode")
33
- .example("$0 -p 'Hello'", "Send message in plain mode (short)")
32
+ .example("$0 --print 'Hello'", "Send message in print mode")
33
+ .example("$0 -p 'Hello'", "Send message in print mode (short)")
34
34
  .example("$0 --list-sessions", "List all available sessions")
35
35
  .help("h")
36
36
  .parseAsync();
@@ -62,13 +62,13 @@ export async function main() {
62
62
  process.exit(1);
63
63
  }
64
64
  }
65
- // Handle plain mode directly
66
- if (argv.plain !== undefined) {
67
- const { startPlainCli } = await import("./plain-cli.js");
68
- return startPlainCli({
65
+ // Handle print mode directly
66
+ if (argv.print !== undefined) {
67
+ const { startPrintCli } = await import("./print-cli.js");
68
+ return startPrintCli({
69
69
  restoreSessionId: argv.restore,
70
70
  continueLastSession: argv.continue,
71
- message: argv.plain,
71
+ message: argv.print,
72
72
  });
73
73
  }
74
74
  await startCli({
@@ -0,0 +1,169 @@
1
+ import { FileItem } from "../components/FileSelector.js";
2
+ import type { Key } from "ink";
3
+ export interface AttachedImage {
4
+ id: number;
5
+ path: string;
6
+ mimeType: string;
7
+ }
8
+ export interface InputManagerCallbacks {
9
+ onInputTextChange?: (text: string) => void;
10
+ onCursorPositionChange?: (position: number) => void;
11
+ onFileSelectorStateChange?: (show: boolean, files: FileItem[], query: string, position: number) => void;
12
+ onCommandSelectorStateChange?: (show: boolean, query: string, position: number) => void;
13
+ onBashHistorySelectorStateChange?: (show: boolean, query: string, position: number) => void;
14
+ onMemoryTypeSelectorStateChange?: (show: boolean, message: string) => void;
15
+ onShowBashManager?: () => void;
16
+ onShowMcpManager?: () => void;
17
+ onBashManagerStateChange?: (show: boolean) => void;
18
+ onMcpManagerStateChange?: (show: boolean) => void;
19
+ onImagesStateChange?: (images: AttachedImage[]) => void;
20
+ onSendMessage?: (content: string, images?: Array<{
21
+ path: string;
22
+ mimeType: string;
23
+ }>) => void | Promise<void>;
24
+ onHasSlashCommand?: (commandId: string) => boolean;
25
+ onSaveMemory?: (message: string, type: "project" | "user") => Promise<void>;
26
+ onAbortMessage?: () => void;
27
+ onResetHistoryNavigation?: () => void;
28
+ }
29
+ export declare class InputManager {
30
+ private inputText;
31
+ private cursorPosition;
32
+ private showFileSelector;
33
+ private atPosition;
34
+ private fileSearchQuery;
35
+ private filteredFiles;
36
+ private fileSearchDebounceTimer;
37
+ private showCommandSelector;
38
+ private slashPosition;
39
+ private commandSearchQuery;
40
+ private showBashHistorySelector;
41
+ private exclamationPosition;
42
+ private bashHistorySearchQuery;
43
+ private showMemoryTypeSelector;
44
+ private memoryMessage;
45
+ private userInputHistory;
46
+ private historyIndex;
47
+ private historyBuffer;
48
+ private pasteDebounceTimer;
49
+ private pasteBuffer;
50
+ private initialPasteCursorPosition;
51
+ private isPasting;
52
+ private longTextCounter;
53
+ private longTextMap;
54
+ private attachedImages;
55
+ private imageIdCounter;
56
+ private showBashManager;
57
+ private showMcpManager;
58
+ private selectorJustUsed;
59
+ private callbacks;
60
+ constructor(callbacks?: InputManagerCallbacks);
61
+ updateCallbacks(callbacks: Partial<InputManagerCallbacks>): void;
62
+ getInputText(): string;
63
+ setInputText(text: string): void;
64
+ getCursorPosition(): number;
65
+ setCursorPosition(position: number): void;
66
+ insertTextAtCursor(text: string, callback?: (newText: string, newCursorPosition: number) => void): void;
67
+ deleteCharAtCursor(callback?: (newText: string, newCursorPosition: number) => void): void;
68
+ clearInput(): void;
69
+ moveCursorLeft(): void;
70
+ moveCursorRight(): void;
71
+ moveCursorToStart(): void;
72
+ moveCursorToEnd(): void;
73
+ private searchFiles;
74
+ private debouncedSearchFiles;
75
+ activateFileSelector(position: number): void;
76
+ updateFileSearchQuery(query: string): void;
77
+ handleFileSelect(filePath: string): {
78
+ newInput: string;
79
+ newCursorPosition: number;
80
+ };
81
+ handleCancelFileSelect(): void;
82
+ checkForAtDeletion(cursorPosition: number): boolean;
83
+ activateCommandSelector(position: number): void;
84
+ updateCommandSearchQuery(query: string): void;
85
+ handleCommandSelect(command: string): {
86
+ newInput: string;
87
+ newCursorPosition: number;
88
+ };
89
+ handleCommandInsert(command: string): {
90
+ newInput: string;
91
+ newCursorPosition: number;
92
+ };
93
+ handleCancelCommandSelect(): void;
94
+ checkForSlashDeletion(cursorPosition: number): boolean;
95
+ activateBashHistorySelector(position: number): void;
96
+ updateBashHistorySearchQuery(query: string): void;
97
+ handleBashHistorySelect(command: string): {
98
+ newInput: string;
99
+ newCursorPosition: number;
100
+ };
101
+ handleCancelBashHistorySelect(): void;
102
+ handleBashHistoryExecute(command: string): string;
103
+ checkForExclamationDeletion(cursorPosition: number): boolean;
104
+ activateMemoryTypeSelector(message: string): void;
105
+ handleMemoryTypeSelect(type: "project" | "user"): void;
106
+ handleCancelMemoryTypeSelect(): void;
107
+ setUserInputHistory(history: string[]): void;
108
+ navigateHistory(direction: "up" | "down", currentInput: string): {
109
+ newInput: string;
110
+ newCursorPosition: number;
111
+ };
112
+ resetHistoryNavigation(): void;
113
+ isFileSelectorActive(): boolean;
114
+ isCommandSelectorActive(): boolean;
115
+ isBashHistorySelectorActive(): boolean;
116
+ isMemoryTypeSelectorActive(): boolean;
117
+ getFileSelectorState(): {
118
+ show: boolean;
119
+ files: FileItem[];
120
+ query: string;
121
+ position: number;
122
+ };
123
+ getCommandSelectorState(): {
124
+ show: boolean;
125
+ query: string;
126
+ position: number;
127
+ };
128
+ getBashHistorySelectorState(): {
129
+ show: boolean;
130
+ query: string;
131
+ position: number;
132
+ };
133
+ getMemoryTypeSelectorState(): {
134
+ show: boolean;
135
+ message: string;
136
+ };
137
+ handleSpecialCharInput(char: string): void;
138
+ generateCompressedText(originalText: string): string;
139
+ expandLongTextPlaceholders(text: string): string;
140
+ clearLongTextMap(): void;
141
+ handlePasteInput(input: string): void;
142
+ addImage(imagePath: string, mimeType: string): AttachedImage;
143
+ removeImage(imageId: number): void;
144
+ clearImages(): void;
145
+ getAttachedImages(): AttachedImage[];
146
+ handlePasteImage(): Promise<boolean>;
147
+ getShowBashManager(): boolean;
148
+ setShowBashManager(show: boolean): void;
149
+ getShowMcpManager(): boolean;
150
+ setShowMcpManager(show: boolean): void;
151
+ handleSubmit(attachedImages: Array<{
152
+ id: number;
153
+ path: string;
154
+ mimeType: string;
155
+ }>, isLoading?: boolean, isCommandRunning?: boolean): Promise<void>;
156
+ handleSelectorInput(input: string, key: Key): boolean;
157
+ handleNormalInput(input: string, key: Key, attachedImages: Array<{
158
+ id: number;
159
+ path: string;
160
+ mimeType: string;
161
+ }>, isLoading?: boolean, isCommandRunning?: boolean, clearImages?: () => void): Promise<boolean>;
162
+ handleInput(input: string, key: Key, attachedImages: Array<{
163
+ id: number;
164
+ path: string;
165
+ mimeType: string;
166
+ }>, isLoading?: boolean, isCommandRunning?: boolean, clearImages?: () => void): Promise<boolean>;
167
+ destroy(): void;
168
+ }
169
+ //# sourceMappingURL=InputManager.d.ts.map
@@ -0,0 +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;AAGzD,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,gCAAgC,CAAC,EAAE,CACjC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,KACb,IAAI,CAAC;IACV,+BAA+B,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,wBAAwB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACxD,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,KAC/C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;CACvC;AAED,qBAAa,YAAY;IAEvB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,cAAc,CAAa;IAGnC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,uBAAuB,CAA+B;IAG9D,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,kBAAkB,CAAc;IAGxC,OAAO,CAAC,uBAAuB,CAAkB;IACjD,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,sBAAsB,CAAc;IAG5C,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,aAAa,CAAc;IAGnC,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAc;IAGnC,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,0BAA0B,CAAa;IAC/C,OAAO,CAAC,SAAS,CAAkB;IAGnC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,WAAW,CAAkC;IAGrD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAa;IAGnC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,gBAAgB,CAAkB;IAE1C,OAAO,CAAC,SAAS,CAAwB;gBAE7B,SAAS,GAAE,qBAA0B;IAKjD,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAKzD,YAAY,IAAI,MAAM;IAItB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhC,iBAAiB,IAAI,MAAM;IAI3B,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQzC,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI,GAC9D,IAAI;IAeP,kBAAkB,CAChB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,KAAK,IAAI,GAC9D,IAAI;IAiBP,UAAU,IAAI,IAAI;IAOlB,cAAc,IAAI,IAAI;IAItB,eAAe,IAAI,IAAI;IAIvB,iBAAiB,IAAI,IAAI;IAIzB,eAAe,IAAI,IAAI;YAKT,WAAW;IAsBzB,OAAO,CAAC,oBAAoB;IAc5B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAiB5C,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IA4BD,sBAAsB,IAAI,IAAI;IAS9B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IASnD,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ/C,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS7C,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;QACpC,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IAyDD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;QACpC,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IA0BD,yBAAyB,IAAI,IAAI;IAQjC,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAStD,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQnD,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASjD,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;QACxC,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IA6BD,6BAA6B,IAAI,IAAI;IAQrC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAUjD,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAY5D,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOjD,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI;IAStD,4BAA4B,IAAI,IAAI;IAQpC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAI5C,eAAe,CACb,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,YAAY,EAAE,MAAM,GACnB;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE;IA+ClD,sBAAsB,IAAI,IAAI;IAM9B,oBAAoB,IAAI,OAAO;IAI/B,uBAAuB,IAAI,OAAO;IAIlC,2BAA2B,IAAI,OAAO;IAItC,0BAA0B,IAAI,OAAO;IAIrC,oBAAoB;;;;;;IASpB,uBAAuB;;;;;IAQvB,2BAA2B;;;;;IAQ3B,0BAA0B;;;;IAQ1B,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmC1C,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAOpD,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgBhD,gBAAgB,IAAI,IAAI;IAKxB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoErC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa;IAY5D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlC,WAAW,IAAI,IAAI;IAKnB,iBAAiB,IAAI,aAAa,EAAE;IAI9B,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAsB1C,kBAAkB,IAAI,OAAO;IAI7B,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKvC,iBAAiB,IAAI,OAAO;IAI5B,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAMhC,YAAY,CAChB,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EACrE,SAAS,GAAE,OAAe,EAC1B,gBAAgB,GAAE,OAAe,GAChC,OAAO,CAAC,IAAI,CAAC;IA+ChB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO;IA4C/C,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,GAAG,EACR,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EACrE,SAAS,GAAE,OAAe,EAC1B,gBAAgB,GAAE,OAAe,EACjC,WAAW,CAAC,EAAE,MAAM,IAAI,GACvB,OAAO,CAAC,OAAO,CAAC;IAwGb,WAAW,CACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,GAAG,EACR,cAAc,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,EACrE,SAAS,GAAE,OAAe,EAC1B,gBAAgB,GAAE,OAAe,EACjC,WAAW,CAAC,EAAE,MAAM,IAAI,GACvB,OAAO,CAAC,OAAO,CAAC;IA4CnB,OAAO,IAAI,IAAI;CAUhB"}