@testany/hephos 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 (99) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +79 -0
  3. package/out/LocalExecutionEnvironment.d.ts +23 -0
  4. package/out/LocalExecutionEnvironment.d.ts.map +1 -0
  5. package/out/LocalExecutionEnvironment.js +124 -0
  6. package/out/LocalExecutionEnvironment.js.map +1 -0
  7. package/out/adapters/AdapterFactory.d.ts +55 -0
  8. package/out/adapters/AdapterFactory.d.ts.map +1 -0
  9. package/out/adapters/AdapterFactory.js +117 -0
  10. package/out/adapters/AdapterFactory.js.map +1 -0
  11. package/out/adapters/ClaudeCodeAdapter.d.ts +28 -0
  12. package/out/adapters/ClaudeCodeAdapter.d.ts.map +1 -0
  13. package/out/adapters/ClaudeCodeAdapter.js +95 -0
  14. package/out/adapters/ClaudeCodeAdapter.js.map +1 -0
  15. package/out/adapters/GenericShellAdapter.d.ts +51 -0
  16. package/out/adapters/GenericShellAdapter.d.ts.map +1 -0
  17. package/out/adapters/GenericShellAdapter.js +162 -0
  18. package/out/adapters/GenericShellAdapter.js.map +1 -0
  19. package/out/adapters/OpenAICodexAdapter.d.ts +36 -0
  20. package/out/adapters/OpenAICodexAdapter.d.ts.map +1 -0
  21. package/out/adapters/OpenAICodexAdapter.js +155 -0
  22. package/out/adapters/OpenAICodexAdapter.js.map +1 -0
  23. package/out/adapters/index.d.ts +12 -0
  24. package/out/adapters/index.d.ts.map +1 -0
  25. package/out/adapters/index.js +12 -0
  26. package/out/adapters/index.js.map +1 -0
  27. package/out/cli-layer-index.d.ts +14 -0
  28. package/out/cli-layer-index.d.ts.map +1 -0
  29. package/out/cli-layer-index.js +15 -0
  30. package/out/cli-layer-index.js.map +1 -0
  31. package/out/cli.d.ts +8 -0
  32. package/out/cli.d.ts.map +1 -0
  33. package/out/cli.js +297 -0
  34. package/out/cli.js.map +1 -0
  35. package/out/commands/AgentsCommand.d.ts +47 -0
  36. package/out/commands/AgentsCommand.d.ts.map +1 -0
  37. package/out/commands/AgentsCommand.js +487 -0
  38. package/out/commands/AgentsCommand.js.map +1 -0
  39. package/out/config/ConfigAdapter.d.ts +58 -0
  40. package/out/config/ConfigAdapter.d.ts.map +1 -0
  41. package/out/config/ConfigAdapter.js +95 -0
  42. package/out/config/ConfigAdapter.js.map +1 -0
  43. package/out/config/UIPreferences.d.ts +24 -0
  44. package/out/config/UIPreferences.d.ts.map +1 -0
  45. package/out/config/UIPreferences.js +18 -0
  46. package/out/config/UIPreferences.js.map +1 -0
  47. package/out/config/index.d.ts +9 -0
  48. package/out/config/index.d.ts.map +1 -0
  49. package/out/config/index.js +9 -0
  50. package/out/config/index.js.map +1 -0
  51. package/out/outputs/ConsoleLogger.d.ts +30 -0
  52. package/out/outputs/ConsoleLogger.d.ts.map +1 -0
  53. package/out/outputs/ConsoleLogger.js +54 -0
  54. package/out/outputs/ConsoleLogger.js.map +1 -0
  55. package/out/outputs/ConsoleOutput.d.ts +30 -0
  56. package/out/outputs/ConsoleOutput.d.ts.map +1 -0
  57. package/out/outputs/ConsoleOutput.js +49 -0
  58. package/out/outputs/ConsoleOutput.js.map +1 -0
  59. package/out/outputs/IOutput.d.ts +38 -0
  60. package/out/outputs/IOutput.d.ts.map +1 -0
  61. package/out/outputs/IOutput.js +13 -0
  62. package/out/outputs/IOutput.js.map +1 -0
  63. package/out/outputs/InkOutput.d.ts +24 -0
  64. package/out/outputs/InkOutput.d.ts.map +1 -0
  65. package/out/outputs/InkOutput.js +38 -0
  66. package/out/outputs/InkOutput.js.map +1 -0
  67. package/out/repl/ReplModeInk.d.ts +8 -0
  68. package/out/repl/ReplModeInk.d.ts.map +1 -0
  69. package/out/repl/ReplModeInk.js +1486 -0
  70. package/out/repl/ReplModeInk.js.map +1 -0
  71. package/out/repl/components/AgentsMenu.d.ts +7 -0
  72. package/out/repl/components/AgentsMenu.d.ts.map +1 -0
  73. package/out/repl/components/AgentsMenu.js +565 -0
  74. package/out/repl/components/AgentsMenu.js.map +1 -0
  75. package/out/repl/components/LoadingIndicator.d.ts +5 -0
  76. package/out/repl/components/LoadingIndicator.d.ts.map +1 -0
  77. package/out/repl/components/LoadingIndicator.js +14 -0
  78. package/out/repl/components/LoadingIndicator.js.map +1 -0
  79. package/out/repl/components/QueueDisplay.d.ts +18 -0
  80. package/out/repl/components/QueueDisplay.d.ts.map +1 -0
  81. package/out/repl/components/QueueDisplay.js +16 -0
  82. package/out/repl/components/QueueDisplay.js.map +1 -0
  83. package/out/repl/components/RestorePrompt.d.ts +25 -0
  84. package/out/repl/components/RestorePrompt.d.ts.map +1 -0
  85. package/out/repl/components/RestorePrompt.js +32 -0
  86. package/out/repl/components/RestorePrompt.js.map +1 -0
  87. package/out/repl/components/StreamingDisplay.d.ts +5 -0
  88. package/out/repl/components/StreamingDisplay.d.ts.map +1 -0
  89. package/out/repl/components/StreamingDisplay.js +27 -0
  90. package/out/repl/components/StreamingDisplay.js.map +1 -0
  91. package/out/repl/components/ThinkingIndicator.d.ts +19 -0
  92. package/out/repl/components/ThinkingIndicator.d.ts.map +1 -0
  93. package/out/repl/components/ThinkingIndicator.js +35 -0
  94. package/out/repl/components/ThinkingIndicator.js.map +1 -0
  95. package/out/repl/wizard/wizardStep1Reducer.d.ts +30 -0
  96. package/out/repl/wizard/wizardStep1Reducer.d.ts.map +1 -0
  97. package/out/repl/wizard/wizardStep1Reducer.js +189 -0
  98. package/out/repl/wizard/wizardStep1Reducer.js.map +1 -0
  99. package/package.json +62 -0
