@a5c-ai/adapters-cli 5.1.1-staging.52898ebfc24f

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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/bootstrap.d.ts +13 -0
  4. package/dist/bootstrap.d.ts.map +1 -0
  5. package/dist/bootstrap.js +59 -0
  6. package/dist/bootstrap.js.map +1 -0
  7. package/dist/commands/adapters.d.ts +4 -0
  8. package/dist/commands/adapters.d.ts.map +1 -0
  9. package/dist/commands/adapters.js +5 -0
  10. package/dist/commands/adapters.js.map +1 -0
  11. package/dist/commands/agent.d.ts +11 -0
  12. package/dist/commands/agent.d.ts.map +1 -0
  13. package/dist/commands/agent.js +219 -0
  14. package/dist/commands/agent.js.map +1 -0
  15. package/dist/commands/auth.d.ts +4 -0
  16. package/dist/commands/auth.d.ts.map +1 -0
  17. package/dist/commands/auth.js +5 -0
  18. package/dist/commands/auth.js.map +1 -0
  19. package/dist/commands/config.d.ts +4 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +5 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/detect-host.d.ts +4 -0
  24. package/dist/commands/detect-host.d.ts.map +1 -0
  25. package/dist/commands/detect-host.js +5 -0
  26. package/dist/commands/detect-host.js.map +1 -0
  27. package/dist/commands/doctor.d.ts +3 -0
  28. package/dist/commands/doctor.d.ts.map +1 -0
  29. package/dist/commands/doctor.js +120 -0
  30. package/dist/commands/doctor.js.map +1 -0
  31. package/dist/commands/gateway/index.d.ts +5 -0
  32. package/dist/commands/gateway/index.d.ts.map +1 -0
  33. package/dist/commands/gateway/index.js +39 -0
  34. package/dist/commands/gateway/index.js.map +1 -0
  35. package/dist/commands/gateway/serve.d.ts +5 -0
  36. package/dist/commands/gateway/serve.d.ts.map +1 -0
  37. package/dist/commands/gateway/serve.js +76 -0
  38. package/dist/commands/gateway/serve.js.map +1 -0
  39. package/dist/commands/gateway/status.d.ts +2 -0
  40. package/dist/commands/gateway/status.d.ts.map +1 -0
  41. package/dist/commands/gateway/status.js +24 -0
  42. package/dist/commands/gateway/status.js.map +1 -0
  43. package/dist/commands/gateway/tokens.d.ts +2 -0
  44. package/dist/commands/gateway/tokens.d.ts.map +1 -0
  45. package/dist/commands/gateway/tokens.js +85 -0
  46. package/dist/commands/gateway/tokens.js.map +1 -0
  47. package/dist/commands/help.d.ts +13 -0
  48. package/dist/commands/help.d.ts.map +1 -0
  49. package/dist/commands/help.js +501 -0
  50. package/dist/commands/help.js.map +1 -0
  51. package/dist/commands/hooks.d.ts +16 -0
  52. package/dist/commands/hooks.d.ts.map +1 -0
  53. package/dist/commands/hooks.js +207 -0
  54. package/dist/commands/hooks.js.map +1 -0
  55. package/dist/commands/install-helpers.d.ts +5 -0
  56. package/dist/commands/install-helpers.d.ts.map +1 -0
  57. package/dist/commands/install-helpers.js +5 -0
  58. package/dist/commands/install-helpers.js.map +1 -0
  59. package/dist/commands/install.d.ts +4 -0
  60. package/dist/commands/install.d.ts.map +1 -0
  61. package/dist/commands/install.js +5 -0
  62. package/dist/commands/install.js.map +1 -0
  63. package/dist/commands/launch-bridge-hooks.d.ts +8 -0
  64. package/dist/commands/launch-bridge-hooks.d.ts.map +1 -0
  65. package/dist/commands/launch-bridge-hooks.js +8 -0
  66. package/dist/commands/launch-bridge-hooks.js.map +1 -0
  67. package/dist/commands/launch-completion-engine.d.ts +7 -0
  68. package/dist/commands/launch-completion-engine.d.ts.map +1 -0
  69. package/dist/commands/launch-completion-engine.js +8 -0
  70. package/dist/commands/launch-completion-engine.js.map +1 -0
  71. package/dist/commands/launch.d.ts +8 -0
  72. package/dist/commands/launch.d.ts.map +1 -0
  73. package/dist/commands/launch.js +8 -0
  74. package/dist/commands/launch.js.map +1 -0
  75. package/dist/commands/mcp.d.ts +3 -0
  76. package/dist/commands/mcp.d.ts.map +1 -0
  77. package/dist/commands/mcp.js +93 -0
  78. package/dist/commands/mcp.js.map +1 -0
  79. package/dist/commands/models.d.ts +8 -0
  80. package/dist/commands/models.d.ts.map +1 -0
  81. package/dist/commands/models.js +306 -0
  82. package/dist/commands/models.js.map +1 -0
  83. package/dist/commands/plugin.d.ts +3 -0
  84. package/dist/commands/plugin.d.ts.map +1 -0
  85. package/dist/commands/plugin.js +96 -0
  86. package/dist/commands/plugin.js.map +1 -0
  87. package/dist/commands/profiles.d.ts +8 -0
  88. package/dist/commands/profiles.d.ts.map +1 -0
  89. package/dist/commands/profiles.js +206 -0
  90. package/dist/commands/profiles.js.map +1 -0
  91. package/dist/commands/remote.d.ts +30 -0
  92. package/dist/commands/remote.d.ts.map +1 -0
  93. package/dist/commands/remote.js +204 -0
  94. package/dist/commands/remote.js.map +1 -0
  95. package/dist/commands/run.d.ts +27 -0
  96. package/dist/commands/run.d.ts.map +1 -0
  97. package/dist/commands/run.js +355 -0
  98. package/dist/commands/run.js.map +1 -0
  99. package/dist/commands/sessions.d.ts +8 -0
  100. package/dist/commands/sessions.d.ts.map +1 -0
  101. package/dist/commands/sessions.js +225 -0
  102. package/dist/commands/sessions.js.map +1 -0
  103. package/dist/commands/skill.d.ts +10 -0
  104. package/dist/commands/skill.d.ts.map +1 -0
  105. package/dist/commands/skill.js +217 -0
  106. package/dist/commands/skill.js.map +1 -0
  107. package/dist/commands/tui.d.ts +3 -0
  108. package/dist/commands/tui.d.ts.map +1 -0
  109. package/dist/commands/tui.js +57 -0
  110. package/dist/commands/tui.js.map +1 -0
  111. package/dist/commands/workspaces.d.ts +4 -0
  112. package/dist/commands/workspaces.d.ts.map +1 -0
  113. package/dist/commands/workspaces.js +187 -0
  114. package/dist/commands/workspaces.js.map +1 -0
  115. package/dist/exit-codes.d.ts +32 -0
  116. package/dist/exit-codes.d.ts.map +1 -0
  117. package/dist/exit-codes.js +68 -0
  118. package/dist/exit-codes.js.map +1 -0
  119. package/dist/index.d.ts +23 -0
  120. package/dist/index.d.ts.map +1 -0
  121. package/dist/index.js +216 -0
  122. package/dist/index.js.map +1 -0
  123. package/dist/index.test.d.ts +1 -0
  124. package/dist/index.test.d.ts.map +1 -0
  125. package/dist/index.test.js +23 -0
  126. package/dist/index.test.js.map +1 -0
  127. package/dist/lib/agent-capabilities.d.ts +6 -0
  128. package/dist/lib/agent-capabilities.d.ts.map +1 -0
  129. package/dist/lib/agent-capabilities.js +63 -0
  130. package/dist/lib/agent-capabilities.js.map +1 -0
  131. package/dist/lib/agent-skill-paths.d.ts +9 -0
  132. package/dist/lib/agent-skill-paths.d.ts.map +1 -0
  133. package/dist/lib/agent-skill-paths.js +70 -0
  134. package/dist/lib/agent-skill-paths.js.map +1 -0
  135. package/dist/lib/agent-subagent-paths.d.ts +8 -0
  136. package/dist/lib/agent-subagent-paths.d.ts.map +1 -0
  137. package/dist/lib/agent-subagent-paths.js +64 -0
  138. package/dist/lib/agent-subagent-paths.js.map +1 -0
  139. package/dist/loggingConfig.d.ts +11 -0
  140. package/dist/loggingConfig.d.ts.map +1 -0
  141. package/dist/loggingConfig.js +17 -0
  142. package/dist/loggingConfig.js.map +1 -0
  143. package/dist/output.d.ts +55 -0
  144. package/dist/output.d.ts.map +1 -0
  145. package/dist/output.js +129 -0
  146. package/dist/output.js.map +1 -0
  147. package/dist/parse-args.d.ts +57 -0
  148. package/dist/parse-args.d.ts.map +1 -0
  149. package/dist/parse-args.js +261 -0
  150. package/dist/parse-args.js.map +1 -0
  151. package/dist/read-stdin.d.ts +1 -0
  152. package/dist/read-stdin.d.ts.map +1 -0
  153. package/dist/read-stdin.js +14 -0
  154. package/dist/read-stdin.js.map +1 -0
  155. package/package.json +79 -0
