@yeshwanthyk/coding-agent 0.3.13 → 0.3.14
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/adapters/tui/app.js +29 -17
- package/dist/adapters/tui/{app.js.map → app.jsx.map} +1 -1
- package/dist/components/Footer.js +60 -24
- package/dist/components/{Footer.js.map → Footer.jsx.map} +1 -1
- package/dist/components/Header.js +312 -96
- package/dist/components/{Header.js.map → Header.jsx.map} +1 -1
- package/dist/components/MessageList.js +393 -146
- package/dist/components/MessageList.jsx.map +1 -0
- package/dist/runtime/context.js +15 -9
- package/dist/runtime/context.jsx.map +1 -0
- package/dist/session-picker.js +123 -69
- package/dist/session-picker.jsx.map +1 -0
- package/dist/tui-open-rendering.js +716 -343
- package/dist/tui-open-rendering.jsx.map +1 -0
- package/dist/ui/app-shell/TuiApp.js +590 -441
- package/dist/ui/app-shell/{TuiApp.js.map → TuiApp.jsx.map} +1 -1
- package/dist/ui/components/modals/ConfirmModal.js +80 -23
- package/dist/ui/components/modals/ConfirmModal.jsx.map +1 -0
- package/dist/ui/components/modals/EditorModal.js +55 -15
- package/dist/ui/components/modals/EditorModal.jsx.map +1 -0
- package/dist/ui/components/modals/InputModal.js +36 -9
- package/dist/ui/components/modals/InputModal.jsx.map +1 -0
- package/dist/ui/components/modals/ModalContainer.js +72 -16
- package/dist/ui/components/modals/ModalContainer.jsx.map +1 -0
- package/dist/ui/components/modals/SelectModal.js +53 -24
- package/dist/ui/components/modals/SelectModal.jsx.map +1 -0
- package/dist/ui/features/composer/Composer.js +145 -26
- package/dist/ui/features/composer/Composer.jsx.map +1 -0
- package/dist/ui/features/main-view/MainView.js +341 -248
- package/dist/ui/features/main-view/{MainView.js.map → MainView.jsx.map} +1 -1
- package/dist/ui/features/message-pane/MessagePane.js +46 -4
- package/dist/ui/features/message-pane/MessagePane.jsx.map +1 -0
- package/package.json +2 -2
- package/dist/components/MessageList.js.map +0 -1
- package/dist/runtime/context.js.map +0 -1
- package/dist/session-picker.js.map +0 -1
- package/dist/tui-open-rendering.js.map +0 -1
- package/dist/ui/components/modals/ConfirmModal.js.map +0 -1
- package/dist/ui/components/modals/EditorModal.js.map +0 -1
- package/dist/ui/components/modals/InputModal.js.map +0 -1
- package/dist/ui/components/modals/ModalContainer.js.map +0 -1
- package/dist/ui/components/modals/SelectModal.js.map +0 -1
- package/dist/ui/features/composer/Composer.js.map +0 -1
- package/dist/ui/features/message-pane/MessagePane.js.map +0 -1
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { effect as _$effect } from "@opentui/solid";
|
|
2
|
+
import { insert as _$insert } from "@opentui/solid";
|
|
3
|
+
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
4
|
+
import { setProp as _$setProp } from "@opentui/solid";
|
|
5
|
+
import { createElement as _$createElement } from "@opentui/solid";
|
|
2
6
|
import { TextareaRenderable } from "@opentui/core";
|
|
3
7
|
import { useTerminalDimensions } from "@opentui/solid";
|
|
4
|
-
import { CombinedAutocompleteProvider, ToastViewport, copyToClipboard, useRenderer, useTheme
|
|
8
|
+
import { CombinedAutocompleteProvider, ToastViewport, copyToClipboard, useRenderer, useTheme } from "@yeshwanthyk/open-tui";
|
|
5
9
|
import { createSignal, createEffect, onMount } from "solid-js";
|
|
6
10
|
import { createAutocompleteCommands } from "../../../autocomplete-commands.js";
|
|
7
11
|
import { Footer } from "../../../components/Footer.js";
|
|
@@ -14,251 +18,340 @@ import { MessagePane } from "../message-pane/MessagePane.js";
|
|
|
14
18
|
import { Composer } from "../composer/Composer.js";
|
|
15
19
|
import { createComposerKeyboardHandler } from "../composer/keyboard.js";
|
|
16
20
|
export function MainView(props) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
21
|
+
const {
|
|
22
|
+
theme
|
|
23
|
+
} = useTheme();
|
|
24
|
+
const dimensions = useTerminalDimensions();
|
|
25
|
+
let textareaRef;
|
|
26
|
+
const lastCtrlC = {
|
|
27
|
+
current: 0
|
|
28
|
+
};
|
|
29
|
+
const branch = useGitStatus();
|
|
30
|
+
const spinnerFrame = useSpinner(() => props.activityState);
|
|
31
|
+
const renderer = useRenderer();
|
|
32
|
+
const {
|
|
33
|
+
toasts,
|
|
34
|
+
pushToast
|
|
35
|
+
} = useToastManager();
|
|
36
|
+
const shownValidationKeys = new Set();
|
|
37
|
+
createEffect(() => {
|
|
38
|
+
const issues = props.validationIssues ?? [];
|
|
39
|
+
const showList = issues.slice(0, 3);
|
|
40
|
+
for (const issue of showList) {
|
|
41
|
+
const key = `${issue.severity}:${issue.path}:${issue.message}`;
|
|
42
|
+
if (shownValidationKeys.has(key)) continue;
|
|
43
|
+
shownValidationKeys.add(key);
|
|
44
|
+
console.error(`[marvin][extension][${issue.kind}] ${issue.path}: ${issue.message}`);
|
|
45
|
+
pushToast({
|
|
46
|
+
title: issue.severity === "error" ? "Extension error" : "Extension warning",
|
|
47
|
+
message: `${issue.path}: ${issue.message}`,
|
|
48
|
+
variant: issue.severity === "error" ? "error" : "warning"
|
|
49
|
+
}, 6000);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
const {
|
|
53
|
+
openBuffer,
|
|
54
|
+
editFile
|
|
55
|
+
} = useEditorBridge({
|
|
56
|
+
editor: props.editor,
|
|
57
|
+
renderer,
|
|
58
|
+
pushToast,
|
|
59
|
+
isResponding: () => props.isResponding,
|
|
60
|
+
onSubmit: text => props.onSubmit(text)
|
|
61
|
+
});
|
|
62
|
+
const builtInAutocomplete = createAutocompleteCommands(() => ({
|
|
63
|
+
currentProvider: props.provider
|
|
64
|
+
}));
|
|
65
|
+
const customAutocomplete = Array.from(props.customCommands.values()).map(cmd => ({
|
|
66
|
+
name: cmd.name,
|
|
67
|
+
description: cmd.description
|
|
68
|
+
}));
|
|
69
|
+
const autocompleteProvider = new CombinedAutocompleteProvider([...builtInAutocomplete, ...customAutocomplete], process.cwd());
|
|
70
|
+
const [autocompleteItems, setAutocompleteItems] = createSignal([]);
|
|
71
|
+
const [autocompletePrefix, setAutocompletePrefix] = createSignal("");
|
|
72
|
+
const [autocompleteIndex, setAutocompleteIndex] = createSignal(0);
|
|
73
|
+
const [showAutocomplete, setShowAutocomplete] = createSignal(false);
|
|
74
|
+
const [isBashMode, setIsBashMode] = createSignal(false);
|
|
75
|
+
let suppressNextAutocompleteUpdate = false;
|
|
76
|
+
const updateAutocomplete = (text, cursorLine, cursorCol) => {
|
|
77
|
+
const lines = text.split("\n");
|
|
78
|
+
const currentLine = lines[cursorLine] ?? "";
|
|
79
|
+
const beforeCursor = currentLine.slice(0, cursorCol);
|
|
80
|
+
if (beforeCursor.trim() === "") {
|
|
81
|
+
setShowAutocomplete(false);
|
|
82
|
+
setAutocompleteItems([]);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const result = autocompleteProvider.getSuggestions(lines, cursorLine, cursorCol);
|
|
86
|
+
if (result && result.items.length > 0) {
|
|
87
|
+
const prevPrefix = autocompletePrefix();
|
|
88
|
+
const newItems = result.items.slice(0, 30);
|
|
89
|
+
setAutocompleteItems(newItems);
|
|
90
|
+
setAutocompletePrefix(result.prefix);
|
|
91
|
+
if (result.prefix !== prevPrefix) {
|
|
92
|
+
setAutocompleteIndex(0);
|
|
93
|
+
} else {
|
|
94
|
+
setAutocompleteIndex(i => Math.min(i, newItems.length - 1));
|
|
95
|
+
}
|
|
96
|
+
setShowAutocomplete(true);
|
|
97
|
+
} else {
|
|
98
|
+
setShowAutocomplete(false);
|
|
99
|
+
setAutocompleteItems([]);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const applyAutocomplete = () => {
|
|
103
|
+
if (!showAutocomplete() || !textareaRef) return false;
|
|
104
|
+
const items = autocompleteItems();
|
|
105
|
+
const idx = autocompleteIndex();
|
|
106
|
+
if (idx < 0 || idx >= items.length) return false;
|
|
107
|
+
const cursor = textareaRef.logicalCursor;
|
|
108
|
+
const text = textareaRef.plainText;
|
|
109
|
+
const lines = text.split("\n");
|
|
110
|
+
const result = autocompleteProvider.applyCompletion(lines, cursor.row, cursor.col, items[idx], autocompletePrefix());
|
|
111
|
+
const newText = result.lines.join("\n");
|
|
112
|
+
if (newText === text) {
|
|
113
|
+
setShowAutocomplete(false);
|
|
114
|
+
setAutocompleteItems([]);
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
suppressNextAutocompleteUpdate = true;
|
|
118
|
+
textareaRef.replaceText(newText);
|
|
119
|
+
textareaRef.editBuffer.setCursorToLineCol(result.cursorLine, result.cursorCol);
|
|
120
|
+
setShowAutocomplete(false);
|
|
121
|
+
setAutocompleteItems([]);
|
|
122
|
+
return true;
|
|
123
|
+
};
|
|
124
|
+
onMount(() => {
|
|
125
|
+
textareaRef?.focus();
|
|
126
|
+
});
|
|
127
|
+
const exitApp = async () => {
|
|
128
|
+
try {
|
|
129
|
+
renderer.destroy();
|
|
130
|
+
await props.onBeforeExit?.();
|
|
131
|
+
} finally {
|
|
132
|
+
process.exit(0);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
props.exitHandlerRef.current = exitApp;
|
|
136
|
+
props.setEditorTextRef.current = text => textareaRef?.setText(text);
|
|
137
|
+
props.getEditorTextRef.current = () => textareaRef?.plainText ?? "";
|
|
138
|
+
props.showToastRef.current = (title, message, variant = "info") => {
|
|
139
|
+
pushToast({
|
|
140
|
+
title,
|
|
141
|
+
message,
|
|
142
|
+
variant
|
|
143
|
+
}, 3000);
|
|
144
|
+
};
|
|
145
|
+
const copySelectionToClipboard = () => {
|
|
146
|
+
const sel = renderer.getSelection();
|
|
147
|
+
if (!sel) return;
|
|
148
|
+
const text = sel.getSelectedText();
|
|
149
|
+
if (!text || text.length === 0) return;
|
|
150
|
+
copyToClipboard(text);
|
|
151
|
+
pushToast({
|
|
152
|
+
title: "Copied to clipboard",
|
|
153
|
+
variant: "success"
|
|
154
|
+
}, 1500);
|
|
155
|
+
renderer.clearSelection();
|
|
156
|
+
};
|
|
157
|
+
const openEditorFromTui = async () => {
|
|
158
|
+
if (!textareaRef) return;
|
|
159
|
+
setShowAutocomplete(false);
|
|
160
|
+
setAutocompleteItems([]);
|
|
161
|
+
textareaRef.clear();
|
|
162
|
+
const content = await openBuffer("");
|
|
163
|
+
if (content === undefined) return;
|
|
164
|
+
suppressNextAutocompleteUpdate = true;
|
|
165
|
+
textareaRef.setText(content);
|
|
166
|
+
textareaRef.focus();
|
|
167
|
+
const lines = content.split("\n");
|
|
168
|
+
const lastLine = Math.max(0, lines.length - 1);
|
|
169
|
+
const lastCol = lines[lastLine]?.length ?? 0;
|
|
170
|
+
textareaRef.editBuffer.setCursorToLineCol(lastLine, lastCol);
|
|
171
|
+
updateAutocomplete(content, lastLine, lastCol);
|
|
172
|
+
};
|
|
173
|
+
props.editorOpenRef.current = openEditorFromTui;
|
|
174
|
+
const handleEditFile = (filePath, line) => {
|
|
175
|
+
void editFile(filePath, line);
|
|
176
|
+
};
|
|
177
|
+
let prevContextWindow = props.contextWindow;
|
|
178
|
+
createEffect(() => {
|
|
179
|
+
const newWindow = props.contextWindow;
|
|
180
|
+
const oldWindow = prevContextWindow;
|
|
181
|
+
prevContextWindow = newWindow;
|
|
182
|
+
if (oldWindow <= 0 || newWindow >= oldWindow) return;
|
|
183
|
+
const tokens = props.contextTokens;
|
|
184
|
+
if (tokens <= 0) return;
|
|
185
|
+
const usagePct = tokens / newWindow * 100;
|
|
186
|
+
const remaining = newWindow - tokens;
|
|
187
|
+
const formatK = n => n >= 1000 ? `${Math.round(n / 1000)}k` : String(n);
|
|
188
|
+
if (usagePct > 100) {
|
|
189
|
+
pushToast({
|
|
190
|
+
title: `Context overflow: ${formatK(tokens)}/${formatK(newWindow)}`,
|
|
191
|
+
message: "Run /compact before continuing",
|
|
192
|
+
variant: "error"
|
|
193
|
+
}, 5000);
|
|
194
|
+
} else if (usagePct > 85) {
|
|
195
|
+
pushToast({
|
|
196
|
+
title: `Context near limit: ${formatK(tokens)}/${formatK(newWindow)}`,
|
|
197
|
+
message: `${formatK(remaining)} remaining`,
|
|
198
|
+
variant: "warning"
|
|
199
|
+
}, 4000);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
const [expandedToolIds, setExpandedToolIds] = createSignal(new Set());
|
|
203
|
+
const isToolExpanded = id => expandedToolIds().has(id);
|
|
204
|
+
const toggleToolExpanded = id => setExpandedToolIds(prev => {
|
|
205
|
+
const next = new Set(prev);
|
|
206
|
+
if (next.has(id)) next.delete(id);else next.add(id);
|
|
207
|
+
return next;
|
|
208
|
+
});
|
|
209
|
+
const toggleLastToolExpanded = () => {
|
|
210
|
+
const last = props.toolBlocks[props.toolBlocks.length - 1];
|
|
211
|
+
if (last) toggleToolExpanded(last.id);
|
|
212
|
+
};
|
|
213
|
+
const [expandedThinkingIds, setExpandedThinkingIds] = createSignal(new Set());
|
|
214
|
+
const isThinkingExpanded = id => expandedThinkingIds().has(id);
|
|
215
|
+
const toggleThinkingExpanded = id => setExpandedThinkingIds(prev => {
|
|
216
|
+
const next = new Set(prev);
|
|
217
|
+
if (next.has(id)) next.delete(id);else next.add(id);
|
|
218
|
+
return next;
|
|
219
|
+
});
|
|
220
|
+
const handleKeyDown = createComposerKeyboardHandler({
|
|
221
|
+
showAutocomplete,
|
|
222
|
+
autocompleteItems,
|
|
223
|
+
setAutocompleteIndex,
|
|
224
|
+
setShowAutocomplete,
|
|
225
|
+
applyAutocomplete,
|
|
226
|
+
isResponding: () => props.isResponding,
|
|
227
|
+
retryStatus: () => props.retryStatus,
|
|
228
|
+
onAbort: props.onAbort,
|
|
229
|
+
onToggleThinking: props.onToggleThinking,
|
|
230
|
+
onCycleModel: props.onCycleModel,
|
|
231
|
+
onCycleThinking: props.onCycleThinking,
|
|
232
|
+
toggleLastToolExpanded,
|
|
233
|
+
copySelectionToClipboard,
|
|
234
|
+
clearEditor: () => textareaRef?.clear(),
|
|
235
|
+
setEditorText: text => textareaRef?.setText(text),
|
|
236
|
+
lastCtrlC,
|
|
237
|
+
onExit: exitApp
|
|
238
|
+
});
|
|
239
|
+
const handleComposerContentChange = () => {
|
|
240
|
+
if (!textareaRef) return;
|
|
241
|
+
if (suppressNextAutocompleteUpdate) {
|
|
242
|
+
suppressNextAutocompleteUpdate = false;
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const text = textareaRef.plainText;
|
|
246
|
+
setIsBashMode(text.trimStart().startsWith("!"));
|
|
247
|
+
const cursor = textareaRef.logicalCursor;
|
|
248
|
+
updateAutocomplete(text, cursor.row, cursor.col);
|
|
249
|
+
};
|
|
250
|
+
return (() => {
|
|
251
|
+
var _el$ = _$createElement("box");
|
|
252
|
+
_$setProp(_el$, "flexDirection", "column");
|
|
253
|
+
_$setProp(_el$, "onMouseUp", () => {
|
|
254
|
+
const sel = renderer.getSelection();
|
|
255
|
+
if (sel && sel.getSelectedText()) copySelectionToClipboard();
|
|
41
256
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
257
|
+
_$insert(_el$, _$createComponent(Header, {
|
|
258
|
+
get modelId() {
|
|
259
|
+
return props.modelId;
|
|
260
|
+
},
|
|
261
|
+
get thinking() {
|
|
262
|
+
return props.thinking;
|
|
263
|
+
},
|
|
264
|
+
get contextTokens() {
|
|
265
|
+
return props.contextTokens;
|
|
266
|
+
},
|
|
267
|
+
get contextWindow() {
|
|
268
|
+
return props.contextWindow;
|
|
269
|
+
},
|
|
270
|
+
get queueCounts() {
|
|
271
|
+
return props.queueCounts;
|
|
272
|
+
},
|
|
273
|
+
get activityState() {
|
|
274
|
+
return props.activityState;
|
|
275
|
+
},
|
|
276
|
+
get retryStatus() {
|
|
277
|
+
return props.retryStatus;
|
|
278
|
+
},
|
|
279
|
+
get lspActive() {
|
|
280
|
+
return props.lspActive;
|
|
281
|
+
},
|
|
282
|
+
get spinnerFrame() {
|
|
283
|
+
return spinnerFrame();
|
|
284
|
+
},
|
|
285
|
+
get lsp() {
|
|
286
|
+
return props.lsp;
|
|
287
|
+
}
|
|
288
|
+
}), null);
|
|
289
|
+
_$insert(_el$, _$createComponent(MessagePane, {
|
|
290
|
+
get messages() {
|
|
291
|
+
return props.messages;
|
|
292
|
+
},
|
|
293
|
+
get toolBlocks() {
|
|
294
|
+
return props.toolBlocks;
|
|
295
|
+
},
|
|
296
|
+
get thinkingVisible() {
|
|
297
|
+
return props.thinkingVisible;
|
|
298
|
+
},
|
|
299
|
+
get diffWrapMode() {
|
|
300
|
+
return props.diffWrapMode;
|
|
301
|
+
},
|
|
302
|
+
get concealMarkdown() {
|
|
303
|
+
return props.concealMarkdown;
|
|
304
|
+
},
|
|
305
|
+
isToolExpanded: isToolExpanded,
|
|
306
|
+
toggleToolExpanded: toggleToolExpanded,
|
|
307
|
+
isThinkingExpanded: isThinkingExpanded,
|
|
308
|
+
toggleThinkingExpanded: toggleThinkingExpanded,
|
|
309
|
+
onEditFile: handleEditFile
|
|
310
|
+
}), null);
|
|
311
|
+
_$insert(_el$, _$createComponent(Composer, {
|
|
312
|
+
theme: theme,
|
|
313
|
+
isBashMode: isBashMode,
|
|
314
|
+
showAutocomplete: showAutocomplete,
|
|
315
|
+
autocompleteItems: autocompleteItems,
|
|
316
|
+
autocompleteIndex: autocompleteIndex,
|
|
317
|
+
textareaRef: ref => {
|
|
318
|
+
textareaRef = ref;
|
|
319
|
+
ref.focus();
|
|
320
|
+
},
|
|
321
|
+
onContentChange: handleComposerContentChange,
|
|
322
|
+
onSubmit: () => {
|
|
323
|
+
if (!textareaRef) return;
|
|
324
|
+
props.onSubmit(textareaRef.plainText, () => {
|
|
325
|
+
textareaRef?.clear();
|
|
326
|
+
setIsBashMode(false);
|
|
327
|
+
});
|
|
328
|
+
},
|
|
329
|
+
onKeyDown: handleKeyDown,
|
|
330
|
+
terminalWidth: () => dimensions().width
|
|
331
|
+
}), null);
|
|
332
|
+
_$insert(_el$, _$createComponent(Footer, {
|
|
333
|
+
get branch() {
|
|
334
|
+
return branch();
|
|
335
|
+
},
|
|
336
|
+
get bashMode() {
|
|
337
|
+
return isBashMode();
|
|
338
|
+
}
|
|
339
|
+
}), null);
|
|
340
|
+
_$insert(_el$, _$createComponent(ToastViewport, {
|
|
341
|
+
get toasts() {
|
|
342
|
+
return toasts();
|
|
343
|
+
}
|
|
344
|
+
}), null);
|
|
345
|
+
_$effect(_p$ => {
|
|
346
|
+
var _v$ = dimensions().width,
|
|
347
|
+
_v$2 = dimensions().height;
|
|
348
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$, "width", _v$, _p$.e));
|
|
349
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$, "height", _v$2, _p$.t));
|
|
350
|
+
return _p$;
|
|
351
|
+
}, {
|
|
352
|
+
e: undefined,
|
|
353
|
+
t: undefined
|
|
48
354
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
description: cmd.description,
|
|
53
|
-
}));
|
|
54
|
-
const autocompleteProvider = new CombinedAutocompleteProvider([...builtInAutocomplete, ...customAutocomplete], process.cwd());
|
|
55
|
-
const [autocompleteItems, setAutocompleteItems] = createSignal([]);
|
|
56
|
-
const [autocompletePrefix, setAutocompletePrefix] = createSignal("");
|
|
57
|
-
const [autocompleteIndex, setAutocompleteIndex] = createSignal(0);
|
|
58
|
-
const [showAutocomplete, setShowAutocomplete] = createSignal(false);
|
|
59
|
-
const [isBashMode, setIsBashMode] = createSignal(false);
|
|
60
|
-
let suppressNextAutocompleteUpdate = false;
|
|
61
|
-
const updateAutocomplete = (text, cursorLine, cursorCol) => {
|
|
62
|
-
const lines = text.split("\n");
|
|
63
|
-
const currentLine = lines[cursorLine] ?? "";
|
|
64
|
-
const beforeCursor = currentLine.slice(0, cursorCol);
|
|
65
|
-
if (beforeCursor.trim() === "") {
|
|
66
|
-
setShowAutocomplete(false);
|
|
67
|
-
setAutocompleteItems([]);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const result = autocompleteProvider.getSuggestions(lines, cursorLine, cursorCol);
|
|
71
|
-
if (result && result.items.length > 0) {
|
|
72
|
-
const prevPrefix = autocompletePrefix();
|
|
73
|
-
const newItems = result.items.slice(0, 30);
|
|
74
|
-
setAutocompleteItems(newItems);
|
|
75
|
-
setAutocompletePrefix(result.prefix);
|
|
76
|
-
if (result.prefix !== prevPrefix) {
|
|
77
|
-
setAutocompleteIndex(0);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
setAutocompleteIndex((i) => Math.min(i, newItems.length - 1));
|
|
81
|
-
}
|
|
82
|
-
setShowAutocomplete(true);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
setShowAutocomplete(false);
|
|
86
|
-
setAutocompleteItems([]);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
const applyAutocomplete = () => {
|
|
90
|
-
if (!showAutocomplete() || !textareaRef)
|
|
91
|
-
return false;
|
|
92
|
-
const items = autocompleteItems();
|
|
93
|
-
const idx = autocompleteIndex();
|
|
94
|
-
if (idx < 0 || idx >= items.length)
|
|
95
|
-
return false;
|
|
96
|
-
const cursor = textareaRef.logicalCursor;
|
|
97
|
-
const text = textareaRef.plainText;
|
|
98
|
-
const lines = text.split("\n");
|
|
99
|
-
const result = autocompleteProvider.applyCompletion(lines, cursor.row, cursor.col, items[idx], autocompletePrefix());
|
|
100
|
-
const newText = result.lines.join("\n");
|
|
101
|
-
if (newText === text) {
|
|
102
|
-
setShowAutocomplete(false);
|
|
103
|
-
setAutocompleteItems([]);
|
|
104
|
-
return false;
|
|
105
|
-
}
|
|
106
|
-
suppressNextAutocompleteUpdate = true;
|
|
107
|
-
textareaRef.replaceText(newText);
|
|
108
|
-
textareaRef.editBuffer.setCursorToLineCol(result.cursorLine, result.cursorCol);
|
|
109
|
-
setShowAutocomplete(false);
|
|
110
|
-
setAutocompleteItems([]);
|
|
111
|
-
return true;
|
|
112
|
-
};
|
|
113
|
-
onMount(() => {
|
|
114
|
-
textareaRef?.focus();
|
|
115
|
-
});
|
|
116
|
-
const exitApp = async () => {
|
|
117
|
-
try {
|
|
118
|
-
renderer.destroy();
|
|
119
|
-
await props.onBeforeExit?.();
|
|
120
|
-
}
|
|
121
|
-
finally {
|
|
122
|
-
process.exit(0);
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
props.exitHandlerRef.current = exitApp;
|
|
126
|
-
props.setEditorTextRef.current = (text) => textareaRef?.setText(text);
|
|
127
|
-
props.getEditorTextRef.current = () => textareaRef?.plainText ?? "";
|
|
128
|
-
props.showToastRef.current = (title, message, variant = "info") => {
|
|
129
|
-
pushToast({ title, message, variant }, 3000);
|
|
130
|
-
};
|
|
131
|
-
const copySelectionToClipboard = () => {
|
|
132
|
-
const sel = renderer.getSelection();
|
|
133
|
-
if (!sel)
|
|
134
|
-
return;
|
|
135
|
-
const text = sel.getSelectedText();
|
|
136
|
-
if (!text || text.length === 0)
|
|
137
|
-
return;
|
|
138
|
-
copyToClipboard(text);
|
|
139
|
-
pushToast({ title: "Copied to clipboard", variant: "success" }, 1500);
|
|
140
|
-
renderer.clearSelection();
|
|
141
|
-
};
|
|
142
|
-
const openEditorFromTui = async () => {
|
|
143
|
-
if (!textareaRef)
|
|
144
|
-
return;
|
|
145
|
-
setShowAutocomplete(false);
|
|
146
|
-
setAutocompleteItems([]);
|
|
147
|
-
textareaRef.clear();
|
|
148
|
-
const content = await openBuffer("");
|
|
149
|
-
if (content === undefined)
|
|
150
|
-
return;
|
|
151
|
-
suppressNextAutocompleteUpdate = true;
|
|
152
|
-
textareaRef.setText(content);
|
|
153
|
-
textareaRef.focus();
|
|
154
|
-
const lines = content.split("\n");
|
|
155
|
-
const lastLine = Math.max(0, lines.length - 1);
|
|
156
|
-
const lastCol = lines[lastLine]?.length ?? 0;
|
|
157
|
-
textareaRef.editBuffer.setCursorToLineCol(lastLine, lastCol);
|
|
158
|
-
updateAutocomplete(content, lastLine, lastCol);
|
|
159
|
-
};
|
|
160
|
-
props.editorOpenRef.current = openEditorFromTui;
|
|
161
|
-
const handleEditFile = (filePath, line) => {
|
|
162
|
-
void editFile(filePath, line);
|
|
163
|
-
};
|
|
164
|
-
let prevContextWindow = props.contextWindow;
|
|
165
|
-
createEffect(() => {
|
|
166
|
-
const newWindow = props.contextWindow;
|
|
167
|
-
const oldWindow = prevContextWindow;
|
|
168
|
-
prevContextWindow = newWindow;
|
|
169
|
-
if (oldWindow <= 0 || newWindow >= oldWindow)
|
|
170
|
-
return;
|
|
171
|
-
const tokens = props.contextTokens;
|
|
172
|
-
if (tokens <= 0)
|
|
173
|
-
return;
|
|
174
|
-
const usagePct = (tokens / newWindow) * 100;
|
|
175
|
-
const remaining = newWindow - tokens;
|
|
176
|
-
const formatK = (n) => (n >= 1000 ? `${Math.round(n / 1000)}k` : String(n));
|
|
177
|
-
if (usagePct > 100) {
|
|
178
|
-
pushToast({
|
|
179
|
-
title: `Context overflow: ${formatK(tokens)}/${formatK(newWindow)}`,
|
|
180
|
-
message: "Run /compact before continuing",
|
|
181
|
-
variant: "error",
|
|
182
|
-
}, 5000);
|
|
183
|
-
}
|
|
184
|
-
else if (usagePct > 85) {
|
|
185
|
-
pushToast({
|
|
186
|
-
title: `Context near limit: ${formatK(tokens)}/${formatK(newWindow)}`,
|
|
187
|
-
message: `${formatK(remaining)} remaining`,
|
|
188
|
-
variant: "warning",
|
|
189
|
-
}, 4000);
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
const [expandedToolIds, setExpandedToolIds] = createSignal(new Set());
|
|
193
|
-
const isToolExpanded = (id) => expandedToolIds().has(id);
|
|
194
|
-
const toggleToolExpanded = (id) => setExpandedToolIds((prev) => {
|
|
195
|
-
const next = new Set(prev);
|
|
196
|
-
if (next.has(id))
|
|
197
|
-
next.delete(id);
|
|
198
|
-
else
|
|
199
|
-
next.add(id);
|
|
200
|
-
return next;
|
|
201
|
-
});
|
|
202
|
-
const toggleLastToolExpanded = () => {
|
|
203
|
-
const last = props.toolBlocks[props.toolBlocks.length - 1];
|
|
204
|
-
if (last)
|
|
205
|
-
toggleToolExpanded(last.id);
|
|
206
|
-
};
|
|
207
|
-
const [expandedThinkingIds, setExpandedThinkingIds] = createSignal(new Set());
|
|
208
|
-
const isThinkingExpanded = (id) => expandedThinkingIds().has(id);
|
|
209
|
-
const toggleThinkingExpanded = (id) => setExpandedThinkingIds((prev) => {
|
|
210
|
-
const next = new Set(prev);
|
|
211
|
-
if (next.has(id))
|
|
212
|
-
next.delete(id);
|
|
213
|
-
else
|
|
214
|
-
next.add(id);
|
|
215
|
-
return next;
|
|
216
|
-
});
|
|
217
|
-
const handleKeyDown = createComposerKeyboardHandler({
|
|
218
|
-
showAutocomplete,
|
|
219
|
-
autocompleteItems,
|
|
220
|
-
setAutocompleteIndex,
|
|
221
|
-
setShowAutocomplete,
|
|
222
|
-
applyAutocomplete,
|
|
223
|
-
isResponding: () => props.isResponding,
|
|
224
|
-
retryStatus: () => props.retryStatus,
|
|
225
|
-
onAbort: props.onAbort,
|
|
226
|
-
onToggleThinking: props.onToggleThinking,
|
|
227
|
-
onCycleModel: props.onCycleModel,
|
|
228
|
-
onCycleThinking: props.onCycleThinking,
|
|
229
|
-
toggleLastToolExpanded,
|
|
230
|
-
copySelectionToClipboard,
|
|
231
|
-
clearEditor: () => textareaRef?.clear(),
|
|
232
|
-
setEditorText: (text) => textareaRef?.setText(text),
|
|
233
|
-
lastCtrlC,
|
|
234
|
-
onExit: exitApp,
|
|
235
|
-
});
|
|
236
|
-
const handleComposerContentChange = () => {
|
|
237
|
-
if (!textareaRef)
|
|
238
|
-
return;
|
|
239
|
-
if (suppressNextAutocompleteUpdate) {
|
|
240
|
-
suppressNextAutocompleteUpdate = false;
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
const text = textareaRef.plainText;
|
|
244
|
-
setIsBashMode(text.trimStart().startsWith("!"));
|
|
245
|
-
const cursor = textareaRef.logicalCursor;
|
|
246
|
-
updateAutocomplete(text, cursor.row, cursor.col);
|
|
247
|
-
};
|
|
248
|
-
return (_jsxs("box", { flexDirection: "column", width: dimensions().width, height: dimensions().height, onMouseUp: () => {
|
|
249
|
-
const sel = renderer.getSelection();
|
|
250
|
-
if (sel && sel.getSelectedText())
|
|
251
|
-
copySelectionToClipboard();
|
|
252
|
-
}, children: [_jsx(Header, { modelId: props.modelId, thinking: props.thinking, contextTokens: props.contextTokens, contextWindow: props.contextWindow, queueCounts: props.queueCounts, activityState: props.activityState, retryStatus: props.retryStatus, lspActive: props.lspActive, spinnerFrame: spinnerFrame(), lsp: props.lsp }), _jsx(MessagePane, { messages: props.messages, toolBlocks: props.toolBlocks, thinkingVisible: props.thinkingVisible, diffWrapMode: props.diffWrapMode, concealMarkdown: props.concealMarkdown, isToolExpanded: isToolExpanded, toggleToolExpanded: toggleToolExpanded, isThinkingExpanded: isThinkingExpanded, toggleThinkingExpanded: toggleThinkingExpanded, onEditFile: handleEditFile }), _jsx(Composer, { theme: theme, isBashMode: isBashMode, showAutocomplete: showAutocomplete, autocompleteItems: autocompleteItems, autocompleteIndex: autocompleteIndex, textareaRef: (ref) => {
|
|
253
|
-
textareaRef = ref;
|
|
254
|
-
ref.focus();
|
|
255
|
-
}, onContentChange: handleComposerContentChange, onSubmit: () => {
|
|
256
|
-
if (!textareaRef)
|
|
257
|
-
return;
|
|
258
|
-
props.onSubmit(textareaRef.plainText, () => {
|
|
259
|
-
textareaRef?.clear();
|
|
260
|
-
setIsBashMode(false);
|
|
261
|
-
});
|
|
262
|
-
}, onKeyDown: handleKeyDown, terminalWidth: () => dimensions().width }), _jsx(Footer, { branch: branch(), bashMode: isBashMode() }), _jsx(ToastViewport, { toasts: toasts() })] }));
|
|
263
|
-
}
|
|
264
|
-
//# sourceMappingURL=MainView.js.map
|
|
355
|
+
return _el$;
|
|
356
|
+
})();
|
|
357
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainView.js","sourceRoot":"","sources":["../../../../src/ui/features/main-view/MainView.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MainView.jsx","sourceRoot":"","sources":["../../../../src/ui/features/main-view/MainView.tsx"],"names":[],"mappings":"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"}
|