@yuaone/cli 0.9.9 → 1.0.0
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/README.md +111 -2
- package/dist/cli.js +0 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +264 -94
- package/dist/commands/index.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +27 -0
- package/dist/config.js.map +1 -1
- package/dist/interactive.d.ts +11 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +129 -1
- package/dist/interactive.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +5 -36
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/agent-bridge.d.ts +2 -21
- package/dist/tui/agent-bridge.d.ts.map +1 -1
- package/dist/tui/agent-bridge.js +16 -82
- package/dist/tui/agent-bridge.js.map +1 -1
- package/dist/tui/components/CompactBar.d.ts +25 -0
- package/dist/tui/components/CompactBar.d.ts.map +1 -0
- package/dist/tui/components/CompactBar.js +42 -0
- package/dist/tui/components/CompactBar.js.map +1 -0
- package/dist/tui/components/FooterBar.d.ts +0 -4
- package/dist/tui/components/FooterBar.d.ts.map +1 -1
- package/dist/tui/components/FooterBar.js +44 -15
- 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 +15 -12
- package/dist/tui/components/InputBox.js.map +1 -1
- package/dist/tui/components/MarkdownRenderer.d.ts +0 -4
- package/dist/tui/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/tui/components/MarkdownRenderer.js +3 -3
- package/dist/tui/components/MarkdownRenderer.js.map +1 -1
- package/dist/tui/components/MessageBubble.d.ts.map +1 -1
- package/dist/tui/components/MessageBubble.js +44 -4
- package/dist/tui/components/MessageBubble.js.map +1 -1
- package/dist/tui/components/StatusBadge.d.ts +3 -1
- package/dist/tui/components/StatusBadge.d.ts.map +1 -1
- package/dist/tui/components/StatusBadge.js +16 -6
- package/dist/tui/components/StatusBadge.js.map +1 -1
- package/dist/tui/components/StatusBar.d.ts.map +1 -1
- package/dist/tui/components/StatusBar.js +4 -2
- package/dist/tui/components/StatusBar.js.map +1 -1
- package/dist/tui/hooks/useAgentStream.d.ts +0 -4
- package/dist/tui/hooks/useAgentStream.d.ts.map +1 -1
- package/dist/tui/hooks/useAgentStream.js +321 -51
- package/dist/tui/hooks/useAgentStream.js.map +1 -1
- package/dist/tui/hooks/useMouseScroll.d.ts +10 -19
- package/dist/tui/hooks/useMouseScroll.d.ts.map +1 -1
- package/dist/tui/hooks/useMouseScroll.js +86 -83
- package/dist/tui/hooks/useMouseScroll.js.map +1 -1
- package/dist/tui/types.d.ts +22 -2
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* useMouseScroll — enables mouse wheel scrolling in the TUI.
|
|
2
|
+
* useMouseScroll — enables X10 mouse wheel scrolling in the TUI.
|
|
3
3
|
*
|
|
4
|
-
* Problem:
|
|
5
|
-
* Ink's readline → garbage
|
|
4
|
+
* Problem: Ink's useInput doesn't handle mouse events, and enabling mouse
|
|
5
|
+
* tracking causes raw escape sequences to leak into Ink's readline → garbage
|
|
6
|
+
* text in InputBox.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* together. When split, the second chunk has no ESC and bypasses the
|
|
11
|
-
* strip, landing directly in InputBox as literal text.
|
|
8
|
+
* Solution: Enable X10 basic mouse protocol (scroll wheel only), then
|
|
9
|
+
* monkey-patch process.stdin.emit to intercept and strip mouse sequences
|
|
10
|
+
* before Ink's readline processes them. Scroll events are routed to callbacks.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* Protocols:
|
|
18
|
-
* X10 (1000h): \x1b[M <btn> <col> <row> — 6 bytes total
|
|
19
|
-
* SGR (1006h): \x1b[<btn;col;rowM/m — variable length
|
|
20
|
-
*
|
|
21
|
-
* Scroll codes:
|
|
22
|
-
* X10 scroll-up = btn byte 96 (64+32), scroll-down = 97
|
|
23
|
-
* SGR scroll-up = btn field 64, scroll-down = 65
|
|
12
|
+
* X10 protocol: \x1b[M <button> <col> <row> (3 bytes after \x1b[M)
|
|
13
|
+
* Scroll up : button byte = 96 (64 + 32 offset)
|
|
14
|
+
* Scroll down : button byte = 97 (65 + 32 offset)
|
|
24
15
|
*/
|
|
25
16
|
export declare function useMouseScroll(onScrollUp: () => void, onScrollDown: () => void): void;
|
|
26
17
|
//# sourceMappingURL=useMouseScroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMouseScroll.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useMouseScroll.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"useMouseScroll.d.ts","sourceRoot":"","sources":["../../../src/tui/hooks/useMouseScroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsBH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,IAAI,EACtB,YAAY,EAAE,MAAM,IAAI,GACvB,IAAI,CAqGN"}
|
|
@@ -1,116 +1,119 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* useMouseScroll — enables mouse wheel scrolling in the TUI.
|
|
2
|
+
* useMouseScroll — enables X10 mouse wheel scrolling in the TUI.
|
|
3
3
|
*
|
|
4
|
-
* Problem:
|
|
5
|
-
* Ink's readline → garbage
|
|
4
|
+
* Problem: Ink's useInput doesn't handle mouse events, and enabling mouse
|
|
5
|
+
* tracking causes raw escape sequences to leak into Ink's readline → garbage
|
|
6
|
+
* text in InputBox.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* together. When split, the second chunk has no ESC and bypasses the
|
|
11
|
-
* strip, landing directly in InputBox as literal text.
|
|
8
|
+
* Solution: Enable X10 basic mouse protocol (scroll wheel only), then
|
|
9
|
+
* monkey-patch process.stdin.emit to intercept and strip mouse sequences
|
|
10
|
+
* before Ink's readline processes them. Scroll events are routed to callbacks.
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* Protocols:
|
|
18
|
-
* X10 (1000h): \x1b[M <btn> <col> <row> — 6 bytes total
|
|
19
|
-
* SGR (1006h): \x1b[<btn;col;rowM/m — variable length
|
|
20
|
-
*
|
|
21
|
-
* Scroll codes:
|
|
22
|
-
* X10 scroll-up = btn byte 96 (64+32), scroll-down = 97
|
|
23
|
-
* SGR scroll-up = btn field 64, scroll-down = 65
|
|
12
|
+
* X10 protocol: \x1b[M <button> <col> <row> (3 bytes after \x1b[M)
|
|
13
|
+
* Scroll up : button byte = 96 (64 + 32 offset)
|
|
14
|
+
* Scroll down : button byte = 97 (65 + 32 offset)
|
|
24
15
|
*/
|
|
25
16
|
import { useEffect, useRef } from "react";
|
|
26
|
-
const MOUSE_ENABLE = "\x1b[?
|
|
27
|
-
const MOUSE_DISABLE = "\x1b[?1006l\x1b[?
|
|
28
|
-
//
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
//
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
//
|
|
36
|
-
const
|
|
17
|
+
const MOUSE_ENABLE = "\x1b[?1002h\x1b[?1006h"; // button tracking + SGR encoding
|
|
18
|
+
const MOUSE_DISABLE = "\x1b[?1006l\x1b[?1002l";
|
|
19
|
+
// Button codes after the 32-offset encoding (X10 protocol)
|
|
20
|
+
const SCROLL_UP_BTN = 96; // button 64 + 32
|
|
21
|
+
const SCROLL_DOWN_BTN = 97; // button 65 + 32
|
|
22
|
+
// Matches a complete X10 mouse sequence: ESC [ M + 3 bytes
|
|
23
|
+
const MOUSE_PATTERN = /\x1b\[M[\s\S]{3}/g;
|
|
24
|
+
// Matches SGR mouse sequences: ESC [ < digits ; digits ; digits M/m
|
|
25
|
+
const SGR_MOUSE_PATTERN = /\x1b\[<\d+;\d+;\d+[Mm]/g;
|
|
26
|
+
// Matches orphaned SGR tails (when \x1b was consumed by partial buffer in prior chunk)
|
|
27
|
+
const ORPHANED_SGR_TAIL = /\[<\d+;\d+;\d+[Mm]/g;
|
|
37
28
|
export function useMouseScroll(onScrollUp, onScrollDown) {
|
|
29
|
+
// Keep callback refs stable so the effect only runs once
|
|
38
30
|
const upRef = useRef(onScrollUp);
|
|
39
31
|
const downRef = useRef(onScrollDown);
|
|
40
32
|
upRef.current = onScrollUp;
|
|
41
33
|
downRef.current = onScrollDown;
|
|
42
34
|
useEffect(() => {
|
|
43
|
-
|
|
35
|
+
// Guard: only patch once even in strict-mode double-invoke
|
|
36
|
+
if (process.stdin._yuanMousePatched) {
|
|
44
37
|
return;
|
|
38
|
+
}
|
|
45
39
|
process.stdin._yuanMousePatched = true;
|
|
46
40
|
process.stdout.write(MOUSE_ENABLE);
|
|
47
|
-
let partialBuf = ""; // holds incomplete escape sequence tail from last chunk
|
|
48
41
|
const originalEmit = process.stdin.emit.bind(process.stdin);
|
|
49
42
|
process.stdin.emit = function (event, ...args) {
|
|
50
43
|
if (event === "data") {
|
|
51
44
|
const raw = args[0];
|
|
52
|
-
const
|
|
53
|
-
? raw.toString("
|
|
45
|
+
const str = raw instanceof Buffer
|
|
46
|
+
? raw.toString("binary")
|
|
54
47
|
: typeof raw === "string"
|
|
55
48
|
? raw
|
|
56
49
|
: "";
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
50
|
+
const hasMouse = str.includes("\x1b[M") ||
|
|
51
|
+
str.includes("\x1b[<") ||
|
|
52
|
+
// orphaned SGR tails (missing \x1b prefix)
|
|
53
|
+
/\[<\d+;\d+;\d+[Mm]/.test(str);
|
|
54
|
+
if (hasMouse) {
|
|
55
|
+
let ups = 0;
|
|
56
|
+
let downs = 0;
|
|
57
|
+
// First pass: strip X10 sequences and detect scroll direction
|
|
58
|
+
let stripped = str.replace(MOUSE_PATTERN, (match) => {
|
|
59
|
+
// byte index 3 = button byte
|
|
60
|
+
const btn = match.charCodeAt(3);
|
|
61
|
+
if (btn === SCROLL_UP_BTN)
|
|
62
|
+
ups++;
|
|
63
|
+
else if (btn === SCROLL_DOWN_BTN)
|
|
64
|
+
downs++;
|
|
65
|
+
return ""; // remove from stream
|
|
66
|
+
});
|
|
67
|
+
// Second pass: strip SGR mouse sequences (ESC[<...M/m)
|
|
68
|
+
// SGR button 64 = scroll up, 65 = scroll down
|
|
69
|
+
stripped = stripped.replace(SGR_MOUSE_PATTERN, (match) => {
|
|
70
|
+
// extract button number from ESC[<BTN;COL;ROWm
|
|
71
|
+
const m = match.match(/\[<(\d+);/);
|
|
72
|
+
if (m) {
|
|
73
|
+
const btn = parseInt(m[1], 10);
|
|
74
|
+
if (btn === 64)
|
|
75
|
+
ups++;
|
|
76
|
+
else if (btn === 65)
|
|
77
|
+
downs++;
|
|
78
|
+
}
|
|
79
|
+
return "";
|
|
80
|
+
});
|
|
81
|
+
// Third pass: orphaned SGR mouse tails (when \x1b was consumed by
|
|
82
|
+
// partial buffer in a prior chunk and only the tail arrived here)
|
|
83
|
+
stripped = stripped.replace(ORPHANED_SGR_TAIL, (match) => {
|
|
84
|
+
const m = match.match(/\[<(\d+);/);
|
|
85
|
+
if (m) {
|
|
86
|
+
const btn = parseInt(m[1], 10);
|
|
87
|
+
if (btn === 64)
|
|
88
|
+
ups++;
|
|
89
|
+
else if (btn === 65)
|
|
90
|
+
downs++;
|
|
91
|
+
}
|
|
92
|
+
return "";
|
|
93
|
+
});
|
|
94
|
+
// Fire scroll callbacks
|
|
95
|
+
for (let i = 0; i < ups; i++)
|
|
96
|
+
upRef.current();
|
|
97
|
+
for (let i = 0; i < downs; i++)
|
|
98
|
+
downRef.current();
|
|
99
|
+
// Swallow event entirely if nothing left after stripping
|
|
100
|
+
if (stripped.length === 0)
|
|
101
|
+
return true;
|
|
102
|
+
// Pass stripped data onward to Ink's readline
|
|
103
|
+
const newData = raw instanceof Buffer
|
|
104
|
+
? Buffer.from(stripped, "binary")
|
|
105
|
+
: stripped;
|
|
106
|
+
return originalEmit(event, newData);
|
|
96
107
|
}
|
|
97
|
-
// Swallow entirely if nothing left
|
|
98
|
-
if (stripped.length === 0)
|
|
99
|
-
return true;
|
|
100
|
-
// Forward cleaned data
|
|
101
|
-
const newData = raw instanceof Buffer
|
|
102
|
-
? Buffer.from(stripped, "latin1")
|
|
103
|
-
: stripped;
|
|
104
|
-
return originalEmit(event, newData);
|
|
105
108
|
}
|
|
109
|
+
// All other events pass through unchanged
|
|
106
110
|
return originalEmit(event, ...args);
|
|
107
111
|
};
|
|
108
112
|
return () => {
|
|
109
113
|
process.stdout.write(MOUSE_DISABLE);
|
|
110
114
|
process.stdin.emit = originalEmit;
|
|
111
115
|
delete process.stdin._yuanMousePatched;
|
|
112
|
-
partialBuf = "";
|
|
113
116
|
};
|
|
114
|
-
}, []);
|
|
117
|
+
}, []); // run once — callbacks accessed via refs
|
|
115
118
|
}
|
|
116
119
|
//# sourceMappingURL=useMouseScroll.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMouseScroll.js","sourceRoot":"","sources":["../../../src/tui/hooks/useMouseScroll.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"useMouseScroll.js","sourceRoot":"","sources":["../../../src/tui/hooks/useMouseScroll.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/types.d.ts
CHANGED
|
@@ -10,6 +10,20 @@ export interface TerminalDimensions {
|
|
|
10
10
|
rows: number;
|
|
11
11
|
tier: LayoutTier;
|
|
12
12
|
}
|
|
13
|
+
/** Phase 3: Autonomous Engineering Loop — inline tree event */
|
|
14
|
+
export interface TUIPhaseEvent {
|
|
15
|
+
id: string;
|
|
16
|
+
/** Which autonomous component produced this */
|
|
17
|
+
kind: "research" | "plan" | "tournament" | "task" | "debug";
|
|
18
|
+
/** Bold headline e.g. "Research confidence:72%" */
|
|
19
|
+
title: string;
|
|
20
|
+
/** One-line summary shown collapsed */
|
|
21
|
+
summary: string;
|
|
22
|
+
/** Tree items shown expanded (each is one tree leaf) */
|
|
23
|
+
items: string[];
|
|
24
|
+
status: "running" | "done" | "error";
|
|
25
|
+
timestamp: number;
|
|
26
|
+
}
|
|
13
27
|
/** A message in the conversation */
|
|
14
28
|
export interface TUIMessage {
|
|
15
29
|
id: string;
|
|
@@ -20,12 +34,14 @@ export interface TUIMessage {
|
|
|
20
34
|
toolCalls?: TUIToolCall[];
|
|
21
35
|
/** Whether the assistant is still generating this message */
|
|
22
36
|
isStreaming?: boolean;
|
|
37
|
+
/** Extended thinking / reasoning content (shown dimmed below the main content) */
|
|
38
|
+
thinkingContent?: string;
|
|
23
39
|
/** Tool-specific fields */
|
|
24
40
|
toolName?: string;
|
|
25
41
|
toolSuccess?: boolean;
|
|
26
42
|
toolDurationMs?: number;
|
|
27
|
-
/**
|
|
28
|
-
|
|
43
|
+
/** Phase 3 autonomous events rendered as inline tree below message content */
|
|
44
|
+
phaseEvents?: TUIPhaseEvent[];
|
|
29
45
|
}
|
|
30
46
|
/** A tool call within an assistant message */
|
|
31
47
|
export interface TUIToolCall {
|
|
@@ -117,6 +133,10 @@ export interface AgentStreamState {
|
|
|
117
133
|
stalledMs: number;
|
|
118
134
|
/** Background agent tasks (type-checker, security-scan, etc.) */
|
|
119
135
|
backgroundTasks: TUIBackgroundTask[];
|
|
136
|
+
/** Fine-grained progress label from progress:status events (analyzing/searching/coding/etc.) */
|
|
137
|
+
progressLabel?: string;
|
|
138
|
+
/** Current task phase: explore → implement → verify → finalize */
|
|
139
|
+
currentPhase?: "explore" | "implement" | "verify" | "finalize";
|
|
120
140
|
}
|
|
121
141
|
/** Hierarchical reasoning tree node */
|
|
122
142
|
export interface ReasoningNode {
|
package/dist/tui/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,2CAA2C;AAC3C,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,OAAO,CAAC;AAErF,6CAA6C;AAC7C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuaone/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "YUAN — Autonomous Coding Agent CLI",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"type": "module",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"string-width": "7.2.0",
|
|
49
49
|
"strip-ansi": "7.1.0",
|
|
50
50
|
"wrap-ansi": "9.0.0",
|
|
51
|
-
"@yuaone/core": "0.9.
|
|
52
|
-
"@yuaone/tools": "0.9.
|
|
51
|
+
"@yuaone/core": "0.9.9",
|
|
52
|
+
"@yuaone/tools": "0.9.1"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/node": "^22.19.15",
|