@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.
Files changed (44) hide show
  1. package/dist/adapters/tui/app.js +29 -17
  2. package/dist/adapters/tui/{app.js.map → app.jsx.map} +1 -1
  3. package/dist/components/Footer.js +60 -24
  4. package/dist/components/{Footer.js.map → Footer.jsx.map} +1 -1
  5. package/dist/components/Header.js +312 -96
  6. package/dist/components/{Header.js.map → Header.jsx.map} +1 -1
  7. package/dist/components/MessageList.js +393 -146
  8. package/dist/components/MessageList.jsx.map +1 -0
  9. package/dist/runtime/context.js +15 -9
  10. package/dist/runtime/context.jsx.map +1 -0
  11. package/dist/session-picker.js +123 -69
  12. package/dist/session-picker.jsx.map +1 -0
  13. package/dist/tui-open-rendering.js +716 -343
  14. package/dist/tui-open-rendering.jsx.map +1 -0
  15. package/dist/ui/app-shell/TuiApp.js +590 -441
  16. package/dist/ui/app-shell/{TuiApp.js.map → TuiApp.jsx.map} +1 -1
  17. package/dist/ui/components/modals/ConfirmModal.js +80 -23
  18. package/dist/ui/components/modals/ConfirmModal.jsx.map +1 -0
  19. package/dist/ui/components/modals/EditorModal.js +55 -15
  20. package/dist/ui/components/modals/EditorModal.jsx.map +1 -0
  21. package/dist/ui/components/modals/InputModal.js +36 -9
  22. package/dist/ui/components/modals/InputModal.jsx.map +1 -0
  23. package/dist/ui/components/modals/ModalContainer.js +72 -16
  24. package/dist/ui/components/modals/ModalContainer.jsx.map +1 -0
  25. package/dist/ui/components/modals/SelectModal.js +53 -24
  26. package/dist/ui/components/modals/SelectModal.jsx.map +1 -0
  27. package/dist/ui/features/composer/Composer.js +145 -26
  28. package/dist/ui/features/composer/Composer.jsx.map +1 -0
  29. package/dist/ui/features/main-view/MainView.js +341 -248
  30. package/dist/ui/features/main-view/{MainView.js.map → MainView.jsx.map} +1 -1
  31. package/dist/ui/features/message-pane/MessagePane.js +46 -4
  32. package/dist/ui/features/message-pane/MessagePane.jsx.map +1 -0
  33. package/package.json +2 -2
  34. package/dist/components/MessageList.js.map +0 -1
  35. package/dist/runtime/context.js.map +0 -1
  36. package/dist/session-picker.js.map +0 -1
  37. package/dist/tui-open-rendering.js.map +0 -1
  38. package/dist/ui/components/modals/ConfirmModal.js.map +0 -1
  39. package/dist/ui/components/modals/EditorModal.js.map +0 -1
  40. package/dist/ui/components/modals/InputModal.js.map +0 -1
  41. package/dist/ui/components/modals/ModalContainer.js.map +0 -1
  42. package/dist/ui/components/modals/SelectModal.js.map +0 -1
  43. package/dist/ui/features/composer/Composer.js.map +0 -1
  44. package/dist/ui/features/message-pane/MessagePane.js.map +0 -1
