@yuaone/cli 0.6.1 → 0.7.1

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 (39) hide show
  1. package/dist/cli.js +73 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/index.d.ts.map +1 -1
  4. package/dist/commands/index.js +70 -0
  5. package/dist/commands/index.js.map +1 -1
  6. package/dist/tui/App.d.ts.map +1 -1
  7. package/dist/tui/App.js +85 -13
  8. package/dist/tui/App.js.map +1 -1
  9. package/dist/tui/agent-bridge.d.ts.map +1 -1
  10. package/dist/tui/agent-bridge.js +36 -8
  11. package/dist/tui/agent-bridge.js.map +1 -1
  12. package/dist/tui/components/FooterBar.d.ts.map +1 -1
  13. package/dist/tui/components/FooterBar.js +8 -1
  14. package/dist/tui/components/FooterBar.js.map +1 -1
  15. package/dist/tui/components/InputBox.d.ts +13 -1
  16. package/dist/tui/components/InputBox.d.ts.map +1 -1
  17. package/dist/tui/components/InputBox.js +95 -21
  18. package/dist/tui/components/InputBox.js.map +1 -1
  19. package/dist/tui/components/MessageBubble.d.ts.map +1 -1
  20. package/dist/tui/components/MessageBubble.js +64 -16
  21. package/dist/tui/components/MessageBubble.js.map +1 -1
  22. package/dist/tui/components/MessageList.d.ts +2 -0
  23. package/dist/tui/components/MessageList.d.ts.map +1 -1
  24. package/dist/tui/components/MessageList.js +21 -16
  25. package/dist/tui/components/MessageList.js.map +1 -1
  26. package/dist/tui/components/TaskPanel.d.ts +23 -0
  27. package/dist/tui/components/TaskPanel.d.ts.map +1 -0
  28. package/dist/tui/components/TaskPanel.js +71 -0
  29. package/dist/tui/components/TaskPanel.js.map +1 -0
  30. package/dist/tui/hooks/useAgentStream.d.ts.map +1 -1
  31. package/dist/tui/hooks/useAgentStream.js +72 -0
  32. package/dist/tui/hooks/useAgentStream.js.map +1 -1
  33. package/dist/tui/hooks/useTaskPanel.d.ts +30 -0
  34. package/dist/tui/hooks/useTaskPanel.d.ts.map +1 -0
  35. package/dist/tui/hooks/useTaskPanel.js +64 -0
  36. package/dist/tui/hooks/useTaskPanel.js.map +1 -0
  37. package/dist/tui/types.d.ts +21 -0
  38. package/dist/tui/types.d.ts.map +1 -1
  39. package/package.json +3 -3
@@ -14,6 +14,7 @@ import { MarkdownRenderer } from "./MarkdownRenderer.js";
14
14
  import { DiffView } from "./DiffView.js";
15
15
  const BANNER_TITLE_PREFIX = "YUAN v";
16
16
  const BANNER_SUBTITLE = "Autonomous Coding Agent";
17
+ const BANNER_META_SEP = "---META---";
17
18
  const FOX_PIXEL_PALETTE = {
18
19
  ".": null,
19
20
  "O": "#f97316", // orange body
@@ -134,8 +135,27 @@ function BlinkingDot() {
134
135
  }, []);
135
136
  return _jsx(Text, { color: bright ? "white" : "#555555", children: "\u25CF" });
136
137
  }
