@yuaone/cli 0.1.2 → 0.3.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.
Files changed (119) hide show
  1. package/dist/cli.js +29 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/interactive.js +1 -1
  4. package/dist/interactive.js.map +1 -1
  5. package/dist/oneshot.js +1 -1
  6. package/dist/oneshot.js.map +1 -1
  7. package/dist/tui/App.d.ts +33 -0
  8. package/dist/tui/App.d.ts.map +1 -0
  9. package/dist/tui/App.js +244 -0
  10. package/dist/tui/App.js.map +1 -0
  11. package/dist/tui/agent-bridge.d.ts +56 -0
  12. package/dist/tui/agent-bridge.d.ts.map +1 -0
  13. package/dist/tui/agent-bridge.js +138 -0
  14. package/dist/tui/agent-bridge.js.map +1 -0
  15. package/dist/tui/components/BashOutput.d.ts +12 -0
  16. package/dist/tui/components/BashOutput.d.ts.map +1 -0
  17. package/dist/tui/components/BashOutput.js +19 -0
  18. package/dist/tui/components/BashOutput.js.map +1 -0
  19. package/dist/tui/components/CollapsibleSection.d.ts +14 -0
  20. package/dist/tui/components/CollapsibleSection.d.ts.map +1 -0
  21. package/dist/tui/components/CollapsibleSection.js +7 -0
  22. package/dist/tui/components/CollapsibleSection.js.map +1 -0
  23. package/dist/tui/components/DiffView.d.ts +11 -0
  24. package/dist/tui/components/DiffView.d.ts.map +1 -0
  25. package/dist/tui/components/DiffView.js +20 -0
  26. package/dist/tui/components/DiffView.js.map +1 -0
  27. package/dist/tui/components/FooterBar.d.ts +11 -0
  28. package/dist/tui/components/FooterBar.d.ts.map +1 -0
  29. package/dist/tui/components/FooterBar.js +14 -0
  30. package/dist/tui/components/FooterBar.js.map +1 -0
  31. package/dist/tui/components/InputBox.d.ts +24 -0
  32. package/dist/tui/components/InputBox.d.ts.map +1 -0
  33. package/dist/tui/components/InputBox.js +124 -0
  34. package/dist/tui/components/InputBox.js.map +1 -0
  35. package/dist/tui/components/MarkdownRenderer.d.ts +11 -0
  36. package/dist/tui/components/MarkdownRenderer.d.ts.map +1 -0
  37. package/dist/tui/components/MarkdownRenderer.js +118 -0
  38. package/dist/tui/components/MarkdownRenderer.js.map +1 -0
  39. package/dist/tui/components/MessageBubble.d.ts +16 -0
  40. package/dist/tui/components/MessageBubble.d.ts.map +1 -0
  41. package/dist/tui/components/MessageBubble.js +38 -0
  42. package/dist/tui/components/MessageBubble.js.map +1 -0
  43. package/dist/tui/components/MessageList.d.ts +15 -0
  44. package/dist/tui/components/MessageList.d.ts.map +1 -0
  45. package/dist/tui/components/MessageList.js +31 -0
  46. package/dist/tui/components/MessageList.js.map +1 -0
  47. package/dist/tui/components/SlashMenu.d.ts +14 -0
  48. package/dist/tui/components/SlashMenu.d.ts.map +1 -0
  49. package/dist/tui/components/SlashMenu.js +21 -0
  50. package/dist/tui/components/SlashMenu.js.map +1 -0
  51. package/dist/tui/components/Spinner.d.ts +9 -0
  52. package/dist/tui/components/Spinner.d.ts.map +1 -0
  53. package/dist/tui/components/Spinner.js +19 -0
  54. package/dist/tui/components/Spinner.js.map +1 -0
  55. package/dist/tui/components/StatusBar.d.ts +13 -0
  56. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  57. package/dist/tui/components/StatusBar.js +15 -0
  58. package/dist/tui/components/StatusBar.js.map +1 -0
  59. package/dist/tui/components/ThinkingDots.d.ts +9 -0
  60. package/dist/tui/components/ThinkingDots.d.ts.map +1 -0
  61. package/dist/tui/components/ThinkingDots.js +19 -0
  62. package/dist/tui/components/ThinkingDots.js.map +1 -0
  63. package/dist/tui/components/ToolCallTree.d.ts +12 -0
  64. package/dist/tui/components/ToolCallTree.d.ts.map +1 -0
  65. package/dist/tui/components/ToolCallTree.js +45 -0
  66. package/dist/tui/components/ToolCallTree.js.map +1 -0
  67. package/dist/tui/hooks/useAgentStream.d.ts +27 -0
  68. package/dist/tui/hooks/useAgentStream.d.ts.map +1 -0
  69. package/dist/tui/hooks/useAgentStream.js +212 -0
  70. package/dist/tui/hooks/useAgentStream.js.map +1 -0
  71. package/dist/tui/hooks/useInputHistory.d.ts +17 -0
  72. package/dist/tui/hooks/useInputHistory.d.ts.map +1 -0
  73. package/dist/tui/hooks/useInputHistory.js +49 -0
  74. package/dist/tui/hooks/useInputHistory.js.map +1 -0
  75. package/dist/tui/hooks/useKeyHandler.d.ts +12 -0
  76. package/dist/tui/hooks/useKeyHandler.d.ts.map +1 -0
  77. package/dist/tui/hooks/useKeyHandler.js +20 -0
  78. package/dist/tui/hooks/useKeyHandler.js.map +1 -0
  79. package/dist/tui/hooks/useScrollPosition.d.ts +27 -0
  80. package/dist/tui/hooks/useScrollPosition.d.ts.map +1 -0
  81. package/dist/tui/hooks/useScrollPosition.js +54 -0
  82. package/dist/tui/hooks/useScrollPosition.js.map +1 -0
  83. package/dist/tui/hooks/useSlashCommands.d.ts +22 -0
  84. package/dist/tui/hooks/useSlashCommands.d.ts.map +1 -0
  85. package/dist/tui/hooks/useSlashCommands.js +61 -0
  86. package/dist/tui/hooks/useSlashCommands.js.map +1 -0
  87. package/dist/tui/hooks/useTerminalSize.d.ts +11 -0
  88. package/dist/tui/hooks/useTerminalSize.d.ts.map +1 -0
  89. package/dist/tui/hooks/useTerminalSize.js +25 -0
  90. package/dist/tui/hooks/useTerminalSize.js.map +1 -0
  91. package/dist/tui/lib/ansi.d.ts +36 -0
  92. package/dist/tui/lib/ansi.d.ts.map +1 -0
  93. package/dist/tui/lib/ansi.js +40 -0
  94. package/dist/tui/lib/ansi.js.map +1 -0
  95. package/dist/tui/lib/box-drawing.d.ts +12 -0
  96. package/dist/tui/lib/box-drawing.d.ts.map +1 -0
  97. package/dist/tui/lib/box-drawing.js +30 -0
  98. package/dist/tui/lib/box-drawing.js.map +1 -0
  99. package/dist/tui/lib/diff-formatter.d.ts +9 -0
  100. package/dist/tui/lib/diff-formatter.d.ts.map +1 -0
  101. package/dist/tui/lib/diff-formatter.js +65 -0
  102. package/dist/tui/lib/diff-formatter.js.map +1 -0
  103. package/dist/tui/lib/tokens.d.ts +56 -0
  104. package/dist/tui/lib/tokens.d.ts.map +1 -0
  105. package/dist/tui/lib/tokens.js +61 -0
  106. package/dist/tui/lib/tokens.js.map +1 -0
  107. package/dist/tui/lib/truncate.d.ts +11 -0
  108. package/dist/tui/lib/truncate.d.ts.map +1 -0
  109. package/dist/tui/lib/truncate.js +69 -0
  110. package/dist/tui/lib/truncate.js.map +1 -0
  111. package/dist/tui/lib/update-checker.d.ts +21 -0
  112. package/dist/tui/lib/update-checker.d.ts.map +1 -0
  113. package/dist/tui/lib/update-checker.js +133 -0
  114. package/dist/tui/lib/update-checker.js.map +1 -0
  115. package/dist/tui/types.d.ts +77 -0
  116. package/dist/tui/types.d.ts.map +1 -0
  117. package/dist/tui/types.js +5 -0
  118. package/dist/tui/types.js.map +1 -0
  119. package/package.json +21 -11
