@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.
- package/dist/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +24 -6
- package/dist/bootstrap.js.map +1 -1
- package/dist/commands/agent.d.ts +12 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +219 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/gateway/index.d.ts +6 -0
- package/dist/commands/gateway/index.d.ts.map +1 -0
- package/dist/commands/gateway/index.js +39 -0
- package/dist/commands/gateway/index.js.map +1 -0
- package/dist/commands/gateway/serve.d.ts +6 -0
- package/dist/commands/gateway/serve.d.ts.map +1 -0
- package/dist/commands/gateway/serve.js +67 -0
- package/dist/commands/gateway/serve.js.map +1 -0
- package/dist/commands/gateway/status.d.ts +3 -0
- package/dist/commands/gateway/status.d.ts.map +1 -0
- package/dist/commands/gateway/status.js +24 -0
- package/dist/commands/gateway/status.js.map +1 -0
- package/dist/commands/gateway/tokens.d.ts +3 -0
- package/dist/commands/gateway/tokens.d.ts.map +1 -0
- package/dist/commands/gateway/tokens.js +75 -0
- package/dist/commands/gateway/tokens.js.map +1 -0
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +100 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/hooks.d.ts.map +1 -1
- package/dist/commands/hooks.js +1 -13
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/launch.d.ts +52 -0
- package/dist/commands/launch.d.ts.map +1 -0
- package/dist/commands/launch.js +580 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +15 -11
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +164 -11
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +28 -9
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +91 -24
- package/dist/commands/run.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-skill-paths.d.ts +1 -0
- package/dist/lib/agent-skill-paths.d.ts.map +1 -1
- package/dist/lib/agent-skill-paths.js +18 -2
- package/dist/lib/agent-skill-paths.js.map +1 -1
- package/dist/lib/agent-subagent-paths.d.ts +9 -0
- package/dist/lib/agent-subagent-paths.d.ts.map +1 -0
- package/dist/lib/agent-subagent-paths.js +54 -0
- package/dist/lib/agent-subagent-paths.js.map +1 -0
- package/dist/parse-args.d.ts.map +1 -1
- package/dist/parse-args.js +6 -2
- package/dist/parse-args.js.map +1 -1
- package/dist/read-stdin.d.ts +2 -0
- package/dist/read-stdin.d.ts.map +1 -0
- package/dist/read-stdin.js +14 -0
- package/dist/read-stdin.js.map +1 -0
- package/package.json +10 -3
package/dist/bootstrap.d.ts
CHANGED
|
@@ -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
|
|
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
|
/**
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
-
|
|
34
|
-
registry.registerBuiltIn
|
|
42
|
+
try {
|
|
43
|
+
if (typeof registry.registerBuiltIn === 'function') {
|
|
44
|
+
registry.registerBuiltIn(adapter);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
registry.register(adapter);
|
|
48
|
+
}
|
|
35
49
|
}
|
|
36
|
-
|
|
37
|
-
|
|
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
|
}
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -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,
|
|
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 @@
|
|
|
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 @@
|
|
|
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;
|
|
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"}
|