@@ -0,0 +1,306 @@
1
+ /**
2
+ * `adapters models` subcommands.
3
+ *
4
+ * @see docs/10-cli-reference.md Section 10
5
+ */
6
+ import { AgentMuxError, PROVIDER_DEFAULTS, MODEL_TRANSLATION_TABLE } from '@a5c-ai/comm-adapter';
7
+ import { flagBool, flagStr } from '../parse-args.js';
8
+ import { ExitCode, errorCodeToExitCode } from '../exit-codes.js';
9
+ import { printTable, printJsonOk, printJsonError, printError, printJson, printKeyValue, toPlain, } from '../output.js';
10
+ export async function modelsCommand(client, args) {
11
+ const sub = args.subcommand;
12
+ const jsonMode = flagBool(args.flags, 'json') === true;
13
+ if (sub === 'list') {
14
+ const agent = args.positionals[0] ?? flagStr(args.flags, 'agent');
15
+ if (!agent) {
16
+ if (jsonMode) {
17
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
18
+ }
19
+ else {
20
+ printError('Missing required argument: <agent>');
21
+ }
22
+ return ExitCode.USAGE_ERROR;
23
+ }
24
+ return modelsList(client, agent, jsonMode);
25
+ }
26
+ if (sub === 'info' || sub === 'get') {
27
+ const agent = args.positionals[0] ?? flagStr(args.flags, 'agent');
28
+ const modelId = args.positionals[1];
29
+ if (!agent || !modelId) {
30
+ if (jsonMode) {
31
+ printJsonError('VALIDATION_ERROR', 'Usage: adapters models info <agent> <model>');
32
+ }
33
+ else {
34
+ printError('Usage: adapters models info <agent> <model>');
35
+ }
36
+ return ExitCode.USAGE_ERROR;
37
+ }
38
+ return modelsInfo(client, agent, modelId, jsonMode);
39
+ }
40
+ if (sub === 'refresh') {
41
+ const agent = args.positionals[0] ?? flagStr(args.flags, 'agent');
42
+ if (!agent) {
43
+ if (jsonMode) {
44
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
45
+ }
46
+ else {
47
+ printError('Missing required argument: <agent>');
48
+ }
49
+ return ExitCode.USAGE_ERROR;
50
+ }
51
+ return modelsRefresh(client, agent, jsonMode);
52
+ }
53
+ if (sub === 'current') {
54
+ const agent = args.positionals[0] ?? flagStr(args.flags, 'agent');
55
+ if (!agent) {
56
+ if (jsonMode) {
57
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <agent>');
58
+ }
59
+ else {
60
+ printError('Missing required argument: <agent>');
61
+ }
62
+ return ExitCode.USAGE_ERROR;
63
+ }
64
+ return modelsCurrent(client, agent, jsonMode);
65
+ }
66
+ if (sub === 'set') {
67
+ const agent = args.positionals[0] ?? flagStr(args.flags, 'agent');
68
+ const modelId = args.positionals[1];
69
+ const provider = flagStr(args.flags, 'provider');
70
+ if (!agent || !modelId) {
71
+ if (jsonMode) {
72
+ printJsonError('VALIDATION_ERROR', 'Usage: adapters models set <agent> <model> [--provider <provider>]');
73
+ }
74
+ else {
75
+ printError('Usage: adapters models set <agent> <model> [--provider <provider>]');
76
+ }
77
+ return ExitCode.USAGE_ERROR;
78
+ }
79
+ return modelsSet(client, agent, modelId, provider, jsonMode);
80
+ }
81
+ // Top-level --provider flag (no subcommand required)
82
+ const topLevelProvider = flagStr(args.flags, 'provider');
83
+ if (!sub && topLevelProvider) {
84
+ return modelsProvider(topLevelProvider, jsonMode);
85
+ }
86
+ if (!sub) {
87
+ if (jsonMode) {
88
+ printJsonError('VALIDATION_ERROR', 'Missing subcommand. Available: list, info, refresh, current, set');
89
+ }
90
+ else {
91
+ printError('Missing subcommand. Available: list, info, refresh, current, set');
92
+ }
93
+ return ExitCode.USAGE_ERROR;
94
+ }
95
+ if (jsonMode) {
96
+ printJsonError('VALIDATION_ERROR', `Unknown subcommand: models ${sub}`);
97
+ }
98
+ else {
99
+ printError(`Unknown subcommand: models ${sub}`);
100
+ }
101
+ return ExitCode.USAGE_ERROR;
102
+ }
103
+ async function modelsList(client, agent, jsonMode) {
104
+ try {
105
+ const models = client.models.catalog(agent);
106
+ if (jsonMode) {
107
+ printJsonOk(models);
108
+ return ExitCode.SUCCESS;
109
+ }
110
+ const rows = models.map((model) => {
111
+ const m = toPlain(model);
112
+ return [
113
+ String(m['id'] ?? m['modelId'] ?? '--'),
114
+ String(m['displayName'] ?? m['name'] ?? '--'),
115
+ String(m['provider'] ?? '--'),
116
+ String(m['protocol'] ?? '--'),
117
+ String(m['deployment'] ?? '--'),
118
+ String(m['contextWindow'] ?? '--'),
119
+ String(m['source'] ?? '--'),
120
+ m['isDefault'] ? 'yes' : 'no',
121
+ ];
122
+ });
123
+ printTable(['Model ID', 'Display Name', 'Provider', 'Protocol', 'Deploy', 'Context', 'Source', 'Default'], rows);
124
+ return ExitCode.SUCCESS;
125
+ }
126
+ catch (err) {
127
+ return handleError(err, jsonMode);
128
+ }
129
+ }
130
+ async function modelsInfo(client, agent, modelId, jsonMode) {
131
+ try {
132
+ const model = client.models.model(agent, modelId);
133
+ if (!model) {
134
+ if (jsonMode) {
135
+ printJsonError('AGENT_NOT_FOUND', `Model "${modelId}" not found for agent "${agent}"`);
136
+ }
137
+ else {
138
+ printError(`Model "${modelId}" not found for agent "${agent}"`);
139
+ }
140
+ return ExitCode.GENERAL_ERROR;
141
+ }
142
+ if (jsonMode) {
143
+ printJsonOk(model);
144
+ }
145
+ else {
146
+ printJson(model);
147
+ }
148
+ return ExitCode.SUCCESS;
149
+ }
150
+ catch (err) {
151
+ return handleError(err, jsonMode);
152
+ }
153
+ }
154
+ async function modelsRefresh(client, agent, jsonMode) {
155
+ try {
156
+ await client.models.refresh(agent);
157
+ const models = client.models.catalog(agent);
158
+ const lastUpdated = client.models.lastUpdated(agent).toISOString();
159
+ if (jsonMode) {
160
+ printJsonOk({ refreshed: agent, count: models.length, lastUpdated });
161
+ }
162
+ else {
163
+ process.stdout.write(`Model list refreshed for ${agent} (${models.length} entries, ${lastUpdated}).\n`);
164
+ }
165
+ return ExitCode.SUCCESS;
166
+ }
167
+ catch (err) {
168
+ return handleError(err, jsonMode);
169
+ }
170
+ }
171
+ async function modelsCurrent(client, agent, jsonMode) {
172
+ try {
173
+ const selection = client.config.getModelSelection(agent);
174
+ const effective = selection.effectiveModel
175
+ ? client.models.model(agent, selection.effectiveModel)
176
+ : null;
177
+ const payload = {
178
+ agent,
179
+ configuredModel: selection.configuredModel,
180
+ configuredProvider: selection.configuredProvider,
181
+ defaultModel: selection.defaultModel,
182
+ effectiveModel: effective?.modelId ?? selection.effectiveModel,
183
+ effectiveModelDetails: effective,
184
+ };
185
+ if (jsonMode) {
186
+ printJsonOk(payload);
187
+ }
188
+ else {
189
+ printKeyValue([
190
+ ['Agent', agent],
191
+ ['Configured Model', selection.configuredModel ?? '--'],
192
+ ['Configured Provider', selection.configuredProvider ?? '--'],
193
+ ['Default Model', selection.defaultModel ?? '--'],
194
+ ['Effective Model', effective?.modelId ?? selection.effectiveModel ?? '--'],
195
+ ['Provider', effective?.provider ?? '--'],
196
+ ['Protocol', effective?.protocol ?? '--'],
197
+ ['Deployment', effective?.deployment ?? '--'],
198
+ ]);
199
+ }
200
+ return ExitCode.SUCCESS;
201
+ }
202
+ catch (err) {
203
+ return handleError(err, jsonMode);
204
+ }
205
+ }
206
+ async function modelsSet(client, agent, modelId, provider, jsonMode) {
207
+ try {
208
+ const validation = client.models.validate(agent, modelId);
209
+ if (!validation.valid || !validation.model) {
210
+ if (jsonMode) {
211
+ printJsonError('VALIDATION_ERROR', validation.message);
212
+ }
213
+ else {
214
+ printError(validation.message);
215
+ }
216
+ return ExitCode.USAGE_ERROR;
217
+ }
218
+ const resolvedModelId = validation.resolvedModelId ?? validation.model.modelId;
219
+ await client.config.setModelSelection(agent, { model: resolvedModelId, provider });
220
+ const selection = client.config.getModelSelection(agent);
221
+ const payload = {
222
+ agent,
223
+ requestedModel: modelId,
224
+ configuredModel: selection.configuredModel,
225
+ configuredProvider: selection.configuredProvider,
226
+ status: validation.status,
227
+ effectiveModel: selection.effectiveModel,
228
+ };
229
+ if (jsonMode) {
230
+ printJsonOk(payload);
231
+ }
232
+ else {
233
+ process.stdout.write(`Set model for ${agent} to ${resolvedModelId}${provider ? ` (${provider})` : ''}.\n`);
234
+ }
235
+ return ExitCode.SUCCESS;
236
+ }
237
+ catch (err) {
238
+ return handleError(err, jsonMode);
239
+ }
240
+ }
241
+ function modelsProvider(providerId, jsonMode) {
242
+ const defaults = PROVIDER_DEFAULTS[providerId];
243
+ if (!defaults) {
244
+ const available = Object.keys(PROVIDER_DEFAULTS).join(', ');
245
+ if (jsonMode) {
246
+ printJsonError('VALIDATION_ERROR', `Unknown provider: ${providerId}. Available: ${available}`);
247
+ }
248
+ else {
249
+ printError(`Unknown provider: ${providerId}. Available: ${available}`);
250
+ }
251
+ return ExitCode.USAGE_ERROR;
252
+ }
253
+ // Collect translation table entries that have a mapping for this provider
254
+ const translationRows = [];
255
+ for (const [canonical, mapping] of Object.entries(MODEL_TRANSLATION_TABLE)) {
256
+ const translated = mapping[providerId];
257
+ if (translated) {
258
+ translationRows.push([canonical, translated]);
259
+ }
260
+ }
261
+ if (jsonMode) {
262
+ printJsonOk({
263
+ provider: providerId,
264
+ defaultModel: defaults.defaultModel,
265
+ transport: defaults.transport,
266
+ authType: defaults.authType,
267
+ apiBase: defaults.apiBase,
268
+ envKey: defaults.envKey ?? null,
269
+ modelTranslations: Object.fromEntries(translationRows),
270
+ });
271
+ return ExitCode.SUCCESS;
272
+ }
273
+ printKeyValue([
274
+ ['Provider', providerId],
275
+ ['Default Model', defaults.defaultModel || '--'],
276
+ ['Transport', defaults.transport],
277
+ ['Auth Type', defaults.authType],
278
+ ['API Base', defaults.apiBase || '--'],
279
+ ['Env Key', defaults.envKey ?? '--'],
280
+ ]);
281
+ if (translationRows.length > 0) {
282
+ process.stdout.write('\nModel Translations:\n');
283
+ printTable(['Canonical Model', `${providerId} Model ID`], translationRows);
284
+ }
285
+ return ExitCode.SUCCESS;
286
+ }
287
+ function handleError(err, jsonMode) {
288
+ if (err instanceof AgentMuxError) {
289
+ if (jsonMode) {
290
+ printJsonError(err.code, err.message, err.recoverable);
291
+ }
292
+ else {
293
+ printError(err.message);
294
+ }
295
+ return errorCodeToExitCode(err.code);
296
+ }
297
+ const message = err instanceof Error ? err.message : String(err);
298
+ if (jsonMode) {
299
+ printJsonError('INTERNAL', message);
300
+ }
301
+ else {
302
+ printError(message);
303
+ }
304
+ return ExitCode.GENERAL_ERROR;
305
+ }
306
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AgentMuxClient } from '@a5c-ai/comm-adapter';
2
+ import type { ParsedArgs } from '../parse-args.js';
3
+ export declare function pluginCommand(client: AgentMuxClient, args: ParsedArgs): Promise<number>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAoFjB"}
@@ -0,0 +1,96 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import { ExitCode } from '../exit-codes.js';
4
+ import { printError, printJsonError } from '../output.js';
5
+ import { flagBool } from '../parse-args.js';
6
+ import { detectAgentCapabilities } from '../lib/agent-capabilities.js';
7
+ const execAsync = promisify(exec);
8
+ export async function pluginCommand(client, args) {
9
+ const json = flagBool(args.flags, 'json') === true;
10
+ if (args.flags.help) {
11
+ process.stdout.write([
12
+ 'Usage: adapters plugin <subcommand> <agent> [args] [flags]',
13
+ '',
14
+ 'Manage plugins through agent-native plugin systems.',
15
+ '',
16
+ 'Subcommands:',
17
+ ' list <agent> List installed plugins',
18
+ ' install <agent> <plugin> Install plugin',
19
+ ' enable <agent> <plugin> Enable plugin',
20
+ ' disable <agent> <plugin> Disable plugin',
21
+ ' marketplace <agent> [cmd] Access plugin marketplace',
22
+ '',
23
+ 'Flags:',
24
+ ' --json Emit JSON envelopes on stdout/stderr',
25
+ '',
26
+ 'Examples:',
27
+ ' adapters plugin list claude',
28
+ ' adapters plugin install claude filesystem-watcher',
29
+ ' adapters plugin marketplace claude',
30
+ '',
31
+ 'Note: Plugin support varies by agent. Use "adapters mcp" for MCP servers.',
32
+ ].join('\n') + '\n');
33
+ return ExitCode.SUCCESS;
34
+ }
35
+ const subcommand = args.subcommand;
36
+ const agentName = args.positionals[0];
37
+ if (!subcommand) {
38
+ const msg = 'Missing subcommand. Available: list, install, enable, disable, marketplace';
39
+ if (json)
40
+ printJsonError('VALIDATION_ERROR', msg);
41
+ else
42
+ printError(msg);
43
+ return ExitCode.USAGE_ERROR;
44
+ }
45
+ if (!agentName) {
46
+ const msg = 'Missing required argument: <agent>';
47
+ if (json)
48
+ printJsonError('VALIDATION_ERROR', msg);
49
+ else
50
+ printError(msg);
51
+ return ExitCode.USAGE_ERROR;
52
+ }
53
+ const capabilities = await detectAgentCapabilities(agentName);
54
+ if (!capabilities.supportsPlugins) {
55
+ const msg = `Plugin management not supported for ${agentName}. Use 'adapters mcp' for MCP servers.`;
56
+ if (json)
57
+ printJsonError('CAPABILITY_ERROR', msg);
58
+ else
59
+ printError(msg);
60
+ return ExitCode.GENERAL_ERROR;
61
+ }
62
+ if (!capabilities.pluginCommands.includes(subcommand)) {
63
+ const msg = `Subcommand '${subcommand}' not supported for ${agentName}. Available: ${capabilities.pluginCommands.join(', ')}`;
64
+ if (json)
65
+ printJsonError('VALIDATION_ERROR', msg);
66
+ else
67
+ printError(msg);
68
+ return ExitCode.USAGE_ERROR;
69
+ }
70
+ // Build native command
71
+ const nativeArgs = [subcommand, ...args.positionals.slice(1)].join(' ');
72
+ const nativeCommand = `${capabilities.nativePluginCommand} ${nativeArgs}`;
73
+ try {
74
+ const result = await execAsync(nativeCommand, {
75
+ timeout: 30000
76
+ });
77
+ if (result.stdout)
78
+ process.stdout.write(result.stdout);
79
+ if (result.stderr)
80
+ process.stderr.write(result.stderr);
81
+ return ExitCode.SUCCESS;
82
+ }
83
+ catch (error) {
84
+ if (error.stdout)
85
+ process.stdout.write(error.stdout);
86
+ if (error.stderr)
87
+ process.stderr.write(error.stderr);
88
+ const msg = `Plugin command failed: ${error.message}`;
89
+ if (json)
90
+ printJsonError('EXECUTION_ERROR', msg);
91
+ else
92
+ printError(msg);
93
+ return error.code || ExitCode.GENERAL_ERROR;
94
+ }
95
+ }
96
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/commands/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `adapters profiles` subcommands.
3
+ *
4
+ * @see docs/10-cli-reference.md Section 17
5
+ */
6
+ import type { AgentMuxClient } from '@a5c-ai/comm-adapter';
7
+ import type { ParsedArgs } from '../parse-args.js';
8
+ export declare function profilesCommand(client: AgentMuxClient, args: ParsedArgs): Promise<number>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOnD,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkE/F"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * `adapters profiles` subcommands.
3
+ *
4
+ * @see docs/10-cli-reference.md Section 17
5
+ */
6
+ import { AgentMuxError } from '@a5c-ai/comm-adapter';
7
+ import { flagBool, flagStr } from '../parse-args.js';
8
+ import { ExitCode, errorCodeToExitCode } from '../exit-codes.js';
9
+ import { printTable, printJsonOk, printJsonError, printError, printJson, toPlain, } from '../output.js';
10
+ export async function profilesCommand(client, args) {
11
+ const sub = args.subcommand;
12
+ const jsonMode = flagBool(args.flags, 'json') === true;
13
+ if (sub === 'list' || !sub) {
14
+ return profilesList(client, args, jsonMode);
15
+ }
16
+ if (sub === 'show') {
17
+ const name = args.positionals[0];
18
+ if (!name) {
19
+ if (jsonMode) {
20
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <name>');
21
+ }
22
+ else {
23
+ printError('Missing required argument: <name>');
24
+ }
25
+ return ExitCode.USAGE_ERROR;
26
+ }
27
+ return profilesShow(client, name, jsonMode);
28
+ }
29
+ if (sub === 'set') {
30
+ const name = args.positionals[0];
31
+ if (!name) {
32
+ if (jsonMode) {
33
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <name>');
34
+ }
35
+ else {
36
+ printError('Missing required argument: <name>');
37
+ }
38
+ return ExitCode.USAGE_ERROR;
39
+ }
40
+ return profilesSet(client, name, args, jsonMode);
41
+ }
42
+ if (sub === 'delete') {
43
+ const name = args.positionals[0];
44
+ if (!name) {
45
+ if (jsonMode) {
46
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <name>');
47
+ }
48
+ else {
49
+ printError('Missing required argument: <name>');
50
+ }
51
+ return ExitCode.USAGE_ERROR;
52
+ }
53
+ return profilesDelete(client, name, args, jsonMode);
54
+ }
55
+ if (sub === 'apply') {
56
+ const name = args.positionals[0];
57
+ if (!name) {
58
+ if (jsonMode) {
59
+ printJsonError('VALIDATION_ERROR', 'Missing required argument: <name>');
60
+ }
61
+ else {
62
+ printError('Missing required argument: <name>');
63
+ }
64
+ return ExitCode.USAGE_ERROR;
65
+ }
66
+ return profilesApply(client, name, jsonMode);
67
+ }
68
+ if (jsonMode) {
69
+ printJsonError('VALIDATION_ERROR', `Unknown subcommand: profiles ${sub}`);
70
+ }
71
+ else {
72
+ printError(`Unknown subcommand: profiles ${sub}`);
73
+ }
74
+ return ExitCode.USAGE_ERROR;
75
+ }
76
+ function parseScope(raw) {
77
+ if (raw === undefined)
78
+ return undefined;
79
+ if (raw === 'global' || raw === 'project')
80
+ return raw;
81
+ throw new Error(`Invalid --scope: "${raw}" (expected "global" or "project")`);
82
+ }
83
+ async function profilesList(client, args, jsonMode) {
84
+ try {
85
+ const scope = parseScope(flagStr(args.flags, 'scope'));
86
+ const opts = scope ? { scope } : undefined;
87
+ const profiles = await client.profiles.list(opts);
88
+ if (jsonMode) {
89
+ printJsonOk(profiles);
90
+ return ExitCode.SUCCESS;
91
+ }
92
+ const rows = profiles.map((profile) => {
93
+ const p = toPlain(profile);
94
+ return [
95
+ String(p['name'] ?? '--'),
96
+ String(p['scope'] ?? '--'),
97
+ String(p['agent'] ?? '--'),
98
+ String(p['model'] ?? '--'),
99
+ ];
100
+ });
101
+ printTable(['Name', 'Scope', 'Agent', 'Model'], rows);
102
+ return ExitCode.SUCCESS;
103
+ }
104
+ catch (err) {
105
+ return handleError(err, jsonMode);
106
+ }
107
+ }
108
+ async function profilesShow(client, name, jsonMode) {
109
+ try {
110
+ const profile = await client.profiles.show(name);
111
+ if (jsonMode) {
112
+ printJsonOk(profile);
113
+ }
114
+ else {
115
+ printJson(profile);
116
+ }
117
+ return ExitCode.SUCCESS;
118
+ }
119
+ catch (err) {
120
+ return handleError(err, jsonMode);
121
+ }
122
+ }
123
+ async function profilesSet(client, name, args, jsonMode) {
124
+ try {
125
+ // Build profile data from remaining flags
126
+ const data = {};
127
+ const scope = parseScope(flagStr(args.flags, 'scope'));
128
+ const agent = flagStr(args.flags, 'agent');
129
+ const model = flagStr(args.flags, 'model');
130
+ if (agent)
131
+ data['agent'] = agent;
132
+ if (model)
133
+ data['model'] = model;
134
+ // Pass through known run flags
135
+ for (const key of Object.keys(args.flags)) {
136
+ if (['agent', 'model', 'scope', 'json', 'help', 'debug', 'config-dir', 'project-dir', 'no-color', 'version'].includes(key)) {
137
+ continue;
138
+ }
139
+ data[key] = args.flags[key];
140
+ }
141
+ const opts = scope ? { scope } : undefined;
142
+ await client.profiles.set(name, data, opts);
143
+ if (jsonMode) {
144
+ printJsonOk({ name, data });
145
+ }
146
+ else {
147
+ process.stdout.write(`Profile "${name}" saved.\n`);
148
+ }
149
+ return ExitCode.SUCCESS;
150
+ }
151
+ catch (err) {
152
+ return handleError(err, jsonMode);
153
+ }
154
+ }
155
+ async function profilesDelete(client, name, args, jsonMode) {
156
+ try {
157
+ const scope = parseScope(flagStr(args.flags, 'scope'));
158
+ const opts = scope ? { scope } : undefined;
159
+ await client.profiles.delete(name, opts);
160
+ if (jsonMode) {
161
+ printJsonOk({ deleted: name });
162
+ }
163
+ else {
164
+ process.stdout.write(`Profile "${name}" deleted.\n`);
165
+ }
166
+ return ExitCode.SUCCESS;
167
+ }
168
+ catch (err) {
169
+ return handleError(err, jsonMode);
170
+ }
171
+ }
172
+ async function profilesApply(client, name, jsonMode) {
173
+ try {
174
+ const resolved = await client.profiles.apply(name);
175
+ if (jsonMode) {
176
+ printJsonOk(resolved);
177
+ }
178
+ else {
179
+ printJson(resolved);
180
+ }
181
+ return ExitCode.SUCCESS;
182
+ }
183
+ catch (err) {
184
+ return handleError(err, jsonMode);
185
+ }
186
+ }
187
+ function handleError(err, jsonMode) {
188
+ if (err instanceof AgentMuxError) {
189
+ if (jsonMode) {
190
+ printJsonError(err.code, err.message, err.recoverable);
191
+ }
192
+ else {
193
+ printError(err.message);
194
+ }
195
+ return errorCodeToExitCode(err.code);
196
+ }
197
+ const message = err instanceof Error ? err.message : String(err);
198
+ if (jsonMode) {
199
+ printJsonError('INTERNAL', message);
200
+ }
201
+ else {
202
+ printError(message);
203
+ }
204
+ return ExitCode.GENERAL_ERROR;
205
+ }
206
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/commands/profiles.ts"],"names":[],"mappings":"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"}