@@ -0,0 +1,56 @@
1
+ /**
2
+ * YUAN TUI Design Tokens
3
+ * Monochrome gray + white palette. Professional, quiet, fast.
4
+ */
5
+ export declare const TOKENS: {
6
+ readonly brand: {
7
+ readonly prefix: "◆";
8
+ readonly name: "yuan";
9
+ readonly prompt: "▸";
10
+ readonly userPrefix: "●";
11
+ };
12
+ readonly color: {
13
+ readonly primary: "white";
14
+ readonly secondary: "gray";
15
+ readonly accent: "white";
16
+ readonly success: "green";
17
+ readonly error: "red";
18
+ readonly warning: "yellow";
19
+ readonly diffAdd: "green";
20
+ readonly diffDel: "red";
21
+ readonly muted: "dim";
22
+ };
23
+ readonly spinner: {
24
+ readonly frames: readonly string[];
25
+ readonly interval: 80;
26
+ readonly style: "dim";
27
+ };
28
+ readonly dots: {
29
+ readonly frames: readonly string[];
30
+ readonly interval: 150;
31
+ readonly style: "dim";
32
+ };
33
+ readonly box: {
34
+ readonly topLeft: "╭";
35
+ readonly topRight: "╮";
36
+ readonly bottomLeft: "╰";
37
+ readonly bottomRight: "╯";
38
+ readonly horizontal: "─";
39
+ readonly vertical: "│";
40
+ readonly style: "dim";
41
+ };
42
+ readonly tree: {
43
+ readonly branch: "├─";
44
+ readonly last: "└─";
45
+ readonly pipe: "│ ";
46
+ readonly style: "dim";
47
+ };
48
+ readonly layout: {
49
+ readonly compact: 80;
50
+ readonly normal: 120;
51
+ readonly padding: 2;
52
+ };
53
+ };
54
+ export type LayoutTier = "compact" | "normal" | "wide";
55
+ export declare function getLayoutTier(columns: number): LayoutTier;
56
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/tui/lib/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;yBAqB+C,SAAS,MAAM,EAAE;;;;;yBAMhC,SAAS,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CA2B1D,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAIzD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * YUAN TUI Design Tokens
3
+ * Monochrome gray + white palette. Professional, quiet, fast.
4
+ */
5
+ export const TOKENS = {
6
+ brand: {
7
+ prefix: "◆",
8
+ name: "yuan",
9
+ prompt: "▸",
10
+ userPrefix: "●",
11
+ },
12
+ color: {
13
+ primary: "white",
14
+ secondary: "gray",
15
+ accent: "white",
16
+ success: "green",
17
+ error: "red",
18
+ warning: "yellow",
19
+ diffAdd: "green",
20
+ diffDel: "red",
21
+ muted: "dim",
22
+ },
23
+ spinner: {
24
+ frames: ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"],
25
+ interval: 80,
26
+ style: "dim",
27
+ },
28
+ dots: {
29
+ frames: ["·", "··", "···", "····", "·····"],
30
+ interval: 150,
31
+ style: "dim",
32
+ },
33
+ box: {
34
+ topLeft: "╭",
35
+ topRight: "╮",
36
+ bottomLeft: "╰",
37
+ bottomRight: "╯",
38
+ horizontal: "─",
39
+ vertical: "│",
40
+ style: "dim",
41
+ },
42
+ tree: {
43
+ branch: "├─",
44
+ last: "└─",
45
+ pipe: "│ ",
46
+ style: "dim",
47
+ },
48
+ layout: {
49
+ compact: 80,
50
+ normal: 120,
51
+ padding: 2,
52
+ },
53
+ };
54
+ export function getLayoutTier(columns) {
55
+ if (columns < TOKENS.layout.compact)
56
+ return "compact";
57
+ if (columns < TOKENS.layout.normal)
58
+ return "normal";
59
+ return "wide";
60
+ }
61
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/tui/lib/tokens.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,GAAG;QACX,UAAU,EAAE,GAAG;KAChB;IAED,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,MAAM;QACjB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;KACb;IAED,OAAO,EAAE;QACP,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAsB;QAC/E,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,KAAc;KACtB;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAsB;QAChE,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,KAAc;KACtB;IAED,GAAG,EAAE;QACH,OAAO,EAAE,GAAG;QACZ,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,GAAG;QACf,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,GAAG;QACf,QAAQ,EAAE,GAAG;QACb,KAAK,EAAE,KAAc;KACtB;IAED,IAAI,EAAE;QACJ,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAc;KACtB;IAED,MAAM,EAAE;QACN,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC;KACX;CACO,CAAC;AAIX,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * truncate — Unicode-aware string truncation.
3
+ * Handles wide characters (CJK), ANSI escape sequences, and emoji.
4
+ */
5
+ /** Get visible width of a string (strips ANSI, counts CJK as 2) */
6
+ export declare function visibleWidth(str: string): number;
7
+ /** Truncate string to maxWidth visible chars, appending suffix if truncated */
8
+ export declare function truncate(str: string, maxWidth: number, suffix?: string): string;
9
+ /** Pad string to exact visible width */
10
+ export declare function padEnd(str: string, targetWidth: number, char?: string): string;
11
+ //# sourceMappingURL=truncate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../src/tui/lib/truncate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBhD;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAM,GAAG,MAAM,CA8B5E;AAED,wCAAwC;AACxC,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,MAAM,CAI3E"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * truncate — Unicode-aware string truncation.
3
+ * Handles wide characters (CJK), ANSI escape sequences, and emoji.
4
+ */
5
+ // Strip ANSI escape codes for width calculation
6
+ const ANSI_RE = /\x1b\[[0-9;]*m/g;
7
+ /** Get visible width of a string (strips ANSI, counts CJK as 2) */
8
+ export function visibleWidth(str) {
9
+ const stripped = str.replace(ANSI_RE, "");
10
+ let width = 0;
11
+ for (const char of stripped) {
12
+ const code = char.codePointAt(0) ?? 0;
13
+ // CJK Unified Ideographs, CJK Compatibility, Hangul, fullwidth
14
+ if ((code >= 0x1100 && code <= 0x115F) || // Hangul Jamo
15
+ (code >= 0x2E80 && code <= 0x303E) || // CJK Radicals
16
+ (code >= 0x3040 && code <= 0x33BF) || // Japanese
17
+ (code >= 0x3400 && code <= 0x4DBF) || // CJK Ext A
18
+ (code >= 0x4E00 && code <= 0x9FFF) || // CJK Unified
19
+ (code >= 0xAC00 && code <= 0xD7AF) || // Hangul Syllables
20
+ (code >= 0xF900 && code <= 0xFAFF) || // CJK Compat
21
+ (code >= 0xFE30 && code <= 0xFE6F) || // CJK Compat Forms
22
+ (code >= 0xFF01 && code <= 0xFF60) || // Fullwidth
23
+ (code >= 0x20000 && code <= 0x2FA1F) // CJK Ext B-F
24
+ ) {
25
+ width += 2;
26
+ }
27
+ else {
28
+ width += 1;
29
+ }
30
+ }
31
+ return width;
32
+ }
33
+ /** Truncate string to maxWidth visible chars, appending suffix if truncated */
34
+ export function truncate(str, maxWidth, suffix = "…") {
35
+ if (visibleWidth(str) <= maxWidth)
36
+ return str;
37
+ const suffixWidth = visibleWidth(suffix);
38
+ const target = maxWidth - suffixWidth;
39
+ if (target <= 0)
40
+ return suffix.slice(0, maxWidth);
41
+ const stripped = str.replace(ANSI_RE, "");
42
+ let width = 0;
43
+ let i = 0;
44
+ for (const char of stripped) {
45
+ const code = char.codePointAt(0) ?? 0;
46
+ const charWidth = (code >= 0x1100 && code <= 0x115F) ||
47
+ (code >= 0x2E80 && code <= 0x9FFF) ||
48
+ (code >= 0xAC00 && code <= 0xD7AF) ||
49
+ (code >= 0xF900 && code <= 0xFAFF) ||
50
+ (code >= 0xFE30 && code <= 0xFE6F) ||
51
+ (code >= 0xFF01 && code <= 0xFF60) ||
52
+ (code >= 0x20000 && code <= 0x2FA1F)
53
+ ? 2
54
+ : 1;
55
+ if (width + charWidth > target)
56
+ break;
57
+ width += charWidth;
58
+ i += char.length;
59
+ }
60
+ return stripped.slice(0, i) + suffix;
61
+ }
62
+ /** Pad string to exact visible width */
63
+ export function padEnd(str, targetWidth, char = " ") {
64
+ const current = visibleWidth(str);
65
+ if (current >= targetWidth)
66
+ return str;
67
+ return str + char.repeat(targetWidth - current);
68
+ }
69
+ //# sourceMappingURL=truncate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../../src/tui/lib/truncate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * update-checker — Check npm registry for newer @yuaone/cli versions.
3
+ * Non-blocking, cached for 24h, respects user auto-update preference.
4
+ */
5
+ export interface UpdateInfo {
6
+ currentVersion: string;
7
+ latestVersion: string;
8
+ hasUpdate: boolean;
9
+ }
10
+ export interface YuanSettings {
11
+ autoUpdate: "prompt" | "auto" | "never";
12
+ }
13
+ /** Load user settings */
14
+ export declare function loadSettings(): YuanSettings;
15
+ /** Save user settings */
16
+ export declare function saveSettings(settings: YuanSettings): void;
17
+ /** Check for updates (cached, non-blocking) */
18
+ export declare function checkForUpdate(currentVersion: string): Promise<UpdateInfo | null>;
19
+ /** Run auto-update via npm/pnpm */
20
+ export declare function performUpdate(): Promise<boolean>;
21
+ //# sourceMappingURL=update-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-checker.d.ts","sourceRoot":"","sources":["../../../src/tui/lib/update-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACzC;AAMD,yBAAyB;AACzB,wBAAgB,YAAY,IAAI,YAAY,CAU3C;AAED,yBAAyB;AACzB,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAQzD;AAqCD,+CAA+C;AAC/C,wBAAsB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAwCvF;AAED,mCAAmC;AACnC,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAWtD"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * update-checker — Check npm registry for newer @yuaone/cli versions.
3
+ * Non-blocking, cached for 24h, respects user auto-update preference.
4
+ */
5
+ import * as fs from "node:fs";
6
+ import * as path from "node:path";
7
+ import * as https from "node:https";
8
+ import * as os from "node:os";
9
+ const YUAN_DIR = path.join(os.homedir(), ".yuan");
10
+ const UPDATE_CACHE = path.join(YUAN_DIR, "update-check.json");
11
+ const SETTINGS_PATH = path.join(YUAN_DIR, "settings.json");
12
+ const PACKAGE_NAME = "@yuaone/cli";
13
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
14
+ const DEFAULT_SETTINGS = {
15
+ autoUpdate: "prompt",
16
+ };
17
+ /** Load user settings */
18
+ export function loadSettings() {
19
+ try {
20
+ if (fs.existsSync(SETTINGS_PATH)) {
21
+ const raw = fs.readFileSync(SETTINGS_PATH, "utf-8");
22
+ return { ...DEFAULT_SETTINGS, ...JSON.parse(raw) };
23
+ }
24
+ }
25
+ catch {
26
+ // Corrupted settings — use defaults
27
+ }
28
+ return { ...DEFAULT_SETTINGS };
29
+ }
30
+ /** Save user settings */
31
+ export function saveSettings(settings) {
32
+ if (!fs.existsSync(YUAN_DIR)) {
33
+ fs.mkdirSync(YUAN_DIR, { recursive: true, mode: 0o700 });
34
+ }
35
+ fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2), {
36
+ encoding: "utf-8",
37
+ mode: 0o600,
38
+ });
39
+ }
40
+ /** Fetch latest version from npm registry (non-blocking) */
41
+ function fetchLatestVersion() {
42
+ return new Promise((resolve) => {
43
+ const url = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
44
+ const req = https.get(url, { timeout: 5000 }, (res) => {
45
+ let data = "";
46
+ res.on("data", (chunk) => { data += chunk; });
47
+ res.on("end", () => {
48
+ try {
49
+ const parsed = JSON.parse(data);
50
+ resolve(parsed.version ?? null);
51
+ }
52
+ catch {
53
+ resolve(null);
54
+ }
55
+ });
56
+ });
57
+ req.on("error", () => resolve(null));
58
+ req.on("timeout", () => {
59
+ req.destroy();
60
+ resolve(null);
61
+ });
62
+ });
63
+ }
64
+ /** Compare semver versions. Returns true if b > a */
65
+ function isNewer(a, b) {
66
+ const pa = a.split(".").map(Number);
67
+ const pb = b.split(".").map(Number);
68
+ for (let i = 0; i < 3; i++) {
69
+ if ((pb[i] ?? 0) > (pa[i] ?? 0))
70
+ return true;
71
+ if ((pb[i] ?? 0) < (pa[i] ?? 0))
72
+ return false;
73
+ }
74
+ return false;
75
+ }
76
+ /** Check for updates (cached, non-blocking) */
77
+ export async function checkForUpdate(currentVersion) {
78
+ const settings = loadSettings();
79
+ if (settings.autoUpdate === "never")
80
+ return null;
81
+ // Check cache
82
+ try {
83
+ if (fs.existsSync(UPDATE_CACHE)) {
84
+ const cache = JSON.parse(fs.readFileSync(UPDATE_CACHE, "utf-8"));
85
+ const age = Date.now() - (cache.checkedAt ?? 0);
86
+ if (age < CHECK_INTERVAL_MS && cache.latestVersion) {
87
+ const hasUpdate = isNewer(currentVersion, cache.latestVersion);
88
+ if (!hasUpdate)
89
+ return null;
90
+ return { currentVersion, latestVersion: cache.latestVersion, hasUpdate };
91
+ }
92
+ }
93
+ }
94
+ catch {
95
+ // Cache corrupted, re-check
96
+ }
97
+ // Fetch from npm
98
+ const latest = await fetchLatestVersion();
99
+ if (!latest)
100
+ return null;
101
+ // Save cache
102
+ try {
103
+ if (!fs.existsSync(YUAN_DIR)) {
104
+ fs.mkdirSync(YUAN_DIR, { recursive: true, mode: 0o700 });
105
+ }
106
+ fs.writeFileSync(UPDATE_CACHE, JSON.stringify({
107
+ latestVersion: latest,
108
+ checkedAt: Date.now(),
109
+ }), { encoding: "utf-8", mode: 0o600 });
110
+ }
111
+ catch {
112
+ // Non-critical
113
+ }
114
+ const hasUpdate = isNewer(currentVersion, latest);
115
+ if (!hasUpdate)
116
+ return null;
117
+ return { currentVersion, latestVersion: latest, hasUpdate };
118
+ }
119
+ /** Run auto-update via npm/pnpm */
120
+ export async function performUpdate() {
121
+ const { execSync } = await import("node:child_process");
122
+ try {
123
+ execSync(`npm install -g ${PACKAGE_NAME}@latest`, {
124
+ stdio: "pipe",
125
+ timeout: 60000,
126
+ });
127
+ return true;
128
+ }
129
+ catch {
130
+ return false;
131
+ }
132
+ }
133
+ //# sourceMappingURL=update-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-checker.js","sourceRoot":"","sources":["../../../src/tui/lib/update-checker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * YUAN TUI — shared type definitions.
3
+ */
4
+ import type { LayoutTier } from "./lib/tokens.js";
5
+ /** Connection status for the status bar */
6
+ export type ConnectionStatus = "connected" | "connecting" | "disconnected" | "error";
7
+ /** Terminal dimensions with computed tier */
8
+ export interface TerminalDimensions {
9
+ columns: number;
10
+ rows: number;
11
+ tier: LayoutTier;
12
+ }
13
+ /** A message in the conversation */
14
+ export interface TUIMessage {
15
+ id: string;
16
+ role: "user" | "assistant" | "system" | "tool";
17
+ content: string;
18
+ timestamp?: number;
19
+ /** Tool calls attached to this assistant message */
20
+ toolCalls?: TUIToolCall[];
21
+ /** Whether the assistant is still generating this message */
22
+ isStreaming?: boolean;
23
+ /** Tool-specific fields */
24
+ toolName?: string;
25
+ toolSuccess?: boolean;
26
+ toolDurationMs?: number;
27
+ }
28
+ /** A tool call within an assistant message */
29
+ export interface TUIToolCall {
30
+ id: string;
31
+ toolName: string;
32
+ argsSummary: string;
33
+ status: "running" | "success" | "error";
34
+ duration?: number;
35
+ result?: TUIToolResult;
36
+ isExpanded: boolean;
37
+ }
38
+ /** The result of a tool call */
39
+ export interface TUIToolResult {
40
+ kind: "text" | "diff" | "bash_output" | "file_content" | "error";
41
+ content: string;
42
+ diff?: ParsedDiff;
43
+ lineCount: number;
44
+ }
45
+ /** Parsed diff structure */
46
+ export interface ParsedDiff {
47
+ filePath: string;
48
+ hunks: ParsedDiffHunk[];
49
+ additions: number;
50
+ deletions: number;
51
+ }
52
+ export interface ParsedDiffHunk {
53
+ startOld: number;
54
+ startNew: number;
55
+ lines: ParsedDiffLine[];
56
+ }
57
+ export interface ParsedDiffLine {
58
+ type: "add" | "delete" | "context";
59
+ content: string;
60
+ oldLineNo?: number;
61
+ newLineNo?: number;
62
+ }
63
+ /** Slash command definition */
64
+ export interface SlashCommand {
65
+ name: string;
66
+ description: string;
67
+ aliases?: string[];
68
+ }
69
+ /** Agent stream state */
70
+ export interface AgentStreamState {
71
+ status: "idle" | "thinking" | "streaming" | "tool_running" | "awaiting_approval";
72
+ streamBuffer: string;
73
+ messages: TUIMessage[];
74
+ tokensPerSecond: number;
75
+ totalTokensUsed: number;
76
+ }
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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;CACzB;AAED,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,OAAO,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4BAA4B;AAC5B,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+BAA+B;AAC/B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,yBAAyB;AACzB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,mBAAmB,CAAC;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * YUAN TUI — shared type definitions.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuaone/cli",
3
- "version": "0.1.2",
3
+ "version": "0.3.0",
4
4
  "description": "YUAN — Autonomous Coding Agent CLI",
