@yuaone/cli 0.4.2 → 0.4.3

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 (60) hide show
  1. package/dist/config.d.ts +1 -1
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +3 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/interactive.d.ts.map +1 -1
  6. package/dist/interactive.js +20 -5
  7. package/dist/interactive.js.map +1 -1
  8. package/dist/progress-renderer.d.ts +5 -0
  9. package/dist/progress-renderer.d.ts.map +1 -1
  10. package/dist/progress-renderer.js +73 -4
  11. package/dist/progress-renderer.js.map +1 -1
  12. package/dist/session.d.ts +4 -1
  13. package/dist/session.d.ts.map +1 -1
  14. package/dist/session.js +32 -5
  15. package/dist/session.js.map +1 -1
  16. package/dist/tui/App.d.ts.map +1 -1
  17. package/dist/tui/App.js +83 -15
  18. package/dist/tui/App.js.map +1 -1
  19. package/dist/tui/agent-bridge.d.ts +1 -0
  20. package/dist/tui/agent-bridge.d.ts.map +1 -1
  21. package/dist/tui/agent-bridge.js +41 -4
  22. package/dist/tui/agent-bridge.js.map +1 -1
  23. package/dist/tui/components/ApprovalPrompt.d.ts +18 -0
  24. package/dist/tui/components/ApprovalPrompt.d.ts.map +1 -0
  25. package/dist/tui/components/ApprovalPrompt.js +64 -0
  26. package/dist/tui/components/ApprovalPrompt.js.map +1 -0
  27. package/dist/tui/components/FooterBar.d.ts.map +1 -1
  28. package/dist/tui/components/FooterBar.js +1 -1
  29. package/dist/tui/components/FooterBar.js.map +1 -1
  30. package/dist/tui/components/InputBox.d.ts.map +1 -1
  31. package/dist/tui/components/InputBox.js +41 -4
  32. package/dist/tui/components/InputBox.js.map +1 -1
  33. package/dist/tui/components/MessageBubble.d.ts.map +1 -1
  34. package/dist/tui/components/MessageBubble.js +43 -3
  35. package/dist/tui/components/MessageBubble.js.map +1 -1
  36. package/dist/tui/components/SlashMenu.d.ts.map +1 -1
  37. package/dist/tui/components/SlashMenu.js +10 -9
  38. package/dist/tui/components/SlashMenu.js.map +1 -1
  39. package/dist/tui/components/StatusBar.d.ts +7 -1
  40. package/dist/tui/components/StatusBar.d.ts.map +1 -1
  41. package/dist/tui/components/StatusBar.js +14 -4
  42. package/dist/tui/components/StatusBar.js.map +1 -1
  43. package/dist/tui/components/ThinkingDots.d.ts +6 -4
  44. package/dist/tui/components/ThinkingDots.d.ts.map +1 -1
  45. package/dist/tui/components/ThinkingDots.js +37 -8
  46. package/dist/tui/components/ThinkingDots.js.map +1 -1
  47. package/dist/tui/components/ToolCallTree.d.ts +5 -1
  48. package/dist/tui/components/ToolCallTree.d.ts.map +1 -1
  49. package/dist/tui/components/ToolCallTree.js +35 -3
  50. package/dist/tui/components/ToolCallTree.js.map +1 -1
  51. package/dist/tui/hooks/useAgentStream.d.ts +1 -7
  52. package/dist/tui/hooks/useAgentStream.d.ts.map +1 -1
  53. package/dist/tui/hooks/useAgentStream.js +124 -26
  54. package/dist/tui/hooks/useAgentStream.js.map +1 -1
  55. package/dist/tui/lib/update-checker.d.ts.map +1 -1
  56. package/dist/tui/lib/update-checker.js +9 -7
  57. package/dist/tui/lib/update-checker.js.map +1 -1
  58. package/dist/tui/types.d.ts +15 -0
  59. package/dist/tui/types.d.ts.map +1 -1
  60. package/package.json +3 -3
