@a5c-ai/agent-mux-cli 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/bootstrap.d.ts +14 -0
  4. package/dist/bootstrap.d.ts.map +1 -0
  5. package/dist/bootstrap.js +41 -0
  6. package/dist/bootstrap.js.map +1 -0
  7. package/dist/commands/adapters.d.ts +9 -0
  8. package/dist/commands/adapters.d.ts.map +1 -0
  9. package/dist/commands/adapters.js +132 -0
  10. package/dist/commands/adapters.js.map +1 -0
  11. package/dist/commands/auth.d.ts +9 -0
  12. package/dist/commands/auth.d.ts.map +1 -0
  13. package/dist/commands/auth.js +137 -0
  14. package/dist/commands/auth.js.map +1 -0
  15. package/dist/commands/config.d.ts +9 -0
  16. package/dist/commands/config.d.ts.map +1 -0
  17. package/dist/commands/config.js +221 -0
  18. package/dist/commands/config.js.map +1 -0
  19. package/dist/commands/detect-host.d.ts +8 -0
  20. package/dist/commands/detect-host.d.ts.map +1 -0
  21. package/dist/commands/detect-host.js +33 -0
  22. package/dist/commands/detect-host.js.map +1 -0
  23. package/dist/commands/doctor.d.ts +4 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +120 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/help.d.ts +14 -0
  28. package/dist/commands/help.d.ts.map +1 -0
  29. package/dist/commands/help.js +346 -0
  30. package/dist/commands/help.js.map +1 -0
  31. package/dist/commands/hooks.d.ts +17 -0
  32. package/dist/commands/hooks.d.ts.map +1 -0
  33. package/dist/commands/hooks.js +219 -0
  34. package/dist/commands/hooks.js.map +1 -0
  35. package/dist/commands/install-helpers.d.ts +25 -0
  36. package/dist/commands/install-helpers.d.ts.map +1 -0
  37. package/dist/commands/install-helpers.js +58 -0
  38. package/dist/commands/install-helpers.js.map +1 -0
  39. package/dist/commands/install.d.ts +25 -0
  40. package/dist/commands/install.d.ts.map +1 -0
  41. package/dist/commands/install.js +406 -0
  42. package/dist/commands/install.js.map +1 -0
  43. package/dist/commands/models.d.ts +9 -0
  44. package/dist/commands/models.d.ts.map +1 -0
  45. package/dist/commands/models.js +153 -0
  46. package/dist/commands/models.js.map +1 -0
  47. package/dist/commands/plugins.d.ts +9 -0
  48. package/dist/commands/plugins.d.ts.map +1 -0
  49. package/dist/commands/plugins.js +180 -0
  50. package/dist/commands/plugins.js.map +1 -0
  51. package/dist/commands/profiles.d.ts +9 -0
  52. package/dist/commands/profiles.d.ts.map +1 -0
  53. package/dist/commands/profiles.js +206 -0
  54. package/dist/commands/profiles.js.map +1 -0
  55. package/dist/commands/remote.d.ts +31 -0
  56. package/dist/commands/remote.d.ts.map +1 -0
  57. package/dist/commands/remote.js +204 -0
  58. package/dist/commands/remote.js.map +1 -0
  59. package/dist/commands/run.d.ts +28 -0
  60. package/dist/commands/run.d.ts.map +1 -0
  61. package/dist/commands/run.js +293 -0
  62. package/dist/commands/run.js.map +1 -0
  63. package/dist/commands/sessions.d.ts +9 -0
  64. package/dist/commands/sessions.d.ts.map +1 -0
  65. package/dist/commands/sessions.js +225 -0
  66. package/dist/commands/sessions.js.map +1 -0
  67. package/dist/exit-codes.d.ts +33 -0
  68. package/dist/exit-codes.d.ts.map +1 -0
  69. package/dist/exit-codes.js +68 -0
  70. package/dist/exit-codes.js.map +1 -0
  71. package/dist/index.d.ts +23 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +188 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/output.d.ts +56 -0
  76. package/dist/output.d.ts.map +1 -0
  77. package/dist/output.js +129 -0
  78. package/dist/output.js.map +1 -0
  79. package/dist/parse-args.d.ts +58 -0
  80. package/dist/parse-args.d.ts.map +1 -0
  81. package/dist/parse-args.js +257 -0
  82. package/dist/parse-args.js.map +1 -0
  83. package/package.json +57 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Exit code constants and ErrorCode-to-exit-code mapping.
