@a5c-ai/agent-mux-cli 0.3.0 → 0.4.1

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 (65) hide show
  1. package/dist/bootstrap.d.ts +1 -1
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +24 -6
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/commands/agent.d.ts +12 -0
  6. package/dist/commands/agent.d.ts.map +1 -0
  7. package/dist/commands/agent.js +219 -0
  8. package/dist/commands/agent.js.map +1 -0
  9. package/dist/commands/gateway/index.d.ts +6 -0
  10. package/dist/commands/gateway/index.d.ts.map +1 -0
  11. package/dist/commands/gateway/index.js +39 -0
  12. package/dist/commands/gateway/index.js.map +1 -0
  13. package/dist/commands/gateway/serve.d.ts +6 -0
  14. package/dist/commands/gateway/serve.d.ts.map +1 -0
  15. package/dist/commands/gateway/serve.js +67 -0
  16. package/dist/commands/gateway/serve.js.map +1 -0
  17. package/dist/commands/gateway/status.d.ts +3 -0
  18. package/dist/commands/gateway/status.d.ts.map +1 -0
  19. package/dist/commands/gateway/status.js +24 -0
  20. package/dist/commands/gateway/status.js.map +1 -0
  21. package/dist/commands/gateway/tokens.d.ts +3 -0
  22. package/dist/commands/gateway/tokens.d.ts.map +1 -0
  23. package/dist/commands/gateway/tokens.js +75 -0
  24. package/dist/commands/gateway/tokens.js.map +1 -0
  25. package/dist/commands/help.d.ts.map +1 -1
  26. package/dist/commands/help.js +100 -0
  27. package/dist/commands/help.js.map +1 -1
  28. package/dist/commands/hooks.d.ts.map +1 -1
  29. package/dist/commands/hooks.js +1 -13
  30. package/dist/commands/hooks.js.map +1 -1
  31. package/dist/commands/launch.d.ts +52 -0
  32. package/dist/commands/launch.d.ts.map +1 -0
  33. package/dist/commands/launch.js +580 -0
  34. package/dist/commands/launch.js.map +1 -0
  35. package/dist/commands/mcp.d.ts.map +1 -1
  36. package/dist/commands/mcp.js +15 -11
  37. package/dist/commands/mcp.js.map +1 -1
  38. package/dist/commands/models.d.ts.map +1 -1
  39. package/dist/commands/models.js +164 -11
  40. package/dist/commands/models.js.map +1 -1
  41. package/dist/commands/plugin.d.ts.map +1 -1
  42. package/dist/commands/plugin.js +28 -9
  43. package/dist/commands/plugin.js.map +1 -1
  44. package/dist/commands/run.d.ts.map +1 -1
  45. package/dist/commands/run.js +91 -24
  46. package/dist/commands/run.js.map +1 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +31 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/lib/agent-skill-paths.d.ts +1 -0
  51. package/dist/lib/agent-skill-paths.d.ts.map +1 -1
  52. package/dist/lib/agent-skill-paths.js +18 -2
  53. package/dist/lib/agent-skill-paths.js.map +1 -1
  54. package/dist/lib/agent-subagent-paths.d.ts +9 -0
  55. package/dist/lib/agent-subagent-paths.d.ts.map +1 -0
  56. package/dist/lib/agent-subagent-paths.js +54 -0
  57. package/dist/lib/agent-subagent-paths.js.map +1 -0
  58. package/dist/parse-args.d.ts.map +1 -1
  59. package/dist/parse-args.js +6 -2
  60. package/dist/parse-args.js.map +1 -1
  61. package/dist/read-stdin.d.ts +2 -0
  62. package/dist/read-stdin.d.ts.map +1 -0
  63. package/dist/read-stdin.js +14 -0
  64. package/dist/read-stdin.js.map +1 -0
  65. package/package.json +10 -3
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * The core `AdapterRegistry` starts empty — adapters must be explicitly
5
5
  * registered. This module centralises that wiring so the CLI (and any
6
- * consumer) gets all 11 built-in adapters with a single call.
6
+ * consumer) gets all built-in adapters with a single call.
7
7
  */
