centaurus-cli 2.7.3 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-adapter.d.ts +2 -0
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +46 -4
- package/dist/cli-adapter.js.map +1 -1
- package/dist/context/handlers/wsl-handler.d.ts.map +1 -1
- package/dist/context/handlers/wsl-handler.js +2 -1
- package/dist/context/handlers/wsl-handler.js.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/services/ai-service-client.d.ts.map +1 -1
- package/dist/services/ai-service-client.js +20 -0
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/tools/file-ops.d.ts.map +1 -1
- package/dist/tools/file-ops.js +13 -3
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/ui/components/App.d.ts +1 -0
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +73 -74
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/InteractiveShell.d.ts +2 -1
- package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
- package/dist/ui/components/InteractiveShell.js +41 -106
- package/dist/ui/components/InteractiveShell.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +12 -8
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/MessageDisplay.js +10 -2
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +5 -5
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/utils/editor-utils.d.ts +50 -0
- package/dist/utils/editor-utils.d.ts.map +1 -0
- package/dist/utils/editor-utils.js +501 -0
- package/dist/utils/editor-utils.js.map +1 -0
- package/dist/utils/input-classifier.d.ts.map +1 -1
- package/dist/utils/input-classifier.js +2 -1
- package/dist/utils/input-classifier.js.map +1 -1
- package/dist/utils/shell.d.ts +32 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +97 -161
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/syntax-checker.d.ts +24 -0
- package/dist/utils/syntax-checker.d.ts.map +1 -0
- package/dist/utils/syntax-checker.js +320 -0
- package/dist/utils/syntax-checker.js.map +1 -0
- package/package.json +4 -3
|
@@ -1,15 +1,29 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
2
|
import { Box, Text, useInput } from 'ink';
|
|
3
3
|
import Spinner from 'ink-spinner';
|
|
4
4
|
import stripAnsi from 'strip-ansi';
|
|
5
5
|
import { encodeKeyToAnsi } from '../../utils/ansi-encoder.js';
|
|
6
|
-
export const InteractiveShell = React.memo(({ command, cwd, isRunning, output, exitCode, error, onInput, isFocused, onFocusChange,
|
|
7
|
-
const maxVisibleLines = 8;
|
|
8
|
-
//
|
|
6
|
+
export const InteractiveShell = React.memo(({ command, cwd, isRunning, output, exitCode, error, onInput, isFocused, onFocusChange, onSignal, onResize }) => {
|
|
7
|
+
const maxVisibleLines = 8;
|
|
8
|
+
// Handle terminal resize events
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!onResize || !isRunning)
|
|
11
|
+
return;
|
|
12
|
+
const handleResize = () => {
|
|
13
|
+
const cols = process.stdout.columns || 80;
|
|
14
|
+
const rows = process.stdout.rows || 24;
|
|
15
|
+
onResize(cols, rows);
|
|
16
|
+
};
|
|
17
|
+
handleResize();
|
|
18
|
+
process.stdout.on('resize', handleResize);
|
|
19
|
+
return () => {
|
|
20
|
+
process.stdout.off('resize', handleResize);
|
|
21
|
+
};
|
|
22
|
+
}, [onResize, isRunning]);
|
|
23
|
+
// Get last N lines of output
|
|
9
24
|
const getVisibleOutput = () => {
|
|
10
25
|
if (!output)
|
|
11
26
|
return '';
|
|
12
|
-
// Remove \r (carriage return) to prevent cursor jumping over borders
|
|
13
27
|
const safeOutput = output.replace(/\r/g, '');
|
|
14
28
|
const lines = safeOutput.split('\n');
|
|
15
29
|
if (lines.length <= maxVisibleLines) {
|
|
@@ -17,101 +31,37 @@ export const InteractiveShell = React.memo(({ command, cwd, isRunning, output, e
|
|
|
17
31
|
}
|
|
18
32
|
return lines.slice(-maxVisibleLines).join('\n');
|
|
19
33
|
};
|
|
20
|
-
//
|
|
21
|
-
const getMergedOutput = () => {
|
|
22
|
-
const baseOutput = getVisibleOutput();
|
|
23
|
-
// If not focused or no user input, just return the output
|
|
24
|
-
if (!isFocused || !userInput) {
|
|
25
|
-
return { text: baseOutput, userInputStart: -1 };
|
|
26
|
-
}
|
|
27
|
-
// Append user input to the output inline
|
|
28
|
-
// This makes it appear as if the user is typing directly in the terminal
|
|
29
|
-
const mergedOutput = baseOutput + userInput;
|
|
30
|
-
const userInputStart = baseOutput.length;
|
|
31
|
-
return { text: mergedOutput, userInputStart };
|
|
32
|
-
};
|
|
33
|
-
// Handle input when shell is focused - LINE-BUFFERED with ANSI encoding
|
|
34
|
+
// Handle input - PTY mode sends everything immediately
|
|
34
35
|
useInput((input, key) => {
|
|
35
36
|
if (!isFocused || !onInput)
|
|
36
37
|
return;
|
|
37
|
-
//
|
|
38
|
-
// CRITICAL: LINE-BUFFERED MODE
|
|
39
|
-
// ============================================
|
|
40
|
-
// We buffer regular characters locally and only send the complete line
|
|
41
|
-
// when Enter is pressed. This ensures compatibility with programs that
|
|
42
|
-
// expect line-buffered input (batch files, shell scripts, etc.)
|
|
43
|
-
//
|
|
44
|
-
// Special keys (arrows, Ctrl+C, etc.) are sent immediately as ANSI codes.
|
|
45
|
-
// ============================================
|
|
46
|
-
// 1. Global App Controls
|
|
38
|
+
// Global: Ctrl+F to exit focus mode
|
|
47
39
|
if (key.ctrl && input === 'f') {
|
|
48
40
|
onFocusChange(false);
|
|
49
41
|
return;
|
|
50
42
|
}
|
|
51
|
-
//
|
|
52
|
-
if (key.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// 3. Handle Backspace - Signal to remove from buffer
|
|
59
|
-
if (key.backspace || key.delete) {
|
|
60
|
-
onInput('\x08'); // Backspace marker (handled by App.tsx)
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
// 4. Handle Control Keys - Send immediately
|
|
64
|
-
if (key.ctrl) {
|
|
65
|
-
// Special handling for signals
|
|
66
|
-
if (input === 'c') {
|
|
67
|
-
try {
|
|
68
|
-
require('fs').appendFileSync('shell_ui_debug.log', `[InteractiveShell] Ctrl+C detected. onSignal exists: ${!!onSignal}\n`);
|
|
69
|
-
}
|
|
70
|
-
catch (e) { }
|
|
71
|
-
// 1. Inject ETX (\x03) to simulate real terminal input
|
|
72
|
-
if (onInput) {
|
|
73
|
-
onInput('\x03');
|
|
74
|
-
}
|
|
75
|
-
// 2. Send signal to backend
|
|
76
|
-
if (onSignal) {
|
|
77
|
-
onSignal('SIGINT');
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (input === 'd' && onSignal) {
|
|
82
|
-
// Only send EOF if buffer is empty, otherwise it might be delete char
|
|
83
|
-
if (!userInput) {
|
|
84
|
-
onSignal('SIGTERM'); // Or close stdin
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const encoded = encodeKeyToAnsi(input, key);
|
|
89
|
-
if (encoded) {
|
|
90
|
-
onInput(encoded);
|
|
43
|
+
// Ctrl+C - send to PTY AND signal backend for forceful termination
|
|
44
|
+
if (key.ctrl && input === 'c') {
|
|
45
|
+
onInput('\x03');
|
|
46
|
+
if (onSignal) {
|
|
47
|
+
onSignal('SIGINT');
|
|
91
48
|
}
|
|
92
49
|
return;
|
|
93
50
|
}
|
|
94
|
-
//
|
|
95
|
-
if (key.
|
|
96
|
-
|
|
97
|
-
if (encoded) {
|
|
98
|
-
onInput(encoded);
|
|
99
|
-
}
|
|
51
|
+
// Ctrl+D - EOF
|
|
52
|
+
if (key.ctrl && input === 'd') {
|
|
53
|
+
onInput('\x04');
|
|
100
54
|
return;
|
|
101
55
|
}
|
|
102
|
-
//
|
|
103
|
-
if (key.
|
|
104
|
-
onInput('\
|
|
56
|
+
// Ctrl+Z - Suspend
|
|
57
|
+
if (key.ctrl && input === 'z') {
|
|
58
|
+
onInput('\x1A');
|
|
105
59
|
return;
|
|
106
60
|
}
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
const charCode = input.charCodeAt(0);
|
|
112
|
-
if (charCode >= 32 || input === '\t') {
|
|
113
|
-
onInput(input); // Add to buffer (handled by App.tsx)
|
|
114
|
-
}
|
|
61
|
+
// Encode and send all keys immediately
|
|
62
|
+
const encoded = encodeKeyToAnsi(input, key);
|
|
63
|
+
if (encoded) {
|
|
64
|
+
onInput(encoded);
|
|
115
65
|
}
|
|
116
66
|
}, { isActive: isFocused });
|
|
117
67
|
// Determine border color and icon based on status
|
|
@@ -130,24 +80,8 @@ export const InteractiveShell = React.memo(({ command, cwd, isRunning, output, e
|
|
|
130
80
|
return '✓';
|
|
131
81
|
};
|
|
132
82
|
const color = getBorderColor();
|
|
133
|
-
|
|
134
|
-
const
|
|
135
|
-
const cleanOutput = stripAnsi(mergedText);
|
|
136
|
-
// Split output into parts: before user input and user input
|
|
137
|
-
const renderOutput = () => {
|
|
138
|
-
if (!cleanOutput)
|
|
139
|
-
return null;
|
|
140
|
-
// If no user input or not focused, render normally
|
|
141
|
-
if (userInputStart === -1 || !isFocused) {
|
|
142
|
-
return React.createElement(Text, { wrap: "wrap" }, cleanOutput);
|
|
143
|
-
}
|
|
144
|
-
// Split at user input position
|
|
145
|
-
const beforeInput = cleanOutput.substring(0, userInputStart);
|
|
146
|
-
const userInputPart = cleanOutput.substring(userInputStart);
|
|
147
|
-
return (React.createElement(Text, { wrap: "wrap" },
|
|
148
|
-
beforeInput,
|
|
149
|
-
React.createElement(Text, { color: "#00ff00" }, userInputPart)));
|
|
150
|
-
};
|
|
83
|
+
const visibleOutput = getVisibleOutput();
|
|
84
|
+
const cleanOutput = stripAnsi(visibleOutput);
|
|
151
85
|
return (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
152
86
|
React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: color, paddingX: 1 },
|
|
153
87
|
React.createElement(Box, { marginBottom: 1 },
|
|
@@ -162,10 +96,11 @@ export const InteractiveShell = React.memo(({ command, cwd, isRunning, output, e
|
|
|
162
96
|
"[current working directory ",
|
|
163
97
|
cwd,
|
|
164
98
|
"]")),
|
|
165
|
-
cleanOutput && (React.createElement(Box, null,
|
|
99
|
+
cleanOutput && (React.createElement(Box, null,
|
|
100
|
+
React.createElement(Text, { wrap: "wrap" }, cleanOutput))),
|
|
166
101
|
isFocused && isRunning && (React.createElement(Box, { marginTop: 1 },
|
|
167
102
|
React.createElement(Text, { color: "#ffaa00", bold: true }, "[ FOCUS MODE ] "),
|
|
168
|
-
React.createElement(Text, { color: "#666666" }, "Ctrl+F to exit
|
|
103
|
+
React.createElement(Text, { color: "#666666" }, "Ctrl+F to exit | PTY Mode - Full terminal emulation"))),
|
|
169
104
|
error && !isRunning && (React.createElement(Box, { marginTop: 1 },
|
|
170
105
|
React.createElement(Text, { color: "#ff3366", wrap: "wrap" }, error.replace(/\r/g, ''))))),
|
|
171
106
|
isRunning && !isFocused && (React.createElement(Box, { marginLeft: 1 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractiveShell.js","sourceRoot":"","sources":["../../../src/ui/components/InteractiveShell.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"InteractiveShell.js","sourceRoot":"","sources":["../../../src/ui/components/InteractiveShell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"MarkdownRenderer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoL5D,CAAC"}
|
|
@@ -32,7 +32,7 @@ export const MarkdownRenderer = ({ content, maxWidth = 100 }) => {
|
|
|
32
32
|
// Wrap heading text if it's too long
|
|
33
33
|
const availableWidth = maxWidth - 2; // -2 for padding
|
|
34
34
|
const wrappedLines = wrapText(element.content, availableWidth, 0);
|
|
35
|
-
return (React.createElement(Box, { key: index, flexDirection: "column", marginTop:
|
|
35
|
+
return (React.createElement(Box, { key: index, flexDirection: "column", marginTop: 0, marginBottom: 0 }, wrappedLines.map((line, lineIdx) => (React.createElement(Text, { key: lineIdx, bold: true, color: color }, line)))));
|
|
36
36
|
}
|
|
37
37
|
case 'code-block': {
|
|
38
38
|
const lines = element.content.split('\n');
|
|
@@ -46,14 +46,16 @@ export const MarkdownRenderer = ({ content, maxWidth = 100 }) => {
|
|
|
46
46
|
const indent = (element.level || 0) * 2;
|
|
47
47
|
const bullet = element.ordered ? `${element.index}.` : '•';
|
|
48
48
|
const bulletColor = '#00cc66';
|
|
49
|
-
|
|
49
|
+
const bulletWidth = element.ordered ? 3 : 2; // "1." or "•" + space
|
|
50
|
+
const availableWidth = maxWidth - indent - bulletWidth - 4; // Account for all padding
|
|
51
|
+
// Render list item with proper width constraints
|
|
50
52
|
return (React.createElement(Box, { key: index, flexDirection: "row", marginBottom: 0 },
|
|
51
53
|
React.createElement(Text, { color: "#666666" }, ' '.repeat(indent)),
|
|
52
54
|
React.createElement(Text, { color: bulletColor, bold: true },
|
|
53
55
|
bullet,
|
|
54
56
|
' '),
|
|
55
|
-
React.createElement(Box, { flexShrink: 1 },
|
|
56
|
-
React.createElement(Text,
|
|
57
|
+
React.createElement(Box, { flexShrink: 1, width: availableWidth },
|
|
58
|
+
React.createElement(Text, { wrap: "wrap" }, element.children && element.children.length > 0
|
|
57
59
|
? renderInlineElements(element.children)
|
|
58
60
|
: React.createElement(Text, { color: "#ffffff" }, element.content)))));
|
|
59
61
|
}
|
|
@@ -71,14 +73,16 @@ export const MarkdownRenderer = ({ content, maxWidth = 100 }) => {
|
|
|
71
73
|
React.createElement(Text, { color: "#444444" }, '─'.repeat(Math.min(maxWidth, 80)))));
|
|
72
74
|
}
|
|
73
75
|
case 'line-break': {
|
|
74
|
-
|
|
76
|
+
// Use a Text element with newline instead of Box with height={0}
|
|
77
|
+
// to prevent breaking the parent's border
|
|
78
|
+
return React.createElement(Text, { key: index }, ' ');
|
|
75
79
|
}
|
|
76
80
|
case 'text': {
|
|
77
|
-
// If we have inline children (formatted text), render them
|
|
81
|
+
// If we have inline children (formatted text), render them with proper wrapping
|
|
78
82
|
if (element.children && element.children.length > 0) {
|
|
79
83
|
return (React.createElement(Box, { key: index, flexDirection: "column", marginBottom: 0 },
|
|
80
|
-
React.createElement(Box, { paddingLeft: 2 },
|
|
81
|
-
React.createElement(Text,
|
|
84
|
+
React.createElement(Box, { paddingLeft: 2, width: maxWidth - 2, flexWrap: "wrap" },
|
|
85
|
+
React.createElement(Text, { wrap: "wrap" }, renderInlineElements(element.children)))));
|
|
82
86
|
}
|
|
83
87
|
// Otherwise, wrap plain text if needed
|
|
84
88
|
// Account for paddingLeft={2} in the wrapping calculation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownRenderer.js","sourceRoot":"","sources":["../../../src/ui/components/MarkdownRenderer.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MarkdownRenderer.js","sourceRoot":"","sources":["../../../src/ui/components/MarkdownRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,cAAc,EAAiB,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAOzF,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,GAAG,EAAE,EAAE,EAAE;IAC/F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAEzE,MAAM,oBAAoB,GAAG,CAAC,QAA0B,EAAmB,EAAE;QAC3E,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,OAAO,CACL,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,IAAI,QAAC,KAAK,EAAC,SAAS,IACjC,KAAK,CAAC,OAAO,CACT,CACR,CAAC;gBACJ,KAAK,QAAQ;oBACX,OAAO,CACL,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,QAAC,KAAK,EAAC,SAAS,IACnC,KAAK,CAAC,OAAO,CACT,CACR,CAAC;gBACJ,KAAK,aAAa;oBAChB,OAAO,CACL,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,eAAe,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,IACtD,IAAI,KAAK,CAAC,OAAO,GAAG,CAChB,CACR,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO,CACL,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,SAAS,EAAC,SAAS,UACtC,KAAK,CAAC,OAAO,CACT,CACR,CAAC;gBACJ,KAAK,MAAM,CAAC;gBACZ;oBACE,OAAO,CACL,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,SAAS,IAC5B,KAAK,CAAC,OAAO,CACT,CACR,CAAC;YACN,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,OAAsB,EAAE,KAAa,EAAmB,EAAE;QAC/E,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;gBACjC,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAClF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;gBAE7C,qCAAqC;gBACrC,MAAM,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,iBAAiB;gBACtD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBAElE,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,IAClE,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CACnC,oBAAC,IAAI,IAAC,GAAG,EAAE,OAAO,EAAE,IAAI,QAAC,KAAK,EAAE,KAAK,IAClC,IAAI,CACA,CACR,CAAC,CACE,CACP,CAAC;YACJ,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE1C,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;oBACnE,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;wBACrE,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;4BACxB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,IAAI,CAClD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,UAC3B,OAAO,CAAC,QAAQ,CACZ,CACR;4BACA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAC5B,oBAAC,IAAI,IAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAC,SAAS,IAChC,IAAI,IAAI,GAAG,CACP,CACR,CAAC,CACE,CACF,CACF,CACP,CAAC;YACJ,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,MAAM,WAAW,GAAG,SAAS,CAAC;gBAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB;gBACnE,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,0BAA0B;gBAEtF,iDAAiD;gBACjD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,KAAK,EAAC,YAAY,EAAE,CAAC;oBAClD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAQ;oBACjD,oBAAC,IAAI,IAAC,KAAK,EAAE,WAAW,EAAE,IAAI;wBAC3B,MAAM;wBAAE,GAAG,CACP;oBACP,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc;wBACvC,oBAAC,IAAI,IAAC,IAAI,EAAC,MAAM,IACd,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;4BAC9C,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;4BACxC,CAAC,CAAC,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,OAAO,CAAC,OAAO,CAAQ,CAC7C,CACH,CACF,CACP,CAAC;YACJ,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,KAAK,EAAC,YAAY,EAAE,CAAC;oBAClD,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI;;wBACtB,GAAG,CACA;oBACP,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,MAAM,UACzB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;wBAC9C,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;wBACxC,CAAC,CAAC,OAAO,CAAC,OAAO,CACd,CACH,CACP,CAAC;YACJ,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;oBACzB,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAQ,CAC7D,CACP,CAAC;YACJ,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,iEAAiE;gBACjE,0CAA0C;gBAC1C,OAAO,oBAAC,IAAI,IAAC,GAAG,EAAE,KAAK,IAAG,GAAG,CAAQ,CAAC;YACxC,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,gFAAgF;gBAChF,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpD,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC;wBACrD,oBAAC,GAAG,IAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAC,MAAM;4BACvD,oBAAC,IAAI,IAAC,IAAI,EAAC,MAAM,IAAE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAQ,CAC7D,CACF,CACP,CAAC;gBACJ,CAAC;gBAED,uCAAuC;gBACvC,0DAA0D;gBAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEhE,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK,EAAE,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,IACpD,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CACnC,oBAAC,GAAG,IAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;oBAC/B,oBAAC,IAAI,IAAC,KAAK,EAAC,SAAS,IAAE,IAAI,CAAQ,CAC/B,CACP,CAAC,CACE,CACP,CAAC;YACJ,CAAC;YAED;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,IACxB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAC5D,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MessageDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MessageDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAyGvD,CAAC"}
|
|
@@ -51,6 +51,14 @@ export const MessageDisplay = React.memo(({ message }) => {
|
|
|
51
51
|
if (message.approval) {
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
|
+
// Determine border color based on message type
|
|
55
|
+
const getBorderColor = () => {
|
|
56
|
+
if (message.isCommandMode) {
|
|
57
|
+
return message.role === 'assistant' ? '#00cc66' : '#00ccff';
|
|
58
|
+
}
|
|
59
|
+
return message.role === 'assistant' ? '#00ccff' : '#666666';
|
|
60
|
+
};
|
|
61
|
+
const borderColor = getBorderColor();
|
|
54
62
|
// Regular message rendering
|
|
55
63
|
return (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
56
64
|
React.createElement(Box, { marginBottom: 1 },
|
|
@@ -67,8 +75,8 @@ export const MessageDisplay = React.memo(({ message }) => {
|
|
|
67
75
|
" second",
|
|
68
76
|
message.thinkingDuration !== 1 ? 's' : '',
|
|
69
77
|
" \u203A"))),
|
|
70
|
-
message.
|
|
71
|
-
React.createElement(MarkdownRenderer, { content: message.content, maxWidth:
|
|
78
|
+
message.role === 'assistant' ? (React.createElement(Box, { borderStyle: "single", borderColor: borderColor, borderLeft: true, borderRight: false, borderTop: false, borderBottom: false, paddingLeft: 1, flexDirection: "column", width: "100%" },
|
|
79
|
+
React.createElement(MarkdownRenderer, { content: message.content, maxWidth: (process.stdout.columns || 120) - 6 }))) : (React.createElement(Box, { paddingLeft: 2 },
|
|
72
80
|
React.createElement(Text, { color: "#ffffff" }, message.content)))));
|
|
73
81
|
});
|
|
74
82
|
//# sourceMappingURL=MessageDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageDisplay.js","sourceRoot":"","sources":["../../../src/ui/components/MessageDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageDisplay.js","sourceRoot":"","sources":["../../../src/ui/components/MessageDisplay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamingMessageDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StreamingMessageDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,UAAU,4BAA4B;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,
|
|
1
|
+
{"version":3,"file":"StreamingMessageDisplay.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StreamingMessageDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,UAAU,4BAA4B;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAyHzE,CAAC"}
|
|
@@ -26,7 +26,7 @@ export const StreamingMessageDisplay = React.memo(({ message }) => {
|
|
|
26
26
|
if (updateTimerRef.current) {
|
|
27
27
|
clearTimeout(updateTimerRef.current);
|
|
28
28
|
}
|
|
29
|
-
// Throttle updates to every
|
|
29
|
+
// Throttle updates to every 50ms for more responsive streaming while preventing excessive re-renders
|
|
30
30
|
updateTimerRef.current = setTimeout(() => {
|
|
31
31
|
const fullContent = contentBufferRef.current;
|
|
32
32
|
const lines = fullContent.split('\n');
|
|
@@ -41,7 +41,7 @@ export const StreamingMessageDisplay = React.memo(({ message }) => {
|
|
|
41
41
|
// Show all content if within limit
|
|
42
42
|
setDisplayContent(fullContent);
|
|
43
43
|
}
|
|
44
|
-
},
|
|
44
|
+
}, 50);
|
|
45
45
|
return () => {
|
|
46
46
|
if (updateTimerRef.current) {
|
|
47
47
|
clearTimeout(updateTimerRef.current);
|
|
@@ -84,8 +84,8 @@ export const StreamingMessageDisplay = React.memo(({ message }) => {
|
|
|
84
84
|
" second",
|
|
85
85
|
message.thinkingDuration !== 1 ? 's' : '',
|
|
86
86
|
" \u203A"))),
|
|
87
|
-
React.createElement(Box, { borderStyle: "single", borderColor: "#00ccff", borderLeft: true, borderRight: false, borderTop: false, borderBottom: false, paddingLeft: 1 },
|
|
88
|
-
React.createElement(MarkdownRenderer, { content: displayContent, maxWidth:
|
|
89
|
-
|
|
87
|
+
React.createElement(Box, { borderStyle: "single", borderColor: "#00ccff", borderLeft: true, borderRight: false, borderTop: false, borderBottom: false, paddingLeft: 1, flexDirection: "column" },
|
|
88
|
+
React.createElement(MarkdownRenderer, { content: displayContent, maxWidth: (process.stdout.columns || 120) - 6 }),
|
|
89
|
+
message.thoughts && message.thoughts.length > 0 && message.thinkingDuration === undefined && (React.createElement(Box, { flexDirection: "column", marginTop: 1 }, message.thoughts.map((line, idx) => (React.createElement(Text, { key: idx, dimColor: true }, line))))))));
|
|
90
90
|
});
|
|
91
91
|
//# sourceMappingURL=StreamingMessageDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamingMessageDisplay.js","sourceRoot":"","sources":["../../../src/ui/components/StreamingMessageDisplay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAMzD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA2C,KAAK,CAAC,IAAI,CAAC,CAAC,EACzF,OAAO,EACR,EAAE,EAAE;IACH,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,cAAc,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,0CAA0C;QAC1C,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;YACxC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;YAClC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtB,gBAAgB,CAAC,OAAO,GAAG,EAAE,CAAC;YAC9B,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE3C,2BAA2B;QAC3B,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"StreamingMessageDisplay.js","sourceRoot":"","sources":["../../../src/ui/components/StreamingMessageDisplay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a command is an interactive editor that needs full terminal control
|
|
3
|
+
*/
|
|
4
|
+
export declare function isInteractiveEditorCommand(command: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Check if the command is specifically for nano editor (the only remote-supported editor currently)
|
|
7
|
+
*/
|
|
8
|
+
export declare function isNanoEditor(command: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Get the display name of an editor command for user-friendly messages
|
|
11
|
+
*/
|
|
12
|
+
export declare function getEditorName(command: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Run an interactive editor with full terminal control (LOCAL mode).
|
|
15
|
+
* This function:
|
|
16
|
+
* 1. Clears the screen and enters alternate screen buffer
|
|
17
|
+
* 2. Spawns a PTY process
|
|
18
|
+
* 3. Pipes stdin directly to the PTY (raw mode)
|
|
19
|
+
* 4. Pipes PTY output directly to stdout
|
|
20
|
+
* 5. Handles cleanup on exit
|
|
21
|
+
*
|
|
22
|
+
* Uses alternate screen buffer to prevent chat history from showing through.
|
|
23
|
+
*/
|
|
24
|
+
export declare function runInteractiveEditor(command: string, cwd: string, onExit: (exitCode: number) => void): {
|
|
25
|
+
kill: () => void;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Run an interactive editor in WSL session via node-pty.
|
|
29
|
+
* Uses wsl.exe to execute the editor command in the specified distribution.
|
|
30
|
+
*/
|
|
31
|
+
export declare function runWSLEditor(distribution: string, command: string, cwd: string, onExit: (exitCode: number) => void): {
|
|
32
|
+
kill: () => void;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Run an interactive editor in Docker container via node-pty.
|
|
36
|
+
* Uses docker exec -it to execute the editor command in the container.
|
|
37
|
+
*/
|
|
38
|
+
export declare function runDockerEditor(containerId: string, command: string, cwd: string, onExit: (exitCode: number) => void): {
|
|
39
|
+
kill: () => void;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Run an interactive editor in SSH session via ssh2's interactive shell.
|
|
43
|
+
* This is more complex as we need to use the ssh2 client's shell() method
|
|
44
|
+
* instead of exec() to get a proper interactive PTY.
|
|
45
|
+
*/
|
|
46
|
+
export declare function runSSHEditor(sshClient: any, // ssh2 Client
|
|
47
|
+
command: string, cwd: string, onExit: (exitCode: number) => void): {
|
|
48
|
+
kill: () => void;
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=editor-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-utils.d.ts","sourceRoot":"","sources":["../../src/utils/editor-utils.ts"],"names":[],"mappings":"AA2BA;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAwBnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAWrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BrD;AAwKD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACnC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA6GtB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CACxB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACnC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA6BtB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACnC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA8BtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CACxB,SAAS,EAAE,GAAG,EAAE,cAAc;AAC9B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GACnC;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAwGtB"}
|