@@ -1,13 +1,41 @@
1
- import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  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
+ const BANNER_TITLE_PREFIX = "YUAN v";
7
+ const BANNER_SUBTITLE = "Autonomous Coding Agent";
8
+ const FOX_PIXEL_PALETTE = {
9
+ ".": null,
10
+ "S": "#dbeafe",
11
+ "W": "#f8fafc",
12
+ "G": "#e5e7eb",
13
+ "N": "#111827",
14
+ };
15
+ const FOX_PIXEL_SPRITE = [
16
+ "..SWWWS.",
17
+ ".SWWWWWS",
18
+ "SWWNNWWS",
19
+ "SWWWWWW.",
20
+ ".SWWWWW.",
21
+ "..SWWW..",
22
+ "..SWW...",
23
+ "...S....",
24
+ ];
6
25
  function truncateArgs(args, maxLen) {
7
26
  if (!args)
8
27
  return "";
9
28
  return args.length > maxLen ? args.slice(0, maxLen) + "…" : args;
10
29
  }
30
+ function PixelFoxSprite() {
31
+ return (_jsx(Box, { flexDirection: "column", children: FOX_PIXEL_SPRITE.map((row, rowIndex) => (_jsx(Box, { children: row.split("").map((cell, colIndex) => {
32
+ const color = FOX_PIXEL_PALETTE[cell] ?? null;
33
+ if (!color) {
34
+ return (_jsx(Text, { children: " " }, `fox-px-${rowIndex}-${colIndex}`));
35
+ }
36
+ return (_jsx(Text, { color: color, children: "██" }, `fox-px-${rowIndex}-${colIndex}`));
37
+ }) }, `fox-row-${rowIndex}`))) }));
38
+ }
11
39
  function ToolCallLine({ tc, isLast }) {
12
40
  const connector = isLast ? TOKENS.tree.last : TOKENS.tree.branch;
13
41
  const icon = tc.status === "running" ? null :
@@ -22,6 +50,9 @@ function ToolCallLine({ tc, isLast }) {
22
50
  }
23
51
  export function MessageBubble({ message, width, isLatest, }) {
24
52
  const msg = message;
53
+ const isBannerMessage = msg.role === "system" &&
54
+ msg.content.includes(BANNER_TITLE_PREFIX) &&
55
+ msg.content.includes(BANNER_SUBTITLE);
25
56
  switch (msg.role) {
26
57
  case "user": {
27
58
  // Wrap long text into lines, pad each line to same width for uniform bg
@@ -44,7 +75,8 @@ export function MessageBubble({ message, width, isLatest, }) {
44
75
  // Find the longest line for uniform padding
45
76
  const longestLine = Math.max(...lines.map((l) => l.length), 1);
46
77
  const paddedLines = lines.map((l) => ` ${l.padEnd(longestLine)} `);
47
- return (_jsx(Box, { flexDirection: "column", marginBottom: 1, children: paddedLines.map((line, i) => (_jsx(Text, { backgroundColor: "#2a2a2a", color: "white", children: line }, i))) }));
78
+ const horizontal = "".repeat(longestLine + 2);
79
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, alignItems: "flex-end", children: [_jsx(Text, { dimColor: true, children: `┌${horizontal}┐` }), paddedLines.map((line, i) => (_jsx(Text, { backgroundColor: "#1e1e1e", color: "white", children: `│${line}│` }, i))), _jsx(Text, { dimColor: true, children: `└${horizontal}┘` })] }));
48
80
  }
49
81
  case "assistant":
50
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))) }))] }));
@@ -57,7 +89,15 @@ export function MessageBubble({ message, width, isLatest, }) {
57
89
  return (_jsxs(Box, { paddingLeft: 2, children: [_jsxs(Text, { dimColor: true, children: [TOKENS.tree.last, " "] }), _jsx(Text, { color: iconColor, children: icon }), _jsxs(Text, { dimColor: true, children: [" ", msg.toolName, duration] })] }));
58
90
  }
59
91
  case "system":