@@ -1,7 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
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, } from "@yeshwanthyk/open-tui";
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
- const { theme } = useTheme();
18
- const dimensions = useTerminalDimensions();
19
- let textareaRef;
20
- const lastCtrlC = { current: 0 };
21
- const branch = useGitStatus();
22
- const spinnerFrame = useSpinner(() => props.activityState);
23
- const renderer = useRenderer();
24
- const { toasts, pushToast } = useToastManager();
25
- const shownValidationKeys = new Set();
26
- createEffect(() => {
27
- const issues = props.validationIssues ?? [];
28
- const showList = issues.slice(0, 3);
29
- for (const issue of showList) {
30
- const key = `${issue.severity}:${issue.path}:${issue.message}`;
31
- if (shownValidationKeys.has(key))
32
- continue;
33
- shownValidationKeys.add(key);
34
- console.error(`[marvin][extension][${issue.kind}] ${issue.path}: ${issue.message}`);
35
- pushToast({
36
- title: issue.severity === "error" ? "Extension error" : "Extension warning",
37
- message: `${issue.path}: ${issue.message}`,
38
- variant: issue.severity === "error" ? "error" : "warning",
39
- }, 6000);
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
- const { openBuffer, editFile } = useEditorBridge({
43
- editor: props.editor,
44
- renderer,
45
- pushToast,
46
- isResponding: () => props.isResponding,
47
- onSubmit: (text) => props.onSubmit(text),
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
- const builtInAutocomplete = createAutocompleteCommands(() => ({ currentProvider: props.provider }));
50
- const customAutocomplete = Array.from(props.customCommands.values()).map((cmd) => ({
51
- name: cmd.name,
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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EACN,4BAA4B,EAC5B,aAAa,EACb,eAAe,EACf,WAAW,EACX,QAAQ,GAER,MAAM,uBAAuB,CAAA;AAI9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAGtD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAA;AAqCvE,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC5C,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC5B,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;IAC1C,IAAI,WAA2C,CAAA;IAC/C,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAC7B,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAA;IAC/C,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC7C,YAAY,CAAC,GAAG,EAAE;QACjB,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAA;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACnC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;YAC9D,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAQ;YAC1C,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC5B,OAAO,CAAC,KAAK,CAAC,uBAAuB,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;YACnF,SAAS,CACR;gBACC,KAAK,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB;gBAC3E,OAAO,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE;gBAC1C,OAAO,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;aACzD,EACD,IAAI,CACJ,CAAA;QACF,CAAC;IACF,CAAC,CAAC,CAAA;IACF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC;QAChD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ;QACR,SAAS;QACT,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY;QACtC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;KACxC,CAAC,CAAA;IAEF,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACnG,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClF,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,WAAW;KAC5B,CAAC,CAAC,CAAA;IACH,MAAM,oBAAoB,GAAG,IAAI,4BAA4B,CAAC,CAAC,GAAG,mBAAmB,EAAE,GAAG,kBAAkB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7H,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,YAAY,CAAqB,EAAE,CAAC,CAAA;IACtF,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAA;IACpE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;IACjE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACnE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACvD,IAAI,8BAA8B,GAAG,KAAK,CAAA;IAE1C,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,UAAkB,EAAE,SAAiB,EAAE,EAAE;QAClF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAA;QAC3C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;QAEpD,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChC,mBAAmB,CAAC,KAAK,CAAC,CAAA;YAC1B,oBAAoB,CAAC,EAAE,CAAC,CAAA;YACxB,OAAM;QACP,CAAC;QAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;QAChF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAA;YACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC1C,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YAC9B,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACpC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAClC,oBAAoB,CAAC,CAAC,CAAC,CAAA;YACxB,CAAC;iBAAM,CAAC;gBACP,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YAC9D,CAAC;YACD,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACP,mBAAmB,CAAC,KAAK,CAAC,CAAA;YAC1B,oBAAoB,CAAC,EAAE,CAAC,CAAA;QACzB,CAAC;IACF,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAA;QACrD,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,iBAAiB,EAAE,CAAA;QAC/B,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAA;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAA;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;QACrH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACtB,mBAAmB,CAAC,KAAK,CAAC,CAAA;YAC1B,oBAAoB,CAAC,EAAE,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACb,CAAC;QACD,8BAA8B,GAAG,IAAI,CAAA;QACrC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAChC,WAAW,CAAC,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;QAC9E,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC1B,oBAAoB,CAAC,EAAE,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACZ,CAAC,CAAA;IAED,OAAO,CAAC,GAAG,EAAE;QACZ,WAAW,EAAE,KAAK,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,CAAC;YACJ,QAAQ,CAAC,OAAO,EAAE,CAAA;YAClB,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,CAAA;QAC7B,CAAC;gBAAS,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChB,CAAC;IACF,CAAC,CAAA;IACD,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAA;IACtC,KAAK,CAAC,gBAAgB,CAAC,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,KAAK,CAAC,gBAAgB,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAA;IACnE,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,EAAE;QACjE,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,MAAM,wBAAwB,GAAG,GAAG,EAAE;QACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;QACnC,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAE,CAAA;QAClC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACtC,eAAe,CAAC,IAAI,CAAC,CAAA;QACrB,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC,CAAA;QACrE,QAAQ,CAAC,cAAc,EAAE,CAAA;IAC1B,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC,WAAW;YAAE,OAAM;QACxB,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC1B,oBAAoB,CAAC,EAAE,CAAC,CAAA;QACxB,WAAW,CAAC,KAAK,EAAE,CAAA;QAEnB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,CAAA;QACpC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAM;QACjC,8BAA8B,GAAG,IAAI,CAAA;QACrC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5B,WAAW,CAAC,KAAK,EAAE,CAAA;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC,CAAA;QAC5C,WAAW,CAAC,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC5D,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC,CAAA;IACD,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,iBAAiB,CAAA;IAE/C,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,IAAa,EAAE,EAAE;QAC1D,KAAK,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED,IAAI,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAA;IAC3C,YAAY,CAAC,GAAG,EAAE;QACjB,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAA;QACrC,MAAM,SAAS,GAAG,iBAAiB,CAAA;QACnC,iBAAiB,GAAG,SAAS,CAAA;QAC7B,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,IAAI,SAAS;YAAE,OAAM;QAEpD,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAA;QAClC,IAAI,MAAM,IAAI,CAAC;YAAE,OAAM;QAEvB,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,CAAA;QAC3C,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;QACpC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAEnF,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACpB,SAAS,CACR;gBACC,KAAK,EAAE,qBAAqB,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACnE,OAAO,EAAE,gCAAgC;gBACzC,OAAO,EAAE,OAAO;aAChB,EACD,IAAI,CACJ,CAAA;QACF,CAAC;aAAM,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAC1B,SAAS,CACR;gBACC,KAAK,EAAE,uBAAuB,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;gBACrE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY;gBAC1C,OAAO,EAAE,SAAS;aAClB,EACD,IAAI,CACJ,CAAA;QACF,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,YAAY,CAAc,IAAI,GAAG,EAAE,CAAC,CAAA;IAClF,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChE,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE,CACzC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;;YAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC,CAAC,CAAA;IACH,MAAM,sBAAsB,GAAG,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC1D,IAAI,IAAI;YAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAA;IAED,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,YAAY,CAAc,IAAI,GAAG,EAAE,CAAC,CAAA;IAC1F,MAAM,kBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACxE,MAAM,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE,CAC7C,sBAAsB,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;;YAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjB,OAAO,IAAI,CAAA;IACZ,CAAC,CAAC,CAAA;IAEH,MAAM,aAAa,GAAG,6BAA6B,CAAC;QACnD,gBAAgB;QAChB,iBAAiB;QACjB,oBAAoB;QACpB,mBAAmB;QACnB,iBAAiB;QACjB,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY;QACtC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,sBAAsB;QACtB,wBAAwB;QACxB,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE;QACvC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC;QACnD,SAAS;QACT,MAAM,EAAE,OAAO;KACf,CAAC,CAAA;IAEF,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACxC,IAAI,CAAC,WAAW;YAAE,OAAM;QACxB,IAAI,8BAA8B,EAAE,CAAC;YACpC,8BAA8B,GAAG,KAAK,CAAA;YACtC,OAAM;QACP,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAA;QAClC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAA;QACxC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;IACjD,CAAC,CAAA;IAED,OAAO,CACN,CAAC,GAAG,CACH,aAAa,CAAC,QAAQ,CACtB,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAC1B,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAC5B,SAAS,CAAC,CAAC,GAAG,EAAE;YACf,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAA;YACnC,IAAI,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE;gBAAE,wBAAwB,EAAE,CAAA;QAC7D,CAAC,CAAC,CAEF;GAAA,CAAC,MAAM,CACN,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CACvB,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CACzB,aAAa,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CACnC,aAAa,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CACnC,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAC/B,aAAa,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CACnC,WAAW,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAC/B,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAC3B,YAAY,CAAC,CAAC,YAAY,EAAE,CAAC,CAC7B,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAEhB;GAAA,CAAC,WAAW,CACX,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CACzB,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAC7B,eAAe,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CACvC,YAAY,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CACjC,eAAe,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CACvC,cAAc,CAAC,CAAC,cAAc,CAAC,CAC/B,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CACvC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CACvC,sBAAsB,CAAC,CAAC,sBAAsB,CAAC,CAC/C,UAAU,CAAC,CAAC,cAAc,CAAC,EAE5B;GAAA,CAAC,QAAQ,CACR,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,UAAU,CAAC,CAAC,UAAU,CAAC,CACvB,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CACnC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;YACpB,WAAW,GAAG,GAAG,CAAA;YACjB,GAAG,CAAC,KAAK,EAAE,CAAA;QACZ,CAAC,CAAC,CACF,eAAe,CAAC,CAAC,2BAA2B,CAAC,CAC7C,QAAQ,CAAC,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,WAAW;gBAAE,OAAM;YACxB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC1C,WAAW,EAAE,KAAK,EAAE,CAAA;gBACpB,aAAa,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC,CAAC,CAAA;QACH,CAAC,CAAC,CACF,SAAS,CAAC,CAAC,aAAa,CAAC,CACzB,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,EAEzC;GAAA,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC,EACjD;GAAA,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EACjC;EAAA,EAAE,GAAG,CAAC,CACN,CAAA;AACF,CAAC"}