@a5c-ai/agent-mux-cli 0.2.0 → 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/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +35 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/mcp.d.ts +4 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +89 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/plugin.d.ts +4 -0
- package/dist/commands/plugin.d.ts.map +1 -0
- package/dist/commands/plugin.js +77 -0
- package/dist/commands/plugin.js.map +1 -0
- package/dist/commands/skill.d.ts +11 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +217 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/tui.d.ts +4 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +56 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-capabilities.d.ts +7 -0
- package/dist/lib/agent-capabilities.d.ts.map +1 -0
- package/dist/lib/agent-capabilities.js +63 -0
- package/dist/lib/agent-capabilities.js.map +1 -0
- package/dist/lib/agent-skill-paths.d.ts +9 -0
- package/dist/lib/agent-skill-paths.d.ts.map +1 -0
- package/dist/lib/agent-skill-paths.js +54 -0
- package/dist/lib/agent-skill-paths.js.map +1 -0
- package/dist/parse-args.js +4 -4
- package/dist/parse-args.js.map +1 -1
- package/package.json +3 -3
- package/dist/commands/plugins.d.ts +0 -9
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js +0 -180
- package/dist/commands/plugins.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4WH;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAMhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
|
package/dist/commands/help.js
CHANGED
|
@@ -32,6 +32,8 @@ Commands:
|
|
|
32
32
|
profiles Manage named RunOptions presets
|
|
33
33
|
auth Check and setup authentication
|
|
34
34
|
plugins Manage agent plugins
|
|
35
|
+
plugin Manage native agent plugins
|
|
36
|
+
mcp Manage MCP servers
|
|
35
37
|
detect-host Detect which agent harness we are running under
|
|
36
38
|
remote Install / update amux on a remote host
|
|
37
39
|
hooks Manage and dispatch unified agent hooks
|
|
@@ -288,6 +290,39 @@ Flags:
|
|
|
288
290
|
--version <ver> Pin to specific version
|
|
289
291
|
--global Install globally
|
|
290
292
|
--json Output as JSON
|
|
293
|
+
`,
|
|
294
|
+
plugin: `amux plugin - Native agent plugin management
|
|
295
|
+
|
|
296
|
+
Usage:
|
|
297
|
+
amux plugin list <agent>
|
|
298
|
+
amux plugin install <agent> <plugin>
|
|
299
|
+
amux plugin enable <agent> <plugin>
|
|
300
|
+
amux plugin disable <agent> <plugin>
|
|
301
|
+
amux plugin marketplace <agent> [cmd]
|
|
302
|
+
|
|
303
|
+
Flags:
|
|
304
|
+
--help Show help
|
|
305
|
+
|
|
306
|
+
Examples:
|
|
307
|
+
amux plugin list claude
|
|
308
|
+
amux plugin install claude filesystem-watcher
|
|
309
|
+
amux plugin marketplace claude
|
|
310
|
+
|
|
311
|
+
Note: This command delegates to native agent plugin systems.
|
|
312
|
+
For MCP server management, use "amux mcp" instead.
|
|
313
|
+
`,
|
|
314
|
+
mcp: `amux mcp - MCP (Model Context Protocol) server management
|
|
315
|
+
|
|
316
|
+
Usage:
|
|
317
|
+
amux mcp list <agent>
|
|
318
|
+
amux mcp install <agent> <server>
|
|
319
|
+
amux mcp enable <agent> <server>
|
|
320
|
+
amux mcp disable <agent> <server>
|
|
321
|
+
|
|
322
|
+
Examples:
|
|
323
|
+
amux mcp list claude
|
|
324
|
+
amux mcp install claude filesystem
|
|
325
|
+
amux mcp enable claude memory
|
|
291
326
|
`,
|
|
292
327
|
hooks: `amux hooks - Unified hook management and dispatch
|
|
293
328
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAQ,OAAO,CAAC,oBAAoB,CAA0B,CAAC,OAAO,IAAI,OAAO,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAE9B,2BAA2B;AAC3B,MAAM,SAAS,GAAG,kCAAkC,OAAO
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAQ,OAAO,CAAC,oBAAoB,CAA0B,CAAC,OAAO,IAAI,OAAO,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AAE9B,2BAA2B;AAC3B,MAAM,SAAS,GAAG,kCAAkC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C1D,CAAC;AAEF,mCAAmC;AACnC,MAAM,YAAY,GAA2B;IAC3C,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCN;IACC,QAAQ,EAAE;;;;;;;;;;;;;;CAcX;IACC,MAAM,EAAE;;;;;;;;;;;;;CAaT;IACC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;CAkBX;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;CAkBT;IACC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;CAkBX;IACC,IAAI,EAAE;;;;;;;;;;;;;CAaP;IACC,OAAO,EAAE;;;;;;;;;;;;;;;;;;CAkBV;IACC,MAAM,EAAE;;;;;;;;;;;;;;CAcT;IACC,MAAM,EAAE;;;;;;;;;;;;;CAaT;IACC,SAAS,EAAE;;;;CAIZ;IACC,aAAa,EAAE;;;;;;;;CAQhB;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBT;IACC,OAAO,EAAE;;;;;;;;;;;CAWV;IACC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;CAmBT;IACC,GAAG,EAAE;;;;;;;;;;;;CAYN;IACC,KAAK,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBR;IACC,MAAM,EAAE;;;;;;;;;;;;;CAaT;CACA,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,OAAO,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAyFjB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ExitCode } from '../exit-codes.js';
|
|
2
|
+
import { printError } from '../output.js';
|
|
3
|
+
export async function mcpCommand(client, args) {
|
|
4
|
+
if (args.flags.help) {
|
|
5
|
+
process.stdout.write([
|
|
6
|
+
'Usage: amux mcp <subcommand> <agent> [args] [flags]',
|
|
7
|
+
'',
|
|
8
|
+
'Manage Model Context Protocol (MCP) servers per agent',
|
|
9
|
+
'',
|
|
10
|
+
'Subcommands:',
|
|
11
|
+
' list <agent> List installed MCP servers',
|
|
12
|
+
' install <agent> <server> Install MCP server',
|
|
13
|
+
' uninstall <agent> <server> Uninstall MCP server',
|
|
14
|
+
'',
|
|
15
|
+
'Flags:',
|
|
16
|
+
' --project Use project-level configuration',
|
|
17
|
+
' --global Use global configuration (default)',
|
|
18
|
+
'',
|
|
19
|
+
'Examples:',
|
|
20
|
+
' amux mcp list claude',
|
|
21
|
+
' amux mcp install claude filesystem',
|
|
22
|
+
' amux mcp install claude filesystem --project',
|
|
23
|
+
].join('\n') + '\n');
|
|
24
|
+
return ExitCode.SUCCESS;
|
|
25
|
+
}
|
|
26
|
+
const subcommand = args.subcommand;
|
|
27
|
+
const agentName = args.positionals[0];
|
|
28
|
+
if (!subcommand) {
|
|
29
|
+
printError('Missing subcommand. Available: list, install, uninstall');
|
|
30
|
+
return ExitCode.GENERAL_ERROR;
|
|
31
|
+
}
|
|
32
|
+
if (!agentName) {
|
|
33
|
+
printError('Missing required argument: <agent>');
|
|
34
|
+
return ExitCode.GENERAL_ERROR;
|
|
35
|
+
}
|
|
36
|
+
const isGlobal = args.flags.global === true || !args.flags.project;
|
|
37
|
+
try {
|
|
38
|
+
switch (subcommand) {
|
|
39
|
+
case 'list': {
|
|
40
|
+
const servers = client.config.getMcpServers(agentName);
|
|
41
|
+
if (servers.length === 0) {
|
|
42
|
+
process.stdout.write('(no MCP servers installed)\n');
|
|
43
|
+
return ExitCode.SUCCESS;
|
|
44
|
+
}
|
|
45
|
+
for (const server of servers) {
|
|
46
|
+
const status = 'enabled'; // MCP servers are enabled by default
|
|
47
|
+
process.stdout.write(`${server.name}\t${status}\t${server.command}\n`);
|
|
48
|
+
}
|
|
49
|
+
return ExitCode.SUCCESS;
|
|
50
|
+
}
|
|
51
|
+
case 'install': {
|
|
52
|
+
const serverName = args.positionals[1];
|
|
53
|
+
if (!serverName) {
|
|
54
|
+
printError('Missing required argument: <server>');
|
|
55
|
+
return ExitCode.GENERAL_ERROR;
|
|
56
|
+
}
|
|
57
|
+
// Create a basic MCP server config - in a real implementation this would
|
|
58
|
+
// likely look up the server in a registry to get the proper command
|
|
59
|
+
const serverConfig = {
|
|
60
|
+
name: serverName,
|
|
61
|
+
transport: 'stdio',
|
|
62
|
+
command: serverName, // Basic implementation - assumes command matches name
|
|
63
|
+
};
|
|
64
|
+
await client.config.addMcpServer(agentName, serverConfig);
|
|
65
|
+
process.stdout.write(`installed: ${serverName} (${isGlobal ? 'global' : 'project'})\n`);
|
|
66
|
+
return ExitCode.SUCCESS;
|
|
67
|
+
}
|
|
68
|
+
case 'uninstall': {
|
|
69
|
+
const serverToRemove = args.positionals[1];
|
|
70
|
+
if (!serverToRemove) {
|
|
71
|
+
printError('Missing required argument: <server>');
|
|
72
|
+
return ExitCode.GENERAL_ERROR;
|
|
73
|
+
}
|
|
74
|
+
await client.config.removeMcpServer(agentName, serverToRemove);
|
|
75
|
+
process.stdout.write(`uninstalled: ${serverToRemove}\n`);
|
|
76
|
+
return ExitCode.SUCCESS;
|
|
77
|
+
}
|
|
78
|
+
default:
|
|
79
|
+
printError(`Unknown subcommand: ${subcommand}`);
|
|
80
|
+
return ExitCode.GENERAL_ERROR;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
const msg = err.message ?? String(err);
|
|
85
|
+
printError(`mcp ${subcommand} failed: ${msg}`);
|
|
86
|
+
return ExitCode.GENERAL_ERROR;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAwEjB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { ExitCode } from '../exit-codes.js';
|
|
4
|
+
import { printError, printJsonError } from '../output.js';
|
|
5
|
+
import { flagBool } from '../parse-args.js';
|
|
6
|
+
import { detectAgentCapabilities } from '../lib/agent-capabilities.js';
|
|
7
|
+
const execAsync = promisify(exec);
|
|
8
|
+
export async function pluginCommand(client, args) {
|
|
9
|
+
if (args.flags.help) {
|
|
10
|
+
process.stdout.write([
|
|
11
|
+
'Usage: amux plugin <subcommand> <agent> [args] [flags]',
|
|
12
|
+
'',
|
|
13
|
+
'Manage plugins through agent-native plugin systems',
|
|
14
|
+
'',
|
|
15
|
+
'Subcommands:',
|
|
16
|
+
' list <agent> List installed plugins',
|
|
17
|
+
' install <agent> <plugin> Install plugin',
|
|
18
|
+
' enable <agent> <plugin> Enable plugin',
|
|
19
|
+
' disable <agent> <plugin> Disable plugin',
|
|
20
|
+
' marketplace <agent> [cmd] Access plugin marketplace',
|
|
21
|
+
'',
|
|
22
|
+
'Examples:',
|
|
23
|
+
' amux plugin list claude',
|
|
24
|
+
' amux plugin install claude filesystem-watcher',
|
|
25
|
+
' amux plugin marketplace claude',
|
|
26
|
+
'',
|
|
27
|
+
'Note: Plugin support varies by agent. Use "amux mcp" for MCP servers.',
|
|
28
|
+
].join('\n') + '\n');
|
|
29
|
+
return ExitCode.SUCCESS;
|
|
30
|
+
}
|
|
31
|
+
const subcommand = args.subcommand;
|
|
32
|
+
const agentName = args.positionals[0];
|
|
33
|
+
if (!subcommand) {
|
|
34
|
+
printError('Missing subcommand. Available: list, install, enable, disable, marketplace');
|
|
35
|
+
return ExitCode.GENERAL_ERROR;
|
|
36
|
+
}
|
|
37
|
+
if (!agentName) {
|
|
38
|
+
printError('Missing required argument: <agent>');
|
|
39
|
+
return ExitCode.GENERAL_ERROR;
|
|
40
|
+
}
|
|
41
|
+
const capabilities = await detectAgentCapabilities(agentName);
|
|
42
|
+
const json = flagBool(args.flags, 'json') === true;
|
|
43
|
+
if (!capabilities.supportsPlugins) {
|
|
44
|
+
const msg = `Plugin management not supported for ${agentName}. Use 'amux mcp' for MCP servers.`;
|
|
45
|
+
if (json)
|
|
46
|
+
printJsonError('CAPABILITY_ERROR', msg);
|
|
47
|
+
else
|
|
48
|
+
printError(msg);
|
|
49
|
+
return ExitCode.GENERAL_ERROR;
|
|
50
|
+
}
|
|
51
|
+
if (!capabilities.pluginCommands.includes(subcommand)) {
|
|
52
|
+
printError(`Subcommand '${subcommand}' not supported for ${agentName}. Available: ${capabilities.pluginCommands.join(', ')}`);
|
|
53
|
+
return ExitCode.GENERAL_ERROR;
|
|
54
|
+
}
|
|
55
|
+
// Build native command
|
|
56
|
+
const nativeArgs = [subcommand, ...args.positionals.slice(1)].join(' ');
|
|
57
|
+
const nativeCommand = `${capabilities.nativePluginCommand} ${nativeArgs}`;
|
|
58
|
+
try {
|
|
59
|
+
const result = await execAsync(nativeCommand, {
|
|
60
|
+
timeout: 30000
|
|
61
|
+
});
|
|
62
|
+
if (result.stdout)
|
|
63
|
+
process.stdout.write(result.stdout);
|
|
64
|
+
if (result.stderr)
|
|
65
|
+
process.stderr.write(result.stderr);
|
|
66
|
+
return ExitCode.SUCCESS;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error.stdout)
|
|
70
|
+
process.stdout.write(error.stdout);
|
|
71
|
+
if (error.stderr)
|
|
72
|
+
process.stderr.write(error.stderr);
|
|
73
|
+
printError(`Plugin command failed: ${error.message}`);
|
|
74
|
+
return error.code || ExitCode.GENERAL_ERROR;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `amux skill <subcommand> <agent> [args] [--global|--project]`
|
|
3
|
+
*
|
|
4
|
+
* Skills are file-convention only — no underlying harness command.
|
|
5
|
+
* We copy/remove skill folders into per-agent locations.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentMuxClient } from '@a5c-ai/agent-mux-core';
|
|
8
|
+
import type { ParsedArgs, FlagDef } from '../parse-args.js';
|
|
9
|
+
export declare const SKILL_FLAGS: Record<string, FlagDef>;
|
|
10
|
+
export declare function skillCommand(_client: AgentMuxClient, args: ParsedArgs): Promise<number>;
|
|
11
|
+
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAM5D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAK/C,CAAC;AA8BF,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAsJjB"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `amux skill <subcommand> <agent> [args] [--global|--project]`
|
|
3
|
+
*
|
|
4
|
+
* Skills are file-convention only — no underlying harness command.
|
|
5
|
+
* We copy/remove skill folders into per-agent locations.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
import { flagBool, flagStr } from '../parse-args.js';
|
|
10
|
+
import { ExitCode } from '../exit-codes.js';
|
|
11
|
+
import { printError, printJsonOk, printJsonError, printTable } from '../output.js';
|
|
12
|
+
import { getSkillPaths, getSkillDir, listSupportedAgents } from '../lib/agent-skill-paths.js';
|
|
13
|
+
export const SKILL_FLAGS = {
|
|
14
|
+
global: { type: 'boolean' },
|
|
15
|
+
project: { type: 'boolean' },
|
|
16
|
+
name: { type: 'string' },
|
|
17
|
+
force: { type: 'boolean' },
|
|
18
|
+
};
|
|
19
|
+
function jsonMode(args) {
|
|
20
|
+
return flagBool(args.flags, 'json') === true;
|
|
21
|
+
}
|
|
22
|
+
function resolveScope(args, fallback = 'project') {
|
|
23
|
+
if (flagBool(args.flags, 'global') === true)
|
|
24
|
+
return 'global';
|
|
25
|
+
if (flagBool(args.flags, 'project') === true)
|
|
26
|
+
return 'project';
|
|
27
|
+
return fallback;
|
|
28
|
+
}
|
|
29
|
+
function copyDirRecursive(src, dst) {
|
|
30
|
+
fs.mkdirSync(dst, { recursive: true });
|
|
31
|
+
for (const name of fs.readdirSync(src)) {
|
|
32
|
+
const s = path.join(src, name);
|
|
33
|
+
const d = path.join(dst, name);
|
|
34
|
+
const stat = fs.statSync(s);
|
|
35
|
+
if (stat.isDirectory()) {
|
|
36
|
+
copyDirRecursive(s, d);
|
|
37
|
+
}
|
|
38
|
+
else if (stat.isFile()) {
|
|
39
|
+
fs.copyFileSync(s, d);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function rmDirRecursive(target) {
|
|
44
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
45
|
+
}
|
|
46
|
+
export async function skillCommand(_client, args) {
|
|
47
|
+
const json = jsonMode(args);
|
|
48
|
+
if (args.flags.help || (!args.subcommand && args.positionals.length === 0)) {
|
|
49
|
+
process.stdout.write([
|
|
50
|
+
'Usage: amux skill <subcommand> <agent> [args] [--global|--project]',
|
|
51
|
+
'',
|
|
52
|
+
'Manage skill folders for an agent (file-convention based, no native command).',
|
|
53
|
+
'',
|
|
54
|
+
'Subcommands:',
|
|
55
|
+
' list <agent> List installed skills',
|
|
56
|
+
' add <agent> <source-folder> Copy a skill folder into the agent skills dir',
|
|
57
|
+
' [--name <name>] [--force]',
|
|
58
|
+
' remove <agent> <name> Remove a skill folder',
|
|
59
|
+
' where <agent> Show skill directory paths for the agent',
|
|
60
|
+
' agents List agents with known skill conventions',
|
|
61
|
+
'',
|
|
62
|
+
'Scope flags (default: --project):',
|
|
63
|
+
' --global Use the user-level skills dir',
|
|
64
|
+
' --project Use the project-level skills dir',
|
|
65
|
+
'',
|
|
66
|
+
'Examples:',
|
|
67
|
+
' amux skill list claude',
|
|
68
|
+
' amux skill add claude ./skills/my-skill --global',
|
|
69
|
+
' amux skill remove claude my-skill --project',
|
|
70
|
+
].join('\n') + '\n');
|
|
71
|
+
return ExitCode.SUCCESS;
|
|
72
|
+
}
|
|
73
|
+
const sub = args.subcommand;
|
|
74
|
+
if (!sub) {
|
|
75
|
+
if (json)
|
|
76
|
+
printJsonError('VALIDATION_ERROR', 'Missing subcommand');
|
|
77
|
+
else
|
|
78
|
+
printError('Missing subcommand. Available: list, add, remove, where, agents');
|
|
79
|
+
return ExitCode.USAGE_ERROR;
|
|
80
|
+
}
|
|
81
|
+
if (sub === 'agents') {
|
|
82
|
+
const agents = listSupportedAgents();
|
|
83
|
+
if (json)
|
|
84
|
+
printJsonOk({ agents });
|
|
85
|
+
else
|
|
86
|
+
process.stdout.write(agents.join('\n') + '\n');
|
|
87
|
+
return ExitCode.SUCCESS;
|
|
88
|
+
}
|
|
89
|
+
const agent = args.positionals[0];
|
|
90
|
+
if (!agent) {
|
|
91
|
+
if (json)
|
|
92
|
+
printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
|
|
93
|
+
else
|
|
94
|
+
printError('Missing required argument: <agent>');
|
|
95
|
+
return ExitCode.USAGE_ERROR;
|
|
96
|
+
}
|
|
97
|
+
const paths = getSkillPaths(agent);
|
|
98
|
+
if (!paths) {
|
|
99
|
+
if (json)
|
|
100
|
+
printJsonError('VALIDATION_ERROR', `Unknown agent for skills: ${agent}`);
|
|
101
|
+
else
|
|
102
|
+
printError(`Unknown agent for skills: ${agent}. Try: amux skill agents`);
|
|
103
|
+
return ExitCode.USAGE_ERROR;
|
|
104
|
+
}
|
|
105
|
+
switch (sub) {
|
|
106
|
+
case 'where': {
|
|
107
|
+
if (json)
|
|
108
|
+
printJsonOk({ agent, ...paths });
|
|
109
|
+
else {
|
|
110
|
+
printTable(['Scope', 'Path'], [
|
|
111
|
+
['global', paths.global],
|
|
112
|
+
['project', paths.project],
|
|
113
|
+
]);
|
|
114
|
+
}
|
|
115
|
+
return ExitCode.SUCCESS;
|
|
116
|
+
}
|
|
117
|
+
case 'list': {
|
|
118
|
+
const scope = resolveScope(args, 'project');
|
|
119
|
+
const dir = getSkillDir(agent, scope);
|
|
120
|
+
if (!fs.existsSync(dir)) {
|
|
121
|
+
if (json)
|
|
122
|
+
printJsonOk({ agent, scope, dir, skills: [] });
|
|
123
|
+
else
|
|
124
|
+
process.stdout.write(`(no skills in ${dir})\n`);
|
|
125
|
+
return ExitCode.SUCCESS;
|
|
126
|
+
}
|
|
127
|
+
const entries = fs.readdirSync(dir).filter((n) => {
|
|
128
|
+
try {
|
|
129
|
+
return fs.statSync(path.join(dir, n)).isDirectory();
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
if (json)
|
|
136
|
+
printJsonOk({ agent, scope, dir, skills: entries });
|
|
137
|
+
else if (entries.length === 0)
|
|
138
|
+
process.stdout.write(`(no skills in ${dir})\n`);
|
|
139
|
+
else {
|
|
140
|
+
printTable(['Skill', 'Path'], entries.map((n) => [n, path.join(dir, n)]));
|
|
141
|
+
}
|
|
142
|
+
return ExitCode.SUCCESS;
|
|
143
|
+
}
|
|
144
|
+
case 'add': {
|
|
145
|
+
const source = args.positionals[1];
|
|
146
|
+
if (!source) {
|
|
147
|
+
if (json)
|
|
148
|
+
printJsonError('VALIDATION_ERROR', 'Missing source folder');
|
|
149
|
+
else
|
|
150
|
+
printError('Usage: amux skill add <agent> <source-folder> [--name <n>] [--global|--project]');
|
|
151
|
+
return ExitCode.USAGE_ERROR;
|
|
152
|
+
}
|
|
153
|
+
const absSource = path.resolve(source);
|
|
154
|
+
if (!fs.existsSync(absSource) || !fs.statSync(absSource).isDirectory()) {
|
|
155
|
+
if (json)
|
|
156
|
+
printJsonError('VALIDATION_ERROR', `Source is not a directory: ${absSource}`);
|
|
157
|
+
else
|
|
158
|
+
printError(`Source is not a directory: ${absSource}`);
|
|
159
|
+
return ExitCode.GENERAL_ERROR;
|
|
160
|
+
}
|
|
161
|
+
const scope = resolveScope(args, 'project');
|
|
162
|
+
const dir = getSkillDir(agent, scope);
|
|
163
|
+
const name = flagStr(args.flags, 'name') ?? path.basename(absSource);
|
|
164
|
+
const dst = path.join(dir, name);
|
|
165
|
+
if (fs.existsSync(dst)) {
|
|
166
|
+
if (flagBool(args.flags, 'force') !== true) {
|
|
167
|
+
if (json)
|
|
168
|
+
printJsonError('CONFLICT', `Already exists: ${dst} (use --force)`);
|
|
169
|
+
else
|
|
170
|
+
printError(`Already exists: ${dst} (use --force)`);
|
|
171
|
+
return ExitCode.GENERAL_ERROR;
|
|
172
|
+
}
|
|
173
|
+
rmDirRecursive(dst);
|
|
174
|
+
}
|
|
175
|
+
copyDirRecursive(absSource, dst);
|
|
176
|
+
if (json)
|
|
177
|
+
printJsonOk({ added: name, scope, path: dst });
|
|
178
|
+
else
|
|
179
|
+
process.stdout.write(`Installed skill ${name} (${scope}) → ${dst}\n`);
|
|
180
|
+
return ExitCode.SUCCESS;
|
|
181
|
+
}
|
|
182
|
+
case 'remove': {
|
|
183
|
+
const name = args.positionals[1];
|
|
184
|
+
if (!name) {
|
|
185
|
+
if (json)
|
|
186
|
+
printJsonError('VALIDATION_ERROR', 'Missing skill name');
|
|
187
|
+
else
|
|
188
|
+
printError('Usage: amux skill remove <agent> <name> [--global|--project]');
|
|
189
|
+
return ExitCode.USAGE_ERROR;
|
|
190
|
+
}
|
|
191
|
+
const scope = resolveScope(args, 'project');
|
|
192
|
+
const dir = getSkillDir(agent, scope);
|
|
193
|
+
const target = path.join(dir, name);
|
|
194
|
+
if (!fs.existsSync(target)) {
|
|
195
|
+
if (json)
|
|
196
|
+
printJsonError('NOT_FOUND', `No skill ${name} in ${dir}`);
|
|
197
|
+
else
|
|
198
|
+
printError(`No skill ${name} in ${dir}`);
|
|
199
|
+
return ExitCode.GENERAL_ERROR;
|
|
200
|
+
}
|
|
201
|
+
rmDirRecursive(target);
|
|
202
|
+
if (json)
|
|
203
|
+
printJsonOk({ removed: name, scope, path: target });
|
|
204
|
+
else
|
|
205
|
+
process.stdout.write(`Removed skill ${name} (${scope})\n`);
|
|
206
|
+
return ExitCode.SUCCESS;
|
|
207
|
+
}
|
|
208
|
+
default: {
|
|
209
|
+
if (json)
|
|
210
|
+
printJsonError('VALIDATION_ERROR', `Unknown skill subcommand: ${sub}`);
|
|
211
|
+
else
|
|
212
|
+
printError(`Unknown skill subcommand: ${sub}`);
|
|
213
|
+
return ExitCode.USAGE_ERROR;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAoEjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ExitCode } from '../exit-codes.js';
|
|
2
|
+
import { printError } from '../output.js';
|
|
3
|
+
export async function tuiCommand(client, args) {
|
|
4
|
+
if (args.flags.help) {
|
|
5
|
+
process.stdout.write([
|
|
6
|
+
'Usage: amux tui [--agent <name>]',
|
|
7
|
+
'',
|
|
8
|
+
'Launches the Ink-based agent-mux TUI with the default plugin set.',
|
|
9
|
+
'',
|
|
10
|
+
'Options:',
|
|
11
|
+
' --agent <name> Default agent for new prompts (default: claude-code)',
|
|
12
|
+
' --user-plugins-dir <dir> Override user-plugin discovery dir',
|
|
13
|
+
' (default: $AMUX_TUI_PLUGINS_DIR or ~/.amux/tui-plugins)',
|
|
14
|
+
' --no-user-plugins Skip discovering user plugins from the directory',
|
|
15
|
+
].join('\n') + '\n');
|
|
16
|
+
return ExitCode.SUCCESS;
|
|
17
|
+
}
|
|
18
|
+
let tui;
|
|
19
|
+
try {
|
|
20
|
+
const dynImport = new Function('m', 'return import(m)');
|
|
21
|
+
tui = (await dynImport('@a5c-ai/agent-mux-tui'));
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
printError('The TUI package is not installed. Install it with:\n' +
|
|
25
|
+
' npm i -g @a5c-ai/agent-mux-tui\n' +
|
|
26
|
+
`Underlying error: ${err.message}`);
|
|
27
|
+
return ExitCode.GENERAL_ERROR;
|
|
28
|
+
}
|
|
29
|
+
const React = await import('react');
|
|
30
|
+
const defaultAgent = args.flags.agent ?? 'claude-code';
|
|
31
|
+
const noUser = args.flags['no-user-plugins'] === true;
|
|
32
|
+
const userDir = typeof args.flags['user-plugins-dir'] === 'string'
|
|
33
|
+
? args.flags['user-plugins-dir']
|
|
34
|
+
: tui.defaultExternalPluginsDir();
|
|
35
|
+
const plugins = [...tui.builtinPlugins];
|
|
36
|
+
if (!noUser) {
|
|
37
|
+
try {
|
|
38
|
+
const ext = await tui.loadExternalPlugins(userDir);
|
|
39
|
+
plugins.push(...ext.plugins);
|
|
40
|
+
for (const e of ext.errors) {
|
|
41
|
+
process.stderr.write(`tui: failed to load plugin from ${e.source}: ${e.error}\n`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
process.stderr.write(`tui: external plugin discovery failed: ${e.message}\n`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const { render } = await import('ink');
|
|
49
|
+
render(React.createElement(tui.App, {
|
|
50
|
+
client: client,
|
|
51
|
+
plugins: plugins,
|
|
52
|
+
defaultAgent,
|
|
53
|
+
}));
|
|
54
|
+
return ExitCode.SUCCESS;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/commands/tui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAsB,EACtB,IAAgB;IAEhB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;YACE,kCAAkC;YAClC,EAAE;YACF,mEAAmE;YACnE,EAAE;YACF,UAAU;YACV,kFAAkF;YAClF,gEAAgE;YAChE,qFAAqF;YACrF,8EAA8E;SAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACpB,CAAC;QACF,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,IAAI,GAOH,CAAC;IACF,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAoC,CAAC;QAC3F,GAAG,GAAG,CAAC,MAAM,SAAS,CAAC,uBAAuB,CAAC,CAAU,CAAC;IAC5D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CACR,sDAAsD;YACpD,oCAAoC;YACpC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAChD,CAAC;QACF,OAAO,QAAQ,CAAC,aAAa,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,YAAY,GAAI,IAAI,CAAC,KAAK,CAAC,KAA4B,IAAI,aAAa,CAAC;IAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACtD,MAAM,OAAO,GACX,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,QAAQ;QAChD,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAY;QAC5C,CAAC,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAc,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA2C,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,CACJ,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAY,EAAE;QACpC,MAAM,EAAE,MAAe;QACvB,OAAO,EAAE,OAAgB;QACzB,YAAY;KACb,CAAC,CACH,CAAC;IACF,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC;AA4B1B;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0J3D"}
|
package/dist/index.js
CHANGED
|
@@ -28,12 +28,15 @@ import { configCommand } from './commands/config.js';
|
|
|
28
28
|
import { authCommand } from './commands/auth.js';
|
|
29
29
|
import { modelsCommand } from './commands/models.js';
|
|
30
30
|
import { profilesCommand } from './commands/profiles.js';
|
|
31
|
-
import {
|
|
31
|
+
import { pluginCommand } from './commands/plugin.js';
|
|
32
|
+
import { mcpCommand } from './commands/mcp.js';
|
|
32
33
|
import { installCommand } from './commands/install.js';
|
|
33
34
|
import { detectHostCommand } from './commands/detect-host.js';
|
|
34
35
|
import { remoteCommand, REMOTE_FLAGS } from './commands/remote.js';
|
|
35
36
|
import { hooksCommand, HOOKS_FLAGS } from './commands/hooks.js';
|
|
36
37
|
import { doctorCommand } from './commands/doctor.js';
|
|
38
|
+
import { tuiCommand } from './commands/tui.js';
|
|
39
|
+
import { skillCommand, SKILL_FLAGS } from './commands/skill.js';
|
|
37
40
|
import { registerBuiltInAdapters } from './bootstrap.js';
|
|
38
41
|
/**
|
|
39
42
|
* Main CLI entry point.
|
|
@@ -44,7 +47,7 @@ import { registerBuiltInAdapters } from './bootstrap.js';
|
|
|
44
47
|
export async function main(argv) {
|
|
45
48
|
const rawArgs = argv ?? process.argv.slice(2);
|
|
46
49
|
// First pass: parse with all known flags to capture global flags
|
|
47
|
-
const args = parseArgs(rawArgs, { ...RUN_FLAGS, ...INSTALL_FLAGS, ...REMOTE_FLAGS, ...HOOKS_FLAGS });
|
|
50
|
+
const args = parseArgs(rawArgs, { ...RUN_FLAGS, ...INSTALL_FLAGS, ...REMOTE_FLAGS, ...HOOKS_FLAGS, ...SKILL_FLAGS });
|
|
48
51
|
// Handle --no-color
|
|
49
52
|
if (flagBool(args.flags, 'no-color') === true) {
|
|
50
53
|
setColorEnabled(false);
|
|
@@ -124,8 +127,11 @@ export async function main(argv) {
|
|
|
124
127
|
return await modelsCommand(client, args);
|
|
125
128
|
case 'profiles':
|
|
126
129
|
return await profilesCommand(client, args);
|
|
130
|
+
case 'plugin':
|
|
127
131
|
case 'plugins':
|
|
128
|
-
return await
|
|
132
|
+
return await pluginCommand(client, args);
|
|
133
|
+
case 'mcp':
|
|
134
|
+
return await mcpCommand(client, args);
|
|
129
135
|
case 'install':
|
|
130
136
|
case 'uninstall':
|
|
131
137
|
case 'update':
|
|
@@ -139,6 +145,10 @@ export async function main(argv) {
|
|
|
139
145
|
return await hooksCommand(client, args);
|
|
140
146
|
case 'doctor':
|
|
141
147
|
return await doctorCommand(client, args);
|
|
148
|
+
case 'tui':
|
|
149
|
+
return await tuiCommand(client, args);
|
|
150
|
+
case 'skill':
|
|
151
|
+
return await skillCommand(client, args);
|
|
142
152
|
default:
|
|
143
153
|
if (jsonMode) {
|
|
144
154
|
printJsonError('VALIDATION_ERROR', `Unknown command: ${args.command}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,gFAAgF;AAChF,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface AgentCapabilities {
|
|
2
|
+
supportsPlugins: boolean;
|
|
3
|
+
pluginCommands: string[];
|
|
4
|
+
nativePluginCommand: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function detectAgentCapabilities(agent: string): Promise<AgentCapabilities>;
|
|
7
|
+
//# sourceMappingURL=agent-capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-capabilities.d.ts","sourceRoot":"","sources":["../../src/lib/agent-capabilities.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAqCD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyBvF"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
const execAsync = promisify(exec);
|
|
4
|
+
const AGENT_PLUGIN_CONFIGS = {
|
|
5
|
+
claude: {
|
|
6
|
+
command: 'claude plugins',
|
|
7
|
+
commands: ['list', 'install', 'enable', 'disable', 'marketplace', 'uninstall', 'update'],
|
|
8
|
+
},
|
|
9
|
+
gemini: {
|
|
10
|
+
command: 'gemini extensions',
|
|
11
|
+
commands: ['list', 'install', 'update'],
|
|
12
|
+
},
|
|
13
|
+
copilot: {
|
|
14
|
+
command: 'copilot plugin',
|
|
15
|
+
commands: ['list', 'install', 'update', 'uninstall'],
|
|
16
|
+
},
|
|
17
|
+
opencode: {
|
|
18
|
+
command: 'opencode plugins',
|
|
19
|
+
commands: ['list', 'install'],
|
|
20
|
+
},
|
|
21
|
+
omp: {
|
|
22
|
+
command: 'omp plugin',
|
|
23
|
+
commands: ['list', 'install', 'uninstall', 'enable', 'disable', 'doctor'],
|
|
24
|
+
},
|
|
25
|
+
openclaw: {
|
|
26
|
+
command: 'openclaw plugins',
|
|
27
|
+
commands: ['list', 'install', 'enable', 'disable', 'doctor'],
|
|
28
|
+
},
|
|
29
|
+
pi: {
|
|
30
|
+
command: 'pi',
|
|
31
|
+
commands: ['list', 'install', 'update', 'config'],
|
|
32
|
+
},
|
|
33
|
+
qwen: {
|
|
34
|
+
command: 'qwen extensions',
|
|
35
|
+
commands: ['install', 'settings'],
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
export async function detectAgentCapabilities(agent) {
|
|
39
|
+
const config = AGENT_PLUGIN_CONFIGS[agent];
|
|
40
|
+
if (!config) {
|
|
41
|
+
return {
|
|
42
|
+
supportsPlugins: false,
|
|
43
|
+
pluginCommands: [],
|
|
44
|
+
nativePluginCommand: '',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
await execAsync(`${config.command} --help`, { timeout: 5000 });
|
|
49
|
+
return {
|
|
50
|
+
supportsPlugins: true,
|
|
51
|
+
pluginCommands: [...config.commands],
|
|
52
|
+
nativePluginCommand: config.command,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return {
|
|
57
|
+
supportsPlugins: false,
|
|
58
|
+
pluginCommands: [],
|
|
59
|
+
nativePluginCommand: '',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=agent-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-capabilities.js","sourceRoot":"","sources":["../../src/lib/agent-capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAQlC,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE;QACN,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC;KACzF;IACD,MAAM,EAAE;QACN,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;KACxC;IACD,OAAO,EAAE;QACP,OAAO,EAAE,gBAAgB;QACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC;KACrD;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;KAC9B;IACD,GAAG,EAAE;QACH,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;KAC1E;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;KAC7D;IACD,EAAE,EAAE;QACF,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;KAClD;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAClC;CACO,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAa;IACzD,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAA0C,CAAC,CAAC;IAEhF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,EAAE;YAClB,mBAAmB,EAAE,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO;YACL,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;YACpC,mBAAmB,EAAE,MAAM,CAAC,OAAO;SACpC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,EAAE;YAClB,mBAAmB,EAAE,EAAE;SACxB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type SkillScope = 'global' | 'project';
|
|
2
|
+
export interface SkillPaths {
|
|
3
|
+
global: string;
|
|
4
|
+
project: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getSkillPaths(agent: string, projectRoot?: string): SkillPaths | null;
|
|
7
|
+
export declare function getSkillDir(agent: string, scope: SkillScope, projectRoot?: string): string | null;
|
|
8
|
+
export declare function listSupportedAgents(): string[];
|
|
9
|
+
//# sourceMappingURL=agent-skill-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-skill-paths.d.ts","sourceRoot":"","sources":["../../src/lib/agent-skill-paths.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAmCD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,SAAgB,GAAG,UAAU,GAAG,IAAI,CAS3F;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,SAAgB,GAAG,MAAM,GAAG,IAAI,CAIxG;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as os from 'node:os';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
const HOME = os.homedir() || '.';
|
|
4
|
+
const REGISTRY = {
|
|
5
|
+
claude: {
|
|
6
|
+
global: path.join(HOME, '.claude', 'skills'),
|
|
7
|
+
project: path.join('.claude', 'skills'),
|
|
8
|
+
},
|
|
9
|
+
'claude-code': {
|
|
10
|
+
global: path.join(HOME, '.claude', 'skills'),
|
|
11
|
+
project: path.join('.claude', 'skills'),
|
|
12
|
+
},
|
|
13
|
+
codex: {
|
|
14
|
+
global: path.join(HOME, '.codex', 'skills'),
|
|
15
|
+
project: path.join('.codex', 'skills'),
|
|
16
|
+
},
|
|
17
|
+
cursor: {
|
|
18
|
+
global: path.join(HOME, '.cursor', 'skills'),
|
|
19
|
+
project: path.join('.cursor', 'skills'),
|
|
20
|
+
},
|
|
21
|
+
opencode: {
|
|
22
|
+
global: path.join(HOME, '.opencode', 'skills'),
|
|
23
|
+
project: path.join('.opencode', 'skills'),
|
|
24
|
+
},
|
|
25
|
+
gemini: {
|
|
26
|
+
global: path.join(HOME, '.gemini', 'skills'),
|
|
27
|
+
project: path.join('.gemini', 'skills'),
|
|
28
|
+
},
|
|
29
|
+
copilot: {
|
|
30
|
+
global: path.join(HOME, '.copilot', 'skills'),
|
|
31
|
+
project: path.join('.copilot', 'skills'),
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
export function getSkillPaths(agent, projectRoot = process.cwd()) {
|
|
35
|
+
const entry = REGISTRY[agent];
|
|
36
|
+
if (!entry)
|
|
37
|
+
return null;
|
|
38
|
+
return {
|
|
39
|
+
global: entry.global,
|
|
40
|
+
project: path.isAbsolute(entry.project)
|
|
41
|
+
? entry.project
|
|
42
|
+
: path.join(projectRoot, entry.project),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function getSkillDir(agent, scope, projectRoot = process.cwd()) {
|
|
46
|
+
const p = getSkillPaths(agent, projectRoot);
|
|
47
|
+
if (!p)
|
|
48
|
+
return null;
|
|
49
|
+
return scope === 'global' ? p.global : p.project;
|
|
50
|
+
}
|
|
51
|
+
export function listSupportedAgents() {
|
|
52
|
+
return Object.keys(REGISTRY);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=agent-skill-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-skill-paths.js","sourceRoot":"","sources":["../../src/lib/agent-skill-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AASlC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC;AAEjC,MAAM,QAAQ,GAA+B;IAC3C,MAAM,EAAE;QACN,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC5C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;KACxC;IACD,aAAa,EAAE;QACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC5C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;KACxC;IACD,KAAK,EAAE;QACL,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC3C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;KACvC;IACD,MAAM,EAAE;QACN,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC5C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;KACxC;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC;QAC9C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;KAC1C;IACD,MAAM,EAAE;QACN,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC5C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;KACxC;IACD,OAAO,EAAE;QACP,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC7C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;KACzC;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;IACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;YACrC,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,KAAiB,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;IACvF,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/parse-args.js
CHANGED
|
@@ -28,13 +28,13 @@ const COMMANDS = new Set([
|
|
|
28
28
|
'run', 'install', 'uninstall', 'update', 'detect', 'detect-host',
|
|
29
29
|
'remote', 'hooks',
|
|
30
30
|
'adapters', 'capabilities', 'models',
|
|
31
|
-
'plugins', 'sessions', 'cost', 'config', 'profiles',
|
|
32
|
-
'auth', 'init', 'version', 'help', 'doctor',
|
|
31
|
+
'plugins', 'plugin', 'mcp', 'sessions', 'cost', 'config', 'profiles',
|
|
32
|
+
'auth', 'init', 'version', 'help', 'doctor', 'tui', 'skill',
|
|
33
33
|
]);
|
|
34
34
|
/** Commands that have subcommands. */
|
|
35
35
|
const SUBCOMMAND_COMMANDS = new Set([
|
|
36
|
-
'adapters', 'models', 'plugins', 'sessions', 'config', 'profiles', 'auth',
|
|
37
|
-
'remote', 'hooks',
|
|
36
|
+
'adapters', 'models', 'plugins', 'plugin', 'mcp', 'sessions', 'config', 'profiles', 'auth',
|
|
37
|
+
'remote', 'hooks', 'skill',
|
|
38
38
|
]);
|
|
39
39
|
/**
|
|
40
40
|
* Parse argv into structured args.
|
package/dist/parse-args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAA4B;IACnD,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1C,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAClC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa;IAChE,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE,cAAc,EAAE,QAAQ;IACpC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;
|
|
1
|
+
{"version":3,"file":"parse-args.js","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a5c-ai/agent-mux-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "CLI binary (amux) for agent-mux",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"prepublishOnly": "npm run build"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@a5c-ai/agent-mux-core": "0.
|
|
55
|
-
"@a5c-ai/agent-mux-adapters": "0.
|
|
54
|
+
"@a5c-ai/agent-mux-core": "0.3.0",
|
|
55
|
+
"@a5c-ai/agent-mux-adapters": "0.3.0"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `amux plugins` subcommands.
|
|
3
|
-
*
|
|
4
|
-
* @see docs/10-cli-reference.md Section 11
|
|
5
|
-
*/
|
|
6
|
-
import type { AgentMuxClient } from '@a5c-ai/agent-mux-core';
|
|
7
|
-
import type { ParsedArgs } from '../parse-args.js';
|
|
8
|
-
export declare function pluginsCommand(client: AgentMuxClient, args: ParsedArgs): Promise<number>;
|
|
9
|
-
//# sourceMappingURL=plugins.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOnD,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D9F"}
|
package/dist/commands/plugins.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `amux plugins` subcommands.
|
|
3
|
-
*
|
|
4
|
-
* @see docs/10-cli-reference.md Section 11
|
|
5
|
-
*/
|
|
6
|
-
import { AgentMuxError } from '@a5c-ai/agent-mux-core';
|
|
7
|
-
import { flagBool, flagStr } from '../parse-args.js';
|
|
8
|
-
import { ExitCode, errorCodeToExitCode } from '../exit-codes.js';
|
|
9
|
-
import { printTable, printJsonOk, printJsonError, printError, } from '../output.js';
|
|
10
|
-
export async function pluginsCommand(client, args) {
|
|
11
|
-
const sub = args.subcommand;
|
|
12
|
-
const jsonMode = flagBool(args.flags, 'json') === true;
|
|
13
|
-
if (sub === 'list') {
|
|
14
|
-
const agent = args.positionals[0] ?? flagStr(args.flags, 'agent');
|
|
15
|
-
if (!agent) {
|
|
16
|
-
if (jsonMode) {
|
|
17
|
-
printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
printError('Missing required argument: <agent>');
|
|
21
|
-
}
|
|
22
|
-
return ExitCode.USAGE_ERROR;
|
|
23
|
-
}
|
|
24
|
-
return pluginsList(client, agent, jsonMode);
|
|
25
|
-
}
|
|
26
|
-
if (sub === 'install') {
|
|
27
|
-
const agent = args.positionals[0];
|
|
28
|
-
const plugin = args.positionals[1];
|
|
29
|
-
if (!agent || !plugin) {
|
|
30
|
-
if (jsonMode) {
|
|
31
|
-
printJsonError('VALIDATION_ERROR', 'Usage: amux plugins install <agent> <plugin>');
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
printError('Usage: amux plugins install <agent> <plugin>');
|
|
35
|
-
}
|
|
36
|
-
return ExitCode.USAGE_ERROR;
|
|
37
|
-
}
|
|
38
|
-
return pluginsInstall(client, agent, plugin, args, jsonMode);
|
|
39
|
-
}
|
|
40
|
-
if (sub === 'uninstall') {
|
|
41
|
-
const agent = args.positionals[0];
|
|
42
|
-
const plugin = args.positionals[1];
|
|
43
|
-
if (!agent || !plugin) {
|
|
44
|
-
if (jsonMode) {
|
|
45
|
-
printJsonError('VALIDATION_ERROR', 'Usage: amux plugins uninstall <agent> <plugin>');
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
printError('Usage: amux plugins uninstall <agent> <plugin>');
|
|
49
|
-
}
|
|
50
|
-
return ExitCode.USAGE_ERROR;
|
|
51
|
-
}
|
|
52
|
-
return pluginsUninstall(client, agent, plugin, jsonMode);
|
|
53
|
-
}
|
|
54
|
-
if (!sub) {
|
|
55
|
-
if (jsonMode) {
|
|
56
|
-
printJsonError('VALIDATION_ERROR', 'Missing subcommand. Available: list, install, uninstall');
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
printError('Missing subcommand. Available: list, install, uninstall');
|
|
60
|
-
}
|
|
61
|
-
return ExitCode.USAGE_ERROR;
|
|
62
|
-
}
|
|
63
|
-
if (jsonMode) {
|
|
64
|
-
printJsonError('VALIDATION_ERROR', `Unknown subcommand: plugins ${sub}`);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
printError(`Unknown subcommand: plugins ${sub}`);
|
|
68
|
-
}
|
|
69
|
-
return ExitCode.USAGE_ERROR;
|
|
70
|
-
}
|
|
71
|
-
async function pluginsList(client, agent, jsonMode) {
|
|
72
|
-
try {
|
|
73
|
-
// PluginManager is currently a stub — gracefully handle
|
|
74
|
-
// PluginManager is a stub interface at this phase; accessing optional
|
|
75
|
-
// methods/properties by string key requires a loose view.
|
|
76
|
-
const pm = client.plugins;
|
|
77
|
-
if (pm['_stub']) {
|
|
78
|
-
if (jsonMode) {
|
|
79
|
-
printJsonOk([]);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
process.stdout.write('Plugin management is not yet implemented.\n');
|
|
83
|
-
}
|
|
84
|
-
return ExitCode.SUCCESS;
|
|
85
|
-
}
|
|
86
|
-
const list = (await pm['list']?.(agent)) ?? [];
|
|
87
|
-
if (jsonMode) {
|
|
88
|
-
printJsonOk(list);
|
|
89
|
-
return ExitCode.SUCCESS;
|
|
90
|
-
}
|
|
91
|
-
const rows = list.map((p) => [
|
|
92
|
-
String(p['id'] ?? '--'),
|
|
93
|
-
String(p['name'] ?? '--'),
|
|
94
|
-
String(p['version'] ?? '--'),
|
|
95
|
-
String(p['format'] ?? '--'),
|
|
96
|
-
p['enabled'] ? 'yes' : 'no',
|
|
97
|
-
]);
|
|
98
|
-
printTable(['Plugin ID', 'Name', 'Version', 'Format', 'Enabled'], rows);
|
|
99
|
-
return ExitCode.SUCCESS;
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
return handleError(err, jsonMode);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
async function pluginsInstall(client, agent, plugin, args, jsonMode) {
|
|
106
|
-
try {
|
|
107
|
-
// PluginManager is a stub interface at this phase; accessing optional
|
|
108
|
-
// methods/properties by string key requires a loose view.
|
|
109
|
-
const pm = client.plugins;
|
|
110
|
-
if (pm['_stub']) {
|
|
111
|
-
if (jsonMode) {
|
|
112
|
-
printJsonError('PLUGIN_ERROR', 'Plugin management is not yet implemented');
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
printError('Plugin management is not yet implemented.');
|
|
116
|
-
}
|
|
117
|
-
return ExitCode.PLUGIN_ERROR;
|
|
118
|
-
}
|
|
119
|
-
const version = flagStr(args.flags, 'version');
|
|
120
|
-
const global = flagBool(args.flags, 'global');
|
|
121
|
-
await pm['install']?.(agent, plugin, { version, global });
|
|
122
|
-
if (jsonMode) {
|
|
123
|
-
printJsonOk({ installed: plugin, agent });
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
process.stdout.write(`Plugin "${plugin}" installed for ${agent}.\n`);
|
|
127
|
-
}
|
|
128
|
-
return ExitCode.SUCCESS;
|
|
129
|
-
}
|
|
130
|
-
catch (err) {
|
|
131
|
-
return handleError(err, jsonMode);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
async function pluginsUninstall(client, agent, plugin, jsonMode) {
|
|
135
|
-
try {
|
|
136
|
-
// PluginManager is a stub interface at this phase; accessing optional
|
|
137
|
-
// methods/properties by string key requires a loose view.
|
|
138
|
-
const pm = client.plugins;
|
|
139
|
-
if (pm['_stub']) {
|
|
140
|
-
if (jsonMode) {
|
|
141
|
-
printJsonError('PLUGIN_ERROR', 'Plugin management is not yet implemented');
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
printError('Plugin management is not yet implemented.');
|
|
145
|
-
}
|
|
146
|
-
return ExitCode.PLUGIN_ERROR;
|
|
147
|
-
}
|
|
148
|
-
await pm['uninstall']?.(agent, plugin);
|
|
149
|
-
if (jsonMode) {
|
|
150
|
-
printJsonOk({ uninstalled: plugin, agent });
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
process.stdout.write(`Plugin "${plugin}" uninstalled from ${agent}.\n`);
|
|
154
|
-
}
|
|
155
|
-
return ExitCode.SUCCESS;
|
|
156
|
-
}
|
|
157
|
-
catch (err) {
|
|
158
|
-
return handleError(err, jsonMode);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
function handleError(err, jsonMode) {
|
|
162
|
-
if (err instanceof AgentMuxError) {
|
|
163
|
-
if (jsonMode) {
|
|
164
|
-
printJsonError(err.code, err.message, err.recoverable);
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
printError(err.message);
|
|
168
|
-
}
|
|
169
|
-
return errorCodeToExitCode(err.code);
|
|
170
|
-
}
|
|
171
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
172
|
-
if (jsonMode) {
|
|
173
|
-
printJsonError('INTERNAL', message);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
printError(message);
|
|
177
|
-
}
|
|
178
|
-
return ExitCode.GENERAL_ERROR;
|
|
179
|
-
}
|
|
180
|
-
//# sourceMappingURL=plugins.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
|