60
- return (_jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [" ", msg.content] }) }));
92
+ if (isBannerMessage) {
93
+ const lines = msg.content.split("\n");
94
+ const title = lines.find((line) => line.startsWith(BANNER_TITLE_PREFIX)) ?? "";
95
+ const subtitle = lines.find((line) => line.includes(BANNER_SUBTITLE)) ?? "";
96
+ const help = lines.find((line) => line.includes("Type /help")) ?? "";
97
+ const site = lines.find((line) => line.includes("yuaone.com")) ?? "";
98
+ 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 })] })] }));
99
+ }
100
+ return (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { dimColor: true, children: msg.content }) }));
61
101
  default:
62
102
  return _jsx(Box, {});
63
103
  }
@@ -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":"SlashMenu.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SlashMenu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,aAAa,EACb,MAAM,EACN,KAAK,GACN,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAyE3C"}
1
+ {"version":3,"file":"SlashMenu.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SlashMenu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,aAAa,EACb,MAAM,EACN,KAAK,GACN,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAmE3C"}
@@ -1,11 +1,12 @@
1
- import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Box, Text } from "ink";
3
- import { TOKENS } from "../lib/tokens.js";
4
3
  export function SlashMenu({ commands, selectedIndex, isOpen, width, }) {
5
4
  if (!isOpen || commands.length === 0)
6
5
  return null;
7
6
  const maxVisible = 8;
8
- const boxWidth = Math.min(width - 4, 50);
7
+ const menuWidth = width;
8
+ const nameWidth = Math.min(22, Math.max(16, Math.floor(menuWidth * 0.24)));
9
+ const descWidth = Math.max(12, menuWidth - nameWidth - 6);
9
10
  // Sliding window: keep selectedIndex within the visible range
10
11
  let windowStart = 0;
11
12
  if (commands.length > maxVisible) {
@@ -16,16 +17,16 @@ export function SlashMenu({ commands, selectedIndex, isOpen, width, }) {
16
17
  const visible = commands.slice(windowStart, windowEnd);
17
18
  const hasAbove = windowStart > 0;
18
19
  const hasBelow = windowEnd < commands.length;
19
- return (_jsxs(Box, { flexDirection: "column", width: boxWidth, children: [_jsxs(Text, { dimColor: true, children: [TOKENS.box.topLeft, TOKENS.box.horizontal.repeat(boxWidth - 2), TOKENS.box.topRight] }), hasAbove && (_jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [TOKENS.box.vertical, " \u2191 ", windowStart, " more"] }) })), visible.map((cmd, i) => {
20
+ return (_jsxs(Box, { flexDirection: "column", width: menuWidth, paddingLeft: 1, children: [hasAbove && (_jsx(Box, { marginBottom: 0, children: _jsx(Text, { dimColor: true, children: ` ${windowStart} more` }) })), visible.map((cmd, i) => {
20
21
  const actualIdx = windowStart + i;
21
22
  const isSelected = actualIdx === selectedIndex;
22
- const nameWidth = 12;
23
- const name = cmd.name.padEnd(nameWidth);
24
- const descWidth = boxWidth - nameWidth - 6;
23
+ const name = cmd.name.length > nameWidth
24
+ ? cmd.name.slice(0, nameWidth - 1) + "…"
25
+ : cmd.name.padEnd(nameWidth);
25
26
  const desc = cmd.description.length > descWidth
26
27
  ? cmd.description.slice(0, descWidth - 1) + "…"
27
28
  : cmd.description;
28
- return (_jsxs(Box, { children: [_jsxs(Text, { dimColor: true, children: [TOKENS.box.vertical, " "] }), isSelected ? (_jsxs(_Fragment, { children: [_jsx(Text, { bold: true, color: "white", children: name }), _jsxs(Text, { color: "white", children: [" ", desc] })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: name }), _jsxs(Text, { dimColor: true, children: [" ", desc] })] }))] }, cmd.name));
29
- }), hasBelow && (_jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [TOKENS.box.vertical, " \u2193 ", commands.length - windowEnd, " more"] }) })), _jsxs(Text, { dimColor: true, children: [TOKENS.box.bottomLeft, TOKENS.box.horizontal.repeat(boxWidth - 2), TOKENS.box.bottomRight] })] }));
29
+ return (_jsx(Box, { paddingLeft: 1, children: isSelected ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "cyan", children: "\u203A " }), _jsx(Text, { bold: true, color: "cyan", children: name }), _jsxs(Text, { color: "white", children: [" ", desc] })] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: " " }), _jsx(Text, { color: "white", children: name }), _jsxs(Text, { dimColor: true, children: [" ", desc] })] })) }, cmd.name));
30
+ }), hasBelow && (_jsx(Box, { marginTop: 0, children: _jsx(Text, { dimColor: true, children: ` ${commands.length - windowEnd} more` }) }))] }));
30
31
  }
