@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.
- package/LICENSE +8 -0
- package/README.md +79 -0
- package/out/LocalExecutionEnvironment.d.ts +23 -0
- package/out/LocalExecutionEnvironment.d.ts.map +1 -0
- package/out/LocalExecutionEnvironment.js +124 -0
- package/out/LocalExecutionEnvironment.js.map +1 -0
- package/out/adapters/AdapterFactory.d.ts +55 -0
- package/out/adapters/AdapterFactory.d.ts.map +1 -0
- package/out/adapters/AdapterFactory.js +117 -0
- package/out/adapters/AdapterFactory.js.map +1 -0
- package/out/adapters/ClaudeCodeAdapter.d.ts +28 -0
- package/out/adapters/ClaudeCodeAdapter.d.ts.map +1 -0
- package/out/adapters/ClaudeCodeAdapter.js +95 -0
- package/out/adapters/ClaudeCodeAdapter.js.map +1 -0
- package/out/adapters/GenericShellAdapter.d.ts +51 -0
- package/out/adapters/GenericShellAdapter.d.ts.map +1 -0
- package/out/adapters/GenericShellAdapter.js +162 -0
- package/out/adapters/GenericShellAdapter.js.map +1 -0
- package/out/adapters/OpenAICodexAdapter.d.ts +36 -0
- package/out/adapters/OpenAICodexAdapter.d.ts.map +1 -0
- package/out/adapters/OpenAICodexAdapter.js +155 -0
- package/out/adapters/OpenAICodexAdapter.js.map +1 -0
- package/out/adapters/index.d.ts +12 -0
- package/out/adapters/index.d.ts.map +1 -0
- package/out/adapters/index.js +12 -0
- package/out/adapters/index.js.map +1 -0
- package/out/cli-layer-index.d.ts +14 -0
- package/out/cli-layer-index.d.ts.map +1 -0
- package/out/cli-layer-index.js +15 -0
- package/out/cli-layer-index.js.map +1 -0
- package/out/cli.d.ts +8 -0
- package/out/cli.d.ts.map +1 -0
- package/out/cli.js +297 -0
- package/out/cli.js.map +1 -0
- package/out/commands/AgentsCommand.d.ts +47 -0
- package/out/commands/AgentsCommand.d.ts.map +1 -0
- package/out/commands/AgentsCommand.js +487 -0
- package/out/commands/AgentsCommand.js.map +1 -0
- package/out/config/ConfigAdapter.d.ts +58 -0
- package/out/config/ConfigAdapter.d.ts.map +1 -0
- package/out/config/ConfigAdapter.js +95 -0
- package/out/config/ConfigAdapter.js.map +1 -0
- package/out/config/UIPreferences.d.ts +24 -0
- package/out/config/UIPreferences.d.ts.map +1 -0
- package/out/config/UIPreferences.js +18 -0
- package/out/config/UIPreferences.js.map +1 -0
- package/out/config/index.d.ts +9 -0
- package/out/config/index.d.ts.map +1 -0
- package/out/config/index.js +9 -0
- package/out/config/index.js.map +1 -0
- package/out/outputs/ConsoleLogger.d.ts +30 -0
- package/out/outputs/ConsoleLogger.d.ts.map +1 -0
- package/out/outputs/ConsoleLogger.js +54 -0
- package/out/outputs/ConsoleLogger.js.map +1 -0
- package/out/outputs/ConsoleOutput.d.ts +30 -0
- package/out/outputs/ConsoleOutput.d.ts.map +1 -0
- package/out/outputs/ConsoleOutput.js +49 -0
- package/out/outputs/ConsoleOutput.js.map +1 -0
- package/out/outputs/IOutput.d.ts +38 -0
- package/out/outputs/IOutput.d.ts.map +1 -0
- package/out/outputs/IOutput.js +13 -0
- package/out/outputs/IOutput.js.map +1 -0
- package/out/outputs/InkOutput.d.ts +24 -0
- package/out/outputs/InkOutput.d.ts.map +1 -0
- package/out/outputs/InkOutput.js +38 -0
- package/out/outputs/InkOutput.js.map +1 -0
- package/out/repl/ReplModeInk.d.ts +8 -0
- package/out/repl/ReplModeInk.d.ts.map +1 -0
- package/out/repl/ReplModeInk.js +1486 -0
- package/out/repl/ReplModeInk.js.map +1 -0
- package/out/repl/components/AgentsMenu.d.ts +7 -0
- package/out/repl/components/AgentsMenu.d.ts.map +1 -0
- package/out/repl/components/AgentsMenu.js +565 -0
- package/out/repl/components/AgentsMenu.js.map +1 -0
- package/out/repl/components/LoadingIndicator.d.ts +5 -0
- package/out/repl/components/LoadingIndicator.d.ts.map +1 -0
- package/out/repl/components/LoadingIndicator.js +14 -0
- package/out/repl/components/LoadingIndicator.js.map +1 -0
- package/out/repl/components/QueueDisplay.d.ts +18 -0
- package/out/repl/components/QueueDisplay.d.ts.map +1 -0
- package/out/repl/components/QueueDisplay.js +16 -0
- package/out/repl/components/QueueDisplay.js.map +1 -0
- package/out/repl/components/RestorePrompt.d.ts +25 -0
- package/out/repl/components/RestorePrompt.d.ts.map +1 -0
- package/out/repl/components/RestorePrompt.js +32 -0
- package/out/repl/components/RestorePrompt.js.map +1 -0
- package/out/repl/components/StreamingDisplay.d.ts +5 -0
- package/out/repl/components/StreamingDisplay.d.ts.map +1 -0
- package/out/repl/components/StreamingDisplay.js +27 -0
- package/out/repl/components/StreamingDisplay.js.map +1 -0
- package/out/repl/components/ThinkingIndicator.d.ts +19 -0
- package/out/repl/components/ThinkingIndicator.d.ts.map +1 -0
- package/out/repl/components/ThinkingIndicator.js +35 -0
- package/out/repl/components/ThinkingIndicator.js.map +1 -0
- package/out/repl/wizard/wizardStep1Reducer.d.ts +30 -0
- package/out/repl/wizard/wizardStep1Reducer.d.ts.map +1 -0
- package/out/repl/wizard/wizardStep1Reducer.js +189 -0
- package/out/repl/wizard/wizardStep1Reducer.js.map +1 -0
- package/package.json +62 -0
package/out/cli.js
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Agent Chatter - CLI 应用入口
|
|
4
|
+
*
|
|
5
|
+
* 让多个 CLI AI agents 自动对话的命令行工具
|
|
6
|
+
*/
|
|
7
|
+
import { Command, CommanderError } from 'commander';
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
import { detectAllTools } from '@testany/agent-chatter-core';
|
|
12
|
+
import { startReplInk } from './repl/ReplModeInk.js';
|
|
13
|
+
import { createAgentsCommand } from './commands/AgentsCommand.js';
|
|
14
|
+
import { ConsoleOutput } from './outputs/ConsoleOutput.js';
|
|
15
|
+
import { ConsoleLogger } from './outputs/ConsoleLogger.js';
|
|
16
|
+
import { getTeamConfigDir, ensureTeamConfigDir, resolveTeamConfigPath, formatMissingConfigError, discoverTeamConfigs } from '@testany/agent-chatter-core';
|
|
17
|
+
import { colorize } from '@testany/agent-chatter-core';
|
|
18
|
+
/**
|
|
19
|
+
* Determine if debug mode is enabled
|
|
20
|
+
* Priority: CLI flag > environment variable > default (false)
|
|
21
|
+
*/
|
|
22
|
+
function isDebugEnabled(cliFlag) {
|
|
23
|
+
if (cliFlag !== undefined) {
|
|
24
|
+
return cliFlag;
|
|
25
|
+
}
|
|
26
|
+
const envVar = process.env.AGENT_CHATTER_DEBUG;
|
|
27
|
+
return envVar === '1' || envVar === 'true';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create a logger instance based on debug setting
|
|
31
|
+
*/
|
|
32
|
+
function createLogger(debug) {
|
|
33
|
+
return new ConsoleLogger({
|
|
34
|
+
debug,
|
|
35
|
+
colors: true,
|
|
36
|
+
prefix: '[Core]'
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
// Read version from package.json
|
|
40
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
41
|
+
const __dirname = path.dirname(__filename);
|
|
42
|
+
const packageJsonPath = path.join(__dirname, '..', 'package.json');
|
|
43
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
44
|
+
const VERSION = packageJson.version;
|
|
45
|
+
const program = new Command();
|
|
46
|
+
/**
|
|
47
|
+
* 显示工具状态
|
|
48
|
+
*/
|
|
49
|
+
function displayToolStatus(tools, output, showHeader = true) {
|
|
50
|
+
if (showHeader) {
|
|
51
|
+
output.separator();
|
|
52
|
+
output.info('=== AI CLI 工具检测 ===');
|
|
53
|
+
}
|
|
54
|
+
const installed = [];
|
|
55
|
+
const notInstalled = [];
|
|
56
|
+
tools.forEach(tool => {
|
|
57
|
+
if (tool.installed) {
|
|
58
|
+
installed.push(tool);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
notInstalled.push(tool);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
if (installed.length > 0) {
|
|
65
|
+
output.success('✓ 已安装的工具:');
|
|
66
|
+
installed.forEach(tool => {
|
|
67
|
+
const version = tool.version ? ` (v${tool.version})` : '';
|
|
68
|
+
output.info(` ● ${tool.displayName}${version}`);
|
|
69
|
+
});
|
|
70
|
+
output.separator();
|
|
71
|
+
}
|
|
72
|
+
if (notInstalled.length > 0) {
|
|
73
|
+
output.warn('✗ 未安装的工具:');
|
|
74
|
+
notInstalled.forEach(tool => {
|
|
75
|
+
output.info(` ○ ${tool.displayName}`);
|
|
76
|
+
if (tool.installHint) {
|
|
77
|
+
output.info(` 安装方式: ${tool.installHint}`);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
output.separator();
|
|
81
|
+
}
|
|
82
|
+
if (installed.length === 0) {
|
|
83
|
+
output.warn('⚠ 警告: 没有检测到任何 AI CLI 工具');
|
|
84
|
+
output.warn(' 请先安装至少一个 AI CLI 工具才能使用 Agent Chatter');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* 加载配置文件
|
|
89
|
+
*/
|
|
90
|
+
function loadConfig(configPath) {
|
|
91
|
+
const readConfig = (file) => {
|
|
92
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
93
|
+
const config = JSON.parse(content);
|
|
94
|
+
// Apply conversation config defaults
|
|
95
|
+
if (!config.conversation) {
|
|
96
|
+
config.conversation = {};
|
|
97
|
+
}
|
|
98
|
+
if (config.conversation.maxAgentResponseTime === undefined) {
|
|
99
|
+
config.conversation.maxAgentResponseTime = 1800000; // 30 minutes
|
|
100
|
+
}
|
|
101
|
+
if (config.conversation.showThinkingTimer === undefined) {
|
|
102
|
+
config.conversation.showThinkingTimer = true;
|
|
103
|
+
}
|
|
104
|
+
if (config.conversation.allowEscCancel === undefined) {
|
|
105
|
+
config.conversation.allowEscCancel = true;
|
|
106
|
+
}
|
|
107
|
+
return config;
|
|
108
|
+
};
|
|
109
|
+
const resolution = resolveTeamConfigPath(configPath);
|
|
110
|
+
if (!resolution.exists) {
|
|
111
|
+
throw new Error(formatMissingConfigError(configPath, resolution));
|
|
112
|
+
}
|
|
113
|
+
if (resolution.warning) {
|
|
114
|
+
console.warn(colorize(`Warning: ${resolution.warning}`, 'yellow'));
|
|
115
|
+
}
|
|
116
|
+
return readConfig(resolution.path);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* 主程序
|
|
120
|
+
*/
|
|
121
|
+
program
|
|
122
|
+
.name('agent-chatter')
|
|
123
|
+
.description('让多个 CLI AI agents 自动对话的命令行工具')
|
|
124
|
+
.version(VERSION)
|
|
125
|
+
.option('--registry <path>', 'Custom agent registry path (default: ~/.agent-chatter/agents/config.json)')
|
|
126
|
+
.option('--debug', 'Enable debug logging (also: AGENT_CHATTER_DEBUG=1)')
|
|
127
|
+
.action(async () => {
|
|
128
|
+
// 当没有子命令时,启动REPL模式
|
|
129
|
+
const cliOptions = program.opts();
|
|
130
|
+
const debug = isDebugEnabled(cliOptions.debug);
|
|
131
|
+
startReplInk(cliOptions.registry, { debug });
|
|
132
|
+
});
|
|
133
|
+
// Note: 'start' subcommand removed per design decision.
|
|
134
|
+
// Use REPL mode with /team deploy to start conversations.
|
|
135
|
+
program
|
|
136
|
+
.command('config-example')
|
|
137
|
+
.description('生成示例配置文件')
|
|
138
|
+
.option('-o, --output <path>', '输出文件路径', 'agent-chatter-config.json')
|
|
139
|
+
.action((options) => {
|
|
140
|
+
const exampleConfig = {
|
|
141
|
+
schemaVersion: '1.1',
|
|
142
|
+
agents: [
|
|
143
|
+
{
|
|
144
|
+
name: 'claude',
|
|
145
|
+
// Schema 1.1: No 'command' field - agent must be registered in global registry
|
|
146
|
+
// Run: agent-chatter agents register claude
|
|
147
|
+
args: ['--output-format=stream-json', '--verbose'],
|
|
148
|
+
usePty: false
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
team: {
|
|
152
|
+
name: 'claude-code-test-team',
|
|
153
|
+
displayName: 'Claude Code Test Team',
|
|
154
|
+
description: 'A team with Claude Code CLI agent and human observer',
|
|
155
|
+
instructionFile: './teams/claude-code-test/team_instruction.md',
|
|
156
|
+
roleDefinitions: [
|
|
157
|
+
{
|
|
158
|
+
name: 'reviewer',
|
|
159
|
+
displayName: 'Reviewer',
|
|
160
|
+
description: 'AI reviewer that inspects the code'
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: 'observer',
|
|
164
|
+
displayName: 'Observer',
|
|
165
|
+
description: 'Human observer who can join the conversation when needed'
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
members: [
|
|
169
|
+
{
|
|
170
|
+
displayName: 'Claude Reviewer',
|
|
171
|
+
displayRole: 'AI Reviewer',
|
|
172
|
+
name: 'claude-reviewer',
|
|
173
|
+
type: 'ai',
|
|
174
|
+
role: 'reviewer',
|
|
175
|
+
agentType: 'claude',
|
|
176
|
+
themeColor: 'cyan',
|
|
177
|
+
baseDir: './teams/claude-code-test/reviewer/claude-reviewer',
|
|
178
|
+
instructionFile: './teams/claude-code-test/reviewer/claude-reviewer/AGENTS.md'
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
displayName: 'Human Observer',
|
|
182
|
+
displayRole: 'Observer',
|
|
183
|
+
name: 'observer-1',
|
|
184
|
+
type: 'human',
|
|
185
|
+
role: 'observer',
|
|
186
|
+
themeColor: 'green',
|
|
187
|
+
baseDir: './teams/claude-code-test/observer/human-observer',
|
|
188
|
+
instructionFile: './teams/claude-code-test/observer/human-observer/README.md'
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
},
|
|
192
|
+
maxRounds: 10
|
|
193
|
+
};
|
|
194
|
+
// Ensure team config directory exists
|
|
195
|
+
ensureTeamConfigDir();
|
|
196
|
+
// Resolve output path relative to team config directory
|
|
197
|
+
const outputPath = path.isAbsolute(options.output)
|
|
198
|
+
? options.output
|
|
199
|
+
: path.join(getTeamConfigDir(), options.output);
|
|
200
|
+
fs.writeFileSync(outputPath, JSON.stringify(exampleConfig, null, 2));
|
|
201
|
+
console.log(colorize(`示例配置文件已生成: ${outputPath}`, 'green'));
|
|
202
|
+
});
|
|
203
|
+
program
|
|
204
|
+
.command('status')
|
|
205
|
+
.description('检测系统中已安装的 AI CLI 工具')
|
|
206
|
+
.action(async () => {
|
|
207
|
+
const output = new ConsoleOutput({ colors: true, verbose: true });
|
|
208
|
+
output.progress('正在检测系统中的 AI CLI 工具...');
|
|
209
|
+
const tools = await detectAllTools();
|
|
210
|
+
displayToolStatus(tools, output, true);
|
|
211
|
+
output.info('提示:');
|
|
212
|
+
output.info(' - 直接运行 agent-chatter 启动 REPL 模式');
|
|
213
|
+
output.info(' - 在 REPL 中使用 /team deploy <name> 部署团队后直接输入消息');
|
|
214
|
+
output.info(' - 使用 agent-chatter config-example 生成示例配置文件');
|
|
215
|
+
});
|
|
216
|
+
// 添加 agents 命令
|
|
217
|
+
program.addCommand(createAgentsCommand());
|
|
218
|
+
// 添加 team 命令
|
|
219
|
+
const teamCommand = new Command('team')
|
|
220
|
+
.description('Team management commands');
|
|
221
|
+
teamCommand
|
|
222
|
+
.command('list')
|
|
223
|
+
.description('List all team configurations')
|
|
224
|
+
.action(() => {
|
|
225
|
+
console.log(colorize('\n=== Team Configurations ===\n', 'bright'));
|
|
226
|
+
const configs = discoverTeamConfigs();
|
|
227
|
+
if (configs.length === 0) {
|
|
228
|
+
console.log(colorize('No team configurations found.', 'yellow'));
|
|
229
|
+
console.log(colorize(`\nCreate config files in: ${getTeamConfigDir()}`, 'dim'));
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
configs.forEach(config => {
|
|
233
|
+
console.log(`${colorize('●', 'cyan')} ${config.displayName}`);
|
|
234
|
+
console.log(colorize(` File: ${config.filename}`, 'dim'));
|
|
235
|
+
if (config.teamName) {
|
|
236
|
+
console.log(colorize(` Team: ${config.teamName}`, 'dim'));
|
|
237
|
+
}
|
|
238
|
+
console.log(colorize(` Members: ${config.memberCount}`, 'dim'));
|
|
239
|
+
console.log();
|
|
240
|
+
});
|
|
241
|
+
console.log(colorize(`Total: ${configs.length} configurations`, 'cyan'));
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
teamCommand
|
|
245
|
+
.command('deploy')
|
|
246
|
+
.argument('<config>', 'Team configuration file name')
|
|
247
|
+
.description('Deploy a team - launches REPL and auto-deploys the team')
|
|
248
|
+
.action((config) => {
|
|
249
|
+
console.log(colorize('\n=== Team Deploy ===\n', 'bright'));
|
|
250
|
+
console.log(`To deploy team "${config}", please:`);
|
|
251
|
+
console.log(colorize('\n 1. Run: agent-chatter', 'cyan'));
|
|
252
|
+
console.log(colorize(` 2. In REPL, type: /team deploy ${config}`, 'cyan'));
|
|
253
|
+
console.log(colorize('\nNote: Team deployment requires interactive REPL mode.', 'dim'));
|
|
254
|
+
console.log();
|
|
255
|
+
});
|
|
256
|
+
program.addCommand(teamCommand);
|
|
257
|
+
program.exitOverride();
|
|
258
|
+
export async function run(argv) {
|
|
259
|
+
const fallbackOutput = new ConsoleOutput({ colors: true, verbose: true });
|
|
260
|
+
try {
|
|
261
|
+
await program.parseAsync(argv);
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
if (err instanceof CommanderError) {
|
|
265
|
+
if (err.code === 'commander.helpDisplayed') {
|
|
266
|
+
process.exitCode = 0;
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
if (err.code === 'commander.version') {
|
|
270
|
+
process.exitCode = 0;
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
process.exitCode = err.exitCode ?? 1;
|
|
274
|
+
fallbackOutput.error(err.message);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
fallbackOutput.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
|
|
278
|
+
process.exitCode = 1;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
const invokedAsEntry = (() => {
|
|
282
|
+
const argvPath = process.argv[1];
|
|
283
|
+
if (!argvPath)
|
|
284
|
+
return false;
|
|
285
|
+
try {
|
|
286
|
+
const resolvedArgv = fs.realpathSync(path.resolve(argvPath));
|
|
287
|
+
const resolvedFile = fs.realpathSync(__filename);
|
|
288
|
+
return resolvedArgv === resolvedFile;
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
})();
|
|
294
|
+
if (invokedAsEntry) {
|
|
295
|
+
void run(process.argv);
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=cli.js.map
|
package/out/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentsCommand - CLI 命令处理器
|
|
3
|
+
*
|
|
4
|
+
* 提供 /agents 命令的所有子命令实现
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
/**
|
|
8
|
+
* Register 命令处理器 - 交互式扫描和注册
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleRegister(options: {
|
|
11
|
+
auto?: boolean;
|
|
12
|
+
}, registryPath?: string): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Scan 命令处理器 - 扫描已安装的 agents(不注册)
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleScan(registryPath?: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* List 命令处理器 - 显示所有已注册的 agents
|
|
19
|
+
*/
|
|
20
|
+
export declare function handleList(options: {
|
|
21
|
+
verbose?: boolean;
|
|
22
|
+
}, registryPath?: string): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Verify 命令处理器 - 验证 agent 可用性
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleVerify(agentName: string | undefined, options?: {
|
|
27
|
+
all?: boolean;
|
|
28
|
+
}, registryPath?: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Info 命令处理器 - 显示 agent 详细信息
|
|
31
|
+
*/
|
|
32
|
+
export declare function handleInfo(agentName: string, registryPath?: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Delete 命令处理器 - 删除 agent
|
|
35
|
+
*/
|
|
36
|
+
export declare function handleDelete(agentName: string, options: {
|
|
37
|
+
force?: boolean;
|
|
38
|
+
}, registryPath?: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Edit 命令处理器 - 编辑 agent 配置
|
|
41
|
+
*/
|
|
42
|
+
export declare function handleEdit(agentName: string, registryPath?: string): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* 创建 agents 命令
|
|
45
|
+
*/
|
|
46
|
+
export declare function createAgentsCommand(): Command;
|
|
47
|
+
//# sourceMappingURL=AgentsCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentsCommand.d.ts","sourceRoot":"","sources":["../../src/commands/AgentsCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoDpC;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqHtG;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCrE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrG;AAgBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDvI;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2CxF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCxH;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyExF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAmF7C"}
|