@yuaone/cli 0.1.3 → 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 (115) hide show
  1. package/dist/cli.js +29 -4
  2. package/dist/cli.js.map +1 -1
  3. package/dist/tui/App.d.ts +33 -0
  4. package/dist/tui/App.d.ts.map +1 -0
  5. package/dist/tui/App.js +244 -0
  6. package/dist/tui/App.js.map +1 -0
  7. package/dist/tui/agent-bridge.d.ts +56 -0
  8. package/dist/tui/agent-bridge.d.ts.map +1 -0
  9. package/dist/tui/agent-bridge.js +138 -0
  10. package/dist/tui/agent-bridge.js.map +1 -0
  11. package/dist/tui/components/BashOutput.d.ts +12 -0
  12. package/dist/tui/components/BashOutput.d.ts.map +1 -0
  13. package/dist/tui/components/BashOutput.js +19 -0
  14. package/dist/tui/components/BashOutput.js.map +1 -0
  15. package/dist/tui/components/CollapsibleSection.d.ts +14 -0
  16. package/dist/tui/components/CollapsibleSection.d.ts.map +1 -0
  17. package/dist/tui/components/CollapsibleSection.js +7 -0
  18. package/dist/tui/components/CollapsibleSection.js.map +1 -0
  19. package/dist/tui/components/DiffView.d.ts +11 -0
  20. package/dist/tui/components/DiffView.d.ts.map +1 -0
  21. package/dist/tui/components/DiffView.js +20 -0
  22. package/dist/tui/components/DiffView.js.map +1 -0
  23. package/dist/tui/components/FooterBar.d.ts +11 -0
  24. package/dist/tui/components/FooterBar.d.ts.map +1 -0
  25. package/dist/tui/components/FooterBar.js +14 -0
  26. package/dist/tui/components/FooterBar.js.map +1 -0
  27. package/dist/tui/components/InputBox.d.ts +24 -0
  28. package/dist/tui/components/InputBox.d.ts.map +1 -0
  29. package/dist/tui/components/InputBox.js +124 -0
  30. package/dist/tui/components/InputBox.js.map +1 -0
  31. package/dist/tui/components/MarkdownRenderer.d.ts +11 -0
  32. package/dist/tui/components/MarkdownRenderer.d.ts.map +1 -0
  33. package/dist/tui/components/MarkdownRenderer.js +118 -0
  34. package/dist/tui/components/MarkdownRenderer.js.map +1 -0
  35. package/dist/tui/components/MessageBubble.d.ts +16 -0
  36. package/dist/tui/components/MessageBubble.d.ts.map +1 -0
  37. package/dist/tui/components/MessageBubble.js +38 -0
  38. package/dist/tui/components/MessageBubble.js.map +1 -0
  39. package/dist/tui/components/MessageList.d.ts +15 -0
  40. package/dist/tui/components/MessageList.d.ts.map +1 -0
  41. package/dist/tui/components/MessageList.js +31 -0
  42. package/dist/tui/components/MessageList.js.map +1 -0
  43. package/dist/tui/components/SlashMenu.d.ts +14 -0
  44. package/dist/tui/components/SlashMenu.d.ts.map +1 -0
  45. package/dist/tui/components/SlashMenu.js +21 -0
  46. package/dist/tui/components/SlashMenu.js.map +1 -0
  47. package/dist/tui/components/Spinner.d.ts +9 -0
  48. package/dist/tui/components/Spinner.d.ts.map +1 -0
  49. package/dist/tui/components/Spinner.js +19 -0
  50. package/dist/tui/components/Spinner.js.map +1 -0
  51. package/dist/tui/components/StatusBar.d.ts +13 -0
  52. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  53. package/dist/tui/components/StatusBar.js +15 -0
  54. package/dist/tui/components/StatusBar.js.map +1 -0
  55. package/dist/tui/components/ThinkingDots.d.ts +9 -0
  56. package/dist/tui/components/ThinkingDots.d.ts.map +1 -0
  57. package/dist/tui/components/ThinkingDots.js +19 -0
  58. package/dist/tui/components/ThinkingDots.js.map +1 -0
  59. package/dist/tui/components/ToolCallTree.d.ts +12 -0
  60. package/dist/tui/components/ToolCallTree.d.ts.map +1 -0
  61. package/dist/tui/components/ToolCallTree.js +45 -0
  62. package/dist/tui/components/ToolCallTree.js.map +1 -0
  63. package/dist/tui/hooks/useAgentStream.d.ts +27 -0
  64. package/dist/tui/hooks/useAgentStream.d.ts.map +1 -0
  65. package/dist/tui/hooks/useAgentStream.js +212 -0
  66. package/dist/tui/hooks/useAgentStream.js.map +1 -0
  67. package/dist/tui/hooks/useInputHistory.d.ts +17 -0
  68. package/dist/tui/hooks/useInputHistory.d.ts.map +1 -0
  69. package/dist/tui/hooks/useInputHistory.js +49 -0
  70. package/dist/tui/hooks/useInputHistory.js.map +1 -0
  71. package/dist/tui/hooks/useKeyHandler.d.ts +12 -0
  72. package/dist/tui/hooks/useKeyHandler.d.ts.map +1 -0
  73. package/dist/tui/hooks/useKeyHandler.js +20 -0
  74. package/dist/tui/hooks/useKeyHandler.js.map +1 -0
  75. package/dist/tui/hooks/useScrollPosition.d.ts +27 -0
  76. package/dist/tui/hooks/useScrollPosition.d.ts.map +1 -0
  77. package/dist/tui/hooks/useScrollPosition.js +54 -0
  78. package/dist/tui/hooks/useScrollPosition.js.map +1 -0
  79. package/dist/tui/hooks/useSlashCommands.d.ts +22 -0
  80. package/dist/tui/hooks/useSlashCommands.d.ts.map +1 -0
  81. package/dist/tui/hooks/useSlashCommands.js +61 -0
  82. package/dist/tui/hooks/useSlashCommands.js.map +1 -0
  83. package/dist/tui/hooks/useTerminalSize.d.ts +11 -0
  84. package/dist/tui/hooks/useTerminalSize.d.ts.map +1 -0
  85. package/dist/tui/hooks/useTerminalSize.js +25 -0
  86. package/dist/tui/hooks/useTerminalSize.js.map +1 -0
  87. package/dist/tui/lib/ansi.d.ts +36 -0
  88. package/dist/tui/lib/ansi.d.ts.map +1 -0
  89. package/dist/tui/lib/ansi.js +40 -0
  90. package/dist/tui/lib/ansi.js.map +1 -0
  91. package/dist/tui/lib/box-drawing.d.ts +12 -0
  92. package/dist/tui/lib/box-drawing.d.ts.map +1 -0
  93. package/dist/tui/lib/box-drawing.js +30 -0
  94. package/dist/tui/lib/box-drawing.js.map +1 -0
  95. package/dist/tui/lib/diff-formatter.d.ts +9 -0
  96. package/dist/tui/lib/diff-formatter.d.ts.map +1 -0
  97. package/dist/tui/lib/diff-formatter.js +65 -0
  98. package/dist/tui/lib/diff-formatter.js.map +1 -0
  99. package/dist/tui/lib/tokens.d.ts +56 -0
  100. package/dist/tui/lib/tokens.d.ts.map +1 -0
  101. package/dist/tui/lib/tokens.js +61 -0
  102. package/dist/tui/lib/tokens.js.map +1 -0
  103. package/dist/tui/lib/truncate.d.ts +11 -0
  104. package/dist/tui/lib/truncate.d.ts.map +1 -0
  105. package/dist/tui/lib/truncate.js +69 -0
  106. package/dist/tui/lib/truncate.js.map +1 -0
  107. package/dist/tui/lib/update-checker.d.ts +21 -0
  108. package/dist/tui/lib/update-checker.d.ts.map +1 -0
  109. package/dist/tui/lib/update-checker.js +133 -0
  110. package/dist/tui/lib/update-checker.js.map +1 -0
  111. package/dist/tui/types.d.ts +77 -0
  112. package/dist/tui/types.d.ts.map +1 -0
  113. package/dist/tui/types.js +5 -0
  114. package/dist/tui/types.js.map +1 -0
  115. package/package.json +21 -11
@@ -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.3",
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.3",
43
- "@yuaone/tools": "0.1.3"
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
+ }