138
+ /** Get a short "verb" label for the tool call header */
139
+ function toolVerb(toolName) {
140
+ const n = toolName.toLowerCase();
141
+ if (n.includes("read"))
142
+ return "read";
143
+ if (n.includes("write"))
144
+ return "write";
145
+ if (n.includes("edit"))
146
+ return "edit";
147
+ if (n.includes("bash") || n.includes("shell") || n.includes("exec"))
148
+ return "bash";
149
+ if (n.includes("grep") || n.includes("search"))
150
+ return "search";
151
+ if (n.includes("glob") || n.includes("find"))
152
+ return "find";
153
+ if (n.includes("git"))
154
+ return "git";
155
+ return toolName;
156
+ }
137
157
  function ToolCallLine({ tc, isLast, width }) {
138
- const argsTruncated = truncateArgs(tc.argsSummary, 40);
158
+ const argsTruncated = truncateArgs(tc.argsSummary, 38);
139
159
  // Resolve diff
140
160
  let resolvedDiff = null;
141
161
  if (tc.status === "success" && DIFF_TOOL_NAMES.has(tc.toolName) && tc.result) {
@@ -153,13 +173,17 @@ function ToolCallLine({ tc, isLast, width }) {
153
173
  displayDiff = limited.diff;
154
174
  truncatedLines = limited.truncated;
155
175
  }
156
- return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(Box, { children: tc.status === "running" ? (
157
- // Running: blinking white/gray dot + bold tool name + args
158
- _jsxs(_Fragment, { children: [_jsx(BlinkingDot, {}), _jsxs(Text, { bold: true, color: "white", children: [" ", tc.toolName] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: ["(", argsTruncated, ")"] }) : null] })) : tc.status === "error" ? (
159
- // Error: red dot + dim tool name
160
- _jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: "\u25CF" }), _jsxs(Text, { dimColor: true, children: [" ", tc.toolName] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: [" ", argsTruncated] }) : null, _jsx(Text, { color: "red", children: " \u2717" })] })) : (
161
- // Success: gray dot + dim tool name + duration
162
- _jsxs(_Fragment, { children: [_jsx(Text, { color: "#555555", children: "\u25CF" }), _jsxs(Text, { dimColor: true, children: [" ", tc.toolName] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: [" ", argsTruncated] }) : null, tc.duration != null ? (_jsxs(Text, { dimColor: true, children: [" ", tc.duration.toFixed(1), "s"] })) : null] })) }), 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"] }))] }))] }));
176
+ // Tree connector: ├─ for non-last, └─ for last tool
177
+ const connector = isLast ? TOKENS.tree.last : TOKENS.tree.branch;
178
+ // Left continuation gutter for diff (aligns under tool args)
179
+ const diffGutter = isLast ? " " : `${TOKENS.tree.pipe} `;
180
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: connector }), tc.status === "running" ? (
181
+ // Running: blinking dot + bold tool verb + args
182
+ _jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(BlinkingDot, {}), _jsxs(Text, { bold: true, color: "white", children: [" ", toolVerb(tc.toolName)] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: [" ", argsTruncated] }) : null] })) : tc.status === "error" ? (
183
+ // Error: red ✗ + dim tool verb + args
184
+ _jsxs(_Fragment, { children: [_jsx(Text, { color: "red", children: " \u2717" }), _jsxs(Text, { dimColor: true, children: [" ", toolVerb(tc.toolName)] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: [" ", argsTruncated] }) : null] })) : (
185
+ // Success: dim ✓ + dim verb + args + duration
186
+ _jsxs(_Fragment, { children: [_jsx(Text, { color: "#3a7d44", children: " \u2713" }), _jsxs(Text, { dimColor: true, children: [" ", toolVerb(tc.toolName)] }), argsTruncated ? _jsxs(Text, { dimColor: true, children: [" ", argsTruncated] }) : null, tc.duration != null ? (_jsxs(Text, { color: "#555555", children: [" ", tc.duration.toFixed(1), "s"] })) : null] }))] }), displayDiff && (_jsxs(Box, { flexDirection: "column", paddingLeft: 4, children: [_jsx(DiffView, { diff: displayDiff, width: width - 6 }), truncatedLines > 0 && (_jsxs(Text, { dimColor: true, children: [" \u2026 ", truncatedLines, " more line", truncatedLines === 1 ? "" : "s"] }))] }))] }));
163
187
  }
164
188
  export function MessageBubble({ message, width, isLatest, }) {
165
189
  const msg = message;
@@ -208,8 +232,12 @@ export function MessageBubble({ message, width, isLatest, }) {
208
232
  return (_jsxs(Text, { backgroundColor: "#2a2a2a", color: "white", children: [full, " ".repeat(pad)] }, i));
209
233
  }) }));
210
234
  }
