@a5c-ai/config-adapter 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.
@@ -0,0 +1,448 @@
1
+ /**
2
+ * `adapters install <agent>`, `adapters update <agent>`, `adapters detect <agent>`,
3
+ * and `adapters uninstall <agent>` commands.
4
+ *
5
+ * Dispatches to the adapter's per-agent install/update/detect methods,
6
+ * so each harness may override behavior.
7
+ *
8
+ * @see docs/10-cli-reference.md
9
+ */
10
+ import { AgentMuxError } from '@a5c-ai/comm-adapter';
11
+ import { flagBool, flagStr } from './cli-helpers.js';
12
+ import { ExitCode, errorCodeToExitCode } from './cli-helpers.js';
13
+ import { printJsonOk, printJsonError, printError, printKeyValue, } from './cli-helpers.js';
14
+ import { defaultSpawnRunner, silentSpawnRunner, runSilently, } from './install-helpers.js';
15
+ /** Flags recognized by the install/uninstall/update/detect commands. */
16
+ export const INSTALL_FLAGS = {
17
+ 'all': { type: 'boolean' },
18
+ 'force': { type: 'boolean' },
19
+ 'dry-run': { type: 'boolean' },
20
+ 'pkg-version': { type: 'string' },
21
+ };
22
+ /**
23
+ * Handle `adapters install [<agent>] [--all]`, `adapters update [<agent>] [--all]`,
24
+ * `adapters detect [<agent>] [--all]`, and `adapters uninstall <agent>`.
25
+ */
26
+ export async function installCommand(client, args, deps = {}) {
27
+ const jsonMode = flagBool(args.flags, 'json') === true;
28
+ const all = flagBool(args.flags, 'all') === true;
29
+ const force = flagBool(args.flags, 'force') === true;
30
+ const dryRun = flagBool(args.flags, 'dry-run') === true;
31
+ const versionFlag = flagStr(args.flags, 'pkg-version');
32
+ const mode = args.command === 'uninstall' ? 'uninstall'
33
+ : args.command === 'update' ? 'update'
34
+ : args.command === 'detect' ? 'detect'
35
+ : 'install';
36
+ // In JSON mode, or for `detect` (a read-only query), suppress child
37
+ // process output so it never contaminates structured output or piped JSON.
38
+ const suppressChildOutput = jsonMode || mode === 'detect';
39
+ const spawnRunner = deps.spawnRunner
40
+ ?? (suppressChildOutput ? silentSpawnRunner : defaultSpawnRunner);
41
+ const adapterSpawner = toAdapterSpawner(spawnRunner);
42
+ if ((mode === 'install' || mode === 'update' || mode === 'detect') && all) {
43
+ return handleAll(client, mode, adapterSpawner, { force, dryRun }, jsonMode);
44
+ }
45
+ const agent = args.positionals[0];
46
+ if (!agent) {
47
+ const msg = mode === 'install'
48
+ ? 'Usage: adapters install <agent> | adapters install --all'
49
+ : mode === 'update'
50
+ ? 'Usage: adapters update <agent> | adapters update --all'
51
+ : mode === 'detect'
52
+ ? 'Usage: adapters detect <agent> | adapters detect --all'
53
+ : 'Usage: adapters uninstall <agent>';
54
+ if (jsonMode)
55
+ printJsonError('VALIDATION_ERROR', msg);
56
+ else
57
+ printError(msg);
58
+ return ExitCode.USAGE_ERROR;
59
+ }
60
+ switch (mode) {
61
+ case 'install':
62
+ return installOne(client, agent, adapterSpawner, { force, dryRun, ...(versionFlag !== undefined ? { version: versionFlag } : {}) }, jsonMode);
63
+ case 'update':
64
+ return updateOne(client, agent, adapterSpawner, { dryRun }, jsonMode);
65
+ case 'detect':
66
+ return detectOne(client, agent, adapterSpawner, jsonMode);
67
+ case 'uninstall':
68
+ return uninstallOne(client, agent, spawnRunner, jsonMode);
69
+ }
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // install <agent>
73
+ // ---------------------------------------------------------------------------
74
+ async function installOne(client, agent, spawner, opts, jsonMode) {
75
+ const adapter = client.adapters.get(agent);
76
+ if (!adapter) {
77
+ if (opts.dryRun) {
78
+ if (jsonMode)
79
+ printJsonOk({ agent, dryRun: true, installed: false, reason: 'unknown-agent' });
80
+ else
81
+ process.stdout.write(`[dry-run] Unknown agent "${agent}" — no install method available.\n`);
82
+ return ExitCode.SUCCESS;
83
+ }
84
+ const msg = `Unknown agent: ${agent}`;
85
+ if (jsonMode)
86
+ printJsonError('UNKNOWN_AGENT', msg);
87
+ else
88
+ printError(msg);
89
+ return errorCodeToExitCode('UNKNOWN_AGENT');
90
+ }
91
+ injectSpawner(adapter, spawner);
92
+ if (!adapter.install) {
93
+ const msg = `Agent "${agent}" does not support install().`;
94
+ if (jsonMode)
95
+ printJsonError('VALIDATION_ERROR', msg);
96
+ else
97
+ printError(msg);
98
+ return ExitCode.GENERAL_ERROR;
99
+ }
100
+ let result;
101
+ try {
102
+ result = await adapter.install({
103
+ force: opts.force,
104
+ dryRun: opts.dryRun,
105
+ ...(opts.version !== undefined ? { version: opts.version } : {}),
106
+ });
107
+ }
108
+ catch (err) {
109
+ const msg = err instanceof Error ? err.message : String(err);
110
+ if (jsonMode)
111
+ printJsonError('INTERNAL', `Install failed: ${msg}`);
112
+ else
113
+ printError(`Install failed: ${msg}`);
114
+ return ExitCode.GENERAL_ERROR;
115
+ }
116
+ // Render result.
117
+ if (jsonMode) {
118
+ printJsonOk({
119
+ agent,
120
+ installed: result.ok,
121
+ method: result.method,
122
+ command: result.command,
123
+ dryRun: opts.dryRun || undefined,
124
+ version: result.installedVersion,
125
+ message: result.message,
126
+ });
127
+ }
128
+ else {
129
+ if (result.method === 'already-installed') {
130
+ process.stdout.write(`${agent} is already installed${result.installedVersion ? ` (${result.installedVersion})` : ''}.\n`);
131
+ process.stdout.write(`Use --force to reinstall.\n`);
132
+ }
133
+ else if (opts.dryRun) {
134
+ process.stdout.write(`[dry-run] Would install ${agent} via: ${result.command}\n`);
135
+ }
136
+ else if (result.method === 'manual') {
137
+ process.stdout.write(`${result.message ?? `Install ${agent} manually: ${result.command}`}\n`);
138
+ }
139
+ else {
140
+ if (result.command)
141
+ process.stdout.write(`Installing ${agent} via: ${result.command}\n`);
142
+ printKeyValue([
143
+ ['Agent:', agent],
144
+ ['Method:', result.method],
145
+ ['Installed:', result.ok ? 'yes' : 'no'],
146
+ ['Version:', result.installedVersion ?? '--'],
147
+ ]);
148
+ if (result.stderr && !result.ok)
149
+ process.stderr.write(result.stderr);
150
+ }
151
+ }
152
+ // Manual install is "not an error" — surface as success.
153
+ if (result.method === 'manual')
154
+ return ExitCode.SUCCESS;
155
+ if (result.method === 'already-installed')
156
+ return ExitCode.SUCCESS;
157
+ return result.ok ? ExitCode.SUCCESS : ExitCode.GENERAL_ERROR;
158
+ }
159
+ // ---------------------------------------------------------------------------
160
+ // update <agent>
161
+ // ---------------------------------------------------------------------------
162
+ async function updateOne(client, agent, spawner, opts, jsonMode) {
163
+ const adapter = client.adapters.get(agent);
164
+ if (!adapter) {
165
+ const msg = `Unknown agent: ${agent}`;
166
+ if (jsonMode)
167
+ printJsonError('UNKNOWN_AGENT', msg);
168
+ else
169
+ printError(msg);
170
+ return errorCodeToExitCode('UNKNOWN_AGENT');
171
+ }
172
+ injectSpawner(adapter, spawner);
173
+ if (!adapter.update) {
174
+ const msg = `Agent "${agent}" does not support update().`;
175
+ if (jsonMode)
176
+ printJsonError('VALIDATION_ERROR', msg);
177
+ else
178
+ printError(msg);
179
+ return ExitCode.GENERAL_ERROR;
180
+ }
181
+ let result;
182
+ try {
183
+ result = await adapter.update({ dryRun: opts.dryRun });
184
+ }
185
+ catch (err) {
186
+ const msg = err instanceof Error ? err.message : String(err);
187
+ if (jsonMode)
188
+ printJsonError('INTERNAL', `Update failed: ${msg}`);
189
+ else
190
+ printError(`Update failed: ${msg}`);
191
+ return ExitCode.GENERAL_ERROR;
192
+ }
193
+ if (jsonMode) {
194
+ printJsonOk({
195
+ agent,
196
+ updated: result.ok,
197
+ method: result.method,
198
+ command: result.command,
199
+ dryRun: opts.dryRun || undefined,
200
+ version: result.installedVersion,
201
+ message: result.message,
202
+ });
203
+ }
204
+ else {
205
+ if (opts.dryRun) {
206
+ process.stdout.write(`[dry-run] Would update ${agent} via: ${result.command}\n`);
207
+ }
208
+ else if (result.method === 'manual') {
209
+ process.stdout.write(`${result.message ?? `Update ${agent} manually.`}\n`);
210
+ }
211
+ else {
212
+ if (result.command)
213
+ process.stdout.write(`Updating ${agent} via: ${result.command}\n`);
214
+ printKeyValue([
215
+ ['Agent:', agent],
216
+ ['Method:', result.method],
217
+ ['Updated:', result.ok ? 'yes' : 'no'],
218
+ ['Version:', result.installedVersion ?? '--'],
219
+ ]);
220
+ if (result.stderr && !result.ok)
221
+ process.stderr.write(result.stderr);
222
+ }
223
+ }
224
+ if (result.method === 'manual')
225
+ return ExitCode.SUCCESS;
226
+ return result.ok ? ExitCode.SUCCESS : ExitCode.GENERAL_ERROR;
227
+ }
228
+ // ---------------------------------------------------------------------------
229
+ // detect <agent>
230
+ // ---------------------------------------------------------------------------
231
+ async function detectOne(client, agent, spawner, jsonMode) {
232
+ const adapter = client.adapters.get(agent);
233
+ if (!adapter) {
234
+ const msg = `Unknown agent: ${agent}`;
235
+ if (jsonMode)
236
+ printJsonError('UNKNOWN_AGENT', msg);
237
+ else
238
+ printError(msg);
239
+ return errorCodeToExitCode('UNKNOWN_AGENT');
240
+ }
241
+ injectSpawner(adapter, spawner);
242
+ let result;
243
+ try {
244
+ if (!adapter.detectInstallation) {
245
+ result = { installed: false, notes: 'detectInstallation() not implemented' };
246
+ }
247
+ else {
248
+ result = await adapter.detectInstallation();
249
+ }
250
+ }
251
+ catch (err) {
252
+ const msg = err instanceof Error ? err.message : String(err);
253
+ if (jsonMode)
254
+ printJsonError('INTERNAL', `Detect failed: ${msg}`);
255
+ else
256
+ printError(`Detect failed: ${msg}`);
257
+ return ExitCode.GENERAL_ERROR;
258
+ }
259
+ if (jsonMode) {
260
+ printJsonOk({
261
+ agent,
262
+ installed: result.installed,
263
+ version: result.version,
264
+ path: result.path,
265
+ notes: result.notes,
266
+ });
267
+ }
268
+ else {
269
+ printKeyValue([
270
+ ['Agent:', agent],
271
+ ['Installed:', result.installed ? 'yes' : 'no'],
272
+ ['Version:', result.version ?? '--'],
273
+ ['Path:', result.path ?? '--'],
274
+ ['Notes:', result.notes ?? '--'],
275
+ ]);
276
+ }
277
+ return ExitCode.SUCCESS;
278
+ }
279
+ // ---------------------------------------------------------------------------
280
+ // --all dispatch
281
+ // ---------------------------------------------------------------------------
282
+ async function handleAll(client, mode, spawner, opts, jsonMode) {
283
+ const registered = client.adapters.list();
284
+ const results = [];
285
+ let overall = ExitCode.SUCCESS;
286
+ if (mode === 'detect' && jsonMode) {
287
+ const detectResults = await Promise.all(registered.map(async (info) => {
288
+ const adapter = client.adapters.get(info.agent);
289
+ if (!adapter) {
290
+ return {
291
+ agent: info.agent,
292
+ exitCode: errorCodeToExitCode('UNKNOWN_AGENT'),
293
+ error: `Unknown agent: ${info.agent}`,
294
+ };
295
+ }
296
+ injectSpawner(adapter, spawner);
297
+ try {
298
+ const detected = adapter.detectInstallation
299
+ ? await adapter.detectInstallation()
300
+ : { installed: false, notes: 'detectInstallation() not implemented' };
301
+ return {
302
+ agent: info.agent,
303
+ exitCode: ExitCode.SUCCESS,
304
+ installed: detected.installed,
305
+ version: detected.version,
306
+ path: detected.path,
307
+ notes: detected.notes,
308
+ };
309
+ }
310
+ catch (err) {
311
+ const msg = err instanceof Error ? err.message : String(err);
312
+ return {
313
+ agent: info.agent,
314
+ exitCode: ExitCode.GENERAL_ERROR,
315
+ error: `Detect failed: ${msg}`,
316
+ };
317
+ }
318
+ }));
319
+ for (const result of detectResults) {
320
+ results.push(result);
321
+ if (result.exitCode !== ExitCode.SUCCESS && overall === ExitCode.SUCCESS) {
322
+ overall = ExitCode.GENERAL_ERROR;
323
+ }
324
+ }
325
+ printJsonOk({ results });
326
+ return overall;
327
+ }
328
+ for (const info of registered) {
329
+ if (!jsonMode)
330
+ process.stdout.write(`\n=== ${info.agent} ===\n`);
331
+ let code;
332
+ // In JSON mode, silence stdout/stderr while each per-agent handler
333
+ // runs so their envelopes don't contaminate the aggregate JSON
334
+ // response emitted at the end. Exit codes are still captured.
335
+ const run = async () => {
336
+ if (mode === 'install') {
337
+ return installOne(client, info.agent, spawner, opts, jsonMode);
338
+ }
339
+ else if (mode === 'update') {
340
+ return updateOne(client, info.agent, spawner, { dryRun: opts.dryRun }, jsonMode);
341
+ }
342
+ return detectOne(client, info.agent, spawner, jsonMode);
343
+ };
344
+ code = jsonMode ? await runSilently(run) : await run();
345
+ results.push({ agent: info.agent, exitCode: code });
346
+ if (code !== ExitCode.SUCCESS && overall === ExitCode.SUCCESS) {
347
+ overall = ExitCode.GENERAL_ERROR;
348
+ }
349
+ }
350
+ if (jsonMode)
351
+ printJsonOk({ results });
352
+ return overall;
353
+ }
354
+ // ---------------------------------------------------------------------------
355
+ // uninstall <agent>
356
+ // ---------------------------------------------------------------------------
357
+ async function uninstallOne(client, agent, spawnRunner, jsonMode) {
358
+ const adapter = client.adapters.get(agent);
359
+ if (!adapter) {
360
+ const msg = `Unknown agent: ${agent}`;
361
+ if (jsonMode)
362
+ printJsonError('UNKNOWN_AGENT', msg);
363
+ else
364
+ printError(msg);
365
+ return errorCodeToExitCode('UNKNOWN_AGENT');
366
+ }
367
+ const methods = safeInstallInstructions(client, agent);
368
+ const npmMethod = methods.find((m) => m.type === 'npm');
369
+ const brewMethod = methods.find((m) => m.type === 'brew');
370
+ let cmd = null;
371
+ let argsList = [];
372
+ if (npmMethod) {
373
+ const parts = npmMethod.command.split(/\s+/).filter(Boolean);
374
+ const pkg = parts[parts.length - 1];
375
+ if (pkg) {
376
+ cmd = 'npm';
377
+ argsList = ['uninstall', '-g', pkg];
378
+ }
379
+ }
380
+ else if (brewMethod) {
381
+ const parts = brewMethod.command.split(/\s+/).filter(Boolean);
382
+ const pkg = parts[parts.length - 1];
383
+ if (pkg) {
384
+ cmd = 'brew';
385
+ argsList = ['uninstall', pkg];
386
+ }
387
+ }
388
+ if (!cmd) {
389
+ const msg = `No supported uninstall method for agent "${agent}".`;
390
+ if (jsonMode)
391
+ printJsonError('VALIDATION_ERROR', msg);
392
+ else
393
+ printError(msg);
394
+ return ExitCode.GENERAL_ERROR;
395
+ }
396
+ if (!jsonMode) {
397
+ process.stdout.write(`Uninstalling ${agent} via: ${cmd} ${argsList.join(' ')}\n`);
398
+ }
399
+ try {
400
+ const result = await spawnRunner(cmd, argsList);
401
+ if (result.code !== 0) {
402
+ const msg = `Uninstall command exited with code ${result.code}`;
403
+ if (jsonMode)
404
+ printJsonError('INTERNAL', msg);
405
+ else
406
+ printError(msg);
407
+ return ExitCode.GENERAL_ERROR;
408
+ }
409
+ }
410
+ catch (err) {
411
+ const msg = err instanceof Error ? err.message : String(err);
412
+ if (jsonMode)
413
+ printJsonError('INTERNAL', `Uninstall failed: ${msg}`);
414
+ else
415
+ printError(`Uninstall failed: ${msg}`);
416
+ return ExitCode.GENERAL_ERROR;
417
+ }
418
+ if (jsonMode)
419
+ printJsonOk({ agent, uninstalled: true });
420
+ else
421
+ process.stdout.write(`${agent} uninstalled.\n`);
422
+ return ExitCode.SUCCESS;
423
+ }
424
+ // ---------------------------------------------------------------------------
425
+ // Helpers
426
+ // ---------------------------------------------------------------------------
427
+ function safeInstallInstructions(client, agent) {
428
+ try {
429
+ return client.adapters.installInstructions(agent);
430
+ }
431
+ catch {
432
+ return [];
433
+ }
434
+ }
435
+ /** Adapt a CLI-level SpawnRunner to the adapter-level Spawner interface. */
436
+ function toAdapterSpawner(runner) {
437
+ return (command, args, _opts) => runner(command, args);
438
+ }
439
+ /** Attach a Spawner to a BaseAgentAdapter (duck-typed via setSpawner). */
440
+ function injectSpawner(adapter, spawner) {
441
+ const a = adapter;
442
+ if (typeof a.setSpawner === 'function') {
443
+ a.setSpawner(spawner);
444
+ }
445
+ }
446
+ // Silence unused imports for AgentMuxError (kept for compatibility).
447
+ void AgentMuxError;
448
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared types for the agent-config-adapter package.
3
+ *
4
+ * Re-exports core types that consumers of this package commonly need,
5
+ * plus any config-specific interfaces.
6
+ */
7
+ export type { InstallResult, DetectInstallationResult, AgentMuxClient, AgentAdapter, Spawner, } from '@a5c-ai/comm-adapter';
8
+ export type { ParsedArgs, FlagDef, ExitCodeValue, } from './cli-helpers.js';
9
+ export type { SpawnRunner } from './install-helpers.js';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,OAAO,GACR,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACV,UAAU,EACV,OAAO,EACP,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shared types for the agent-config-adapter package.
3
+ *
4
+ * Re-exports core types that consumers of this package commonly need,
5
+ * plus any config-specific interfaces.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@a5c-ai/config-adapter",
3
+ "version": "5.1.1-staging.52898ebfc24f",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "description": "Install, config, auth, and host-detection logic for adapters",
7
+ "author": "a5c-ai",
8
+ "homepage": "https://github.com/a5c-ai/babysitter/tree/main/packages/adapters/config#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/a5c-ai/babysitter.git",
12
+ "directory": "packages/adapters/config"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/a5c-ai/babysitter/issues"
16
+ },
17
+ "keywords": [
18
+ "adapters",
19
+ "config",
20
+ "install",
21
+ "auth",
22
+ "coding-agent",
23
+ "ai"
24
+ ],
25
+ "engines": {
26
+ "node": ">=20.9.0"
27
+ },
28
+ "main": "./dist/index.js",
29
+ "module": "./dist/index.js",
30
+ "types": "./dist/index.d.ts",
31
+ "exports": {
32
+ ".": {
33
+ "import": {
34
+ "types": "./dist/index.d.ts",
35
+ "default": "./dist/index.js"
36
+ }
37
+ }
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md",
42
+ "LICENSE"
43
+ ],
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc --build && tsc --emitDeclarationOnly --declarationMap false -p tsconfig.json",
49
+ "test": "vitest run --config ../../../vitest.config.ts \"tests/**/*.test.ts\" \"src/**/*.test.ts\"",
50
+ "prepublishOnly": "npm run build"
51
+ },
52
+ "dependencies": {
53
+ "@a5c-ai/comm-adapter": "5.1.1-staging.52898ebfc24f"
54
+ },
55
+ "atlas": {
56
+ "layers": [
57
+ "L5",
58
+ "L6"
59
+ ],
60
+ "muxes": [
61
+ "agent-config-adapter"
62
+ ]
63
+ }
64
+ }