31
32
  //# sourceMappingURL=SlashMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SlashMenu.js","sourceRoot":"","sources":["../../../src/tui/components/SlashMenu.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SlashMenu.js","sourceRoot":"","sources":["../../../src/tui/components/SlashMenu.tsx"],"names":[],"mappings":"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"}
@@ -8,6 +8,12 @@ export interface StatusBarProps {
8
8
  provider: string;
9
9
  tokensPerSec?: number;
10
10
  isRunning?: boolean;
11
+ inputTokens?: number;
12
+ outputTokens?: number;
13
+ updateAvailable?: {
14
+ current: string;
15
+ latest: string;
16
+ } | null;
11
17
  }
12
- export declare function StatusBar({ version, model, provider, tokensPerSec, isRunning, }: StatusBarProps): React.JSX.Element;
18
+ export declare function StatusBar({ version, model, provider, tokensPerSec, isRunning, inputTokens, outputTokens, updateAvailable, }: StatusBarProps): React.JSX.Element;
13
19
  //# sourceMappingURL=StatusBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,GACV,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBpC"}
1
+ {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,WAAe,EACf,YAAgB,EAChB,eAAsB,GACvB,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkCpC"}
@@ -2,14 +2,24 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from "ink";
3
3
  import { useTerminalSize } from "../hooks/useTerminalSize.js";
4
4
  import { TOKENS } from "../lib/tokens.js";
5
- export function StatusBar({ version, model, provider, tokensPerSec, isRunning, }) {
5
+ export function StatusBar({ version, model, provider, tokensPerSec, isRunning, inputTokens = 0, outputTokens = 0, updateAvailable = null, }) {
6
6
  const { columns, tier } = useTerminalSize();
7
7
  const left = `${TOKENS.brand.prefix} YUAN v${version}`;
8
8
  const status = isRunning ? "●" : "○";
9
9
  const tps = tokensPerSec != null ? `${tokensPerSec} tok/s` : "";
10
+ const total = inputTokens + outputTokens;
11
+ const meterWidth = 10;
12
+ const filled = Math.min(meterWidth, Math.floor(total / 100));
13
+ const meter = "█".repeat(filled) + "░".repeat(Math.max(0, meterWidth - filled));
14
+ const tokenInfo = total > 0
15
+ ? `▲${inputTokens} ▼${outputTokens} ${meter}`
16
+ : "";
17
+ const updateLabel = updateAvailable
18
+ ? ` ↑ ${updateAvailable.current}→${updateAvailable.latest}`
19
+ : "";
10
20
  const right = tier === "compact"
11
- ? `${status} ${model}`
12
- : `${provider}/${model} ${status} ${tps}`;
13
- return (_jsxs(Box, { width: columns, justifyContent: "space-between", children: [_jsx(Text, { dimColor: true, children: left }), _jsx(Text, { dimColor: true, children: right })] }));
21
+ ? `${status} ${model}${updateLabel}`
22
+ : `${provider}/${model} ${tokenInfo} ${status} ${tps}${updateLabel}`;
23
+ return (_jsxs(Box, { width: columns, justifyContent: "space-between", children: [_jsx(Text, { dimColor: true, children: left }), _jsx(Text, { dimColor: !updateAvailable, color: updateAvailable ? "yellow" : undefined, children: right })] }));
14
24
  }
15
25
  //# sourceMappingURL=StatusBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAU1C,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,GACM;IACf,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IAE5C,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,MAAM,GAAG,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhE,MAAM,KAAK,GACT,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,EAAE;QACtB,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;IAE9C,OAAO,CACL,MAAC,GAAG,IAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAC,eAAe,aACjD,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,EAC5B,KAAC,IAAI,IAAC,QAAQ,kBAAE,KAAK,GAAQ,IACzB,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../src/tui/components/StatusBar.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAgB1C,MAAM,UAAU,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,WAAW,GAAG,CAAC,EACf,YAAY,GAAG,CAAC,EAChB,eAAe,GAAG,IAAI,GACP;IACf,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IAE5C,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,UAAU,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACrC,MAAM,GAAG,GAAG,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;IAEzC,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GACT,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;IAEpE,MAAM,SAAS,GACb,KAAK,GAAG,CAAC;QACP,CAAC,CAAC,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,EAAE;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAC,MAAM,eAAe,CAAC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE;QAC3D,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GACT,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,WAAW,EAAE;QACpC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,IAAI,SAAS,IAAI,MAAM,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;IAEzE,OAAO,CACL,MAAC,GAAG,IAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAC,eAAe,aACjD,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,EAC5B,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YAC5E,KAAK,GACD,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -1,9 +1,11 @@
1
1
  /**
2
- * ThinkingDotsanimated "·····" indicator, dim gray.
2
+ * AgentIndicatordynamic CLI agent status indicator
3
3
  */
4
4
  import React from "react";
5
- export interface ThinkingDotsProps {
6
- label?: string;
5
+ import type { AgentStatus } from "../types.js";
6
+ export interface AgentIndicatorProps {
7
+ status: AgentStatus;
8
+ toolName?: string | null;
7
9
  }
8
- export declare function ThinkingDots({ label }: ThinkingDotsProps): React.JSX.Element;
10
+ export declare function AgentIndicator({ status, toolName, }: AgentIndicatorProps): React.JSX.Element;
9
11
  //# sourceMappingURL=ThinkingDots.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThinkingDots.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ThinkingDots.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgB5E"}
1
+ {"version":3,"file":"ThinkingDots.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ThinkingDots.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAaD,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,QAAQ,GACT,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2CzC"}
@@ -1,19 +1,48 @@
1
1
  import { jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
- * ThinkingDotsanimated "·····" indicator, dim gray.
3
+ * AgentIndicatordynamic CLI agent status indicator
4
4
  */
5
5
  import { useState, useEffect } from "react";
6
6
  import { Text } from "ink";
7
7
  import { TOKENS } from "../lib/tokens.js";
8
- export function ThinkingDots({ label }) {
8
+ const STATUS_LABEL = {
9
+ idle: "idle",
10
+ thinking: "thinking",
11
+ streaming: "writing",
12
+ tool_running: "running tool",
13
+ awaiting_approval: "awaiting approval",
14
+ error: "error",
15
+ completed: "done",
16
+ interrupted: "interrupted",
17
+ };
18
+ export function AgentIndicator({ status, toolName, }) {
9
19
  const { frames, interval } = TOKENS.dots;
10
20
  const [frame, setFrame] = useState(0);
11
21
  useEffect(() => {
12
- const timer = setInterval(() => {
13
- setFrame((f) => (f + 1) % frames.length);
14
- }, interval);
15
- return () => clearInterval(timer);
16
- }, [frames.length, interval]);
17
- return (_jsxs(Text, { dimColor: true, children: [label ? `${label} ` : "", frames[frame]] }));
22
+ if (status === "thinking" ||
23
+ status === "streaming" ||
24
+ status === "tool_running") {
25
+ const timer = setInterval(() => {
26
+ setFrame((f) => (f + 1) % frames.length);
27
+ }, interval);
28
+ return () => clearInterval(timer);
29
+ }
30
+ }, [status, frames.length, interval]);
31
+ const label = status === "tool_running" && toolName
32
+ ? `tool: ${toolName}`
33
+ : STATUS_LABEL[status];
34
+ const spinner = status === "thinking" ||
35
+ status === "streaming" ||
36
+ status === "tool_running"
37
+ ? ` ${frames[frame]}`
38
+ : "";
39
+ let color = "gray";
40
+ if (status === "completed")
41
+ color = "green";
42
+ if (status === "error")
43
+ color = "red";
44
+ if (status === "awaiting_approval")
45
+ color = "yellow";
46
+ return (_jsxs(Text, { color: color, dimColor: status === "thinking", children: [label, spinner] }));
18
47
  }
19
48
  //# sourceMappingURL=ThinkingDots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThinkingDots.js","sourceRoot":"","sources":["../../../src/tui/components/ThinkingDots.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAqB;IACvD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,EAAE,QAAQ,CAAC,CAAC;QACb,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE9B,OAAO,CACL,MAAC,IAAI,IAAC,QAAQ,mBACX,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,IACnC,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ThinkingDots.js","sourceRoot":"","sources":["../../../src/tui/components/ThinkingDots.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAQ1C,MAAM,YAAY,GAAgC;IAChD,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IACtC,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,QAAQ,GACY;IACpB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,IACE,MAAM,KAAK,UAAU;YACrB,MAAM,KAAK,WAAW;YACtB,MAAM,KAAK,cAAc,EACzB,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;gBAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEb,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtC,MAAM,KAAK,GACT,MAAM,KAAK,cAAc,IAAI,QAAQ;QACnC,CAAC,CAAC,SAAS,QAAQ,EAAE;QACrB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAE3B,MAAM,OAAO,GACX,MAAM,KAAK,UAAU;QACrB,MAAM,KAAK,WAAW;QACtB,MAAM,KAAK,cAAc;QACvB,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;QACrB,CAAC,CAAC,EAAE,CAAC;IAET,IAAI,KAAK,GAAwC,MAAM,CAAC;IAExD,IAAI,MAAM,KAAK,WAAW;QAAE,KAAK,GAAG,OAAO,CAAC;IAC5C,IAAI,MAAM,KAAK,OAAO;QAAE,KAAK,GAAG,KAAK,CAAC;IACtC,IAAI,MAAM,KAAK,mBAAmB;QAAE,KAAK,GAAG,QAAQ,CAAC;IAErD,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,UAAU,aAChD,KAAK,EACL,OAAO,IACH,CACR,CAAC;AACJ,CAAC"}
@@ -3,10 +3,14 @@
3
3
  * Shows status indicators, durations, and expandable results.
4
4
  */
5
5
  import React from "react";
6
- import type { TUIToolCall } from "../types.js";
6
+ import type { TUIToolCall, ReasoningNode } from "../types.js";
7
7
  export interface ToolCallTreeProps {
8
8
  toolCalls: TUIToolCall[];
9
9
  width: number;
10
10
  }
11
11
  export declare function ToolCallTree({ toolCalls, width, }: ToolCallTreeProps): React.JSX.Element;
12
+ export declare function ReasoningTreeView({ node, depth, }: {
13
+ node: ReasoningNode;
14
+ depth?: number;
15
+ }): React.JSX.Element;
12
16
  //# sourceMappingURL=ToolCallTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolCallTree.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ToolCallTree.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AAOrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AA8FD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,KAAK,GACN,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAavC"}
1
+ {"version":3,"file":"ToolCallTree.d.ts","sourceRoot":"","sources":["../../../src/tui/components/ToolCallTree.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AAOrD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf;AAoGD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,KAAK,GACN,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0CvC;AAiBD,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,KAAS,GACV,EAAE;IACD,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBpB"}
@@ -30,16 +30,48 @@ function ToolCallNode({ tc, isLast, width, }) {
30
30
  statusEl = _jsx(Text, { color: color, children: icon });
31
31
  }
32
32
  // Duration
33
- const durationStr = tc.duration != null ? ` ${tc.duration.toFixed(1)}s` : "";
33
+ let durationStr = "";
34
+ if (tc.duration != null) {
35
+ durationStr = ` ${tc.duration.toFixed(2)}s`;
36
+ }
34
37
  // Truncate args summary based on available width
35
38
  const { tier } = useTerminalSize();
36
39
  const maxArgWidth = tier === "compact" ? 20 : width - 30;
37
40
  const args = tc.argsSummary
38
41
  ? truncate(tc.argsSummary, maxArgWidth)
39
42
  : "";
40
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { dimColor: true, children: [connector, " "] }), _jsx(Text, { bold: true, children: tc.toolName }), args && _jsxs(Text, { dimColor: true, children: [" ", args] }), _jsx(Text, { children: " " }), statusEl, _jsx(Text, { dimColor: true, children: durationStr })] }), tc.result && tc.result.lineCount > 0 && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { dimColor: true, children: continuation }), _jsx(Box, { flexDirection: "column", marginLeft: 1, children: tc.result.kind === "diff" && tc.result.diff ? (_jsx(CollapsibleSection, { isExpanded: isExpanded, onToggle: toggleExpand, collapsedSummary: `${tc.result.diff.additions + tc.result.diff.deletions} changes`, children: _jsx(DiffView, { diff: tc.result.diff, width: width - 6 }) })) : tc.result.kind === "bash_output" ? (_jsx(CollapsibleSection, { isExpanded: isExpanded, onToggle: toggleExpand, collapsedSummary: `${tc.result.lineCount} lines of output`, children: _jsx(BashOutput, { command: tc.toolName, output: tc.result.content, width: width - 6 }) })) : tc.result.lineCount > 10 ? (_jsx(CollapsibleSection, { isExpanded: isExpanded, onToggle: toggleExpand, collapsedSummary: `${tc.result.lineCount} lines`, children: _jsx(Text, { dimColor: true, children: tc.result.content }) })) : (_jsx(Text, { dimColor: true, children: tc.result.content })) })] }))] }));
43
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { dimColor: true, children: [connector, " "] }), _jsx(Text, { bold: true, children: tc.toolName }), args && _jsxs(Text, { dimColor: true, children: ["(", args, ")"] })] }), _jsxs(Box, { paddingLeft: 2, children: [_jsxs(Text, { dimColor: true, children: [continuation, " "] }), statusEl, _jsx(Text, { dimColor: true, children: durationStr })] }), tc.result && tc.result.lineCount > 0 && (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { dimColor: true, children: continuation }), _jsx(Box, { flexDirection: "column", marginLeft: 1, children: tc.result.kind === "diff" && tc.result.diff ? (_jsx(CollapsibleSection, { isExpanded: isExpanded, onToggle: toggleExpand, collapsedSummary: `${tc.result.diff.additions + tc.result.diff.deletions} changes`, children: _jsx(DiffView, { diff: tc.result.diff, width: width - 6 }) })) : tc.result.kind === "bash_output" ? (_jsx(CollapsibleSection, { isExpanded: isExpanded, onToggle: toggleExpand, collapsedSummary: `${tc.result.lineCount} lines of output`, children: _jsx(BashOutput, { command: tc.toolName, output: tc.result.content, width: width - 6 }) })) : tc.result.lineCount > 10 ? (_jsx(CollapsibleSection, { isExpanded: isExpanded, onToggle: toggleExpand, collapsedSummary: `${tc.result.lineCount} lines`, children: _jsx(Text, { dimColor: true, children: tc.result.content }) })) : (_jsx(Text, { dimColor: true, children: tc.result.content })) })] }))] }));
41
44
  }