8
8
  import type { AgentMuxClient } from '@a5c-ai/agent-mux-core';
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAiB7D;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA+BpE"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA0B7D;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAgDpE"}
package/dist/bootstrap.js CHANGED
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * The core `AdapterRegistry` starts empty — adapters must be explicitly
5
5
  * registered. This module centralises that wiring so the CLI (and any
6
- * consumer) gets all 11 built-in adapters with a single call.
6
+ * consumer) gets all built-in adapters with a single call.
7
7
  */
8
- import { ClaudeAdapter, CodexAdapter, GeminiAdapter, CopilotAdapter, CursorAdapter, OpenCodeAdapter, PiAdapter, OmpAdapter, OpenClawAdapter, HermesAdapter, AgentMuxRemoteAdapter, QwenAdapter, } from '@a5c-ai/agent-mux-adapters';
8
+ import { ClaudeAdapter, ClaudeAgentSdkAdapter, ClaudeRemoteControlAdapter, CodexAdapter, CodexSdkAdapter, CodexWebSocketAdapter, DroidAdapter, AmpAdapter, GeminiAdapter, CopilotAdapter, CursorAdapter, OpenCodeAdapter, OpenCodeHttpAdapter, PiAdapter, PiSdkAdapter, OmpAdapter, OpenClawAdapter, HermesAdapter, AgentMuxRemoteAdapter, QwenAdapter, BabysitterAdapter, } from '@a5c-ai/agent-mux-adapters';
9
9
  /**
10
10
  * Registers every built-in adapter on the given client's adapter registry.
11
11
  * Safe to call multiple times — `register()` replaces existing entries.
@@ -13,28 +13,46 @@ import { ClaudeAdapter, CodexAdapter, GeminiAdapter, CopilotAdapter, CursorAdapt
13
13
  export function registerBuiltInAdapters(client) {
14
14
  const adapters = [
15
15
  new ClaudeAdapter(),
16
+ new ClaudeAgentSdkAdapter(),
17
+ new ClaudeRemoteControlAdapter(),
16
18
  new CodexAdapter(),
19
+ new CodexSdkAdapter(),
20
+ new CodexWebSocketAdapter(),
21
+ new DroidAdapter(),
22
+ new AmpAdapter(),
17
23
  new GeminiAdapter(),
18
24
  new CopilotAdapter(),
19
25
  new CursorAdapter(),
20
26
  new OpenCodeAdapter(),
27
+ new OpenCodeHttpAdapter(),
21
28
  new PiAdapter(),
29
+ new PiSdkAdapter(),
22
30
  new OmpAdapter(),
23
31
  new OpenClawAdapter(),
24
32
  new HermesAdapter(),
25
33
  new AgentMuxRemoteAdapter(),
26
34
  new QwenAdapter(),
35
+ new BabysitterAdapter(),
27
36
  ];
28
37
  // Prefer `registerBuiltIn` on the impl so the `source` shows as 'built-in';
29
38
  // fall back to the public `register()` (which marks as 'plugin') for any
30
39
  // AdapterRegistry implementation that doesn't expose the built-in helper.
31
40
  const registry = client.adapters;
32
41
  for (const adapter of adapters) {
33
- if (typeof registry.registerBuiltIn === 'function') {
34
- registry.registerBuiltIn(adapter);
42
+ try {
43
+ if (typeof registry.registerBuiltIn === 'function') {
44
+ registry.registerBuiltIn(adapter);
45
+ }
46
+ else {
47
+ registry.register(adapter);
48
+ }
35
49
  }
36
- else {
37
- registry.register(adapter);
50
+ catch (e) {
51
+ // Skip adapters that fail validation (e.g. partially-implemented
52
+ // programmatic/HTTP adapters). Log to stderr so callers can diagnose
53
+ // without crashing the whole process.
54
+ const name = adapter.agent ?? adapter.constructor.name;
55
+ process.stderr.write(`[amux] skipping adapter ${name}: ${e.message}\n`);
38
56
  }
39
57
  }
40
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,WAAW,GACZ,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,MAAM,QAAQ,GAAmB;QAC/B,IAAI,aAAa,EAAE;QACnB,IAAI,YAAY,EAAE;QAClB,IAAI,aAAa,EAAE;QACnB,IAAI,cAAc,EAAE;QACpB,IAAI,aAAa,EAAE;QACnB,IAAI,eAAe,EAAE;QACrB,IAAI,SAAS,EAAE;QACf,IAAI,UAAU,EAAE;QAChB,IAAI,eAAe,EAAE;QACrB,IAAI,aAAa,EAAE;QACnB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,WAAW,EAAE;KAClB,CAAC;IAEF,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAGvB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YACnD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAsB;IAC5D,MAAM,QAAQ,GAAwB;QACpC,IAAI,aAAa,EAAE;QACnB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,0BAA0B,EAAE;QAChC,IAAI,YAAY,EAAE;QAClB,IAAI,eAAe,EAAE;QACrB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,YAAY,EAAE;QAClB,IAAI,UAAU,EAAE;QAChB,IAAI,aAAa,EAAE;QACnB,IAAI,cAAc,EAAE;QACpB,IAAI,aAAa,EAAE;QACnB,IAAI,eAAe,EAAE;QACrB,IAAI,mBAAmB,EAAE;QACzB,IAAI,SAAS,EAAE;QACf,IAAI,YAAY,EAAE;QAClB,IAAI,UAAU,EAAE;QAChB,IAAI,eAAe,EAAE;QACrB,IAAI,aAAa,EAAE;QACnB,IAAI,qBAAqB,EAAE;QAC3B,IAAI,WAAW,EAAE;QACjB,IAAI,iBAAiB,EAAE;KACxB,CAAC;IAEF,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAGvB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBACnD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iEAAiE;YACjE,qEAAqE;YACrE,sCAAsC;YACtC,MAAM,IAAI,GAAI,OAA8B,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,KAAM,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `amux agent <subcommand> <agent> [args] [--global|--project]`
3
+ *
4
+ * Custom sub-agent management. Like skills, this is file-convention only
5
+ * — no underlying harness command. We copy/remove agent definition files
6
+ * (typically markdown) into per-agent locations.
7
+ */
8
+ import type { AgentMuxClient } from '@a5c-ai/agent-mux-core';
9
+ import type { ParsedArgs, FlagDef } from '../parse-args.js';
10
+ export declare const AGENT_FLAGS: Record<string, FlagDef>;
11
+ export declare function agentCommand(_client: AgentMuxClient, args: ParsedArgs): Promise<number>;
12
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAW5D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAK/C,CAAC;AA2CF,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CA0IjB"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * `amux agent <subcommand> <agent> [args] [--global|--project]`
3
+ *
4
+ * Custom sub-agent management. Like skills, this is file-convention only
5
+ * — no underlying harness command. We copy/remove agent definition files
6
+ * (typically markdown) into per-agent locations.
7
+ */
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ import { flagBool, flagStr } from '../parse-args.js';
11
+ import { ExitCode } from '../exit-codes.js';
12
+ import { printError, printJsonOk, printJsonError, printTable } from '../output.js';
13
+ import { getSubagentPaths, getSubagentDir, listSupportedAgents, } from '../lib/agent-subagent-paths.js';
14
+ export const AGENT_FLAGS = {
15
+ global: { type: 'boolean' },
16
+ project: { type: 'boolean' },
17
+ name: { type: 'string' },
18
+ force: { type: 'boolean' },
19
+ };
20
+ function jsonMode(args) {
21
+ return flagBool(args.flags, 'json') === true;
22
+ }
23
+ function resolveScope(args, fallback = 'project') {
24
+ if (flagBool(args.flags, 'global') === true)
25
+ return 'global';
26
+ if (flagBool(args.flags, 'project') === true)
27
+ return 'project';
28
+ return fallback;
29
+ }
30
+ function copyPath(src, dst) {
31
+ const st = fs.statSync(src);
32
+ if (st.isDirectory()) {
33
+ fs.mkdirSync(dst, { recursive: true });
34
+ for (const name of fs.readdirSync(src))
35
+ copyPath(path.join(src, name), path.join(dst, name));
36
+ }
37
+ else if (st.isFile()) {
38
+ fs.mkdirSync(path.dirname(dst), { recursive: true });
39
+ fs.copyFileSync(src, dst);
40
+ }
41
+ }
42
+ function removePath(target) {
43
+ fs.rmSync(target, { recursive: true, force: true });
44
+ }
45
+ const AGENT_FILE_EXTS = ['.md', '.markdown', '.yaml', '.yml', '.json', '.toml'];
46
+ function listAgentFiles(dir) {
47
+ if (!fs.existsSync(dir))
48
+ return [];
49
+ return fs.readdirSync(dir).filter((name) => {
50
+ try {
51
+ const full = path.join(dir, name);
52
+ const st = fs.statSync(full);
53
+ if (st.isDirectory())
54
+ return true;
55
+ return AGENT_FILE_EXTS.includes(path.extname(name).toLowerCase());
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ });
61
+ }
62
+ export async function agentCommand(_client, args) {
63
+ const json = jsonMode(args);
64
+ if (args.flags.help || (!args.subcommand && args.positionals.length === 0)) {
65
+ process.stdout.write([
66
+ 'Usage: amux agent <subcommand> <agent> [args] [--global|--project]',
67
+ '',
68
+ 'Manage custom sub-agents for a harness (file-convention based, no native command).',
69
+ '',
70
+ 'Subcommands:',
71
+ ' list <agent> List installed sub-agents',
72
+ ' add <agent> <source> Copy an agent file or folder into the agents dir',
73
+ ' [--name <name>] [--force]',
74
+ ' remove <agent> <name> Remove an agent file or folder',
75
+ ' where <agent> Show agent directory paths',
76
+ ' agents List harnesses with known agent conventions',
77
+ '',
78
+ 'Scope flags (default: --project):',
79
+ ' --global Use the user-level agents dir',
80
+ ' --project Use the project-level agents dir',
81
+ '',
82
+ 'Examples:',
83
+ ' amux agent list claude',
84
+ ' amux agent add claude ./my-agent.md --global',
85
+ ' amux agent remove claude my-agent.md --project',
86
+ ].join('\n') + '\n');
87
+ return ExitCode.SUCCESS;
88
+ }
89
+ const sub = args.subcommand;
90
+ if (!sub) {
91
+ if (json)
92
+ printJsonError('VALIDATION_ERROR', 'Missing subcommand');
93
+ else
94
+ printError('Missing subcommand. Available: list, add, remove, where, agents');
95
+ return ExitCode.USAGE_ERROR;
96
+ }
97
+ if (sub === 'agents') {
98
+ const agents = listSupportedAgents();
99
+ if (json)
100
+ printJsonOk({ agents });
101
+ else
102
+ process.stdout.write(agents.join('\n') + '\n');
103
+ return ExitCode.SUCCESS;
104
+ }
105
+ const agent = args.positionals[0];
106
+ if (!agent) {
107
+ if (json)
108
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
109
+ else
110
+ printError('Missing required argument: <agent>');
111
+ return ExitCode.USAGE_ERROR;
112
+ }
113
+ const paths = getSubagentPaths(agent);
114
+ if (!paths) {
115
+ if (json)
116
+ printJsonError('VALIDATION_ERROR', `Unknown agent for sub-agents: ${agent}`);
117
+ else
118
+ printError(`Unknown agent for sub-agents: ${agent}. Try: amux agent agents`);
119
+ return ExitCode.USAGE_ERROR;
120
+ }
121
+ switch (sub) {
122
+ case 'where': {
123
+ if (json)
124
+ printJsonOk({ agent, ...paths });
125
+ else {
126
+ printTable(['Scope', 'Path'], [
127
+ ['global', paths.global],
128
+ ['project', paths.project],
129
+ ]);
130
+ }
131
+ return ExitCode.SUCCESS;
132
+ }
133
+ case 'list': {
134
+ const scope = resolveScope(args, 'project');
135
+ const dir = getSubagentDir(agent, scope);
136
+ const entries = listAgentFiles(dir);
137
+ if (json)
138
+ printJsonOk({ agent, scope, dir, subagents: entries });
139
+ else if (entries.length === 0)
140
+ process.stdout.write(`(no sub-agents in ${dir})\n`);
141
+ else
142
+ printTable(['Name', 'Path'], entries.map((n) => [n, path.join(dir, n)]));
143
+ return ExitCode.SUCCESS;
144
+ }
145
+ case 'add': {
146
+ const source = args.positionals[1];
147
+ if (!source) {
148
+ if (json)
149
+ printJsonError('VALIDATION_ERROR', 'Missing source path');
150
+ else
151
+ printError('Usage: amux agent add <agent> <source> [--name <n>] [--global|--project]');
152
+ return ExitCode.USAGE_ERROR;
153
+ }
154
+ const absSource = path.resolve(source);
155
+ if (!fs.existsSync(absSource)) {
156
+ if (json)
157
+ printJsonError('VALIDATION_ERROR', `Source does not exist: ${absSource}`);
158
+ else
159
+ printError(`Source does not exist: ${absSource}`);
160
+ return ExitCode.GENERAL_ERROR;
161
+ }
162
+ const scope = resolveScope(args, 'project');
163
+ const dir = getSubagentDir(agent, scope);
164
+ const name = flagStr(args.flags, 'name') ?? path.basename(absSource);
165
+ const dst = path.join(dir, name);
166
+ if (fs.existsSync(dst)) {
167
+ if (flagBool(args.flags, 'force') !== true) {
168
+ if (json)
169
+ printJsonError('CONFLICT', `Already exists: ${dst} (use --force)`);
170
+ else
171
+ printError(`Already exists: ${dst} (use --force)`);
172
+ return ExitCode.GENERAL_ERROR;
173
+ }
174
+ removePath(dst);
175
+ }
176
+ fs.mkdirSync(dir, { recursive: true });
177
+ copyPath(absSource, dst);
178
+ if (json)
179
+ printJsonOk({ added: name, scope, path: dst });
180
+ else
181
+ process.stdout.write(`Installed sub-agent ${name} (${scope}) → ${dst}\n`);
182
+ return ExitCode.SUCCESS;
183
+ }
184
+ case 'remove': {
185
+ const name = args.positionals[1];
186
+ if (!name) {
187
+ if (json)
188
+ printJsonError('VALIDATION_ERROR', 'Missing sub-agent name');
189
+ else
190
+ printError('Usage: amux agent remove <agent> <name> [--global|--project]');
191
+ return ExitCode.USAGE_ERROR;
192
+ }
193
+ const scope = resolveScope(args, 'project');
194
+ const dir = getSubagentDir(agent, scope);
195
+ const target = path.join(dir, name);
196
+ if (!fs.existsSync(target)) {
197
+ if (json)
198
+ printJsonError('NOT_FOUND', `No sub-agent ${name} in ${dir}`);
199
+ else
200
+ printError(`No sub-agent ${name} in ${dir}`);
201
+ return ExitCode.GENERAL_ERROR;
202
+ }
203
+ removePath(target);
204
+ if (json)
205
+ printJsonOk({ removed: name, scope, path: target });
206
+ else
207
+ process.stdout.write(`Removed sub-agent ${name} (${scope})\n`);
208
+ return ExitCode.SUCCESS;
209
+ }
210
+ default: {
211
+ if (json)
212
+ printJsonError('VALIDATION_ERROR', `Unknown agent subcommand: ${sub}`);
213
+ else
214
+ printError(`Unknown agent subcommand: ${sub}`);
215
+ return ExitCode.USAGE_ERROR;
216
+ }
217
+ }
218
+ }
219
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AgentMuxClient } from '@a5c-ai/agent-mux-core';
2
+ import type { ParsedArgs } from '../../parse-args.js';
3
+ import type { FlagDef } from '../../parse-args.js';
4
+ export declare const GATEWAY_FLAGS: Record<string, FlagDef>;
5
+ export declare function gatewayCommand(_client: AgentMuxClient, args: ParsedArgs): Promise<number>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAQnD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWjD,CAAC;AAEF,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB/F"}
@@ -0,0 +1,39 @@
1
+ import { flagBool } from '../../parse-args.js';
2
+ import { ExitCode } from '../../exit-codes.js';
3
+ import { printError, printJsonError } from '../../output.js';
4
+ import { serveGatewayCommand } from './serve.js';
5
+ import { gatewayStatusCommand } from './status.js';
6
+ import { gatewayTokensCommand } from './tokens.js';
7
+ export const GATEWAY_FLAGS = {
8
+ 'config': { type: 'string' },
9
+ 'host': { type: 'string' },
10
+ 'port': { type: 'number' },
11
+ 'webui': { type: 'string' },
12
+ 'no-webui': { type: 'boolean' },
13
+ 'url': { type: 'string' },
14
+ 'name': { type: 'string' },
15
+ 'ttl-ms': { type: 'number' },
16
+ 'qr': { type: 'boolean' },
17
+ 'id': { type: 'string' },
18
+ };
19
+ export async function gatewayCommand(_client, args) {
20
+ const sub = args.subcommand;
21
+ const jsonMode = flagBool(args.flags, 'json') === true;
22
+ if (sub === 'serve') {
23
+ return await serveGatewayCommand(args);
24
+ }
25
+ if (sub === 'status') {
26
+ return await gatewayStatusCommand(args);
27
+ }
28
+ if (sub === 'tokens') {
29
+ return await gatewayTokensCommand(args);
30
+ }
31
+ if (jsonMode) {
32
+ printJsonError('VALIDATION_ERROR', 'Missing subcommand. Available: serve, tokens, status');
33
+ }
34
+ else {
35
+ printError('Missing subcommand. Available: serve, tokens, status');
36
+ }
37
+ return ExitCode.USAGE_ERROR;
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/gateway/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAA4B;IACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACzB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAuB,EAAE,IAAgB;IAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;IAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAEvD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,cAAc,CAAC,kBAAkB,EAAE,sDAAsD,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,sDAAsD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type GatewayConfig } from '@a5c-ai/agent-mux-gateway';
2
+ import type { ParsedArgs } from '../../parse-args.js';
3
+ export declare const DEFAULT_GATEWAY_CONFIG_PATH: string;
4
+ export declare function loadGatewayConfig(configPath: string): Promise<Partial<GatewayConfig>>;
5
+ export declare function serveGatewayCommand(args: ParsedArgs): Promise<number>;
6
+ //# sourceMappingURL=serve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/commands/gateway/serve.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,eAAO,MAAM,2BAA2B,QAA4D,CAAC;AAErG,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAa3F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3E"}
@@ -0,0 +1,67 @@
1
+ import * as fs from 'node:fs/promises';
2
+ import * as os from 'node:os';
3
+ import * as path from 'node:path';
4
+ import { createGateway, resolveGatewayConfig } from '@a5c-ai/agent-mux-gateway';
5
+ import YAML from 'yaml';
6
+ import { flagBool, flagNum, flagStr } from '../../parse-args.js';
7
+ import { ExitCode } from '../../exit-codes.js';
8
+ import { printInfo, printJsonOk } from '../../output.js';
9
+ export const DEFAULT_GATEWAY_CONFIG_PATH = path.join(os.homedir(), '.amux', 'gateway', 'config.yml');
10
+ export async function loadGatewayConfig(configPath) {
11
+ try {
12
+ const raw = await fs.readFile(configPath, 'utf8');
13
+ if (configPath.endsWith('.json')) {
14
+ return JSON.parse(raw);
15
+ }
16
+ return YAML.parse(raw) ?? {};
17
+ }
18
+ catch (error) {
19
+ if (error.code === 'ENOENT') {
20
+ return {};
21
+ }
22
+ throw error;
23
+ }
24
+ }
25
+ export async function serveGatewayCommand(args) {
26
+ const jsonMode = flagBool(args.flags, 'json') === true;
27
+ const configPath = flagStr(args.flags, 'config') ?? DEFAULT_GATEWAY_CONFIG_PATH;
28
+ const fileConfig = await loadGatewayConfig(configPath);
29
+ const config = resolveGatewayConfig({
30
+ ...fileConfig,
31
+ host: flagStr(args.flags, 'host') ?? fileConfig.host,
32
+ port: flagNum(args.flags, 'port') ?? fileConfig.port,
33
+ webuiRoot: flagStr(args.flags, 'webui') ?? fileConfig.webuiRoot,
34
+ enableWebui: flagBool(args.flags, 'no-webui') === true ? false : (fileConfig.enableWebui ?? true),
35
+ });
36
+ const gateway = createGateway(config);
37
+ await gateway.start();
38
+ if (jsonMode) {
39
+ printJsonOk({
40
+ host: gateway.server.address.host,
41
+ port: gateway.server.address.port,
42
+ configPath,
43
+ });
44
+ }
45
+ else {
46
+ printInfo(`Gateway listening on http://${gateway.server.address.host}:${gateway.server.address.port}`);
47
+ }
48
+ await new Promise((resolve, reject) => {
49
+ let settled = false;
50
+ const finish = async () => {
51
+ if (settled)
52
+ return;
53
+ settled = true;
54
+ try {
55
+ await gateway.stop();
56
+ resolve();
57
+ }
58
+ catch (error) {
59
+ reject(error);
60
+ }
61
+ };
62
+ process.once('SIGINT', () => void finish());
63
+ process.once('SIGTERM', () => void finish());
64
+ });
65
+ return ExitCode.SUCCESS;
66
+ }
67
+ //# sourceMappingURL=serve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/gateway/serve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ParsedArgs } from '../../parse-args.js';
2
+ export declare function gatewayStatusCommand(args: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/gateway/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB5E"}
@@ -0,0 +1,24 @@
1
+ import { flagBool, flagStr } from '../../parse-args.js';
2
+ import { ExitCode } from '../../exit-codes.js';
3
+ import { printError, printJsonOk, printKeyValue } from '../../output.js';
4
+ export async function gatewayStatusCommand(args) {
5
+ const url = (flagStr(args.flags, 'url') ?? 'http://127.0.0.1:7878').replace(/\/+$/, '');
6
+ const response = await fetch(`${url}/healthz`);
7
+ if (!response.ok) {
8
+ printError(`Gateway health check failed: ${response.status}`);
9
+ return ExitCode.GENERAL_ERROR;
10
+ }
11
+ const payload = await response.json();
12
+ if (flagBool(args.flags, 'json') === true) {
13
+ printJsonOk(payload);
14
+ return ExitCode.SUCCESS;
15
+ }
16
+ printKeyValue([
17
+ ['URL:', url],
18
+ ['OK:', String(payload['ok'])],
19
+ ['Version:', String(payload['serverVersion'] ?? '--')],
20
+ ['Time:', String(payload['serverTime'] ?? '--')],
21
+ ]);
22
+ return ExitCode.SUCCESS;
23
+ }
24
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/gateway/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAgB;IACzD,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,UAAU,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,QAAQ,CAAC,aAAa,CAAC;IAChC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA6B,CAAC;IACjE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,aAAa,CAAC;QACZ,CAAC,MAAM,EAAE,GAAG,CAAC;QACb,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,CAAC;QACtD,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,CAAC;KACjD,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ParsedArgs } from '../../parse-args.js';
2
+ export declare function gatewayTokensCommand(args: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/commands/gateway/tokens.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAqBtD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA6D5E"}
@@ -0,0 +1,75 @@
1
+ import * as os from 'node:os';
2
+ import { createRequire } from 'node:module';
3
+ import { MemoryTokenStore, SqliteTokenStore, resolveGatewayConfig } from '@a5c-ai/agent-mux-gateway';
4
+ import { flagBool, flagNum, flagStr } from '../../parse-args.js';
5
+ import { ExitCode } from '../../exit-codes.js';
6
+ import { printError, printJsonOk, printTable } from '../../output.js';
7
+ import { DEFAULT_GATEWAY_CONFIG_PATH, loadGatewayConfig } from './serve.js';
8
+ const require = createRequire(import.meta.url);
9
+ function resolveTokenStore(config) {
10
+ if (config.tokenStore)
11
+ return config.tokenStore;
12
+ if (config.tokenStoreKind === 'memory')
13
+ return new MemoryTokenStore();
14
+ return new SqliteTokenStore(config.tokenDbPath);
15
+ }
16
+ function renderQr(url, token) {
17
+ const qrcode = require('qrcode-terminal');
18
+ qrcode.generate(JSON.stringify({ url, token }), { small: true });
19
+ }
20
+ export async function gatewayTokensCommand(args) {
21
+ const jsonMode = flagBool(args.flags, 'json') === true;
22
+ const configPath = flagStr(args.flags, 'config') ?? DEFAULT_GATEWAY_CONFIG_PATH;
23
+ const config = resolveGatewayConfig(await loadGatewayConfig(configPath));
24
+ const store = resolveTokenStore(config);
25
+ const sub = args.positionals[0];
26
+ if (sub === 'list') {
27
+ const tokens = await store.list();
28
+ if (jsonMode) {
29
+ printJsonOk(tokens);
30
+ return ExitCode.SUCCESS;
31
+ }
32
+ printTable(['ID', 'Name', 'Created', 'Last Used', 'Revoked'], tokens.map((token) => [
33
+ token.id,
34
+ token.name,
35
+ new Date(token.createdAt).toISOString(),
36
+ token.lastUsedAt == null ? '--' : new Date(token.lastUsedAt).toISOString(),
37
+ token.revokedAt == null ? '--' : new Date(token.revokedAt).toISOString(),
38
+ ]));
39
+ return ExitCode.SUCCESS;
40
+ }
41
+ if (sub === 'create') {
42
+ const name = flagStr(args.flags, 'name') ?? `token@${os.hostname()}`;
43
+ const created = await store.create({
44
+ name,
45
+ ttlMs: flagNum(args.flags, 'ttl-ms') ?? null,
46
+ });
47
+ if (jsonMode) {
48
+ printJsonOk(created);
49
+ return ExitCode.SUCCESS;
50
+ }
51
+ process.stdout.write(`Token: ${created.plaintext}\n`);
52
+ process.stdout.write(`ID: ${created.id}\n`);
53
+ if (flagBool(args.flags, 'qr') === true) {
54
+ renderQr(flagStr(args.flags, 'url') ?? 'http://127.0.0.1:7878', created.plaintext);
55
+ }
56
+ return ExitCode.SUCCESS;
57
+ }
58
+ if (sub === 'revoke') {
59
+ const id = args.positionals[1] ?? flagStr(args.flags, 'id');
60
+ if (!id) {
61
+ printError('Missing token id for revoke');
62
+ return ExitCode.USAGE_ERROR;
63
+ }
64
+ const revoked = await store.revoke(id);
65
+ if (jsonMode) {
66
+ printJsonOk({ revoked });
67
+ return ExitCode.SUCCESS;
68
+ }
69
+ process.stdout.write(revoked ? `Revoked ${id}\n` : `Token not found: ${id}\n`);
70
+ return revoked ? ExitCode.SUCCESS : ExitCode.GENERAL_ERROR;
71
+ }
72
+ printError('Missing or unknown tokens subcommand. Available: list, create, revoke');
73
+ return ExitCode.USAGE_ERROR;
74
+ }
75
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/commands/gateway/tokens.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/commands/help.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgdH;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAMhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}