s-app-scoder-agent 0.8.17 → 0.8.20
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/chat-views.js +1 -1
- package/dist/tui/chrome.js +12 -10
- package/package.json +1 -1
package/dist/tui/chat-views.js
CHANGED
|
@@ -116,7 +116,7 @@ export function ChatItemView({ item }) {
|
|
|
116
116
|
case "user":
|
|
117
117
|
// User messages stand out with a full colored border + bold label so they're
|
|
118
118
|
// immediately visible at a glance, distinct from the agent's ◆ markdown.
|
|
119
|
-
return (_jsx(Box, { marginTop: 1, marginLeft: 1, children: _jsxs(Text, { children: [_jsx(Text, { color:
|
|
119
|
+
return (_jsx(Box, { marginTop: 1, marginLeft: 1, children: _jsx(Box, { borderStyle: "single", borderColor: theme.user, borderLeft: true, borderRight: false, borderTop: false, borderBottom: false, backgroundColor: "gray", width: "100%", paddingX: 1, paddingTop: 1, paddingBottom: 1, flexDirection: "column", children: _jsxs(Text, { children: [_jsx(Text, { color: "white", bold: true, children: "you \u25B8 " }), _jsx(Text, { color: "white", bold: true, children: item.text })] }) }) }));
|
|
120
120
|
case "assistant": {
|
|
121
121
|
// Streaming: dim with pulsing cursor; finalized: markdown with agent mark.
|
|
122
122
|
if (item.streaming || !item.text) {
|
package/dist/tui/chrome.js
CHANGED
|
@@ -69,22 +69,24 @@ export function StatusBar({ state, scroll }) {
|
|
|
69
69
|
const width = Math.max(40, (columns ?? 100) - 6);
|
|
70
70
|
const statusColor = state.status === "running" ? theme.accent :
|
|
71
71
|
state.status === "success" ? theme.success :
|
|
72
|
-
state.status === "failed" ? theme.error :
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
state.status === "failed" ? theme.error :
|
|
73
|
+
state.status === "aborted" ? theme.warn : theme.dim;
|
|
74
|
+
// Status label only — step count (x/40) and elapsed time live in the
|
|
75
|
+
// sidebar METRICS section, so they are intentionally NOT duplicated here.
|
|
76
|
+
const statusLabel = state.status === "idle" ? "idle" : state.status;
|
|
77
|
+
// Icon per status — fills the gap before the label (running keeps the
|
|
78
|
+
// animated spinner; other states get a static, status-appropriate glyph).
|
|
79
|
+
const statusIcon = state.status === "success" ? "✓" :
|
|
80
|
+
state.status === "failed" ? "✗" :
|
|
81
|
+
state.status === "aborted" ? "⚠" :
|
|
82
|
+
state.status === "idle" ? "○" : null;
|
|
76
83
|
const model = state.model || "—";
|
|
77
|
-
const elapsed = state.startedAt
|
|
78
|
-
? `${Math.floor((Date.now() - state.startedAt) / 60000)}:${String(Math.floor((Date.now() - state.startedAt) / 1000) % 60).padStart(2, "0")}`
|
|
79
|
-
: null;
|
|
80
84
|
// Right side: scroll position OR helpful keybinds
|
|
81
85
|
const rightText = scroll
|
|
82
86
|
? `scroll ${scroll} · esc→tail`
|
|
83
87
|
: `⏎ send · ctrl+s sessions · ctrl+t ${state.thinkingVisible ? "◉" : "○"} · esc abort · ctrl+c quit`;
|
|
84
88
|
const leftBudget = Math.max(24, width - rightText.length - 3);
|
|
85
89
|
let left = statusLabel;
|
|
86
|
-
if (elapsed && state.status === "running")
|
|
87
|
-
left += ` · ${elapsed}`;
|
|
88
90
|
if (model && model !== "—") {
|
|
89
91
|
const part = ` · ${model}`;
|
|
90
92
|
if (left.length + part.length <= leftBudget)
|
|
@@ -92,5 +94,5 @@ export function StatusBar({ state, scroll }) {
|
|
|
92
94
|
else
|
|
93
95
|
left = fit(left, leftBudget);
|
|
94
96
|
}
|
|
95
|
-
return (_jsxs(Box, { borderStyle: "bold", borderColor: theme.border, paddingX: 1, justifyContent: "space-between", alignItems: "center", flexShrink: 0, children: [_jsxs(Text, { children: [state.status === "running" && _jsx(Spinner, { active: true }), state.status === "running" ? " " : " ", _jsx(Text, { color: statusColor, bold: true, children: left })] }), _jsx(Text, { dimColor: true, children: fit(rightText, Math.floor(width * 0.5)) })] }));
|
|
97
|
+
return (_jsxs(Box, { borderStyle: "bold", borderColor: theme.border, paddingX: 1, justifyContent: "space-between", alignItems: "center", flexShrink: 0, children: [_jsxs(Text, { children: [state.status === "running" && _jsx(Spinner, { active: true }), state.status === "running" ? " " : statusIcon ? `${statusIcon} ` : " ", _jsx(Text, { color: statusColor, bold: true, children: left })] }), _jsx(Text, { dimColor: true, children: fit(rightText, Math.floor(width * 0.5)) })] }));
|
|
96
98
|
}
|
package/package.json
CHANGED