211
- case "assistant":
212
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: msg.isStreaming && isLatest ? (_jsx(BlinkingDot, {})) : (_jsx(Text, { dimColor: true, children: "\u25CF" })) }), msg.content && (_jsx(Box, { paddingLeft: 2, children: _jsx(MarkdownRenderer, { content: msg.content, width: width - 4 }) })), msg.isStreaming && isLatest && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "\u2588" }) })), msg.toolCalls && msg.toolCalls.length > 0 && (_jsx(Box, { flexDirection: "column", children: msg.toolCalls.map((tc, i) => (_jsx(ToolCallLine, { tc: tc, isLast: i === msg.toolCalls.length - 1, width: width }, tc.id))) }))] }));
235
+ case "assistant": {
236
+ const toolCalls = msg.toolCalls ?? [];
237
+ const hasTools = toolCalls.length > 0;
238
+ const hasText = !!msg.content;
239
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: msg.isStreaming && isLatest ? (_jsxs(_Fragment, { children: [_jsx(BlinkingDot, {}), _jsx(Text, { dimColor: true, children: " yuan" })] })) : (_jsx(Text, { dimColor: true, children: "\u25CF yuan" })) }), hasText && (_jsx(Box, { paddingLeft: 2, children: _jsx(MarkdownRenderer, { content: msg.content, width: width - 4 }) })), msg.isStreaming && isLatest && !hasText && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, children: "\u2588" }) })), hasTools && (_jsx(Box, { flexDirection: "column", paddingLeft: 2, marginTop: hasText ? 1 : 0, children: toolCalls.map((tc, i) => (_jsx(ToolCallLine, { tc: tc, isLast: i === toolCalls.length - 1, width: width - 2 }, tc.id))) }))] }));
240
+ }
213
241
  case "tool": {
214
242
  const icon = msg.toolSuccess ? "✓" : "✗";
215
243
  const iconColor = msg.toolSuccess ? "green" : "red";
@@ -220,12 +248,32 @@ export function MessageBubble({ message, width, isLatest, }) {
220
248
  }
221
249
  case "system":
222
250
  if (isBannerMessage) {
223
- const lines = msg.content.split("\n");
224
- const title = lines.find((line) => line.startsWith(BANNER_TITLE_PREFIX)) ?? "";
225
- const subtitle = lines.find((line) => line.includes(BANNER_SUBTITLE)) ?? "";
226
- const help = lines.find((line) => line.includes("Type /help")) ?? "";
227
- const site = lines.find((line) => line.includes("yuaone.com")) ?? "";
228
- return (_jsxs(Box, { flexDirection: "row", alignItems: "flex-start", marginBottom: 1, paddingLeft: 1, children: [_jsx(Box, { marginRight: 2, children: _jsx(PixelFoxSprite, {}) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: title }), _jsx(Text, { color: "#cbd5e1", children: subtitle }), _jsx(Box, { height: 1 }), _jsx(Text, { dimColor: true, children: help }), _jsx(Text, { dimColor: true, children: site })] })] }));
251
+ // Parse metadata embedded in banner content
252
+ const metaIdx = msg.content.indexOf(BANNER_META_SEP);
253
+ let meta = {};
254
+ let baseContent = msg.content;
255
+ if (metaIdx >= 0) {
256
+ try {
257
+ meta = JSON.parse(msg.content.slice(metaIdx + BANNER_META_SEP.length + 1).trim());
258
+ }
259
+ catch { /* ignore */ }
260
+ baseContent = msg.content.slice(0, metaIdx);
261
+ }
262
+ const lines = baseContent.split("\n");
263
+ const title = lines.find((l) => l.startsWith(BANNER_TITLE_PREFIX)) ?? `YUAN v${meta.version ?? ""}`;
264
+ const help = lines.find((l) => l.includes("/help")) ?? "Type /help for commands";
265
+ const site = lines.find((l) => l.includes("yuaone.com")) ?? "yuaone.com";
266
+ // What's new items for current version
267
+ const WHATS_NEW = [
268
+ "Native Gemini reasoning stream",
269
+ "Tool tree UI ├─✓/└─●",
270
+ "LLM Orchestrator (retry + telemetry)",
271
+ "Non-blocking ctx summarization",
272
+ "Pending queue bubble + ↑ edit",
273
+ ];
274
+ const borderColor = "#5c3a1a";
275
+ const B = TOKENS.box;
276
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, paddingLeft: 0, children: [_jsxs(Text, { color: borderColor, children: [B.topLeft, B.horizontal.repeat(2), " ", title, " ", B.horizontal.repeat(Math.max(0, width - title.length - 6)), B.topRight] }), _jsxs(Box, { flexDirection: "row", children: [_jsxs(Box, { flexDirection: "column", paddingLeft: 2, flexGrow: 0, minWidth: 30, children: [_jsx(PixelFoxSprite, {}), _jsx(Box, { height: 1 }), meta.model && _jsx(Text, { dimColor: true, children: meta.model }), meta.provider && _jsx(Text, { dimColor: true, children: meta.provider }), meta.cwd && _jsx(Text, { dimColor: true, children: meta.cwd }), _jsx(Box, { height: 1 }), _jsx(Text, { dimColor: true, children: help }), _jsx(Text, { dimColor: true, children: site })] }), _jsx(Box, { flexDirection: "column", paddingLeft: 1, paddingRight: 1, children: Array.from({ length: FOX_PIXEL_SPRITE.length + 7 }).map((_, i) => (_jsx(Text, { color: borderColor, children: B.vertical }, i))) }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingRight: 2, children: [(meta.model || meta.provider) && (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [meta.model && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "model " }), _jsx(Text, { color: "white", children: meta.model })] })), meta.provider && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "via " }), _jsx(Text, { dimColor: true, children: meta.provider })] }))] })), _jsx(Text, { bold: true, color: "white", children: "What's new" }), _jsx(Box, { height: 1 }), WHATS_NEW.map((item, i) => (_jsxs(Box, { children: [_jsx(Text, { color: "#3a7d44", children: "\u00B7" }), _jsxs(Text, { dimColor: true, children: [" ", item] })] }, i)))] })] }), _jsxs(Text, { color: borderColor, children: [B.bottomLeft, B.horizontal.repeat(Math.max(0, width - 2)), B.bottomRight] })] }));
229
277
  }