5
5
  "license": "AGPL-3.0",
6
6
  "type": "module",
@@ -37,20 +37,30 @@
37
37
  "engines": {
38
38
  "node": ">=18"
39
39
  },
40
- "dependencies": {
41
- "commander": "^13.1.0",
42
- "@yuaone/core": "0.1.2",
43
- "@yuaone/tools": "0.1.2"
44
- },
45
- "devDependencies": {
46
- "@types/node": "^22.19.15",
47
- "typescript": "^5.7.0"
48
- },
49
40
  "scripts": {
50
41
  "build": "tsc && chmod +x dist/cli.js",
51
42
  "dev": "tsc --watch",
52
43
  "clean": "rm -rf dist",
53
44
  "lint": "tsc --noEmit",
54
45
  "start": "node dist/cli.js"
46
+ },
47
+ "dependencies": {
48
+ "@yuaone/core": "workspace:*",
49
+ "@yuaone/tools": "workspace:*",
50
+ "ansi-escapes": "7.0.0",
51
+ "chalk": "5.4.1",
52
+ "cli-cursor": "5.0.0",
53
+ "commander": "^13.1.0",
54
+ "ink": "5.1.0",
55
+ "ink-text-input": "6.0.0",
56
+ "react": "18.3.1",
57
+ "string-width": "7.2.0",
58
+ "strip-ansi": "7.1.0",
59
+ "wrap-ansi": "9.0.0"
60
+ },
61
+ "devDependencies": {
62
+ "@types/node": "^22.19.15",
63
+ "@types/react": "18.3.0",
64
+ "typescript": "^5.7.0"
55
65
  }
56
- }
66
+ }