@yuaone/cli 0.4.2 → 0.4.4
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/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +20 -5
- package/dist/interactive.js.map +1 -1
- package/dist/progress-renderer.d.ts +5 -0
- package/dist/progress-renderer.d.ts.map +1 -1
- package/dist/progress-renderer.js +73 -4
- package/dist/progress-renderer.js.map +1 -1
- package/dist/session.d.ts +4 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +32 -5
- package/dist/session.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +83 -15
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/agent-bridge.d.ts +1 -0
- package/dist/tui/agent-bridge.d.ts.map +1 -1
- package/dist/tui/agent-bridge.js +41 -4
- package/dist/tui/agent-bridge.js.map +1 -1
- package/dist/tui/components/ApprovalPrompt.d.ts +18 -0
- package/dist/tui/components/ApprovalPrompt.d.ts.map +1 -0
- package/dist/tui/components/ApprovalPrompt.js +64 -0
- package/dist/tui/components/ApprovalPrompt.js.map +1 -0
- package/dist/tui/components/FooterBar.d.ts.map +1 -1
- package/dist/tui/components/FooterBar.js +1 -1
- package/dist/tui/components/FooterBar.js.map +1 -1
- package/dist/tui/components/InputBox.d.ts.map +1 -1
- package/dist/tui/components/InputBox.js +41 -4
- 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 +43 -3
- package/dist/tui/components/MessageBubble.js.map +1 -1
- package/dist/tui/components/SlashMenu.d.ts.map +1 -1
- package/dist/tui/components/SlashMenu.js +10 -9
- package/dist/tui/components/SlashMenu.js.map +1 -1
- package/dist/tui/components/StatusBar.d.ts +7 -1
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +14 -4
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/components/ThinkingDots.d.ts +6 -4
- package/dist/tui/components/ThinkingDots.d.ts.map +1 -1
- package/dist/tui/components/ThinkingDots.js +37 -8
- package/dist/tui/components/ThinkingDots.js.map +1 -1
- package/dist/tui/components/ToolCallTree.d.ts +5 -1
- package/dist/tui/components/ToolCallTree.d.ts.map +1 -1
- package/dist/tui/components/ToolCallTree.js +35 -3
- package/dist/tui/components/ToolCallTree.js.map +1 -1
- package/dist/tui/hooks/useAgentStream.d.ts +1 -7
- package/dist/tui/hooks/useAgentStream.d.ts.map +1 -1
- package/dist/tui/hooks/useAgentStream.js +124 -26
- package/dist/tui/hooks/useAgentStream.js.map +1 -1
- package/dist/tui/lib/update-checker.d.ts.map +1 -1
- package/dist/tui/lib/update-checker.js +9 -7
- package/dist/tui/lib/update-checker.js.map +1 -1
- package/dist/tui/types.d.ts +15 -0
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -1,13 +1,41 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
-
|
|
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":";AASA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
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,
|
|
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 {
|
|
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
|
|
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:
|
|
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
|
|
23
|
-
|
|
24
|
-
|
|
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 (
|
|
29
|
-
}), hasBelow && (_jsx(Box, { children:
|
|
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":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
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;
|
|
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:
|
|
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;
|
|
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
|
-
*
|
|
2
|
+
* AgentIndicator — dynamic CLI agent status indicator
|
|
3
3
|
*/
|
|
4
4
|
import React from "react";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import type { AgentStatus } from "../types.js";
|
|
6
|
+
export interface AgentIndicatorProps {
|
|
7
|
+
status: AgentStatus;
|
|
8
|
+
toolName?: string | null;
|
|
7
9
|
}
|
|
8
|
-
export declare function
|
|
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;
|
|
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
|
-
*
|
|
3
|
+
* AgentIndicator — dynamic 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
|
-
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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;
|
|
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;
|
|
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
|
-
|
|
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: ["
|
|
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
|
-
|
|
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":";AAAA;;;GAGG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAO9D,SAAS,YAAY,CAAC,EACpB,EAAE,EACF,MAAM,EACN,KAAK,GAKN;IACC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAEtD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,cAAc;IACd,IAAI,QAA2B,CAAC;IAChC,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,GAAG,KAAC,OAAO,KAAG,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACxD,QAAQ,GAAG,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,IAAI,GAAQ,CAAC;IAC/C,CAAC;IAED,WAAW;IACX,
|
|
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,
|
|
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"}
|