230
278
  return (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { dimColor: true, children: msg.content }) }));
231
279
  default:
@@ -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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"}
@@ -15,6 +15,8 @@ export interface MessageListProps {
15
15
  messages: TUIMessage[];
16
16
  isThinking?: boolean;
17
17
  maxHeight?: number;
18
+ /** Pending queued message — shown as dim user bubble after latest message */
19
+ pendingMessage?: string;
18
20
  }
19
21
  export declare const MessageList: React.NamedExoticComponent<MessageListProps>;
20
22
  //# sourceMappingURL=MessageList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAyD,MAAM,OAAO,CAAC;AAO9E,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;AAwCD,eAAO,MAAM,WAAW,8CAgHtB,CAAC"}
1
+ {"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAyD,MAAM,OAAO,CAAC;AAO9E,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;IACnB,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA2CD,eAAO,MAAM,WAAW,8CA+GtB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * MessageList — scrollable message area.
4
4
  * Uses MessageBubble for individual message rendering.
@@ -22,37 +22,40 @@ const DIFF_TOOL_NAMES = new Set(["file_write", "file_edit", "edit_file", "write_
22
22
  * Conservative (overestimates) to guarantee no overflow.
23
23
  */
24
24
  function estimateLines(msg, columns) {
25
- const contentWidth = Math.max(20, columns - 8);
25
+ // Use a narrower effective width + generous safety margin to prevent overflow.
26
+ // Ink's Yoga layout + CJK double-width chars can exceed estimates, so we
27
+ // intentionally over-count to avoid content bleeding into adjacent components.
28
+ const contentWidth = Math.max(20, columns - 12); // extra 4-col margin vs prev
26
29
  const textLen = msg.content?.length ?? 0;
27
- const contentLines = textLen === 0 ? 0 : Math.ceil(textLen / contentWidth);
30
+ // CJK chars can be 2x width multiply by 1.3 to account for mixed CJK content
31
+ const contentLines = textLen === 0 ? 0 : Math.ceil((textLen * 1.3) / contentWidth);
28
32
  switch (msg.role) {
29
33
  case "user":
30
- return Math.max(1, contentLines) + 1;
34
+ return Math.max(1, contentLines) + 2; // +1 blank line after
31
35
  case "assistant": {
32
36
  const toolCalls = msg.toolCalls ?? [];
33
- // Each tool call: 1 status line + up to 22 diff lines if file write/edit
37
+ // Each tool call: 1 status line + up to 24 diff lines if file write/edit
34
38
  const toolLines = toolCalls.reduce((sum, tc) => {
35
39
  const hasDiff = DIFF_TOOL_NAMES.has(tc.toolName) && tc.status === "success";
36
- return sum + 1 + (hasDiff ? 22 : 0);
40
+ return sum + 2 + (hasDiff ? 24 : 0); // +2 for breathing room
37
41
  }, 0);
38
- // No header line anymore content starts directly
39
- return Math.max(1, contentLines) + toolLines + 1;
42
+ return Math.max(2, contentLines) + toolLines + 2;
40
43
  }
41
44
  case "tool":
42
- return 1;
45
+ return 2;
43
46
  case "system": {
44
47
  // Banner message with 16×10 fox sprite = 10 sprite rows + 4 text lines
45
48
  const isBanner = msg.content?.includes("YUAN v") && msg.content?.includes("Autonomous Coding Agent");
46
49
  if (isBanner)
47
- return 14;
50
+ return 16;
48
51
  const newlines = (msg.content?.match(/\n/g) ?? []).length;
49
- return Math.max(1, newlines + 1);
52
+ return Math.max(1, newlines + 2); // +1 margin
50
53
  }
51
54
  default:
52
- return 1;
55
+ return 2;
53
56
  }
54
57
  }
55
- export const MessageList = memo(function MessageList({ messages, isThinking, maxHeight, }) {
58
+ export const MessageList = memo(function MessageList({ messages, isThinking, maxHeight, pendingMessage, }) {
56
59
  const { columns, rows } = useTerminalSize();
57
60
  const height = maxHeight ?? rows - 4;
58
61
  // Pinned = auto-scroll mode (show newest). false = user browsing history.
@@ -110,8 +113,10 @@ export const MessageList = memo(function MessageList({ messages, isThinking, max
110
113
  startIdx = i;
111
114
  }
112
115
  const visibleMessages = messages.slice(startIdx, endIdx);
113
- const hasAbove = startIdx > 0;
114
- const hasBelow = scrollBack > 0;
115
- return (_jsxs(Box, { flexDirection: "column", height: height, overflow: "hidden", justifyContent: "flex-end", children: [hasAbove && (_jsx(Box, { justifyContent: "center", flexShrink: 0, children: _jsxs(Text, { dimColor: true, children: ["--- ", startIdx, " more (PgUp) ---"] }) })), visibleMessages.length === 0 && !isThinking && (_jsx(Box, { justifyContent: "center", flexGrow: 1, children: _jsx(Text, { dimColor: true, children: "Type a message to start..." }) })), visibleMessages.map((msg, i) => (_jsx(MessageBubble, { message: msg, width: columns, isLatest: startIdx + i === messages.length - 1 }, msg.id))), isThinking && !messages.some((m) => m.isStreaming) && (_jsxs(Box, { marginTop: 0, flexShrink: 0, children: [_jsx(Text, { children: " " }), _jsx(Spinner, { label: `${TOKENS.brand.name} ·····` })] })), hasBelow && (_jsx(Box, { justifyContent: "center", flexShrink: 0, children: _jsxs(Text, { dimColor: true, children: ["--- ", scrollBack, " more (PgDn) ---"] }) }))] }));
116
+ // Claude Code–style layout: start from top when messages are few,
117
+ // pin to bottom once they fill the viewport (feels natural, not floating in center)
118
+ const totalVisibleLines = visibleMessages.reduce((sum, m) => sum + estimateLines(m, columns), 0);
119
+ const justifyContent = totalVisibleLines >= height - reservedLines ? "flex-end" : "flex-start";
120
+ return (_jsxs(Box, { flexDirection: "column", height: height, overflow: "hidden", justifyContent: justifyContent, children: [visibleMessages.length === 0 && !isThinking && (_jsx(Box, { justifyContent: "center", flexGrow: 1, children: _jsx(Text, { dimColor: true, children: "Type a message to start..." }) })), visibleMessages.map((msg, i) => (_jsx(MessageBubble, { message: msg, width: columns, isLatest: startIdx + i === messages.length - 1 }, msg.id))), pendingMessage && (_jsxs(Box, { flexShrink: 0, marginBottom: 1, children: [_jsx(Text, { color: "#4b5563", children: "\u25B6 " }), _jsx(Text, { color: "#4b5563", children: pendingMessage.length > columns - 14 ? pendingMessage.slice(0, columns - 17) + "…" : pendingMessage }), _jsx(Text, { color: "#374151", children: " \u23F8queued" })] })), isThinking && !messages.some((m) => m.isStreaming) && (_jsxs(Box, { marginTop: 0, flexShrink: 0, children: [_jsx(Text, { children: " " }), _jsx(Spinner, { label: `${TOKENS.brand.name} ·····` })] }))] }));
116
121
  });
117
122
  //# sourceMappingURL=MessageList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageList.js","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageList.js","sourceRoot":"","sources":["../../../src/tui/components/MessageList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * TaskPanel — background agent task list + step detail viewer.
3
+ *
4
+ * Layout modes:
5
+ * LIST — shows all bg tasks with ▸ cursor, ↑↓ navigate, enter expand, esc close
6
+ * DETAIL — shows selected task's step tree, esc → back to list
7
+ *
8
+ * Opens below InputBox. Matches input container width.
9
+ * Truncates long labels with "…". Max 8 rows visible at a time.
10
+ */
11
+ import React from "react";
12
+ import type { TUIBackgroundTask } from "../types.js";
13
+ export type TaskPanelMode = "list" | "detail";
14
+ export interface TaskPanelProps {
15
+ tasks: TUIBackgroundTask[];
16
+ mode: TaskPanelMode;
17
+ selectedIndex: number;
18
+ /** Task being viewed in detail mode (by id) */
19
+ detailTaskId: string | null;
20
+ width: number;
21
+ }
22
+ export declare function TaskPanel({ tasks, mode, selectedIndex, detailTaskId, width, }: TaskPanelProps): React.JSX.Element;
23
+ //# sourceMappingURL=TaskPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskPanel.d.ts","sourceRoot":"","sources":["../../../src/tui/components/TaskPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,aAAa,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAqID,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,KAAK,GACN,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWpC"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { TOKENS } from "../lib/tokens.js";
4
+ const MAX_LIST_ROWS = 6;
5
+ const MAX_DETAIL_ROWS = 8;
6
+ const LABEL_MAX = 26;
7
+ const MSG_MAX = 38;
8
+ function truncate(s, max) {
9
+ return s.length > max ? s.slice(0, max - 1) + "…" : s;
10
+ }
11
+ /** Status icon + color for a task */
12
+ function taskIcon(task) {
13
+ switch (task.status) {
14
+ case "running": return { icon: "●", color: "yellow" };
15
+ case "error": return { icon: "✗", color: "red" };
16
+ default: return { icon: "○", color: "#555555" };
17
+ }
18
+ }
19
+ /** Step icon for detail tree */
20
+ function stepIcon(step) {
21
+ switch (step.type) {
22
+ case "success": return { icon: "✓", color: "#3a7d44" };
23
+ case "error": return { icon: "✗", color: "red" };
24
+ case "warning": return { icon: "⚠", color: "yellow" };
25
+ default: return { icon: "·", color: "#555555" };
26
+ }
27
+ }
28
+ function TaskListView({ tasks, selectedIndex, width, }) {
29
+ const divider = TOKENS.box.horizontal.repeat(Math.max(0, width - 1));
30
+ const B = TOKENS.box;
31
+ // Visible window around selected
32
+ const start = Math.max(0, Math.min(selectedIndex - 2, tasks.length - MAX_LIST_ROWS));
33
+ const visible = tasks.slice(start, start + MAX_LIST_ROWS);
34
+ const hasAbove = start > 0;
35
+ const hasBelow = start + MAX_LIST_ROWS < tasks.length;
36
+ return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsx(Text, { dimColor: true, children: divider }), _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Text, { dimColor: true, children: [" bg agents (", tasks.length, ")"] }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 nav enter expand esc close " })] }), hasAbove && _jsxs(Text, { dimColor: true, children: [" \u2191 ", start, " more"] }), visible.map((task, i) => {
37
+ const absIdx = start + i;
38
+ const isSelected = absIdx === selectedIndex;
39
+ const { icon, color } = taskIcon(task);
40
+ const label = truncate(task.label, LABEL_MAX);
41
+ const lastStep = task.steps[task.steps.length - 1];
42
+ const lastMsg = lastStep ? truncate(lastStep.label, MSG_MAX) : "";
43
+ return (_jsxs(Box, { children: [_jsx(Text, { color: isSelected ? "white" : "#444444", children: isSelected ? "▸ " : " " }), _jsx(Text, { color: color, children: icon }), _jsxs(Text, { color: isSelected ? "white" : "#888888", children: [" ", label.padEnd(LABEL_MAX)] }), _jsxs(Text, { dimColor: true, children: [" ", lastMsg] })] }, task.id));
44
+ }), hasBelow && _jsxs(Text, { dimColor: true, children: [" \u2193 ", tasks.length - start - MAX_LIST_ROWS, " more"] })] }));
45
+ }
46
+ function TaskDetailView({ task, width, }) {
47
+ const divider = TOKENS.box.horizontal.repeat(Math.max(0, width - 1));
48
+ const { icon, color } = taskIcon(task);
49
+ // Show last MAX_DETAIL_ROWS steps
50
+ const steps = task.steps.slice(-MAX_DETAIL_ROWS);
51
+ const truncatedCount = task.steps.length - steps.length;
52
+ return (_jsxs(Box, { flexDirection: "column", flexShrink: 0, children: [_jsx(Text, { dimColor: true, children: divider }), _jsxs(Box, { justifyContent: "space-between", children: [_jsxs(Box, { children: [_jsxs(Text, { color: color, children: [" ", icon] }), _jsxs(Text, { color: "white", children: [" ", task.label] })] }), _jsx(Text, { dimColor: true, children: "esc back " })] }), _jsxs(Text, { dimColor: true, children: [" ", divider.slice(0, Math.max(0, width - 3))] }), truncatedCount > 0 && (_jsxs(Text, { dimColor: true, children: [" \u2026 ", truncatedCount, " earlier step", truncatedCount === 1 ? "" : "s"] })), steps.map((step, i) => {
53
+ const isLast = i === steps.length - 1;
54
+ const connector = isLast ? TOKENS.tree.last : TOKENS.tree.branch;
55
+ const { icon: sIcon, color: sColor } = stepIcon(step);
56
+ const label = truncate(step.label, width - 10);
57
+ return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { dimColor: true, children: connector }), _jsxs(Text, { color: sColor, children: [" ", sIcon] }), _jsxs(Text, { dimColor: true, children: [" ", label] })] }, step.id));
58
+ }), steps.length === 0 && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { dimColor: true, children: "no events yet" }) }))] }));
59
+ }
60
+ export function TaskPanel({ tasks, mode, selectedIndex, detailTaskId, width, }) {
61
+ if (tasks.length === 0)
62
+ return _jsx(Box, {});
63
+ if (mode === "detail" && detailTaskId) {
64
+ const task = tasks.find((t) => t.id === detailTaskId);
65
+ if (task) {
66
+ return _jsx(TaskDetailView, { task: task, width: width });
67
+ }
68
+ }
69
+ return _jsx(TaskListView, { tasks: tasks, selectedIndex: selectedIndex, width: width });
70
+ }
71
+ //# sourceMappingURL=TaskPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskPanel.js","sourceRoot":"","sources":["../../../src/tui/components/TaskPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentStream.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useAgentStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAGV,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,cAAc,IAAI,oBAAoB,CA6erD"}
1
+ {"version":3,"file":"useAgentStream.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useAgentStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAGV,gBAAgB,EAKjB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,WAAW,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,cAAc,IAAI,oBAAoB,CA4jBrD"}
@@ -17,6 +17,7 @@ export function useAgentStream() {
17
17
  const [lastError, setLastError] = useState(null);
18
18
  const [filesChangedCount, setFilesChangedCount] = useState(0);
19
19
  const [reasoningTree, setReasoningTree] = useState(undefined);
20
+ const [backgroundTasks, setBackgroundTasks] = useState([]);
20
21
  const currentMsgIdRef = useRef(null);
21
22
  const tokenWindowRef = useRef([]);
22
23
  const currentThinkingMsgIdRef = useRef(null);
@@ -24,6 +25,25 @@ export function useAgentStream() {
24
25
  const lastToolCallAtRef = useRef(0);
25
26
  const startTimeRef = useRef(null);
26
27
  const timerRef = useRef(null);
28
+ // Stall detection
29
+ const lastEventAtRef = useRef(Date.now());
30
+ const [stalledMs, setStalledMs] = useState(0);
31
+ const statusRef = useRef("idle");
32
+ // Stall check: every 5s, if active and no events for >20s → show warning
33
+ useEffect(() => {
34
+ const interval = setInterval(() => {
35
+ const st = statusRef.current;
36
+ const isActive = st === "thinking" || st === "streaming" || st === "tool_running";
37
+ if (isActive) {
38
+ const ms = Date.now() - lastEventAtRef.current;
39
+ setStalledMs(ms > 20_000 ? ms : 0);
40
+ }
41
+ else {
42
+ setStalledMs(0);
43
+ }
44
+ }, 5000);
45
+ return () => clearInterval(interval);
46
+ }, []);
27
47
  const startTimer = useCallback(() => {
28
48
  startTimeRef.current = Date.now();
29
49
  setElapsedMs(0);
@@ -136,7 +156,10 @@ export function useAgentStream() {
136
156
  setMessages((prev) => [...prev, msg]);
137
157
  }, []);
138
158
  const startAgent = useCallback(() => {
159
+ statusRef.current = "thinking";
139
160
  setStatus("thinking");
161
+ lastEventAtRef.current = Date.now();
162
+ setStalledMs(0);
140
163
  isStreamingRef.current = false;
141
164
  setCurrentToolName(null);
142
165
  setCurrentToolArgs(null);
@@ -161,12 +184,16 @@ export function useAgentStream() {
161
184
  setMessages((prev) => [...prev, msg]);
162
185
  }, [startTimer]);
163
186
  const handleEvent = useCallback((event) => {
187
+ // Reset stall timer on every event
188
+ lastEventAtRef.current = Date.now();
189
+ setStalledMs(0);
164
190
  switch (event.kind) {
165
191
  case "agent:reasoning_delta": {
166
192
  appendThinkingLines(String(event.text ?? ""));
167
193
  break;
168
194
  }
169
195
  case "agent:thinking": {
196
+ statusRef.current = "thinking";
170
197
  setStatus("thinking");
171
198
  setCurrentToolName(null);
172
199
  setCurrentToolArgs(null);
@@ -181,6 +208,7 @@ export function useAgentStream() {
181
208
  // Reset thinking message ID so post-stream thinking events create a NEW message
182
209
  // rather than appending to the old thinking block (prevents reasoning overlap)
183
210
  currentThinkingMsgIdRef.current = null;
211
+ statusRef.current = "streaming";
184
212
  setStatus("streaming");
185
213
  setCurrentToolName(null);
186
214
  setCurrentToolArgs(null);
@@ -197,6 +225,7 @@ export function useAgentStream() {
197
225
  }
198
226
  case "agent:tool_call": {
199
227
  isStreamingRef.current = false;
228
+ statusRef.current = "tool_running";
200
229
  setStatus("tool_running");
201
230
  const toolName = event.tool;
202
231
  const args = summarizeArgs(event.input);
@@ -282,7 +311,9 @@ export function useAgentStream() {
282
311
  const errMsg = event.message;
283
312
  setLastError(errMsg);
284
313
  stopTimer();
314
+ statusRef.current = "error";
285
315
  setStatus("error");
316
+ setStalledMs(0);
286
317
  setCurrentToolName(null);
287
318
  setCurrentToolArgs(null);
288
319
  updateCurrentMessage((msg) => ({
@@ -301,7 +332,9 @@ export function useAgentStream() {
301
332
  case "agent:completed": {
302
333
  flushPendingText();
303
334
  stopTimer();
335
+ statusRef.current = "completed";
304
336
  setStatus("completed");
337
+ setStalledMs(0);
305
338
  setCurrentToolName(null);
306
339
  setCurrentToolArgs(null);
307
340
  const summary = event.summary;
@@ -333,7 +366,9 @@ export function useAgentStream() {
333
366
  break;
334
367
  }
335
368
  case "agent:approval_needed": {
369
+ statusRef.current = "awaiting_approval";
336
370
  setStatus("awaiting_approval");
371
+ setStalledMs(0);
337
372
  const action = event.action;
338
373
  if (action?.tool) {
339
374
  setCurrentToolName(action.tool);
@@ -355,6 +390,39 @@ export function useAgentStream() {
355
390
  appendThinkingLines(lines.join("\n"));
356
391
  break;
357
392
  }
393
+ case "agent:bg_update": {
394
+ const { agentId, agentLabel, eventType, message, timestamp } = event;
395
+ const step = {
396
+ id: `step-${timestamp}-${Math.random().toString(36).slice(2, 6)}`,
397
+ label: message.length > 60 ? message.slice(0, 57) + "…" : message,
398
+ type: eventType,
399
+ timestamp,
400
+ };
401
+ setBackgroundTasks((prev) => {
402
+ const existing = prev.find((t) => t.id === agentId);
403
+ const MAX_STEPS = 20;
404
+ if (existing) {
405
+ const newSteps = [...existing.steps, step].slice(-MAX_STEPS);
406
+ return prev.map((t) => t.id === agentId
407
+ ? {
408
+ ...t,
409
+ status: eventType === "error" ? "error" : "running",
410
+ steps: newSteps,
411
+ lastUpdatedAt: timestamp,
412
+ }
413
+ : t);
414
+ }
415
+ const newTask = {
416
+ id: agentId,
417
+ label: agentLabel,
418
+ status: eventType === "error" ? "error" : "running",
419
+ steps: [step],
420
+ lastUpdatedAt: timestamp,
421
+ };
422
+ return [...prev, newTask];
423
+ });
424
+ break;
425
+ }
358
426
  default:
359
427
  break;
360
428
  }
@@ -362,7 +430,9 @@ export function useAgentStream() {
362
430
  const interrupt = useCallback(() => {
363
431
  flushPendingText();
364
432
  stopTimer();
433
+ statusRef.current = "interrupted";
365
434
  setStatus("interrupted");
435
+ setStalledMs(0);
366
436
  setCurrentToolName(null);
367
437
  setCurrentToolArgs(null);
368
438
  updateCurrentMessage((msg) => ({
@@ -420,6 +490,8 @@ export function useAgentStream() {
420
490
  lastError,
421
491
  filesChangedCount,
422
492
  reasoningTree,
493
+ stalledMs,
494
+ backgroundTasks,
423
495
  };
424
496
  return {
425
497
  state,