3
+ *
4
+ * @see docs/10-cli-reference.md Section 4
5
+ */
6
+ /** CLI exit code constants. */
7
+ export const ExitCode = {
8
+ SUCCESS: 0,
9
+ GENERAL_ERROR: 1,
10
+ USAGE_ERROR: 2,
11
+ AGENT_NOT_FOUND: 3,
12
+ AGENT_NOT_INSTALLED: 4,
13
+ AUTH_ERROR: 5,
14
+ CAPABILITY_ERROR: 6,
15
+ CONFIG_ERROR: 7,
16
+ SESSION_NOT_FOUND: 8,
17
+ PROFILE_NOT_FOUND: 9,
18
+ PLUGIN_ERROR: 10,
19
+ TIMEOUT: 11,
20
+ AGENT_CRASHED: 12,
21
+ ABORTED: 13,
22
+ RATE_LIMITED: 14,
23
+ CONTEXT_EXCEEDED: 15,
24
+ };
25
+ /**
26
+ * Map an ErrorCode to an exit code.
27
+ *
28
+ * @see docs/10-cli-reference.md Section 4.1
29
+ */
30
+ export function errorCodeToExitCode(code) {
31
+ switch (code) {
32
+ case 'VALIDATION_ERROR':
33
+ return ExitCode.USAGE_ERROR;
34
+ case 'AGENT_NOT_FOUND':
35
+ case 'UNKNOWN_AGENT':
36
+ return ExitCode.AGENT_NOT_FOUND;
37
+ case 'AGENT_NOT_INSTALLED':
38
+ return ExitCode.AGENT_NOT_INSTALLED;
39
+ case 'AUTH_ERROR':
40
+ return ExitCode.AUTH_ERROR;
41
+ case 'CAPABILITY_ERROR':
42
+ return ExitCode.CAPABILITY_ERROR;
43
+ case 'CONFIG_ERROR':
44
+ case 'CONFIG_LOCK_ERROR':
45
+ return ExitCode.CONFIG_ERROR;
46
+ case 'SESSION_NOT_FOUND':
47
+ return ExitCode.SESSION_NOT_FOUND;
48
+ case 'PROFILE_NOT_FOUND':
49
+ return ExitCode.PROFILE_NOT_FOUND;
50
+ case 'PLUGIN_ERROR':
51
+ return ExitCode.PLUGIN_ERROR;
52
+ case 'TIMEOUT':
53
+ case 'INACTIVITY_TIMEOUT':
54
+ return ExitCode.TIMEOUT;
55
+ case 'AGENT_CRASH':
56
+ return ExitCode.AGENT_CRASHED;
57
+ case 'ABORTED':
58
+ return ExitCode.ABORTED;
59
+ case 'RATE_LIMITED':
60
+ return ExitCode.RATE_LIMITED;
61
+ case 'CONTEXT_EXCEEDED':
62
+ return ExitCode.CONTEXT_EXCEEDED;
63
+ // General error: SPAWN_ERROR, INTERNAL, PARSE_ERROR, and everything else
64
+ default:
65
+ return ExitCode.GENERAL_ERROR;
66
+ }
67
+ }
68
+ //# sourceMappingURL=exit-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit-codes.js","sourceRoot":"","sources":["../src/exit-codes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,+BAA+B;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,CAAC;IAChB,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,CAAC;IACtB,UAAU,EAAE,CAAC;IACb,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE;IACX,aAAa,EAAE,EAAE;IACjB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;IAChB,gBAAgB,EAAE,EAAE;CACZ,CAAC;AAIX;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB;YACrB,OAAO,QAAQ,CAAC,WAAW,CAAC;QAC9B,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,qBAAqB;YACxB,OAAO,QAAQ,CAAC,mBAAmB,CAAC;QACtC,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,UAAU,CAAC;QAC7B,KAAK,kBAAkB;YACrB,OAAO,QAAQ,CAAC,gBAAgB,CAAC;QACnC,KAAK,cAAc,CAAC;QACpB,KAAK,mBAAmB;YACtB,OAAO,QAAQ,CAAC,YAAY,CAAC;QAC/B,KAAK,mBAAmB;YACtB,OAAO,QAAQ,CAAC,iBAAiB,CAAC;QACpC,KAAK,mBAAmB;YACtB,OAAO,QAAQ,CAAC,iBAAiB,CAAC;QACpC,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,YAAY,CAAC;QAC/B,KAAK,SAAS,CAAC;QACf,KAAK,oBAAoB;YACvB,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC,aAAa,CAAC;QAChC,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,KAAK,cAAc;YACjB,OAAO,QAAQ,CAAC,YAAY,CAAC;QAC/B,KAAK,kBAAkB;YACrB,OAAO,QAAQ,CAAC,gBAAgB,CAAC;QACnC,yEAAyE;QACzE;YACE,OAAO,QAAQ,CAAC,aAAa,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @a5c-ai/agent-mux-cli
4
+ *
5
+ * CLI binary entry point for the `amux` command.
6
+ *
7
+ * Parses arguments, creates a client, and dispatches to the appropriate
8
+ * command handler. Exports core functionality for programmatic use.
9
+ */
10
+ export { createClient } from '@a5c-ai/agent-mux-core';
11
+ export { ExitCode, errorCodeToExitCode } from './exit-codes.js';
12
+ export { parseArgs } from './parse-args.js';
13
+ export { registerBuiltInAdapters } from './bootstrap.js';
14
+ export type { ParsedArgs, FlagDef } from './parse-args.js';
15
+ export { main as runCli };
16
+ /**
17
+ * Main CLI entry point.
18
+ *
19
+ * @param argv - Command-line arguments (defaults to process.argv.slice(2))
20
+ * @returns Exit code
21
+ */
22
+ export declare function main(argv?: string[]): Promise<number>;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAyB1B;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgJ3D"}
package/dist/index.js ADDED
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @a5c-ai/agent-mux-cli
4
+ *
5
+ * CLI binary entry point for the `amux` command.
6
+ *
7
+ * Parses arguments, creates a client, and dispatches to the appropriate
8
+ * command handler. Exports core functionality for programmatic use.
9
+ */
10
+ export { createClient } from '@a5c-ai/agent-mux-core';
11
+ export { ExitCode, errorCodeToExitCode } from './exit-codes.js';
12
+ export { parseArgs } from './parse-args.js';
13
+ export { registerBuiltInAdapters } from './bootstrap.js';
14
+ // Re-exported so the meta-package shim (`@a5c-ai/agent-mux`) can drive the CLI.
15
+ export { main as runCli };
16
+ import { createClient, AgentMuxError } from '@a5c-ai/agent-mux-core';
17
+ import { parseArgs } from './parse-args.js';
18
+ import { flagBool, flagStr } from './parse-args.js';
19
+ import { RUN_FLAGS } from './commands/run.js';
20
+ import { INSTALL_FLAGS } from './commands/install.js';
21
+ import { ExitCode, errorCodeToExitCode } from './exit-codes.js';
22
+ import { setColorEnabled, printError, printJsonError } from './output.js';
23
+ import { printHelp, printVersion } from './commands/help.js';
24
+ import { runCommand } from './commands/run.js';
25
+ import { adaptersCommand } from './commands/adapters.js';
26
+ import { sessionsCommand } from './commands/sessions.js';
27
+ import { configCommand } from './commands/config.js';
28
+ import { authCommand } from './commands/auth.js';
29
+ import { modelsCommand } from './commands/models.js';
30
+ import { profilesCommand } from './commands/profiles.js';
31
+ import { pluginsCommand } from './commands/plugins.js';
32
+ import { installCommand } from './commands/install.js';
33
+ import { detectHostCommand } from './commands/detect-host.js';
34
+ import { remoteCommand, REMOTE_FLAGS } from './commands/remote.js';
35
+ import { hooksCommand, HOOKS_FLAGS } from './commands/hooks.js';
36
+ import { doctorCommand } from './commands/doctor.js';
37
+ import { registerBuiltInAdapters } from './bootstrap.js';
38
+ /**
39
+ * Main CLI entry point.
40
+ *
41
+ * @param argv - Command-line arguments (defaults to process.argv.slice(2))
42
+ * @returns Exit code
43
+ */
44
+ export async function main(argv) {
45
+ const rawArgs = argv ?? process.argv.slice(2);
46
+ // First pass: parse with all known flags to capture global flags
47
+ const args = parseArgs(rawArgs, { ...RUN_FLAGS, ...INSTALL_FLAGS, ...REMOTE_FLAGS, ...HOOKS_FLAGS });
48
+ // Handle --no-color
49
+ if (flagBool(args.flags, 'no-color') === true) {
50
+ setColorEnabled(false);
51
+ }
52
+ // Handle --version / -V
53
+ if (flagBool(args.flags, 'version') === true) {
54
+ printVersion();
55
+ return ExitCode.SUCCESS;
56
+ }
57
+ // Handle `amux version` command
58
+ if (args.command === 'version') {
59
+ printVersion();
60
+ return ExitCode.SUCCESS;
61
+ }
62
+ // Handle --help / -h
63
+ if (flagBool(args.flags, 'help') === true) {
64
+ printHelp(args.command);
65
+ return ExitCode.SUCCESS;
66
+ }
67
+ // Handle `amux help [command]`
68
+ if (args.command === 'help') {
69
+ printHelp(args.positionals[0] ?? args.subcommand);
70
+ return ExitCode.SUCCESS;
71
+ }
72
+ // No command — print help. But if there are stray positionals, treat
73
+ // the first as an unknown command so users get actionable feedback
74
+ // instead of silently seeing the help text with a success exit code.
75
+ if (!args.command) {
76
+ if (args.positionals.length > 0) {
77
+ const unknown = args.positionals[0];
78
+ const jsonModeEarly = flagBool(args.flags, 'json') === true;
79
+ if (jsonModeEarly) {
80
+ printJsonError('VALIDATION_ERROR', `Unknown command: ${unknown}`);
81
+ }
82
+ else {
83
+ printError(`Unknown command: ${unknown}. Run "amux help" for usage.`);
84
+ }
85
+ return ExitCode.USAGE_ERROR;
86
+ }
87
+ printHelp();
88
+ return ExitCode.SUCCESS;
89
+ }
90
+ // Create client with global flag overrides
91
+ const jsonMode = flagBool(args.flags, 'json') === true;
92
+ try {
93
+ const clientOpts = {};
94
+ const configDir = flagStr(args.flags, 'config-dir');
95
+ const projectDir = flagStr(args.flags, 'project-dir');
96
+ const debug = flagBool(args.flags, 'debug');
97
+ const agent = flagStr(args.flags, 'agent');
98
+ const model = flagStr(args.flags, 'model');
99
+ if (configDir)
100
+ clientOpts['configDir'] = configDir;
101
+ if (projectDir)
102
+ clientOpts['projectConfigDir'] = projectDir;
103
+ if (debug)
104
+ clientOpts['debug'] = true;
105
+ if (agent)
106
+ clientOpts['defaultAgent'] = agent;
107
+ if (model)
108
+ clientOpts['defaultModel'] = model;
109
+ const client = createClient(clientOpts);
110
+ registerBuiltInAdapters(client);
111
+ // Dispatch to command handler
112
+ switch (args.command) {
113
+ case 'run':
114
+ return await runCommand(client, args);
115
+ case 'adapters':
116
+ return await adaptersCommand(client, args);
117
+ case 'sessions':
118
+ return await sessionsCommand(client, args);
119
+ case 'config':
120
+ return await configCommand(client, args);
121
+ case 'auth':
122
+ return await authCommand(client, args);
123
+ case 'models':
124
+ return await modelsCommand(client, args);
125
+ case 'profiles':
126
+ return await profilesCommand(client, args);
127
+ case 'plugins':
128
+ return await pluginsCommand(client, args);
129
+ case 'install':
130
+ case 'uninstall':
131
+ case 'update':
132
+ case 'detect':
133
+ return await installCommand(client, args);
134
+ case 'detect-host':
135
+ return await detectHostCommand(client, args);
136
+ case 'remote':
137
+ return await remoteCommand(client, args);
138
+ case 'hooks':
139
+ return await hooksCommand(client, args);
140
+ case 'doctor':
141
+ return await doctorCommand(client, args);
142
+ default:
143
+ if (jsonMode) {
144
+ printJsonError('VALIDATION_ERROR', `Unknown command: ${args.command}`);
145
+ }
146
+ else {
147
+ printError(`Unknown command: ${args.command}. Run "amux help" for usage.`);
148
+ }
149
+ return ExitCode.USAGE_ERROR;
150
+ }
151
+ }
152
+ catch (err) {
153
+ if (err instanceof AgentMuxError) {
154
+ if (jsonMode) {
155
+ printJsonError(err.code, err.message, err.recoverable);
156
+ }
157
+ else {
158
+ printError(err.message);
159
+ }
160
+ return errorCodeToExitCode(err.code);
161
+ }
162
+ const message = err instanceof Error ? err.message : String(err);
163
+ if (jsonMode) {
164
+ printJsonError('INTERNAL', message);
165
+ }
166
+ else {
167
+ printError(message);
168
+ }
169
+ return ExitCode.GENERAL_ERROR;
170
+ }
171
+ }
172
+ // Run when executed directly (not imported)
173
+ // We detect this by checking if this file is the entry point
174
+ const isDirectRun = typeof process !== 'undefined' &&
175
+ process.argv[1] &&
176
+ (process.argv[1].endsWith('/index.js') ||
177
+ process.argv[1].endsWith('\\index.js') ||
178
+ process.argv[1].endsWith('/amux') ||
179
+ process.argv[1].endsWith('\\amux'));
180
+ if (isDirectRun) {
181
+ main().then((code) => {
182
+ process.exitCode = code;
183
+ }).catch((err) => {
184
+ process.stderr.write(`Fatal error: ${err instanceof Error ? err.message : String(err)}\n`);
185
+ process.exitCode = 1;
186
+ });
187
+ }
188
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Output formatting utilities for the amux CLI.
3
+ *
4
+ * Supports human-readable tables/text and JSON output modes.
5
+ * Color is supported via ANSI codes, gated by --no-color / NO_COLOR / TTY detection.
6
+ */
7
+ export declare function setColorEnabled(enabled: boolean): void;
8
+ export declare const color: {
9
+ bold: (text: string) => string;
10
+ dim: (text: string) => string;
11
+ red: (text: string) => string;
12
+ green: (text: string) => string;
13
+ yellow: (text: string) => string;
14
+ cyan: (text: string) => string;
15
+ };
16
+ /**
17
+ * Print a table in human-readable format.
18
+ */
19
+ export declare function printTable(headers: string[], rows: string[][]): void;
20
+ /**
21
+ * Print key-value pairs in human-readable format.
22
+ */
23
+ export declare function printKeyValue(pairs: [string, string][]): void;
24
+ /**
25
+ * Convert a typed object (possibly with a sealed index signature) into a plain
26
+ * `Record<string, unknown>` suitable for serialization / column-extraction
27
+ * helpers. Uses JSON round-trip so it drops undefined and functions and loses
28
+ * prototype — appropriate for the CLI's read-only render paths.
29
+ */
30
+ export declare function toPlain<T>(value: T): Record<string, unknown>;
31
+ export declare function toPlainArray<T>(values: readonly T[]): Record<string, unknown>[];
32
+ /**
33
+ * Print JSON output.
34
+ */
35
+ export declare function printJson(data: unknown): void;
36
+ /**
37
+ * Print a JSON-wrapped success response.
38
+ */
39
+ export declare function printJsonOk(data: unknown): void;
40
+ /**
41
+ * Print a JSON-wrapped error response.
42
+ */
43
+ export declare function printJsonError(code: string, message: string, recoverable?: boolean): void;
44
+ /**
45
+ * Print an error message to stderr.
46
+ */
47
+ export declare function printError(message: string): void;
48
+ /**
49
+ * Print a warning message to stderr.
50
+ */
51
+ export declare function printWarning(message: string): void;
52
+ /**
53
+ * Print an info message to stderr.
54
+ */
55
+ export declare function printInfo(message: string): void;
56
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEtD;AAsBD,eAAO,MAAM,KAAK;iBACH,MAAM;gBACP,MAAM;gBACN,MAAM;kBACJ,MAAM;mBACL,MAAM;iBACR,MAAM;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CA6BpE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAU7D;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE/E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,GAAG,IAAI,CAEhG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C"}
package/dist/output.js ADDED
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Output formatting utilities for the amux CLI.
3
+ *
4
+ * Supports human-readable tables/text and JSON output modes.
5
+ * Color is supported via ANSI codes, gated by --no-color / NO_COLOR / TTY detection.
6
+ */
7
+ /** Whether color output is enabled. */
8
+ let colorEnabled;
9
+ export function setColorEnabled(enabled) {
10
+ colorEnabled = enabled;
11
+ }
12
+ function isColorEnabled() {
13
+ if (colorEnabled !== undefined)
14
+ return colorEnabled;
15
+ if (process.env['NO_COLOR'])
16
+ return false;
17
+ if (!process.stdout.isTTY)
18
+ return false;
19
+ return true;
20
+ }
21
+ // ANSI codes
22
+ const RESET = '\x1b[0m';
23
+ const BOLD = '\x1b[1m';
24
+ const DIM = '\x1b[2m';
25
+ const RED = '\x1b[31m';
26
+ const GREEN = '\x1b[32m';
27
+ const YELLOW = '\x1b[33m';
28
+ const CYAN = '\x1b[36m';
29
+ function c(code, text) {
30
+ return isColorEnabled() ? `${code}${text}${RESET}` : text;
31
+ }
32
+ export const color = {
33
+ bold: (text) => c(BOLD, text),
34
+ dim: (text) => c(DIM, text),
35
+ red: (text) => c(RED, text),
36
+ green: (text) => c(GREEN, text),
37
+ yellow: (text) => c(YELLOW, text),
38
+ cyan: (text) => c(CYAN, text),
39
+ };
40
+ /**
41
+ * Print a table in human-readable format.
42
+ */
43
+ export function printTable(headers, rows) {
44
+ if (rows.length === 0) {
45
+ process.stdout.write('(no results)\n');
46
+ return;
47
+ }
48
+ // Calculate column widths
49
+ const widths = headers.map((h, i) => {
50
+ let max = h.length;
51
+ for (const row of rows) {
52
+ const cell = row[i] ?? '';
53
+ if (cell.length > max)
54
+ max = cell.length;
55
+ }
56
+ return max;
57
+ });
58
+ // Print header
59
+ const headerLine = headers.map((h, i) => h.padEnd(widths[i])).join(' ');
60
+ process.stdout.write(c(BOLD, headerLine) + '\n');
61
+ // Print separator
62
+ const sep = widths.map((w) => '-'.repeat(w)).join(' ');
63
+ process.stdout.write(c(DIM, sep) + '\n');
64
+ // Print rows
65
+ for (const row of rows) {
66
+ const line = row.map((cell, i) => (cell ?? '').padEnd(widths[i])).join(' ');
67
+ process.stdout.write(line + '\n');
68
+ }
69
+ }
70
+ /**
71
+ * Print key-value pairs in human-readable format.
72
+ */
73
+ export function printKeyValue(pairs) {
74
+ if (pairs.length === 0)
75
+ return;
76
+ const maxKeyLen = Math.max(...pairs.map(([k]) => k.length));
77
+ for (const [key, value] of pairs) {
78
+ process.stdout.write(`${c(BOLD, key.padEnd(maxKeyLen))} ${value}\n`);
79
+ }
80
+ }
81
+ /**
82
+ * Convert a typed object (possibly with a sealed index signature) into a plain
83
+ * `Record<string, unknown>` suitable for serialization / column-extraction
84
+ * helpers. Uses JSON round-trip so it drops undefined and functions and loses
85
+ * prototype — appropriate for the CLI's read-only render paths.
86
+ */
87
+ export function toPlain(value) {
88
+ return JSON.parse(JSON.stringify(value));
89
+ }
90
+ export function toPlainArray(values) {
91
+ return values.map((v) => toPlain(v));
92
+ }
93
+ /**
94
+ * Print JSON output.
95
+ */
96
+ export function printJson(data) {
97
+ process.stdout.write(JSON.stringify(data, null, 2) + '\n');
98
+ }
99
+ /**
100
+ * Print a JSON-wrapped success response.
101
+ */
102
+ export function printJsonOk(data) {
103
+ printJson({ ok: true, data });
104
+ }
105
+ /**
106
+ * Print a JSON-wrapped error response.
107
+ */
108
+ export function printJsonError(code, message, recoverable = false) {
109
+ printJson({ ok: false, error: { code, message, recoverable } });
110
+ }
111
+ /**
112
+ * Print an error message to stderr.
113
+ */
114
+ export function printError(message) {
115
+ process.stderr.write(c(RED, 'Error: ') + message + '\n');
116
+ }
117
+ /**
118
+ * Print a warning message to stderr.
119
+ */
120
+ export function printWarning(message) {
121
+ process.stderr.write(c(YELLOW, 'Warning: ') + message + '\n');
122
+ }
123
+ /**
124
+ * Print an info message to stderr.
125
+ */
126
+ export function printInfo(message) {
127
+ process.stderr.write(c(CYAN, 'Info: ') + message + '\n');
128
+ }
129
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Lightweight argument parser for the amux CLI.
3
+ *
4
+ * Zero external dependencies. Handles:
5
+ * - Long flags (--flag, --flag=value, --no-flag for booleans)
6
+ * - Short flags (-a, -a value, combined -abc)
7
+ * - Positional arguments
8
+ * - -- terminator
9
+ * - Repeatable flags (--tag x --tag y)
10
+ */
11
+ /** Parsed CLI arguments. */
12
+ export interface ParsedArgs {
13
+ /** The command (e.g., 'run', 'adapters'). */
14
+ command: string | undefined;
15
+ /** The subcommand (e.g., 'list', 'show'). */
16
+ subcommand: string | undefined;
17
+ /** Remaining positional arguments after command/subcommand. */
18
+ positionals: string[];
19
+ /** Named flags. Boolean flags are true/false. String/number flags are strings. */
20
+ flags: Record<string, string | boolean | string[]>;
21
+ }
22
+ /** Known flag definition for the parser. */
23
+ export interface FlagDef {
24
+ /** Short alias (single character). */
25
+ short?: string;
26
+ /** Flag type. */
27
+ type: 'boolean' | 'string' | 'number';
28
+ /** Whether the flag can be specified multiple times. */
29
+ repeatable?: boolean;
30
+ }
31
+ /**
32
+ * Global flags recognized by all commands.
33
+ */
34
+ export declare const GLOBAL_FLAGS: Record<string, FlagDef>;
35
+ /**
36
+ * Parse argv into structured args.
37
+ *
38
+ * @param argv - Arguments (typically process.argv.slice(2))
39
+ * @param extraFlags - Additional command-specific flag definitions
40
+ */
41
+ export declare function parseArgs(argv: string[], extraFlags?: Record<string, FlagDef>): ParsedArgs;
42
+ /**
43
+ * Get a flag value as a string, or undefined.
44
+ */
45
+ export declare function flagStr(flags: Record<string, string | boolean | string[]>, name: string): string | undefined;
46
+ /**
47
+ * Get a flag value as a number, or undefined.
48
+ */
49
+ export declare function flagNum(flags: Record<string, string | boolean | string[]>, name: string): number | undefined;
50
+ /**
51
+ * Get a flag value as a boolean.
52
+ */
53
+ export declare function flagBool(flags: Record<string, string | boolean | string[]>, name: string): boolean | undefined;
54
+ /**
55
+ * Get a flag value as a string array (for repeatable flags).
56
+ */
57
+ export declare function flagArr(flags: Record<string, string | boolean | string[]>, name: string): string[];
58
+ //# sourceMappingURL=parse-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-args.d.ts","sourceRoot":"","sources":["../src/parse-args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,4BAA4B;AAC5B,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B,6CAA6C;IAC7C,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAE/B,+DAA+D;IAC/D,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC;CACpD;AAED,4CAA4C;AAC5C,MAAM,WAAW,OAAO;IACtB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iBAAiB;IACjB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAEtC,wDAAwD;IACxD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWhD,CAAC;AAiBF;;;;;GAKG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,UAAU,CAoLZ;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK5G;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM5G;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAM9G;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKlG"}