42
45
  export function ToolCallTree({ toolCalls, width, }) {
43
- return (_jsx(Box, { flexDirection: "column", children: toolCalls.map((tc, i) => (_jsx(ToolCallNode, { tc: tc, isLast: i === toolCalls.length - 1, width: width }, tc.id))) }));
46
+ const batches = groupBatches(toolCalls);
47
+ return (_jsx(Box, { flexDirection: "column", children: batches.map((batch, batchIndex) => {
48
+ const isParallel = batch.length > 1;
49
+ if (isParallel) {
50
+ const batchRunning = batch.some((tc) => tc.status === "running");
51
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: batchRunning ? "running tools..." : "tool batch." }), _jsx(Text, { children: " " }), batchRunning ? _jsx(Spinner, {}) : _jsx(Text, { dimColor: true, children: "done." })] }), batch.map((tc, i) => (_jsx(ToolCallNode, { tc: tc, isLast: i === batch.length - 1, width: width }, tc.id)))] }, `batch-${batchIndex}`));
52
+ }
53
+ const tc = batch[0];
54
+ if (!tc)
55
+ return null;
56
+ return (_jsx(ToolCallNode, { tc: tc, isLast: batchIndex === batches.length - 1, width: width }, tc.id));
57
+ }) }));
58
+ }
59
+ function groupBatches(toolCalls) {
60
+ const map = new Map();
61
+ for (const tc of toolCalls) {
62
+ const key = tc.batchId ?? tc.id;
63
+ if (!map.has(key))
64
+ map.set(key, []);
65
+ map.get(key).push(tc);
66
+ }
67
+ return Array.from(map.values()).sort((a, b) => {
68
+ const aStart = a[0]?.startedAt ?? 0;
69
+ const bStart = b[0]?.startedAt ?? 0;
70
+ return aStart - bStart;
71
+ });
72
+ }
73
+ export function ReasoningTreeView({ node, depth = 0, }) {
74
+ const prefix = depth === 0 ? "" : " ".repeat(depth - 1) + "├─ ";
75
+ return (_jsxs(Box, { flexDirection: "column", children: [depth > 0 && (_jsxs(Text, { children: [prefix, _jsx(Text, { bold: true, children: node.label }), node.text && _jsxs(Text, { dimColor: true, children: [" ", node.text] })] })), node.children.map((child) => (_jsx(ReasoningTreeView, { node: child, depth: depth + 1 }, child.id)))] }));
44
76
  }
