@yuaone/cli 0.4.7 → 0.4.9
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/tui/components/InputBox.d.ts.map +1 -1
- package/dist/tui/components/InputBox.js +49 -9
- package/dist/tui/components/InputBox.js.map +1 -1
- package/dist/tui/components/MessageBubble.d.ts.map +1 -1
- package/dist/tui/components/MessageBubble.js +143 -33
- package/dist/tui/components/MessageBubble.js.map +1 -1
- package/dist/tui/components/MessageList.d.ts.map +1 -1
- package/dist/tui/components/MessageList.js +15 -8
- package/dist/tui/components/MessageList.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InputBox.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAOxE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACrD,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../../src/tui/components/InputBox.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAOxE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC;IACrD,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,GACT,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA4PnC"}
|
|
@@ -16,8 +16,11 @@ export function InputBox({ onSubmit, onInterrupt, onSlashCommand, onInputChange,
|
|
|
16
16
|
const { columns } = useTerminalSize();
|
|
17
17
|
const history = useInputHistory();
|
|
18
18
|
const [value, setValue] = useState("");
|
|
19
|
+
const [cursorPos, setCursorPos] = useState(0);
|
|
19
20
|
const [pasteBadge, setPasteBadge] = useState(null);
|
|
20
21
|
const pasteTimerRef = useRef(null);
|
|
22
|
+
// Debounce onInputChange to reduce parent re-renders while typing
|
|
23
|
+
const inputChangeTimerRef = useRef(null);
|
|
21
24
|
const clearPasteBadge = useCallback(() => {
|
|
22
25
|
if (pasteTimerRef.current) {
|
|
23
26
|
clearTimeout(pasteTimerRef.current);
|
|
@@ -45,9 +48,18 @@ export function InputBox({ onSubmit, onInterrupt, onSlashCommand, onInputChange,
|
|
|
45
48
|
}
|
|
46
49
|
};
|
|
47
50
|
}, []);
|
|
48
|
-
const updateValue = useCallback((newValue) => {
|
|
51
|
+
const updateValue = useCallback((newValue, newCursor) => {
|
|
49
52
|
setValue(newValue);
|
|
50
|
-
|
|
53
|
+
setCursorPos(newCursor ?? newValue.length);
|
|
54
|
+
// Debounce onInputChange to avoid parent re-render on every keystroke
|
|
55
|
+
if (onInputChange) {
|
|
56
|
+
if (inputChangeTimerRef.current)
|
|
57
|
+
clearTimeout(inputChangeTimerRef.current);
|
|
58
|
+
inputChangeTimerRef.current = setTimeout(() => {
|
|
59
|
+
onInputChange(newValue);
|
|
60
|
+
inputChangeTimerRef.current = null;
|
|
61
|
+
}, 80);
|
|
62
|
+
}
|
|
51
63
|
}, [onInputChange]);
|
|
52
64
|
useInput((input, key) => {
|
|
53
65
|
if (disabled)
|
|
@@ -99,6 +111,24 @@ export function InputBox({ onSubmit, onInterrupt, onSlashCommand, onInputChange,
|
|
|
99
111
|
}
|
|
100
112
|
return;
|
|
101
113
|
}
|
|
114
|
+
// Left/Right arrow → move cursor inline
|
|
115
|
+
if (key.leftArrow && !slashMenuOpen) {
|
|
116
|
+
setCursorPos(p => Math.max(0, p - 1));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (key.rightArrow && !slashMenuOpen) {
|
|
120
|
+
setCursorPos(p => Math.min(value.length, p + 1));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Ctrl+A → beginning, Ctrl+E → end
|
|
124
|
+
if (key.ctrl && input === "a") {
|
|
125
|
+
setCursorPos(0);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (key.ctrl && input === "e") {
|
|
129
|
+
setCursorPos(value.length);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
102
132
|
// Arrow up/down → slash menu navigation or history
|
|
103
133
|
if (key.upArrow) {
|
|
104
134
|
if (slashMenuOpen && onSlashNavigate) {
|
|
@@ -124,11 +154,11 @@ export function InputBox({ onSubmit, onInterrupt, onSlashCommand, onInputChange,
|
|
|
124
154
|
}
|
|
125
155
|
return;
|
|
126
156
|
}
|
|
127
|
-
// Backspace
|
|
157
|
+
// Backspace — delete char before cursor
|
|
128
158
|
if (key.backspace || key.delete) {
|
|
129
|
-
if (
|
|
130
|
-
const newVal = value.slice(0, -1);
|
|
131
|
-
updateValue(newVal);
|
|
159
|
+
if (cursorPos > 0) {
|
|
160
|
+
const newVal = value.slice(0, cursorPos - 1) + value.slice(cursorPos);
|
|
161
|
+
updateValue(newVal, cursorPos - 1);
|
|
132
162
|
// Close slash menu if we deleted the "/"
|
|
133
163
|
if (!newVal.startsWith("/") && slashMenuOpen) {
|
|
134
164
|
onSlashClose?.();
|
|
@@ -150,17 +180,27 @@ export function InputBox({ onSubmit, onInterrupt, onSlashCommand, onInputChange,
|
|
|
150
180
|
if (isPaste) {
|
|
151
181
|
showPasteBadge(cleaned.length);
|
|
152
182
|
}
|
|
153
|
-
|
|
183
|
+
// Insert at cursor position
|
|
184
|
+
const newVal = value.slice(0, cursorPos) + normalized + value.slice(cursorPos);
|
|
185
|
+
updateValue(newVal, cursorPos + normalized.length);
|
|
154
186
|
}
|
|
155
187
|
}
|
|
156
188
|
});
|
|
157
189
|
const prompt = isRunning ? " " : TOKENS.brand.prompt;
|
|
158
190
|
const displayValue = isRunning ? "" : value;
|
|
159
|
-
|
|
191
|
+
const clampedCursor = Math.min(cursorPos, displayValue.length);
|
|
192
|
+
// Detect if input is a recognized slash command → show token in cyan/red
|
|
160
193
|
const isSlash = displayValue.startsWith("/");
|
|
161
194
|
const cmdToken = isSlash ? displayValue.split(" ")[0] : "";
|
|
162
195
|
const cmdRest = isSlash ? displayValue.slice(cmdToken.length) : "";
|
|
163
196
|
const cmdRecognized = isSlash && isKnownCommand(cmdToken);
|
|
164
|
-
|
|
197
|
+
// Cursor rendering: chars before cursor | cursor block (inverted) | chars after
|
|
198
|
+
const showCursor = !isRunning && !slashMenuOpen;
|
|
199
|
+
const beforeCursor = displayValue.slice(0, clampedCursor);
|
|
200
|
+
const cursorChar = displayValue[clampedCursor] ?? " ";
|
|
201
|
+
const afterCursor = displayValue.slice(clampedCursor + 1);
|
|
202
|
+
return (_jsxs(Box, { width: columns, flexDirection: "column", flexShrink: 0, children: [_jsx(Text, { dimColor: true, children: TOKENS.box.horizontal.repeat(Math.max(0, columns - 1)) }), _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { flexShrink: 1, overflow: "hidden", children: [_jsxs(Text, { dimColor: true, children: [prompt, " "] }), showCursor ? (
|
|
203
|
+
// Cursor-aware rendering
|
|
204
|
+
isSlash ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: cmdRecognized ? "cyan" : "red", children: cmdToken }), _jsx(Text, { children: beforeCursor.slice(cmdToken.length) }), _jsx(Text, { inverse: true, children: cursorChar }), _jsx(Text, { children: afterCursor })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: beforeCursor }), _jsx(Text, { inverse: true, children: cursorChar }), _jsx(Text, { children: afterCursor })] }))) : (isSlash ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: cmdRecognized ? "cyan" : "red", children: cmdToken }), _jsx(Text, { children: cmdRest })] })) : (_jsx(Text, { children: displayValue })))] }), _jsx(Box, { flexShrink: 0, children: pasteBadge ? _jsx(Text, { dimColor: true, children: pasteBadge }) : null })] })] }));
|
|
165
205
|
}
|
|
166
206
|
//# sourceMappingURL=InputBox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputBox.js","sourceRoot":"","sources":["../../../src/tui/components/InputBox.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAiB1C,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,GACM;IACd,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"InputBox.js","sourceRoot":"","sources":["../../../src/tui/components/InputBox.tsx"],"names":[],"mappings":";AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAiB1C,MAAM,UAAU,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,GACM;IACd,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IACzE,kEAAkE;IAClE,MAAM,mBAAmB,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAE/E,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QACvD,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,SAAS,GACb,SAAS,IAAI,IAAI;YACf,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YAC9D,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAExB,aAAa,CAAC,UAAU,SAAS,GAAG,CAAC,CAAC;QACtC,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACtC,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC1B,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,QAAgB,EAAE,SAAkB,EAAE,EAAE;QACvC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,YAAY,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3C,sEAAsE;QACtE,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,mBAAmB,CAAC,OAAO;gBAAE,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3E,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5C,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxB,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;IACH,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEF,QAAQ,CACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,IAAI,QAAQ;YAAE,OAAO;QAErB,+CAA+C;QAC/C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,aAAa,EAAE,CAAC;gBAClB,YAAY,EAAE,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,IAAI,SAAS,IAAI,WAAW,EAAE,CAAC;gBAC7B,WAAW,EAAE,CAAC;YAChB,CAAC;YACD,OAAO;QACT,CAAC;QAED,0CAA0C;QAC1C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,uDAAuD;YACvD,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;gBACjC,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,QAAQ,CAAC,CAAC;oBAC3B,CAAC;oBACD,WAAW,CAAC,EAAE,CAAC,CAAC;oBAChB,YAAY,EAAE,EAAE,CAAC;oBACjB,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC9C,cAAc,CAAC,OAAO,CAAC,CAAC;gBACxB,YAAY,EAAE,EAAE,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,WAAW,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,GAAG,CAAC,GAAG,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC;YACjC,IAAI,QAAQ,EAAE,CAAC;gBACb,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;YAC9B,CAAC;YACD,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC9B,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,mDAAmD;QACnD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;gBACrC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,WAAW,CAAC,IAAI,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACtE,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;gBACnC,yCAAyC;gBACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC7C,YAAY,EAAE,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,yDAAyD;QACzD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACpC,0CAA0C;YAC1C,4CAA4C;YAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;YAC/E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxF,MAAM,UAAU,GAAG,OAAO;qBACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;qBAClB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;qBACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAEvB,IAAI,OAAO,EAAE,CAAC;oBACZ,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAED,4BAA4B;gBAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/E,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IACrD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAE/D,yEAAyE;IACzE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,aAAa,GAAG,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE1D,gFAAgF;IAChF,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC;IAChD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC;IACtD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;IAE1D,OAAO,CACL,MAAC,GAAG,IAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvD,KAAC,IAAI,IAAC,QAAQ,kBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,GAAQ,EAC9E,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,aACjC,MAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ,aACnC,MAAC,IAAI,IAAC,QAAQ,mBAAE,MAAM,SAAS,EAC9B,UAAU,CAAC,CAAC,CAAC;4BACZ,yBAAyB;4BACzB,OAAO,CAAC,CAAC,CAAC,CACR,8BACE,KAAC,IAAI,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,YAAG,QAAQ,GAAQ,EAC9D,KAAC,IAAI,cAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAQ,EAClD,KAAC,IAAI,IAAC,OAAO,kBAAE,UAAU,GAAQ,EACjC,KAAC,IAAI,cAAE,WAAW,GAAQ,IACzB,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,IAAI,cAAE,YAAY,GAAQ,EAC3B,KAAC,IAAI,IAAC,OAAO,kBAAE,UAAU,GAAQ,EACjC,KAAC,IAAI,cAAE,WAAW,GAAQ,IACzB,CACJ,CACF,CAAC,CAAC,CAAC,CACF,OAAO,CAAC,CAAC,CAAC,CACR,8BACE,KAAC,IAAI,IAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,YAAG,QAAQ,GAAQ,EAC9D,KAAC,IAAI,cAAE,OAAO,GAAQ,IACrB,CACJ,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAE,YAAY,GAAQ,CAC5B,CACF,IACG,EAEN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACf,UAAU,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,QAAQ,kBAAE,UAAU,GAAQ,CAAC,CAAC,CAAC,IAAI,GACnD,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MessageBubble.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,UAAU,EAA2C,MAAM,aAAa,CAAC;AAEvF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiND,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,KAAK,EACL,QAAQ,GACT,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiJxC"}
|
|
@@ -3,25 +3,106 @@ import { Box, Text } from "ink";
|
|
|
3
3
|
import { TOKENS } from "../lib/tokens.js";
|
|
4
4
|
import { Spinner } from "./Spinner.js";
|
|
5
5
|
import { MarkdownRenderer } from "./MarkdownRenderer.js";
|
|
6
|
+
import { DiffView } from "./DiffView.js";
|
|
6
7
|
const BANNER_TITLE_PREFIX = "YUAN v";
|
|
7
8
|
const BANNER_SUBTITLE = "Autonomous Coding Agent";
|
|
8
9
|
const FOX_PIXEL_PALETTE = {
|
|
9
10
|
".": null,
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"N": "#
|
|
11
|
+
"O": "#f97316", // orange body
|
|
12
|
+
"D": "#c2410c", // dark orange (ears/outline)
|
|
13
|
+
"W": "#f8fafc", // white (face/chest)
|
|
14
|
+
"N": "#1c1917", // dark (eyes/nose)
|
|
15
|
+
"T": "#fcd34d", // tan/yellow (inner ear)
|
|
14
16
|
};
|
|
15
17
|
const FOX_PIXEL_SPRITE = [
|
|
16
|
-
"..
|
|
17
|
-
".
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"..
|
|
22
|
-
"..
|
|
23
|
-
"
|
|
18
|
+
"....DOODD..DDOOD....",
|
|
19
|
+
"...DOOOTD.DTOOD....",
|
|
20
|
+
"...DOOOOOOOOOOOD...",
|
|
21
|
+
"..DOOOOOOOOOOOOOD..",
|
|
22
|
+
"..DOOWWWWWWWWWOOD..",
|
|
23
|
+
"..DOOWNNOONNWOOD...",
|
|
24
|
+
"..DOOWWWWWWWWWOOD..",
|
|
25
|
+
"..DOOOWWNNWWWOOOD..",
|
|
26
|
+
"...DOOOOOOOOOOOD...",
|
|
27
|
+
"....DDDDDDDDDDDD...",
|
|
24
28
|
];
|
|
29
|
+
const DIFF_TOOL_NAMES = new Set(["file_write", "file_edit", "edit_file", "write_file"]);
|
|
30
|
+
const MAX_DIFF_LINES = 20;
|
|
31
|
+
/** Parse a unified diff string into ParsedDiff structure */
|
|
32
|
+
function parseUnifiedDiff(raw, filePath = "") {
|
|
33
|
+
const lines = raw.split("\n");
|
|
34
|
+
const hunks = [];
|
|
35
|
+
let additions = 0;
|
|
36
|
+
let deletions = 0;
|
|
37
|
+
let currentHunk = null;
|
|
38
|
+
let oldLineNo = 0;
|
|
39
|
+
let newLineNo = 0;
|
|
40
|
+
let hasSignLines = false;
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
if (line.startsWith("@@")) {
|
|
43
|
+
const m = line.match(/@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
|
|
44
|
+
if (m) {
|
|
45
|
+
currentHunk = {
|
|
46
|
+
startOld: parseInt(m[1], 10),
|
|
47
|
+
startNew: parseInt(m[2], 10),
|
|
48
|
+
lines: [],
|
|
49
|
+
};
|
|
50
|
+
oldLineNo = currentHunk.startOld;
|
|
51
|
+
newLineNo = currentHunk.startNew;
|
|
52
|
+
hunks.push(currentHunk);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (line.startsWith("+") && !line.startsWith("+++")) {
|
|
56
|
+
hasSignLines = true;
|
|
57
|
+
if (currentHunk) {
|
|
58
|
+
currentHunk.lines.push({ type: "add", content: line.slice(1), newLineNo: newLineNo++ });
|
|
59
|
+
}
|
|
60
|
+
additions++;
|
|
61
|
+
}
|
|
62
|
+
else if (line.startsWith("-") && !line.startsWith("---")) {
|
|
63
|
+
hasSignLines = true;
|
|
64
|
+
if (currentHunk) {
|
|
65
|
+
currentHunk.lines.push({ type: "delete", content: line.slice(1), oldLineNo: oldLineNo++ });
|
|
66
|
+
}
|
|
67
|
+
deletions++;
|
|
68
|
+
}
|
|
69
|
+
else if (line.startsWith(" ") && currentHunk) {
|
|
70
|
+
currentHunk.lines.push({ type: "context", content: line.slice(1), oldLineNo: oldLineNo++, newLineNo: newLineNo++ });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (!hasSignLines || hunks.length === 0)
|
|
74
|
+
return null;
|
|
75
|
+
// Extract filePath from diff header if not provided
|
|
76
|
+
if (!filePath) {
|
|
77
|
+
const plusLine = lines.find(l => l.startsWith("+++ "));
|
|
78
|
+
if (plusLine)
|
|
79
|
+
filePath = plusLine.replace(/^\+\+\+ (b\/)?/, "");
|
|
80
|
+
}
|
|
81
|
+
return { filePath, hunks, additions, deletions };
|
|
82
|
+
}
|
|
83
|
+
/** Limit ParsedDiff to maxLines total diff lines for compact display */
|
|
84
|
+
function limitDiffLines(diff, maxLines) {
|
|
85
|
+
let count = 0;
|
|
86
|
+
let truncated = 0;
|
|
87
|
+
const limitedHunks = [];
|
|
88
|
+
for (const hunk of diff.hunks) {
|
|
89
|
+
if (count >= maxLines) {
|
|
90
|
+
truncated += hunk.lines.length;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const remaining = maxLines - count;
|
|
94
|
+
if (hunk.lines.length <= remaining) {
|
|
95
|
+
limitedHunks.push(hunk);
|
|
96
|
+
count += hunk.lines.length;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
truncated += hunk.lines.length - remaining;
|
|
100
|
+
limitedHunks.push({ ...hunk, lines: hunk.lines.slice(0, remaining) });
|
|
101
|
+
count = maxLines;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return { diff: { ...diff, hunks: limitedHunks }, truncated };
|
|
105
|
+
}
|
|
25
106
|
function truncateArgs(args, maxLen) {
|
|
26
107
|
if (!args)
|
|
27
108
|
return "";
|
|
@@ -36,7 +117,7 @@ function PixelFoxSprite() {
|
|
|
36
117
|
return (_jsx(Text, { color: color, children: "██" }, `fox-px-${rowIndex}-${colIndex}`));
|
|
37
118
|
}) }, `fox-row-${rowIndex}`))) }));
|
|
38
119
|
}
|
|
39
|
-
function ToolCallLine({ tc, isLast }) {
|
|
120
|
+
function ToolCallLine({ tc, isLast, width }) {
|
|
40
121
|
const connector = isLast ? TOKENS.tree.last : TOKENS.tree.branch;
|
|
41
122
|
const icon = tc.status === "running" ? null :
|
|
42
123
|
tc.status === "success" ? "✓" :
|
|
@@ -46,7 +127,26 @@ function ToolCallLine({ tc, isLast }) {
|
|
|
46
127
|
undefined;
|
|
47
128
|
const duration = tc.duration != null ? ` (${tc.duration.toFixed(1)}s)` : "";
|
|
48
129
|
const argsTruncated = truncateArgs(tc.argsSummary, 40);
|
|
49
|
-
|
|
130
|
+
// Resolve diff to show: from result.diff (pre-parsed) or parse result.content if it's a unified diff
|
|
131
|
+
let resolvedDiff = null;
|
|
132
|
+
if (tc.status === "success" &&
|
|
133
|
+
DIFF_TOOL_NAMES.has(tc.toolName) &&
|
|
134
|
+
tc.result) {
|
|
135
|
+
if (tc.result.diff) {
|
|
136
|
+
resolvedDiff = tc.result.diff;
|
|
137
|
+
}
|
|
138
|
+
else if (tc.result.content && tc.result.content.includes("@@")) {
|
|
139
|
+
resolvedDiff = parseUnifiedDiff(tc.result.content, tc.argsSummary);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
let displayDiff = null;
|
|
143
|
+
let truncatedLines = 0;
|
|
144
|
+
if (resolvedDiff) {
|
|
145
|
+
const limited = limitDiffLines(resolvedDiff, MAX_DIFF_LINES);
|
|
146
|
+
displayDiff = limited.diff;
|
|
147
|
+
truncatedLines = limited.truncated;
|
|
148
|
+
}
|
|
149
|
+
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(Box, { children: tc.status === "running" ? (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "#f59e0b", children: [TOKENS.brand.prefix, " "] }), _jsx(Text, { bold: true, color: "white", children: tc.toolName }), argsTruncated ? _jsxs(Text, { dimColor: true, children: ["(", argsTruncated, ")"] }) : null, _jsx(Text, { children: " " }), _jsx(Spinner, {})] })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { dimColor: true, children: [connector, " "] }), _jsx(Text, { color: iconColor, children: icon }), _jsxs(Text, { color: "white", children: [" ", tc.toolName] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: [" ", argsTruncated] }) : null, _jsx(Text, { dimColor: true, children: duration })] })) }), displayDiff && (_jsxs(Box, { flexDirection: "column", marginTop: 0, paddingLeft: 2, children: [_jsx(DiffView, { diff: displayDiff, width: width - 4 }), truncatedLines > 0 && (_jsxs(Text, { dimColor: true, children: [" \u2026 ", truncatedLines, " more line", truncatedLines === 1 ? "" : "s"] }))] }))] }));
|
|
50
150
|
}
|
|
51
151
|
export function MessageBubble({ message, width, isLatest, }) {
|
|
52
152
|
const msg = message;
|
|
@@ -55,31 +155,41 @@ export function MessageBubble({ message, width, isLatest, }) {
|
|
|
55
155
|
msg.content.includes(BANNER_SUBTITLE);
|
|
56
156
|
switch (msg.role) {
|
|
57
157
|
case "user": {
|
|
58
|
-
//
|
|
59
|
-
const maxContentWidth = width -
|
|
158
|
+
// Claude Code style: left-aligned, solid dark bg bar, ▶ prefix
|
|
159
|
+
const maxContentWidth = width - 5; // "▶ " (2) + right pad (3)
|
|
60
160
|
const lines = [];
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
lines.push(currentLine);
|
|
67
|
-
currentLine = word;
|
|
161
|
+
const rawLines = msg.content.split("\n");
|
|
162
|
+
for (const rawLine of rawLines) {
|
|
163
|
+
if (!rawLine) {
|
|
164
|
+
lines.push("");
|
|
165
|
+
continue;
|
|
68
166
|
}
|
|
69
|
-
|
|
70
|
-
|
|
167
|
+
const words = rawLine.split(" ");
|
|
168
|
+
let currentLine = "";
|
|
169
|
+
for (const word of words) {
|
|
170
|
+
if (currentLine.length + word.length + 1 > maxContentWidth) {
|
|
171
|
+
if (currentLine)
|
|
172
|
+
lines.push(currentLine);
|
|
173
|
+
currentLine = word;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
currentLine = currentLine ? `${currentLine} ${word}` : word;
|
|
177
|
+
}
|
|
71
178
|
}
|
|
179
|
+
if (currentLine)
|
|
180
|
+
lines.push(currentLine);
|
|
72
181
|
}
|
|
73
|
-
if (
|
|
74
|
-
lines.push(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
182
|
+
if (lines.length === 0)
|
|
183
|
+
lines.push("");
|
|
184
|
+
const fillWidth = width - 1;
|
|
185
|
+
return (_jsx(Box, { flexDirection: "column", marginBottom: 1, children: lines.map((line, i) => {
|
|
186
|
+
const prefix = i === 0 ? "▶ " : " ";
|
|
187
|
+
const full = `${prefix}${line}`.padEnd(fillWidth);
|
|
188
|
+
return (_jsx(Text, { backgroundColor: "#2a2a2a", color: "white", children: full }, i));
|
|
189
|
+
}) }));
|
|
80
190
|
}
|
|
81
191
|
case "assistant":
|
|
82
|
-
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: msg.isStreaming ? (_jsx(Spinner, { label: TOKENS.brand.name })) : (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: TOKENS.brand.prefix }), _jsxs(Text, { bold: true, color: "white", children: [" ", TOKENS.brand.name] })] })) }), msg.content && (_jsx(Box, { paddingLeft: 3, marginTop: 0, children: _jsx(MarkdownRenderer, { content: msg.content, width: width - 6 }) })), msg.isStreaming && isLatest && (_jsx(Box, { paddingLeft: 3, children: _jsx(Text, { dimColor: true, children: "\u2588" }) })), msg.toolCalls && msg.toolCalls.length > 0 && (_jsx(Box, { flexDirection: "column", marginTop: 0, children: msg.toolCalls.map((tc, i) => (_jsx(ToolCallLine, { tc: tc, isLast: i === msg.toolCalls.length - 1 }, tc.id))) }))] }));
|
|
192
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: msg.isStreaming ? (_jsx(Spinner, { label: TOKENS.brand.name })) : (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: TOKENS.brand.prefix }), _jsxs(Text, { bold: true, color: "white", children: [" ", TOKENS.brand.name] })] })) }), msg.content && (_jsx(Box, { paddingLeft: 3, marginTop: 0, children: _jsx(MarkdownRenderer, { content: msg.content, width: width - 6 }) })), msg.isStreaming && isLatest && (_jsx(Box, { paddingLeft: 3, children: _jsx(Text, { dimColor: true, children: "\u2588" }) })), msg.toolCalls && msg.toolCalls.length > 0 && (_jsx(Box, { flexDirection: "column", marginTop: 0, children: msg.toolCalls.map((tc, i) => (_jsx(ToolCallLine, { tc: tc, isLast: i === msg.toolCalls.length - 1, width: width }, tc.id))) }))] }));
|
|
83
193
|
case "tool": {
|
|
84
194
|
const icon = msg.toolSuccess ? "✓" : "✗";
|
|
85
195
|
const iconColor = msg.toolSuccess ? "green" : "red";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.js","sourceRoot":"","sources":["../../../src/tui/components/MessageBubble.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageBubble.js","sourceRoot":"","sources":["../../../src/tui/components/MessageBubble.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAA4C,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAA4C,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuCD,eAAO,MAAM,WAAW,8CAgGtB,CAAC"}
|
|
@@ -15,27 +15,34 @@ import { useTerminalSize } from "../hooks/useTerminalSize.js";
|
|
|
15
15
|
import { MessageBubble } from "./MessageBubble.js";
|
|
16
16
|
import { Spinner } from "./Spinner.js";
|
|
17
17
|
import { TOKENS } from "../lib/tokens.js";
|
|
18
|
+
const DIFF_TOOL_NAMES = new Set(["file_write", "file_edit", "edit_file", "write_file"]);
|
|
18
19
|
/**
|
|
19
20
|
* Estimate how many terminal lines a message will occupy.
|
|
20
21
|
* Conservative (overestimates) to guarantee no overflow.
|
|
21
22
|
*/
|
|
22
23
|
function estimateLines(msg, columns) {
|
|
23
|
-
const contentWidth = Math.max(20, columns - 8);
|
|
24
|
+
const contentWidth = Math.max(20, columns - 8);
|
|
24
25
|
const textLen = msg.content?.length ?? 0;
|
|
25
26
|
const contentLines = textLen === 0 ? 0 : Math.ceil(textLen / contentWidth);
|
|
26
27
|
switch (msg.role) {
|
|
27
28
|
case "user":
|
|
28
|
-
// Bubble: word-wrapped lines + 1 marginBottom
|
|
29
29
|
return Math.max(1, contentLines) + 1;
|
|
30
30
|
case "assistant": {
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const toolCalls = msg.toolCalls ?? [];
|
|
32
|
+
// Each tool call: 1 status line + up to 22 diff lines if file write/edit
|
|
33
|
+
const toolLines = toolCalls.reduce((sum, tc) => {
|
|
34
|
+
const hasDiff = DIFF_TOOL_NAMES.has(tc.toolName) && tc.status === "success";
|
|
35
|
+
return sum + 1 + (hasDiff ? 22 : 0);
|
|
36
|
+
}, 0);
|
|
33
37
|
return 1 + Math.max(0, contentLines) + toolLines + 1;
|
|
34
38
|
}
|
|
35
39
|
case "tool":
|
|
36
40
|
return 1;
|
|
37
41
|
case "system": {
|
|
38
|
-
//
|
|
42
|
+
// Banner message with 16×10 fox sprite = 10 sprite rows + 4 text lines
|
|
43
|
+
const isBanner = msg.content?.includes("YUAN v") && msg.content?.includes("Autonomous Coding Agent");
|
|
44
|
+
if (isBanner)
|
|
45
|
+
return 14;
|
|
39
46
|
const newlines = (msg.content?.match(/\n/g) ?? []).length;
|
|
40
47
|
return Math.max(1, newlines + 1);
|
|
41
48
|
}
|
|
@@ -58,13 +65,13 @@ export const MessageList = memo(function MessageList({ messages, isThinking, max
|
|
|
58
65
|
}
|
|
59
66
|
prevMsgCountRef.current = messages.length;
|
|
60
67
|
}, [messages.length, pinned]);
|
|
61
|
-
// Key handling for scroll
|
|
68
|
+
// Key handling for scroll (PageUp/PageDown + Ctrl+Up/Down)
|
|
62
69
|
useInput((_input, key) => {
|
|
63
|
-
if (key.pageUp) {
|
|
70
|
+
if (key.pageUp || (key.ctrl && key.upArrow)) {
|
|
64
71
|
setPinned(false);
|
|
65
72
|
setScrollBack((prev) => Math.min(prev + 5, Math.max(0, messages.length - 1)));
|
|
66
73
|
}
|
|
67
|
-
else if (key.pageDown) {
|
|
74
|
+
else if (key.pageDown || (key.ctrl && key.downArrow)) {
|
|
68
75
|
setScrollBack((prev) => {
|
|
69
76
|
const next = Math.max(0, prev - 5);
|
|
70
77
|
if (next === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.js","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,OAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAY1C;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAe,EAAE,OAAe;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"MessageList.js","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuaone/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "YUAN — Autonomous Coding Agent CLI",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"type": "module",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"string-width": "7.2.0",
|
|
49
49
|
"strip-ansi": "7.1.0",
|
|
50
50
|
"wrap-ansi": "9.0.0",
|
|
51
|
-
"@yuaone/core": "0.4.
|
|
52
|
-
"@yuaone/tools": "0.4.
|
|
51
|
+
"@yuaone/core": "0.4.9",
|
|
52
|
+
"@yuaone/tools": "0.4.9"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/node": "^22.19.15",
|