@@ -0,0 +1,487 @@
1
+ /**
2
+ * AgentsCommand - CLI 命令处理器
3
+ *
4
+ * 提供 /agents 命令的所有子命令实现
5
+ */
6
+ import { Command } from 'commander';
7
+ import * as readline from 'readline';
8
+ import { AgentRegistry } from '@testany/agent-chatter-core';
9
+ import { colorize } from '@testany/agent-chatter-core';
10
+ /**
11
+ * 打印单个检查结果,包括 message、warning 和 resolution
12
+ * @param check - 检查结果
13
+ * @param indent - 缩进空格数
14
+ */
15
+ function printCheckResult(check, indent = 0) {
16
+ const prefix = ' '.repeat(indent);
17
+ const status = check.passed ? colorize('✓', 'green') : colorize('✗', 'red');
18
+ // 主消息
19
+ console.log(`${prefix}${status} ${check.name}`);
20
+ console.log(`${prefix} ${colorize(check.message, 'dim')}`);
21
+ // 警告信息(黄色)
22
+ if (check.warning) {
23
+ console.log(`${prefix} ${colorize('⚠ ' + check.warning, 'yellow')}`);
24
+ }
25
+ // 解决建议(青色)
26
+ if (check.resolution) {
27
+ console.log(`${prefix} ${colorize('→ ' + check.resolution, 'cyan')}`);
28
+ }
29
+ }
30
+ /**
31
+ * 创建 readline 接口
32
+ */
33
+ function createReadline() {
34
+ return readline.createInterface({
35
+ input: process.stdin,
36
+ output: process.stdout,
37
+ });
38
+ }
39
+ /**
40
+ * 询问用户问题
41
+ */
42
+ function question(rl, prompt) {
43
+ return new Promise((resolve) => {
44
+ rl.question(prompt, (answer) => {
45
+ resolve(answer.trim());
46
+ });
47
+ });
48
+ }
49
+ /**
50
+ * Register 命令处理器 - 交互式扫描和注册
51
+ */
52
+ export async function handleRegister(options, registryPath) {
53
+ const registry = new AgentRegistry(registryPath);
54
+ console.log(colorize('\n=== 注册 AI Agents ===\n', 'bright'));
55
+ console.log('正在扫描系统中已安装的 AI CLI 工具...\n');
56
+ // 扫描所有 agents
57
+ const scanned = await registry.scanAgents();
58
+ const found = scanned.filter(a => a.found);
59
+ const notFound = scanned.filter(a => !a.found);
60
+ if (found.length === 0) {
61
+ console.log(colorize('✗ 未检测到任何 AI CLI 工具', 'yellow'));
62
+ console.log(colorize('\n请先安装以下工具之一:', 'cyan'));
63
+ notFound.forEach(agent => {
64
+ console.log(` - ${agent.displayName} (${agent.name})`);
65
+ });
66
+ console.log();
67
+ return;
68
+ }
69
+ // 显示扫描结果
70
+ console.log(colorize('✓ 检测到以下工具:\n', 'green'));
71
+ found.forEach(agent => {
72
+ const version = agent.version ? colorize(` (v${agent.version})`, 'dim') : '';
73
+ console.log(` ${colorize('●', 'green')} ${agent.displayName}${version}`);
74
+ console.log(colorize(` Command: ${agent.command}`, 'dim'));
75
+ });
76
+ console.log();
77
+ // 自动模式:直接注册所有找到的 agents
78
+ if (options.auto) {
79
+ console.log(colorize('自动注册模式:注册所有检测到的工具...\n', 'cyan'));
80
+ for (const agent of found) {
81
+ const result = await registry.registerAgent(agent.name, agent.command, agent.version);
82
+ if (result.success) {
83
+ console.log(colorize(`✓ 已注册: ${agent.displayName}`, 'green'));
84
+ }
85
+ else {
86
+ console.log(colorize(`✗ 注册失败: ${agent.displayName} - ${result.error}`, 'red'));
87
+ }
88
+ }
89
+ console.log(colorize('\n✓ 自动注册完成', 'green'));
90
+ return;
91
+ }
92
+ // 交互模式:询问用户选择要注册哪些 agents
93
+ const rl = createReadline();
94
+ console.log(colorize('请选择要注册的工具 (输入编号,多个用逗号分隔,或输入 "all" 全部注册):\n', 'cyan'));
95
+ found.forEach((agent, index) => {
96
+ console.log(` ${index + 1}. ${agent.displayName}`);
97
+ });
98
+ console.log();
99
+ try {
100
+ const answer = await question(rl, '请选择: ');
101
+ let selectedIndices = [];
102
+ if (answer.toLowerCase() === 'all') {
103
+ selectedIndices = found.map((_, i) => i);
104
+ }
105
+ else {
106
+ const parts = answer.split(',').map(s => s.trim());
107
+ for (const part of parts) {
108
+ const num = parseInt(part, 10);
109
+ if (!isNaN(num) && num >= 1 && num <= found.length) {
110
+ selectedIndices.push(num - 1);
111
+ }
112
+ }
113
+ }
114
+ if (selectedIndices.length === 0) {
115
+ console.log(colorize('\n✗ 未选择任何工具', 'yellow'));
116
+ return;
117
+ }
118
+ console.log();
119
+ for (const index of selectedIndices) {
120
+ const agent = found[index];
121
+ const result = await registry.registerAgent(agent.name, agent.command, agent.version);
122
+ if (result.success) {
123
+ console.log(colorize(`✓ 已注册: ${agent.displayName}`, 'green'));
124
+ // 验证 agent
125
+ console.log(colorize(` 正在验证...`, 'dim'));
126
+ const verification = await registry.verifyAgent(agent.name);
127
+ if (verification.status === 'verified') {
128
+ console.log(colorize(` ✓ 验证成功`, 'green'));
129
+ }
130
+ else if (verification.status === 'verified_with_warnings') {
131
+ console.log(colorize(` ⚠ 验证通过(有警告)`, 'yellow'));
132
+ if (verification.checks) {
133
+ verification.checks.forEach(check => printCheckResult(check, 4));
134
+ }
135
+ }
136
+ else {
137
+ console.log(colorize(` ✗ 验证失败: ${verification.error}`, 'yellow'));
138
+ if (verification.checks) {
139
+ verification.checks.forEach(check => printCheckResult(check, 4));
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ console.log(colorize(`✗ 注册失败: ${agent.displayName} - ${result.error}`, 'red'));
145
+ }
146
+ }
147
+ console.log(colorize('\n✓ 注册完成', 'green'));
148
+ }
149
+ finally {
150
+ rl.close();
151
+ }
152
+ }
153
+ /**
154
+ * Scan 命令处理器 - 扫描已安装的 agents(不注册)
155
+ */
156
+ export async function handleScan(registryPath) {
157
+ const registry = new AgentRegistry(registryPath);
158
+ console.log(colorize('\n=== 扫描 AI CLI 工具 ===\n', 'bright'));
159
+ console.log('正在扫描系统中已安装的 AI CLI 工具...\n');
160
+ const scanned = await registry.scanAgents();
161
+ const found = scanned.filter(a => a.found);
162
+ const notFound = scanned.filter(a => !a.found);
163
+ if (found.length === 0) {
164
+ console.log(colorize('✗ 未检测到任何 AI CLI 工具', 'yellow'));
165
+ console.log(colorize('\n请先安装以下工具之一:', 'cyan'));
166
+ notFound.forEach(agent => {
167
+ console.log(` - ${agent.displayName} (${agent.name})`);
168
+ });
169
+ console.log();
170
+ return;
171
+ }
172
+ // 显示扫描结果
173
+ console.log(colorize('✓ 检测到以下工具:\n', 'green'));
174
+ found.forEach(agent => {
175
+ const version = agent.version ? colorize(` (v${agent.version})`, 'dim') : '';
176
+ console.log(` ${colorize('●', 'green')} ${agent.displayName}${version}`);
177
+ console.log(colorize(` Command: ${agent.command}`, 'dim'));
178
+ });
179
+ if (notFound.length > 0) {
180
+ console.log(colorize('\n✗ 未安装的工具:', 'yellow'));
181
+ notFound.forEach(agent => {
182
+ console.log(` ${colorize('○', 'dim')} ${agent.displayName}`);
183
+ });
184
+ }
185
+ console.log(colorize('\n使用 ', 'dim') + colorize('agents register', 'cyan') + colorize(' 命令注册这些工具\n', 'dim'));
186
+ }
187
+ /**
188
+ * List 命令处理器 - 显示所有已注册的 agents
189
+ */
190
+ export async function handleList(options, registryPath) {
191
+ const registry = new AgentRegistry(registryPath);
192
+ console.log(colorize('\n=== 已注册的 AI Agents ===\n', 'bright'));
193
+ const agents = await registry.listAgents();
194
+ if (agents.length === 0) {
195
+ console.log(colorize('暂无已注册的 agents', 'yellow'));
196
+ console.log(colorize('\n使用 ', 'dim') + colorize('agents register', 'cyan') + colorize(' 命令注册 agents\n', 'dim'));
197
+ return;
198
+ }
199
+ for (const agent of agents) {
200
+ const version = agent.version ? colorize(` (v${agent.version})`, 'dim') : '';
201
+ console.log(`${colorize('●', 'cyan')} ${colorize(agent.displayName, 'bright')}${version}`);
202
+ console.log(` ${colorize('Name:', 'dim')} ${agent.name}`);
203
+ console.log(` ${colorize('Command:', 'dim')} ${agent.command}`);
204
+ if (options.verbose) {
205
+ console.log(` ${colorize('Args:', 'dim')} ${agent.args?.join(' ') || 'none'}`);
206
+ console.log(` ${colorize('Use PTY:', 'dim')} ${agent.usePty}`);
207
+ console.log(` ${colorize('Installed At:', 'dim')} ${agent.installedAt}`);
208
+ }
209
+ console.log();
210
+ }
211
+ console.log(colorize(`总计: ${agents.length} 个 agents`, 'cyan'));
212
+ console.log();
213
+ }
214
+ /**
215
+ * 获取验证状态的显示信息
216
+ */
217
+ function getStatusDisplay(status) {
218
+ switch (status) {
219
+ case 'verified':
220
+ return { icon: '✓', color: 'green', text: '验证成功' };
221
+ case 'verified_with_warnings':
222
+ return { icon: '⚠', color: 'yellow', text: '验证成功 (有警告)' };
223
+ case 'failed':
224
+ return { icon: '✗', color: 'red', text: '验证失败' };
225
+ }
226
+ }
227
+ /**
228
+ * Verify 命令处理器 - 验证 agent 可用性
229
+ */
230
+ export async function handleVerify(agentName, options = {}, registryPath) {
231
+ const registry = new AgentRegistry(registryPath);
232
+ if (!agentName || options.all) {
233
+ // 验证所有 agents
234
+ console.log(colorize('\n=== 验证所有 Agents ===\n', 'bright'));
235
+ const agents = await registry.listAgents();
236
+ if (agents.length === 0) {
237
+ console.log(colorize('暂无已注册的 agents', 'yellow'));
238
+ return;
239
+ }
240
+ for (const agent of agents) {
241
+ console.log(`${colorize('●', 'cyan')} ${agent.displayName}`);
242
+ console.log(colorize(' 正在验证...', 'dim'));
243
+ const result = await registry.verifyAgent(agent.name);
244
+ const statusInfo = getStatusDisplay(result.status);
245
+ console.log(colorize(` ${statusInfo.icon} ${statusInfo.text}`, statusInfo.color));
246
+ if (result.status === 'failed' && result.error) {
247
+ console.log(colorize(` Error: ${result.error}`, 'red'));
248
+ }
249
+ if (result.checks) {
250
+ result.checks.forEach(check => printCheckResult(check, 4));
251
+ }
252
+ console.log();
253
+ }
254
+ return;
255
+ }
256
+ // 验证单个 agent
257
+ console.log(colorize(`\n=== 验证 Agent: ${agentName} ===\n`, 'bright'));
258
+ const result = await registry.verifyAgent(agentName);
259
+ const statusInfo = getStatusDisplay(result.status);
260
+ console.log(colorize(`${statusInfo.icon} ${statusInfo.text}\n`, statusInfo.color));
261
+ if (result.status === 'failed' && result.error) {
262
+ console.log(colorize(`Error: ${result.error}\n`, 'red'));
263
+ }
264
+ if (result.checks) {
265
+ result.checks.forEach(check => printCheckResult(check, 0));
266
+ console.log();
267
+ }
268
+ }
269
+ /**
270
+ * Info 命令处理器 - 显示 agent 详细信息
271
+ */
272
+ export async function handleInfo(agentName, registryPath) {
273
+ const registry = new AgentRegistry(registryPath);
274
+ console.log(colorize(`\n=== Agent 详细信息: ${agentName} ===\n`, 'bright'));
275
+ const agent = await registry.getAgent(agentName);
276
+ if (!agent) {
277
+ console.log(colorize(`✗ Agent 不存在: ${agentName}`, 'red'));
278
+ console.log(colorize('\n使用 ', 'dim') + colorize('agents list', 'cyan') + colorize(' 查看所有已注册的 agents\n', 'dim'));
279
+ return;
280
+ }
281
+ console.log(`${colorize('Name:', 'cyan')} ${agent.name}`);
282
+ console.log(`${colorize('Display Name:', 'cyan')} ${agent.displayName}`);
283
+ console.log(`${colorize('Command:', 'cyan')} ${agent.command}`);
284
+ console.log(`${colorize('Arguments:', 'cyan')} ${agent.args?.join(' ') || 'none'}`);
285
+ console.log(`${colorize('Use PTY:', 'cyan')} ${agent.usePty}`);
286
+ if (agent.version) {
287
+ console.log(`${colorize('Version:', 'cyan')} ${agent.version}`);
288
+ }
289
+ console.log(`${colorize('Installed At:', 'cyan')} ${agent.installedAt}`);
290
+ console.log();
291
+ // 验证 agent
292
+ console.log(colorize('正在验证 agent 可用性...', 'dim'));
293
+ const result = await registry.verifyAgent(agentName);
294
+ if (result.status === 'verified') {
295
+ console.log(colorize('✓ Agent 可用\n', 'green'));
296
+ }
297
+ else if (result.status === 'verified_with_warnings') {
298
+ console.log(colorize('⚠ Agent 可用(有警告)\n', 'yellow'));
299
+ }
300
+ else {
301
+ console.log(colorize(`✗ Agent 不可用: ${result.error}\n`, 'red'));
302
+ }
303
+ if (result.checks) {
304
+ result.checks.forEach(check => printCheckResult(check, 0));
305
+ console.log();
306
+ }
307
+ }
308
+ /**
309
+ * Delete 命令处理器 - 删除 agent
310
+ */
311
+ export async function handleDelete(agentName, options, registryPath) {
312
+ const registry = new AgentRegistry(registryPath);
313
+ console.log(colorize(`\n=== 删除 Agent: ${agentName} ===\n`, 'bright'));
314
+ const agent = await registry.getAgent(agentName);
315
+ if (!agent) {
316
+ console.log(colorize(`✗ Agent 不存在: ${agentName}`, 'red'));
317
+ console.log(colorize('\n使用 ', 'dim') + colorize('agents list', 'cyan') + colorize(' 查看所有已注册的 agents\n', 'dim'));
318
+ return;
319
+ }
320
+ // 如果没有 --force 标志,询问确认
321
+ if (!options.force) {
322
+ const rl = createReadline();
323
+ try {
324
+ console.log(`将要删除: ${colorize(agent.displayName, 'bright')} (${agent.name})`);
325
+ console.log(colorize(`Command: ${agent.command}`, 'dim'));
326
+ console.log();
327
+ const answer = await question(rl, '确认删除? (y/N): ');
328
+ if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
329
+ console.log(colorize('\n✗ 已取消\n', 'yellow'));
330
+ return;
331
+ }
332
+ }
333
+ finally {
334
+ rl.close();
335
+ }
336
+ }
337
+ const result = await registry.deleteAgent(agentName);
338
+ if (result.success) {
339
+ console.log(colorize('\n✓ 删除成功\n', 'green'));
340
+ }
341
+ else {
342
+ console.log(colorize(`\n✗ 删除失败: ${result.error}\n`, 'red'));
343
+ }
344
+ }
345
+ /**
346
+ * Edit 命令处理器 - 编辑 agent 配置
347
+ */
348
+ export async function handleEdit(agentName, registryPath) {
349
+ const registry = new AgentRegistry(registryPath);
350
+ console.log(colorize(`\n=== 编辑 Agent: ${agentName} ===\n`, 'bright'));
351
+ const agent = await registry.getAgent(agentName);
352
+ if (!agent) {
353
+ console.log(colorize(`✗ Agent 不存在: ${agentName}`, 'red'));
354
+ console.log(colorize('\n使用 ', 'dim') + colorize('agents list', 'cyan') + colorize(' 查看所有已注册的 agents\n', 'dim'));
355
+ return;
356
+ }
357
+ console.log('当前配置:');
358
+ console.log(` Command: ${colorize(agent.command, 'cyan')}`);
359
+ console.log(` Args: ${colorize(agent.args?.join(' ') || 'none', 'cyan')}`);
360
+ console.log(` Use PTY: ${colorize(String(agent.usePty), 'cyan')}`);
361
+ console.log();
362
+ const rl = createReadline();
363
+ try {
364
+ console.log(colorize('请输入新的配置 (直接回车保持不变):\n', 'dim'));
365
+ // 编辑 command
366
+ const newCommand = await question(rl, `Command (当前: ${agent.command}): `);
367
+ if (newCommand) {
368
+ agent.command = newCommand;
369
+ }
370
+ // 编辑 args
371
+ const newArgs = await question(rl, `Args (当前: ${agent.args?.join(' ') || 'none'}): `);
372
+ if (newArgs) {
373
+ agent.args = newArgs.split(' ').filter(s => s.trim());
374
+ }
375
+ // 编辑 usePty
376
+ const newUsePty = await question(rl, `Use PTY (当前: ${agent.usePty}, 输入 true/false): `);
377
+ if (newUsePty) {
378
+ agent.usePty = newUsePty.toLowerCase() === 'true';
379
+ }
380
+ console.log();
381
+ // 确认保存
382
+ const confirm = await question(rl, '保存更改? (y/N): ');
383
+ if (confirm.toLowerCase() !== 'y' && confirm.toLowerCase() !== 'yes') {
384
+ console.log(colorize('\n✗ 已取消\n', 'yellow'));
385
+ return;
386
+ }
387
+ const result = await registry.updateAgent(agentName, agent);
388
+ if (result.success) {
389
+ console.log(colorize('\n✓ 更新成功\n', 'green'));
390
+ // 验证更新后的 agent
391
+ console.log(colorize('正在验证更新后的配置...', 'dim'));
392
+ const verification = await registry.verifyAgent(agentName);
393
+ if (verification.status === 'verified') {
394
+ console.log(colorize('✓ 验证成功\n', 'green'));
395
+ }
396
+ else {
397
+ console.log(colorize(`✗ 验证失败: ${verification.error}`, 'yellow'));
398
+ console.log(colorize('请检查配置是否正确\n', 'yellow'));
399
+ }
400
+ }
401
+ else {
402
+ console.log(colorize(`\n✗ 更新失败: ${result.error}\n`, 'red'));
403
+ }
404
+ }
405
+ finally {
406
+ rl.close();
407
+ }
408
+ }
409
+ /**
410
+ * 创建 agents 命令
411
+ */
412
+ export function createAgentsCommand() {
413
+ const agents = new Command('agents');
414
+ agents
415
+ .description('管理已注册的 AI agents')
416
+ .action(() => {
417
+ // 默认显示帮助
418
+ agents.help();
419
+ });
420
+ // scan 子命令
421
+ agents
422
+ .command('scan')
423
+ .description('扫描系统中已安装的 AI CLI 工具(不注册)')
424
+ .action(function () {
425
+ const registryPath = this.parent?.parent?.opts().registry;
426
+ return handleScan(registryPath);
427
+ });
428
+ // register 子命令
429
+ agents
430
+ .command('register')
431
+ .description('扫描并注册 AI CLI 工具')
432
+ .option('-a, --auto', '自动注册所有检测到的工具')
433
+ .action(function (options) {
434
+ // Access parent command's registry option
435
+ const registryPath = this.parent?.parent?.opts().registry;
436
+ return handleRegister(options, registryPath);
437
+ });
438
+ // list 子命令
439
+ agents
440
+ .command('list')
441
+ .description('列出所有已注册的 agents')
442
+ .option('-v, --verbose', '显示详细信息')
443
+ .action(function (options) {
444
+ const registryPath = this.parent?.parent?.opts().registry;
445
+ return handleList(options, registryPath);
446
+ });
447
+ // verify 子命令
448
+ agents
449
+ .command('verify')
450
+ .description('验证 agent 可用性')
451
+ .argument('[name]', 'Agent 名称')
452
+ .option('-a, --all', '验证所有已注册的 agents')
453
+ .action(function (name, options) {
454
+ const registryPath = this.parent?.parent?.opts().registry;
455
+ return handleVerify(name, options, registryPath);
456
+ });
457
+ // info 子命令
458
+ agents
459
+ .command('info')
460
+ .description('显示 agent 详细信息')
461
+ .argument('<name>', 'Agent 名称')
462
+ .action(function (name) {
463
+ const registryPath = this.parent?.parent?.opts().registry;
464
+ return handleInfo(name, registryPath);
465
+ });
466
+ // delete 子命令
467
+ agents
468
+ .command('delete')
469
+ .description('删除已注册的 agent')
470
+ .argument('<name>', 'Agent 名称')
471
+ .option('-f, --force', '强制删除,不询问确认')
472
+ .action(function (name, options) {
473
+ const registryPath = this.parent?.parent?.opts().registry;
474
+ return handleDelete(name, options, registryPath);
475
+ });
476
+ // edit 子命令
477
+ agents
478
+ .command('edit')
479
+ .description('编辑 agent 配置')
480
+ .argument('<name>', 'Agent 名称')
481
+ .action(function (name) {
482
+ const registryPath = this.parent?.parent?.opts().registry;
483
+ return handleEdit(name, registryPath);
484
+ });
485
+ return agents;
486
+ }
487
+ //# sourceMappingURL=AgentsCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentsCommand.js","sourceRoot":"","sources":["../../src/commands/AgentsCommand.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * ConfigAdapter - 配置适配器
3
+ *
4
+ * @file src/cli/config/ConfigAdapter.ts
5
+ * @layer CLI
6
+ *
7
+ * @remarks
8
+ * 将旧版 CLIConfig 拆分为 CoreTeamConfig + UIPreferences。
9
+ * 保持向后兼容性,用户配置文件格式无需更改。
10
+ */
11
+ import type { CLIConfig } from '@testany/agent-chatter-core';
12
+ import type { CoreTeamConfig } from '@testany/agent-chatter-core';
13
+ import { type UIPreferences } from './UIPreferences.js';
14
+ /**
15
+ * 配置适配器
16
+ *
17
+ * 将旧版 CLIConfig 拆分为 CoreTeamConfig + UIPreferences
18
+ */
19
+ export declare class ConfigAdapter {
20
+ /**
21
+ * 拆分配置
22
+ *
23
+ * @param config - 旧版完整配置
24
+ * @returns 拆分后的 Core 配置和 UI 偏好
25
+ */
26
+ static split(config: CLIConfig): {
27
+ coreConfig: CoreTeamConfig;
28
+ uiPrefs: UIPreferences;
29
+ };
30
+ /**
31
+ * 提取 Core 对话配置
32
+ */
33
+ private static extractCoreConversation;
34
+ /**
35
+ * 提取 UI 偏好
36
+ */
37
+ private static extractUIPreferences;
38
+ /**
39
+ * 合并配置(用于保存)
40
+ *
41
+ * @param coreConfig - Core 配置
42
+ * @param uiPrefs - UI 偏好
43
+ * @returns 合并后的旧版配置(用于保存到文件)
44
+ */
45
+ static merge(coreConfig: CoreTeamConfig, uiPrefs: UIPreferences): CLIConfig;
46
+ }
47
+ /**
48
+ * 便捷函数:拆分配置
49
+ */
50
+ export declare function splitConfig(config: CLIConfig): {
51
+ coreConfig: CoreTeamConfig;
52
+ uiPrefs: UIPreferences;
53
+ };
54
+ /**
55
+ * 便捷函数:合并配置
56
+ */
57
+ export declare function mergeConfig(coreConfig: CoreTeamConfig, uiPrefs: UIPreferences): CLIConfig;
58
+ //# sourceMappingURL=ConfigAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigAdapter.d.ts","sourceRoot":"","sources":["../../src/config/ConfigAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,oBAAoB,CAAC;AAEhF;;;;GAIG;AACH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG;QAC/B,UAAU,EAAE,cAAc,CAAC;QAC3B,OAAO,EAAE,aAAa,CAAC;KACxB;IAkBD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAkBtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAOnC;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS;CAa5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS;gBA5E7B,cAAc;aACjB,aAAa;EA6EzB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,aAE7E"}