45
77
  //# sourceMappingURL=ToolCallTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolCallTree.js","sourceRoot":"","sources":["../../../src/tui/components/ToolCallTree.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolCallTree.js","sourceRoot":"","sources":["../../../src/tui/components/ToolCallTree.tsx"],"names":[],"mappings":"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"}
@@ -1,22 +1,16 @@
1
1
  /**
2
2
  * useAgentStream — bridges AgentLoop events to TUI React state.
3
3
  * Converts agent events into TUIMessage updates, tracks streaming state,
4
- * real-time elapsed timer, and status indicator metadata.
4
+ * real-time elapsed timer, reasoning stream, and status indicator metadata.
5
5
  */
6
6
  import type { AgentStreamState } from "../types.js";
7
7
  export interface UseAgentStreamReturn {
8
8
  state: AgentStreamState;
9
- /** Process an incoming agent event */
10
9
  handleEvent: (event: AgentEventLike) => void;
11
- /** Add a user message */
12
10
  addUserMessage: (content: string) => void;
13
- /** Add a system message (for slash commands, etc.) */
14
11
  addSystemMessage: (content: string) => void;
15
- /** Mark agent as started */
16
12
  startAgent: () => void;
17
- /** Interrupt and reset to idle */
18
13
  interrupt: () => void;
19
- /** Clear all messages */
20
14
  clearMessages: () => void;
21
15
  }
22
16
  /** Minimal agent event shape (matches @yuaone/core AgentEvent) */
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentStream.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useAgentStream.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAA2B,gBAAgB,EAAe,MAAM,aAAa,CAAC;AAE1F,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,sCAAsC;IACtC,WAAW,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,yBAAyB;IACzB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,sDAAsD;IACtD,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,4BAA4B;IAC5B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,kCAAkC;IAClC,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,yBAAyB;IACzB,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,CA0VrD"}
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,CA6drD"}