xx-ai-cli 0.1.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 (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +328 -0
  3. package/dist/commands/agent.d.ts +12 -0
  4. package/dist/commands/agent.d.ts.map +1 -0
  5. package/dist/commands/agent.js +311 -0
  6. package/dist/commands/agent.js.map +1 -0
  7. package/dist/commands/ask.d.ts +7 -0
  8. package/dist/commands/ask.d.ts.map +1 -0
  9. package/dist/commands/ask.js +52 -0
  10. package/dist/commands/ask.js.map +1 -0
  11. package/dist/commands/chat.d.ts +9 -0
  12. package/dist/commands/chat.d.ts.map +1 -0
  13. package/dist/commands/chat.js +129 -0
  14. package/dist/commands/chat.js.map +1 -0
  15. package/dist/commands/cmd.d.ts +6 -0
  16. package/dist/commands/cmd.d.ts.map +1 -0
  17. package/dist/commands/cmd.js +52 -0
  18. package/dist/commands/cmd.js.map +1 -0
  19. package/dist/commands/code.d.ts +8 -0
  20. package/dist/commands/code.d.ts.map +1 -0
  21. package/dist/commands/code.js +75 -0
  22. package/dist/commands/code.js.map +1 -0
  23. package/dist/commands/file.d.ts +7 -0
  24. package/dist/commands/file.d.ts.map +1 -0
  25. package/dist/commands/file.js +66 -0
  26. package/dist/commands/file.js.map +1 -0
  27. package/dist/commands/history.d.ts +5 -0
  28. package/dist/commands/history.d.ts.map +1 -0
  29. package/dist/commands/history.js +159 -0
  30. package/dist/commands/history.js.map +1 -0
  31. package/dist/commands/init.d.ts +2 -0
  32. package/dist/commands/init.d.ts.map +1 -0
  33. package/dist/commands/init.js +144 -0
  34. package/dist/commands/init.js.map +1 -0
  35. package/dist/commands/install.d.ts +24 -0
  36. package/dist/commands/install.d.ts.map +1 -0
  37. package/dist/commands/install.js +328 -0
  38. package/dist/commands/install.js.map +1 -0
  39. package/dist/commands/model.d.ts +6 -0
  40. package/dist/commands/model.d.ts.map +1 -0
  41. package/dist/commands/model.js +128 -0
  42. package/dist/commands/model.js.map +1 -0
  43. package/dist/commands/pkg.d.ts +12 -0
  44. package/dist/commands/pkg.d.ts.map +1 -0
  45. package/dist/commands/pkg.js +132 -0
  46. package/dist/commands/pkg.js.map +1 -0
  47. package/dist/commands/run.d.ts +9 -0
  48. package/dist/commands/run.d.ts.map +1 -0
  49. package/dist/commands/run.js +185 -0
  50. package/dist/commands/run.js.map +1 -0
  51. package/dist/core/agentTask.d.ts +20 -0
  52. package/dist/core/agentTask.d.ts.map +1 -0
  53. package/dist/core/agentTask.js +81 -0
  54. package/dist/core/agentTask.js.map +1 -0
  55. package/dist/core/config.d.ts +41 -0
  56. package/dist/core/config.d.ts.map +1 -0
  57. package/dist/core/config.js +153 -0
  58. package/dist/core/config.js.map +1 -0
  59. package/dist/core/executor.d.ts +20 -0
  60. package/dist/core/executor.d.ts.map +1 -0
  61. package/dist/core/executor.js +68 -0
  62. package/dist/core/executor.js.map +1 -0
  63. package/dist/core/files.d.ts +24 -0
  64. package/dist/core/files.d.ts.map +1 -0
  65. package/dist/core/files.js +95 -0
  66. package/dist/core/files.js.map +1 -0
  67. package/dist/core/github.d.ts +32 -0
  68. package/dist/core/github.d.ts.map +1 -0
  69. package/dist/core/github.js +82 -0
  70. package/dist/core/github.js.map +1 -0
  71. package/dist/core/prompt.d.ts +9 -0
  72. package/dist/core/prompt.d.ts.map +1 -0
  73. package/dist/core/prompt.js +44 -0
  74. package/dist/core/prompt.js.map +1 -0
  75. package/dist/core/router.d.ts +16 -0
  76. package/dist/core/router.d.ts.map +1 -0
  77. package/dist/core/router.js +182 -0
  78. package/dist/core/router.js.map +1 -0
  79. package/dist/core/search.d.ts +14 -0
  80. package/dist/core/search.d.ts.map +1 -0
  81. package/dist/core/search.js +179 -0
  82. package/dist/core/search.js.map +1 -0
  83. package/dist/core/session.d.ts +38 -0
  84. package/dist/core/session.d.ts.map +1 -0
  85. package/dist/core/session.js +172 -0
  86. package/dist/core/session.js.map +1 -0
  87. package/dist/core/stream.d.ts +15 -0
  88. package/dist/core/stream.d.ts.map +1 -0
  89. package/dist/core/stream.js +102 -0
  90. package/dist/core/stream.js.map +1 -0
  91. package/dist/core/tools.d.ts +343 -0
  92. package/dist/core/tools.d.ts.map +1 -0
  93. package/dist/core/tools.js +293 -0
  94. package/dist/core/tools.js.map +1 -0
  95. package/dist/index.d.ts +3 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +372 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/ui/renderer.d.ts +17 -0
  100. package/dist/ui/renderer.d.ts.map +1 -0
  101. package/dist/ui/renderer.js +69 -0
  102. package/dist/ui/renderer.js.map +1 -0
  103. package/package.json +73 -0
@@ -0,0 +1,159 @@
1
+ import chalk from 'chalk';
2
+ import { confirm } from '@inquirer/prompts';
3
+ import { loadAllSessions, loadSessionById, deleteSession, Session } from '../core/session.js';
4
+ import { config, PROVIDER_LABELS } from '../core/config.js';
5
+ import { chat } from '../core/stream.js';
6
+ import { theme } from '../ui/renderer.js';
7
+ // โ”€โ”€โ”€ ๆ ผๅผๅŒ–ๆ—ถ้—ด โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
8
+ function formatDate(iso) {
9
+ if (!iso)
10
+ return 'โ€”';
11
+ const d = new Date(iso);
12
+ const now = new Date();
13
+ const diffMs = now.getTime() - d.getTime();
14
+ const diffMin = Math.floor(diffMs / 60000);
15
+ const diffHr = Math.floor(diffMin / 60);
16
+ const diffDay = Math.floor(diffHr / 24);
17
+ if (diffMin < 1)
18
+ return 'ๅˆšๅˆš';
19
+ if (diffMin < 60)
20
+ return `${diffMin} ๅˆ†้’Ÿๅ‰`;
21
+ if (diffHr < 24)
22
+ return `${diffHr} ๅฐๆ—ถๅ‰`;
23
+ if (diffDay < 7)
24
+ return `${diffDay} ๅคฉๅ‰`;
25
+ return d.toLocaleDateString('zh-CN');
26
+ }
27
+ // โ”€โ”€โ”€ ๅˆ—ๅ‡บๅކๅฒไผš่ฏ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
28
+ export function historyListCommand(limit = 20) {
29
+ const sessions = loadAllSessions().slice(0, limit);
30
+ if (sessions.length === 0) {
31
+ console.log('\n' + theme.dim('ๆš‚ๆ— ๅކๅฒไผš่ฏใ€‚ๅผ€ๅง‹ๅฏน่ฏๅŽไผš่‡ชๅŠจไฟๅญ˜ใ€‚'));
32
+ console.log(theme.dim('ไฝฟ็”จ xxcli chat ๆˆ– xx chat ๅผ€ๅง‹ๅฏน่ฏ\n'));
33
+ return;
34
+ }
35
+ console.log('\n' + theme.bold(`๐Ÿ“š ๅކๅฒไผš่ฏ๏ผˆๆœ€่ฟ‘ ${sessions.length} ๆก๏ผ‰\n`));
36
+ sessions.forEach((s, i) => {
37
+ const idx = chalk.dim(`[${String(i + 1).padStart(2)}]`);
38
+ const modelLabel = PROVIDER_LABELS[s.model] ?? s.model;
39
+ const turns = Math.floor(s.messages.filter((m) => m.role === 'user').length);
40
+ const time = formatDate(s.updatedAt);
41
+ console.log(` ${idx} ${chalk.bold(s.title)}`);
42
+ console.log(` ${chalk.dim(modelLabel)} ยท ${chalk.dim(`${turns} ่ฝฎๅฏน่ฏ`)} ยท ${chalk.dim(time)} ยท ${chalk.dim('ID: ' + s.id)}`);
43
+ console.log();
44
+ });
45
+ console.log(theme.dim(' ไฝฟ็”จ xxcli history show <ID> ๆŸฅ็œ‹่ฏฆๆƒ…'));
46
+ console.log(theme.dim(' ไฝฟ็”จ xxcli history resume <ID> ็ปง็ปญๅฏน่ฏ'));
47
+ console.log(theme.dim(' ไฝฟ็”จ xxcli history clear ๆธ…็ฉบๅ…จ้ƒจๅކๅฒ\n'));
48
+ }
49
+ // โ”€โ”€โ”€ ๅฑ•็คบๅ•ๆกไผš่ฏ่ฏฆๆƒ… โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
50
+ export function historyShowCommand(id) {
51
+ const session = loadSessionById(id);
52
+ if (!session) {
53
+ console.log(theme.error(`ๆœชๆ‰พๅˆฐ ID ไธบ ${id} ็š„ไผš่ฏ`));
54
+ return;
55
+ }
56
+ const modelLabel = PROVIDER_LABELS[session.model] ?? session.model;
57
+ console.log('\n' + theme.divider());
58
+ console.log(` ${chalk.bold(session.title)}`);
59
+ console.log(` ${chalk.dim(modelLabel)} ยท ${formatDate(session.updatedAt)}`);
60
+ console.log(theme.divider() + '\n');
61
+ for (const msg of session.messages) {
62
+ if (msg.role === 'user') {
63
+ console.log(chalk.cyan.bold('ไฝ : ') + msg.content);
64
+ }
65
+ else if (msg.role === 'assistant') {
66
+ console.log(chalk.green.bold(`๐Ÿค– ${modelLabel}: `) + msg.content);
67
+ }
68
+ console.log();
69
+ }
70
+ }
71
+ // โ”€โ”€โ”€ ็ปง็ปญๅކๅฒไผš่ฏ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
72
+ export async function historyResumeCommand(id) {
73
+ const persisted = loadSessionById(id);
74
+ if (!persisted) {
75
+ console.log(theme.error(`ๆœชๆ‰พๅˆฐ ID ไธบ ${id} ็š„ไผš่ฏ`));
76
+ return;
77
+ }
78
+ const provider = persisted.model ?? config.get('defaultProvider');
79
+ const modelConfig = config.getProvider(provider);
80
+ if (!modelConfig) {
81
+ console.log(theme.error(`ๆจกๅž‹ ${persisted.model} ๆœช้…็ฝฎ API Key๏ผŒๆ— ๆณ•็ปง็ปญ`));
82
+ return;
83
+ }
84
+ const modelLabel = PROVIDER_LABELS[provider];
85
+ const session = Session.fromPersisted(persisted);
86
+ session.setModel(provider);
87
+ console.log('\n' + theme.divider());
88
+ console.log(chalk.bold(` โ–ถ ็ปง็ปญไผš่ฏ: ${persisted.title}`));
89
+ console.log(theme.dim(` ๆจกๅž‹: ${modelLabel} ยท ๅทฒๆœ‰ ${persisted.messages.filter(m => m.role === 'user').length} ่ฝฎๅฏน่ฏ`));
90
+ console.log(theme.dim(' /exit ้€€ๅ‡บ | /clear ๆธ…็ฉบๅฝ“ๅ‰ไผš่ฏ'));
91
+ console.log(theme.divider() + '\n');
92
+ // ๅค็”จ readline ไบคไบ’๏ผŒๅ†…่”ๅฎž็Žฐ้ฟๅ…ๅพช็Žฏไพ่ต–
93
+ const { createInterface } = await import('readline');
94
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
95
+ rl.on('close', () => {
96
+ session.persist();
97
+ console.log('\n' + theme.dim('๐Ÿ‘‹ ไผš่ฏๅทฒไฟๅญ˜๏ผŒๅ†่ง๏ผ'));
98
+ process.exit(0);
99
+ });
100
+ const ask = () => {
101
+ rl.question(chalk.cyan.bold('ไฝ : '), async (input) => {
102
+ const trimmed = input.trim();
103
+ if (!trimmed) {
104
+ ask();
105
+ return;
106
+ }
107
+ if (trimmed === '/exit') {
108
+ rl.close();
109
+ return;
110
+ }
111
+ if (trimmed === '/clear') {
112
+ session.clear();
113
+ console.log(theme.success('ๅฏน่ฏๅทฒๆธ…็ฉบ๏ผˆๅކๅฒ่ฎฐๅฝ•ไฟ็•™๏ผ‰\n'));
114
+ ask();
115
+ return;
116
+ }
117
+ session.addUser(trimmed);
118
+ session.trim();
119
+ process.stdout.write(`\n${chalk.green.bold(`๐Ÿค– ${modelLabel}`)}: `);
120
+ try {
121
+ const { content } = await chat(modelConfig, session.getMessages(), {
122
+ stream: config.get('stream'),
123
+ onChunk: (c) => process.stdout.write(c),
124
+ });
125
+ console.log('\n');
126
+ session.addAssistant(content);
127
+ session.persist(); // ๆฏ่ฝฎๅฏน่ฏๅŽ่‡ชๅŠจไฟๅญ˜
128
+ }
129
+ catch (err) {
130
+ console.log('\n' + theme.error(`่ฏทๆฑ‚ๅคฑ่ดฅ: ${err.message}\n`));
131
+ }
132
+ ask();
133
+ });
134
+ };
135
+ ask();
136
+ }
137
+ // โ”€โ”€โ”€ ๆธ…็ฉบๅކๅฒ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
138
+ export async function historyClearCommand() {
139
+ const sessions = loadAllSessions();
140
+ if (sessions.length === 0) {
141
+ console.log(theme.dim('\nๆš‚ๆ— ๅކๅฒไผš่ฏ\n'));
142
+ return;
143
+ }
144
+ const ok = await confirm({
145
+ message: `็กฎ่ฎคๅˆ ้™คๅ…จ้ƒจ ${sessions.length} ๆกๅކๅฒไผš่ฏ๏ผŸๆญคๆ“ไฝœไธๅฏๆ’ค้”€`,
146
+ default: false,
147
+ });
148
+ if (!ok) {
149
+ console.log(theme.dim('ๅทฒๅ–ๆถˆ'));
150
+ return;
151
+ }
152
+ let deleted = 0;
153
+ for (const s of sessions) {
154
+ if (deleteSession(s.id))
155
+ deleted++;
156
+ }
157
+ console.log(theme.success(`โœ” ๅทฒๆธ…็ฉบ ${deleted} ๆกๅކๅฒไผš่ฏ`));
158
+ }
159
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function initCommand(): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkBA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgJjD"}
@@ -0,0 +1,144 @@
1
+ import chalk from 'chalk';
2
+ import { select, input, confirm, checkbox } from '@inquirer/prompts';
3
+ import { config, MODEL_DEFAULTS, PROVIDER_LABELS } from '../core/config.js';
4
+ import { theme } from '../ui/renderer.js';
5
+ const ALL_PROVIDERS = Object.keys(MODEL_DEFAULTS);
6
+ const PROVIDER_URLS = {
7
+ deepseek: 'https://platform.deepseek.com',
8
+ qwen: 'https://dashscope.console.aliyun.com',
9
+ glm: 'https://open.bigmodel.cn',
10
+ doubao: 'https://console.volcengine.com/ark',
11
+ moonshot: 'https://platform.moonshot.cn',
12
+ minimax: 'https://www.minimaxi.com/user-center/basic-information/interface-key',
13
+ hunyuan: 'https://console.cloud.tencent.com/hunyuan/api-key',
14
+ ernie: 'https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application',
15
+ };
16
+ export async function initCommand() {
17
+ console.log('\n' + theme.divider());
18
+ console.log(chalk.bold.cyan(' ๐Ÿš€ XX-AI-CLI ๅˆๅง‹ๅŒ–ๅ‘ๅฏผ'));
19
+ console.log(theme.dim(' ่ฎฉๆˆ‘ไปฌๅธฎไฝ ๅฟซ้€ŸๅฎŒๆˆ้…็ฝฎ๏ผŒๅช้œ€ 1 ๅˆ†้’Ÿ'));
20
+ console.log(theme.divider() + '\n');
21
+ // โ”€โ”€ ๆฃ€ๆŸฅๆ˜ฏๅฆๅทฒๆœ‰้…็ฝฎ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
22
+ const providers = config.get('providers');
23
+ const hasAnyKey = Object.values(providers).some((p) => p?.apiKey);
24
+ if (hasAnyKey) {
25
+ const overwrite = await confirm({
26
+ message: 'ๆฃ€ๆต‹ๅˆฐๅทฒๆœ‰้…็ฝฎ๏ผŒๆ˜ฏๅฆ้‡ๆ–ฐๅˆๅง‹ๅŒ–๏ผŸ',
27
+ default: false,
28
+ });
29
+ if (!overwrite) {
30
+ console.log(theme.info('\nไฟ็•™็Žฐๆœ‰้…็ฝฎ๏ผŒ้€€ๅ‡บๅ‘ๅฏผใ€‚'));
31
+ console.log(theme.dim('ไฝ ๅฏไปฅ้šๆ—ถ่ฟ่กŒ xxcli config show ๆŸฅ็œ‹้…็ฝฎ'));
32
+ return;
33
+ }
34
+ }
35
+ // โ”€โ”€ Step 1: ้€‰ๆ‹ฉ่ฆ้…็ฝฎ็š„ๆจกๅž‹ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
36
+ console.log(chalk.bold('\n๐Ÿ“‹ Step 1/3 ้€‰ๆ‹ฉไฝ ่ฆ้…็ฝฎ็š„ๆจกๅž‹\n'));
37
+ console.log(theme.dim('๏ผˆ่‡ณๅฐ‘้…็ฝฎไธ€ไธช๏ผŒๅคš้€‰็”จ็ฉบๆ ผ้”ฎ๏ผ‰\n'));
38
+ const selectedProviders = await checkbox({
39
+ message: '้€‰ๆ‹ฉๆจกๅž‹๏ผˆ็ฉบๆ ผ้€‰ไธญ๏ผŒๅ›ž่ฝฆ็กฎ่ฎค๏ผ‰',
40
+ choices: ALL_PROVIDERS.map((p) => ({
41
+ name: `${PROVIDER_LABELS[p].padEnd(22)} ${chalk.dim(PROVIDER_URLS[p])}`,
42
+ value: p,
43
+ checked: false, // ้ป˜่ฎคๅ…จไธ้€‰ไธญ๏ผŒ็”ฑ็”จๆˆทไธปๅŠจ้€‰ๆ‹ฉ
44
+ })),
45
+ validate: (choices) => choices.length > 0 || '่‡ณๅฐ‘้€‰ๆ‹ฉไธ€ไธชๆจกๅž‹',
46
+ });
47
+ // โ”€โ”€ Step 2: ้€ไธช่พ“ๅ…ฅ API Key โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
48
+ console.log(chalk.bold('\n๐Ÿ”‘ Step 2/3 ้…็ฝฎ API Key\n'));
49
+ const typedSelected = selectedProviders;
50
+ for (let i = 0; i < typedSelected.length; i++) {
51
+ const provider = typedSelected[i];
52
+ const label = PROVIDER_LABELS[provider];
53
+ const defaults = MODEL_DEFAULTS[provider];
54
+ const existingSaved = providers[provider];
55
+ // ๆฏไธชๆจกๅž‹ไน‹้—ดๅŠ ๅˆ†้š”๏ผŒๆธ…ๆ™ฐๆ ‡ๅ‡บๅฝ“ๅ‰ๅœจ้…็ฝฎๅ“ชไธช
56
+ console.log(theme.divider());
57
+ console.log(chalk.bold.cyan(` [${i + 1}/${typedSelected.length}] ้…็ฝฎ ${label}`));
58
+ console.log(theme.dim(` ๅฎ˜ๆ–น Key ่Žทๅ–๏ผš${PROVIDER_URLS[provider]}`));
59
+ console.log();
60
+ // โ”€โ”€ 2a. ่พ“ๅ…ฅ API Key โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
61
+ const existingKey = existingSaved?.apiKey;
62
+ const keyPrompt = existingKey
63
+ ? ` API Key๏ผˆๅ›ž่ฝฆไฟ็•™็Žฐๆœ‰ ${existingKey.slice(0, 6)}****๏ผ‰`
64
+ : ` API Key`;
65
+ const apiKeyInput = await input({
66
+ message: keyPrompt,
67
+ validate: (val) => (!val && !existingKey ? '่ฏท่พ“ๅ…ฅๆœ‰ๆ•ˆ็š„ API Key' : true),
68
+ });
69
+ const finalKey = apiKeyInput.trim() || existingKey;
70
+ // โ”€โ”€ 2b. ๆ˜ฏๅฆไฝฟ็”จไธ“ๅฑž/ไปฃ็†ๅœฐๅ€ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
71
+ const existingBaseURL = existingSaved?.baseURL;
72
+ const isCustomURL = existingBaseURL && existingBaseURL !== defaults.baseURL;
73
+ const useCustom = await confirm({
74
+ message: ` ๆ˜ฏๅฆไฝฟ็”จไธ“ๅฑžๆˆ–ไปฃ็† API ๅœฐๅ€๏ผŸ${isCustomURL ? chalk.dim(`๏ผˆๅฝ“ๅ‰๏ผš${existingBaseURL}๏ผ‰`) : chalk.dim('๏ผˆๆ™ฎ้€š Key ้€‰ๅฆ๏ผ‰')}`,
75
+ default: !!isCustomURL,
76
+ });
77
+ let finalBaseURL;
78
+ let finalModel;
79
+ if (useCustom) {
80
+ // โ”€โ”€ 2c. ่พ“ๅ…ฅ่‡ชๅฎšไน‰ BaseURL โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
81
+ const baseURLInput = await input({
82
+ message: ` API ๅœฐๅ€๏ผˆBase URL๏ผ‰`,
83
+ default: isCustomURL ? existingBaseURL : undefined,
84
+ validate: (val) => {
85
+ if (!val)
86
+ return '่ฏท่พ“ๅ…ฅๆœ‰ๆ•ˆ็š„ API ๅœฐๅ€';
87
+ if (!val.startsWith('http'))
88
+ return 'ๅœฐๅ€้œ€ไปฅ http:// ๆˆ– https:// ๅผ€ๅคด';
89
+ return true;
90
+ },
91
+ });
92
+ finalBaseURL = baseURLInput.trim();
93
+ // โ”€โ”€ 2d. ่พ“ๅ…ฅ่‡ชๅฎšไน‰ๆจกๅž‹ๅ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
94
+ const existingModel = existingSaved?.model ?? defaults.model;
95
+ const modelInput = await input({
96
+ message: ` ๆจกๅž‹ๅ็งฐ`,
97
+ default: existingModel,
98
+ validate: (val) => (!val ? '่ฏท่พ“ๅ…ฅๆจกๅž‹ๅ็งฐ' : true),
99
+ });
100
+ finalModel = modelInput.trim() || existingModel;
101
+ console.log(theme.dim(`\n ๅฐ†ไฝฟ็”จ๏ผš${finalBaseURL} ๆจกๅž‹๏ผš${finalModel}`));
102
+ }
103
+ else {
104
+ // ๆ™ฎ้€š Key๏ผšๆขๅค้ป˜่ฎคๅœฐๅ€ๅ’Œๆจกๅž‹ๅ๏ผˆๆธ…้™คไน‹ๅ‰ๅฏ่ƒฝ่ฎพ็š„่‡ชๅฎšไน‰ๅ€ผ๏ผ‰
105
+ finalBaseURL = defaults.baseURL;
106
+ finalModel = existingSaved?.model ?? defaults.model;
107
+ console.log(theme.dim(`\n ๅฐ†ไฝฟ็”จๅฎ˜ๆ–นๅœฐๅ€๏ผš${finalBaseURL} ๆจกๅž‹๏ผš${finalModel}`));
108
+ }
109
+ config.setProvider(provider, finalKey, finalModel, finalBaseURL);
110
+ console.log(theme.success(` โœ” ${label} ้…็ฝฎๆˆๅŠŸ\n`));
111
+ }
112
+ console.log(theme.divider() + '\n');
113
+ // โ”€โ”€ Step 3: ่ฎพ็ฝฎ้ป˜่ฎคๆจกๅž‹ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
114
+ console.log(chalk.bold('โš™๏ธ Step 3/3 ๅŸบ็ก€่ฎพ็ฝฎ\n'));
115
+ const configuredProviders = selectedProviders;
116
+ const defaultProvider = await select({
117
+ message: '่ฎพ็ฝฎ้ป˜่ฎคๆจกๅž‹',
118
+ choices: configuredProviders.map((p) => ({
119
+ name: PROVIDER_LABELS[p],
120
+ value: p,
121
+ })),
122
+ });
123
+ config.setDefault(defaultProvider);
124
+ const streamEnabled = await confirm({
125
+ message: 'ๅฏ็”จๆตๅผ่พ“ๅ‡บ๏ผˆๆŽจ่๏ผŒๅฎžๆ—ถๆ˜พ็คบ AI ๅ›žๅค๏ผ‰',
126
+ default: true,
127
+ });
128
+ config.set('stream', streamEnabled);
129
+ // โ”€โ”€ ๅฎŒๆˆ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
130
+ console.log('\n' + theme.divider());
131
+ console.log(chalk.bold.green(' ๐ŸŽ‰ ๅˆๅง‹ๅŒ–ๅฎŒๆˆ๏ผ'));
132
+ console.log(theme.divider());
133
+ console.log(`
134
+ ๅฟซ้€ŸไธŠๆ‰‹๏ผš
135
+ ${chalk.cyan('xx')} ่ฟ›ๅ…ฅๆ™บ่ƒฝไบคไบ’ๆจกๅผ
136
+ ${chalk.cyan('xx "ๅธฎๆˆ‘ๅ†™ไธช้˜ฒๆŠ–ๅ‡ฝๆ•ฐ"')} ๅ•ๆฌกๆ้—ฎ๏ผˆ่‡ชๅŠจ่ฏ†ๅˆซๆ„ๅ›พ๏ผ‰
137
+ ${chalk.cyan('xx chat')} ่ฟ›ๅ…ฅๅคš่ฝฎๅฏน่ฏ
138
+ ${chalk.cyan('xx ask "ไป€ไนˆๆ˜ฏCAPๅฎš็†"')} ๅฟซ้€Ÿ้—ฎ็ญ”
139
+ ${chalk.dim('cat file.ts | xx "ๅธฎๆˆ‘่งฃ้‡Š่ฟ™ๆฎตไปฃ็ "')} ็ฎก้“่พ“ๅ…ฅ
140
+
141
+ ${theme.dim('ไฝฟ็”จ xxcli config show ๆŸฅ็œ‹ๅฎŒๆ•ด้…็ฝฎ')}
142
+ `);
143
+ }
144
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,EAAsB,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAoB,CAAC;AAErE,MAAM,aAAa,GAAkC;IACnD,QAAQ,EAAE,+BAA+B;IACzC,IAAI,EAAE,sCAAsC;IAC5C,GAAG,EAAE,0BAA0B;IAC/B,MAAM,EAAE,oCAAoC;IAC5C,QAAQ,EAAE,8BAA8B;IACxC,OAAO,EAAE,sEAAsE;IAC/E,OAAO,EAAE,mDAAmD;IAC5D,KAAK,EAAE,kFAAkF;CAC1F,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAEpC,yDAAyD;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE5C,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC;QACvC,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,IAAI,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;YACvE,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,KAAK,EAAE,iBAAiB;SAClC,CAAC,CAAC;QACH,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;KACxD,CAAC,CAAC;IAEH,6DAA6D;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAEvD,MAAM,aAAa,GAAG,iBAAoC,CAAC;IAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE1C,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,2DAA2D;QAC3D,MAAM,WAAW,GAAG,aAAa,EAAE,MAAM,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW;YAC3B,CAAC,CAAC,oBAAoB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;YACpD,CAAC,CAAC,WAAW,CAAC;QAEhB,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC;YAC9B,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;SACpE,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,WAAY,CAAC;QAEpD,kDAAkD;QAClD,MAAM,eAAe,GAAG,aAAa,EAAE,OAAO,CAAC;QAC/C,MAAM,WAAW,GAAG,eAAe,IAAI,eAAe,KAAK,QAAQ,CAAC,OAAO,CAAC;QAE5E,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,sBAAsB,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YAC9G,OAAO,EAAE,CAAC,CAAC,WAAW;SACvB,CAAC,CAAC;QAEH,IAAI,YAAgC,CAAC;QACrC,IAAI,UAA8B,CAAC;QAEnC,IAAI,SAAS,EAAE,CAAC;YACd,sDAAsD;YACtD,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC;gBAC/B,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;gBAClD,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;oBAChB,IAAI,CAAC,GAAG;wBAAE,OAAO,eAAe,CAAC;oBACjC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;wBAAE,OAAO,4BAA4B,CAAC;oBACjE,OAAO,IAAI,CAAC;gBACd,CAAC;aACF,CAAC,CAAC;YACH,YAAY,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;YAEnC,mDAAmD;YACnD,MAAM,aAAa,GAAG,aAAa,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;YAC7D,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC;gBAC7B,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;aAC7C,CAAC,CAAC;YACH,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC;YAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,YAAY,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC;YAChC,UAAU,GAAG,aAAa,EAAE,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,YAAY,QAAQ,UAAU,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAEpC,0DAA0D;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,MAAM,mBAAmB,GAAG,iBAAoC,CAAC;IACjE,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC;QACnC,OAAO,EAAE,QAAQ;QACjB,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;YACxB,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,CAAC,UAAU,CAAC,eAAgC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC;QAClC,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEpC,+DAA+D;IAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC;;IAEV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC/B,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC;;IAExC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC;GACzC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface ToolDef {
2
+ name: string;
3
+ description: string;
4
+ /** GitHub owner/repo๏ผŒไพ‹ๅฆ‚ "owner/openclaw" */
5
+ github?: string;
6
+ /** npm ๅ…จๅฑ€ๅŒ…ๅ */
7
+ npm?: string;
8
+ /** brew ๅŒ…ๅ */
9
+ brew?: string;
10
+ /** ๅฎ‰่ฃ…ๅŽ้ชŒ่ฏๅ‘ฝไปค */
11
+ checkCmd?: string;
12
+ /** ๅฎ˜ๆ–นๆ–‡ๆกฃๅœฐๅ€ */
13
+ docs?: string;
14
+ }
15
+ export declare const TOOL_REGISTRY: Record<string, ToolDef>;
16
+ export interface InstallOptions {
17
+ force?: boolean;
18
+ method?: 'npm' | 'brew' | 'github' | 'auto';
19
+ version?: string;
20
+ dryRun?: boolean;
21
+ }
22
+ export declare function installCommand(toolName: string, options?: InstallOptions): Promise<void>;
23
+ export declare function listTools(): void;
24
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAQjD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAsCf;AAgSD,wBAAgB,SAAS,IAAI,IAAI,CAWhC"}