@a5c-ai/agent-mux-cli 0.4.0 → 0.4.2

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 (47) hide show
  1. package/dist/bootstrap.d.ts +1 -1
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +4 -2
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/commands/gateway/index.d.ts +6 -0
  6. package/dist/commands/gateway/index.d.ts.map +1 -0
  7. package/dist/commands/gateway/index.js +39 -0
  8. package/dist/commands/gateway/index.js.map +1 -0
  9. package/dist/commands/gateway/serve.d.ts +6 -0
  10. package/dist/commands/gateway/serve.d.ts.map +1 -0
  11. package/dist/commands/gateway/serve.js +67 -0
  12. package/dist/commands/gateway/serve.js.map +1 -0
  13. package/dist/commands/gateway/status.d.ts +3 -0
  14. package/dist/commands/gateway/status.d.ts.map +1 -0
  15. package/dist/commands/gateway/status.js +24 -0
  16. package/dist/commands/gateway/status.js.map +1 -0
  17. package/dist/commands/gateway/tokens.d.ts +3 -0
  18. package/dist/commands/gateway/tokens.d.ts.map +1 -0
  19. package/dist/commands/gateway/tokens.js +75 -0
  20. package/dist/commands/gateway/tokens.js.map +1 -0
  21. package/dist/commands/help.d.ts.map +1 -1
  22. package/dist/commands/help.js +50 -0
  23. package/dist/commands/help.js.map +1 -1
  24. package/dist/commands/launch.d.ts +52 -0
  25. package/dist/commands/launch.d.ts.map +1 -0
  26. package/dist/commands/launch.js +580 -0
  27. package/dist/commands/launch.js.map +1 -0
  28. package/dist/commands/mcp.d.ts.map +1 -1
  29. package/dist/commands/mcp.js +15 -11
  30. package/dist/commands/mcp.js.map +1 -1
  31. package/dist/commands/models.d.ts.map +1 -1
  32. package/dist/commands/models.js +164 -11
  33. package/dist/commands/models.js.map +1 -1
  34. package/dist/commands/run.d.ts.map +1 -1
  35. package/dist/commands/run.js +22 -3
  36. package/dist/commands/run.js.map +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +7 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/lib/agent-skill-paths.d.ts +1 -0
  41. package/dist/lib/agent-skill-paths.d.ts.map +1 -1
  42. package/dist/lib/agent-skill-paths.js +18 -2
  43. package/dist/lib/agent-skill-paths.js.map +1 -1
  44. package/dist/parse-args.d.ts.map +1 -1
  45. package/dist/parse-args.js +2 -0
  46. package/dist/parse-args.js.map +1 -1
  47. package/package.json +10 -4
@@ -0,0 +1,580 @@
1
+ /**
2
+ * `amux launch` command implementation.
3
+ *
4
+ * Resolves a launch plan for a given harness+provider combination,
5
+ * optionally spawns amux-proxy, then exec-forks the harness with
6
+ * stdin/stdout passthrough and proper signal forwarding.
7
+ */
8
+ import { resolveProvider, processTracker, } from '@a5c-ai/agent-mux-core';
9
+ import { translateForHarness } from '@a5c-ai/agent-mux-adapters';
10
+ import { flagStr, flagNum, flagBool, flagArr } from '../parse-args.js';
11
+ import { ExitCode } from '../exit-codes.js';
12
+ import { printError, printJsonError } from '../output.js';
13
+ /** Launch-specific flag definitions (global flags like model/json/debug are excluded). */
14
+ export const LAUNCH_FLAGS = {
15
+ 'api-key': { type: 'string' },
16
+ 'api-base': { type: 'string' },
17
+ 'region': { type: 'string' },
18
+ 'project': { type: 'string' },
19
+ 'resource-group': { type: 'string' },
20
+ 'endpoint-name': { type: 'string' },
21
+ 'transport': { short: 't', type: 'string' },
22
+ 'auth-command': { type: 'string' },
23
+ 'with-proxy-if-needed': { type: 'boolean' },
24
+ 'with-proxy': { type: 'boolean' },
25
+ 'no-proxy': { type: 'boolean' },
26
+ 'proxy-port': { type: 'number' },
27
+ 'proxy-log-level': { type: 'string' },
28
+ 'resume': { short: 'r', type: 'string' },
29
+ 'session-id': { short: 's', type: 'string' },
30
+ 'prompt': { short: 'p', type: 'string' },
31
+ 'max-turns': { type: 'number' },
32
+ 'max-budget-usd': { type: 'number' },
33
+ 'dry-run': { type: 'boolean' },
34
+ 'provider-arg': { type: 'string', repeatable: true },
35
+ 'observe': { type: 'boolean' },
36
+ };
37
+ // ---------------------------------------------------------------------------
38
+ // Plan resolution
39
+ // ---------------------------------------------------------------------------
40
+ export function resolveLaunchPlan(input) {
41
+ const providerId = (input.provider ?? 'anthropic');
42
+ const providerConfig = resolveProvider({
43
+ provider: providerId,
44
+ model: input.model,
45
+ transport: input.transport,
46
+ apiKey: input.apiKey,
47
+ apiBase: input.apiBase,
48
+ region: input.region,
49
+ project: input.project,
50
+ resourceGroup: input.resourceGroup,
51
+ endpointName: input.endpointName,
52
+ authCommand: input.authCommand,
53
+ });
54
+ // Merge extra provider args into params
55
+ if (input.providerArgs) {
56
+ Object.assign(providerConfig.params, input.providerArgs);
57
+ }
58
+ const translation = translateForHarness(input.harness, providerConfig, input.adapter);
59
+ let proxyNeeded = translation.proxyRequired;
60
+ let proxyReason;
61
+ if (!translation.proxyRequired) {
62
+ if (input.proxyMode === 'always') {
63
+ proxyNeeded = true;
64
+ proxyReason = 'Proxy forced via --with-proxy';
65
+ }
66
+ else {
67
+ proxyNeeded = false;
68
+ proxyReason = `${input.harness} supports ${providerId} natively`;
69
+ }
70
+ }
71
+ else {
72
+ if (input.proxyMode === 'never') {
73
+ throw new Error(`${input.harness} does not support ${providerId} natively. ` +
74
+ `Use --with-proxy-if-needed to auto-launch the proxy.`);
75
+ }
76
+ proxyReason =
77
+ `${input.harness} does not support ${providerId} natively; ` +
78
+ `proxy bridges ${providerId} → ${translation.proxyExposedTransport}`;
79
+ }
80
+ const proxy = proxyNeeded
81
+ ? {
82
+ targetProvider: providerId,
83
+ targetModel: providerConfig.model,
84
+ exposedTransport: translation.proxyExposedTransport ?? 'openai-chat',
85
+ port: input.proxyPort ?? 0,
86
+ }
87
+ : undefined;
88
+ return {
89
+ harness: input.harness,
90
+ provider: providerId,
91
+ transport: providerConfig.transport,
92
+ model: providerConfig.model,
93
+ proxyNeeded,
94
+ proxyReason,
95
+ proxy,
96
+ command: input.harness,
97
+ args: [...translation.args],
98
+ env: { ...translation.env },
99
+ };
100
+ }
101
+ function appendHarnessSessionArgs(plan, session) {
102
+ switch (plan.harness) {
103
+ case 'claude':
104
+ if (session.resumeId)
105
+ plan.args.push('--resume', session.resumeId);
106
+ if (session.sessionId)
107
+ plan.args.push('--session-id', session.sessionId);
108
+ if (session.prompt)
109
+ plan.args.push('--print', session.prompt);
110
+ if (session.maxTurns)
111
+ plan.args.push('--max-turns', String(session.maxTurns));
112
+ break;
113
+ case 'codex':
114
+ if (session.resumeId) {
115
+ plan.args.unshift('resume', session.resumeId);
116
+ }
117
+ else if (session.prompt) {
118
+ plan.args.unshift('exec', session.prompt);
119
+ }
120
+ break;
121
+ case 'gemini':
122
+ if (session.prompt)
123
+ plan.args.push('--prompt', session.prompt);
124
+ break;
125
+ case 'opencode':
126
+ if (session.resumeId)
127
+ plan.args.push('--session', session.resumeId);
128
+ // OpenCode has no non-interactive prompt flag; prompt delivered via stdin after launch
129
+ break;
130
+ }
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // Proxy helpers
134
+ // ---------------------------------------------------------------------------
135
+ function updateEnvForProxy(env, transport, proxyUrl, authToken) {
136
+ switch (transport) {
137
+ case 'anthropic':
138
+ env['ANTHROPIC_BASE_URL'] = proxyUrl;
139
+ env['ANTHROPIC_API_KEY'] = authToken;
140
+ env['ANTHROPIC_AUTH_TOKEN'] = authToken;
141
+ break;
142
+ case 'openai-chat':
143
+ case 'openai-responses':
144
+ env['OPENAI_BASE_URL'] = proxyUrl;
145
+ env['OPENAI_API_KEY'] = authToken;
146
+ break;
147
+ case 'google':
148
+ env['CODE_ASSIST_ENDPOINT'] = proxyUrl;
149
+ env['GEMINI_API_KEY'] = authToken;
150
+ break;
151
+ }
152
+ }
153
+ async function launchProxy(proxy, harnessEnv, opts) {
154
+ const { spawn } = await import('node:child_process');
155
+ const proxyEnv = {
156
+ ...process.env,
157
+ AMUX_PROXY_TARGET_PROVIDER: proxy.targetProvider,
158
+ AMUX_PROXY_TARGET_MODEL: `${proxy.targetProvider}/${proxy.targetModel}`,
159
+ AMUX_PROXY_EXPOSED_TRANSPORT: proxy.exposedTransport,
160
+ AMUX_PROXY_PORT: String(proxy.port),
161
+ AMUX_PROXY_LOG_LEVEL: opts.logLevel,
162
+ };
163
+ const proc = spawn('amux-proxy', [], {
164
+ stdio: ['ignore', 'pipe', 'pipe'],
165
+ env: proxyEnv,
166
+ detached: false,
167
+ });
168
+ return new Promise((resolve, reject) => {
169
+ const timeout = setTimeout(() => {
170
+ proc.kill('SIGKILL');
171
+ reject(new Error('Proxy health check timed out after 15s'));
172
+ }, 15_000);
173
+ let buffer = '';
174
+ proc.stdout.on('data', (chunk) => {
175
+ buffer += chunk.toString();
176
+ const newlineIdx = buffer.indexOf('\n');
177
+ if (newlineIdx >= 0) {
178
+ const line = buffer.slice(0, newlineIdx);
179
+ try {
180
+ const msg = JSON.parse(line);
181
+ if (msg['event'] === 'ready') {
182
+ clearTimeout(timeout);
183
+ updateEnvForProxy(harnessEnv, proxy.exposedTransport, msg['url'], msg['auth_token']);
184
+ proc.stdout.pipe(process.stderr);
185
+ resolve(proc);
186
+ }
187
+ }
188
+ catch { /* not JSON, ignore */ }
189
+ }
190
+ });
191
+ proc.on('error', (err) => {
192
+ clearTimeout(timeout);
193
+ reject(err);
194
+ });
195
+ proc.on('exit', (code) => {
196
+ clearTimeout(timeout);
197
+ reject(new Error(`Proxy exited with code ${code} before becoming ready`));
198
+ });
199
+ proc.stderr.pipe(process.stderr);
200
+ });
201
+ }
202
+ // ---------------------------------------------------------------------------
203
+ // Provider auth validation helper
204
+ // ---------------------------------------------------------------------------
205
+ async function validateProviderAuth(plan) {
206
+ const { execSync } = await import('node:child_process');
207
+ try {
208
+ switch (plan.provider) {
209
+ case 'bedrock':
210
+ execSync('aws sts get-caller-identity', { stdio: 'ignore', timeout: 10_000 });
211
+ break;
212
+ case 'vertex':
213
+ execSync('gcloud auth application-default print-access-token', { stdio: 'ignore', timeout: 10_000 });
214
+ break;
215
+ }
216
+ }
217
+ catch {
218
+ const guidance = {
219
+ bedrock: 'AWS credentials not configured. Run: aws configure',
220
+ vertex: 'GCP credentials not configured. Run: gcloud auth application-default login',
221
+ };
222
+ return guidance[plan.provider] ?? null;
223
+ }
224
+ return null;
225
+ }
226
+ // ---------------------------------------------------------------------------
227
+ // Ollama lifecycle helper
228
+ // ---------------------------------------------------------------------------
229
+ async function ensureOllamaReady(model) {
230
+ const { execSync, spawnSync } = await import('node:child_process');
231
+ // Check if Ollama is running
232
+ try {
233
+ execSync('ollama list', { stdio: 'ignore', timeout: 5000 });
234
+ }
235
+ catch {
236
+ return { ok: false, message: 'Ollama is not running. Start it with: ollama serve' };
237
+ }
238
+ // Check if model is available
239
+ try {
240
+ const list = execSync('ollama list', { encoding: 'utf-8', timeout: 5000 });
241
+ const lines = list.split('\n').map(l => l.trim()).filter(Boolean);
242
+ const modelNames = lines.slice(1).map(l => l.split(/\s+/)[0]);
243
+ const modelBase = model.split(':')[0];
244
+ if (!modelNames.some(n => n.startsWith(modelBase))) {
245
+ console.error(`[amux launch] Model '${model}' not found locally. Pulling...`);
246
+ const pull = spawnSync('ollama', ['pull', model], { stdio: 'inherit', timeout: 600_000 });
247
+ if (pull.status !== 0) {
248
+ return { ok: false, message: `Failed to pull model '${model}'` };
249
+ }
250
+ }
251
+ }
252
+ catch (e) {
253
+ console.error(`[amux launch] Warning: could not verify model availability`);
254
+ }
255
+ return { ok: true };
256
+ }
257
+ // ---------------------------------------------------------------------------
258
+ // Main command handler
259
+ // ---------------------------------------------------------------------------
260
+ export async function launchCommand(client, args) {
261
+ const jsonMode = flagBool(args.flags, 'json') === true;
262
+ const harness = args.positionals[0];
263
+ const provider = args.positionals[1];
264
+ if (!harness) {
265
+ const msg = 'Usage: amux launch <harness> [provider] [flags...]\nRun "amux launch --help" for details.';
266
+ if (jsonMode)
267
+ printJsonError('VALIDATION_ERROR', msg);
268
+ else
269
+ printError(msg);
270
+ return ExitCode.USAGE_ERROR;
271
+ }
272
+ // Validate harness exists
273
+ const adapter = client.adapters.get(harness);
274
+ if (!adapter) {
275
+ const available = client.adapters.list().map((a) => a.agent).join(', ');
276
+ const msg = `Unknown harness '${harness}'. Available: ${available}`;
277
+ if (jsonMode)
278
+ printJsonError('AGENT_NOT_FOUND', msg);
279
+ else
280
+ printError(msg);
281
+ return ExitCode.USAGE_ERROR;
282
+ }
283
+ // Check harness is installed
284
+ if (adapter.detectInstallation) {
285
+ const installResult = await adapter.detectInstallation();
286
+ if (!installResult.installed) {
287
+ const installCmd = adapter.capabilities?.installMethods?.[0]?.command ?? `npm install -g ${harness}`;
288
+ const msg = `${harness} is not installed. Install with: ${installCmd}`;
289
+ if (jsonMode)
290
+ printJsonError('AGENT_NOT_FOUND', msg);
291
+ else
292
+ printError(msg);
293
+ return ExitCode.USAGE_ERROR;
294
+ }
295
+ }
296
+ if (flagStr(args.flags, 'resume') && adapter.capabilities && !adapter.capabilities.canResume) {
297
+ const msg = `${harness} does not support session resumption`;
298
+ if (jsonMode)
299
+ printJsonError('CAPABILITY_ERROR', msg);
300
+ else
301
+ printError(msg);
302
+ return ExitCode.USAGE_ERROR;
303
+ }
304
+ // Validate proxy flag mutual exclusion
305
+ const withProxy = flagBool(args.flags, 'with-proxy') === true;
306
+ const withProxyIfNeeded = flagBool(args.flags, 'with-proxy-if-needed') === true;
307
+ const noProxy = flagBool(args.flags, 'no-proxy') === true;
308
+ if ((withProxy || withProxyIfNeeded) && noProxy) {
309
+ const msg = 'Cannot use --with-proxy/--with-proxy-if-needed with --no-proxy';
310
+ if (jsonMode)
311
+ printJsonError('VALIDATION_ERROR', msg);
312
+ else
313
+ printError(msg);
314
+ return ExitCode.USAGE_ERROR;
315
+ }
316
+ const dryRun = flagBool(args.flags, 'dry-run') === true;
317
+ const proxyMode = noProxy ? 'never'
318
+ : withProxy ? 'always'
319
+ : withProxyIfNeeded ? 'if-needed'
320
+ : 'never';
321
+ const providerArgs = flagArr(args.flags, 'provider-arg') ?? [];
322
+ const extraParams = {};
323
+ for (const arg of providerArgs) {
324
+ const eqIdx = arg.indexOf('=');
325
+ if (eqIdx > 0) {
326
+ extraParams[arg.slice(0, eqIdx)] = arg.slice(eqIdx + 1);
327
+ }
328
+ }
329
+ let plan;
330
+ try {
331
+ plan = resolveLaunchPlan({
332
+ harness,
333
+ provider: provider,
334
+ model: flagStr(args.flags, 'model'),
335
+ transport: flagStr(args.flags, 'transport'),
336
+ apiKey: flagStr(args.flags, 'api-key'),
337
+ apiBase: flagStr(args.flags, 'api-base'),
338
+ region: flagStr(args.flags, 'region'),
339
+ project: flagStr(args.flags, 'project'),
340
+ resourceGroup: flagStr(args.flags, 'resource-group'),
341
+ endpointName: flagStr(args.flags, 'endpoint-name'),
342
+ authCommand: flagStr(args.flags, 'auth-command'),
343
+ proxyMode,
344
+ proxyPort: flagNum(args.flags, 'proxy-port'),
345
+ adapter: adapter,
346
+ providerArgs: extraParams,
347
+ });
348
+ }
349
+ catch (err) {
350
+ const msg = err instanceof Error ? err.message : String(err);
351
+ if (jsonMode)
352
+ printJsonError('VALIDATION_ERROR', msg);
353
+ else
354
+ printError(msg);
355
+ return ExitCode.USAGE_ERROR;
356
+ }
357
+ // Warn if auth appears missing for the resolved provider
358
+ const resolvedConfig = resolveProvider({
359
+ provider: provider,
360
+ model: flagStr(args.flags, 'model'),
361
+ apiKey: flagStr(args.flags, 'api-key'),
362
+ authCommand: flagStr(args.flags, 'auth-command'),
363
+ });
364
+ if (resolvedConfig.auth.type === 'api_key' && !resolvedConfig.auth.apiKey) {
365
+ const defaults = (await import('@a5c-ai/agent-mux-core')).PROVIDER_DEFAULTS;
366
+ const provId = resolvedConfig.provider;
367
+ const envKey = defaults[provId]?.envKey;
368
+ if (envKey) {
369
+ console.error(`Warning: No API key found for ${provId}. Set ${envKey} or use --api-key.`);
370
+ }
371
+ }
372
+ // Provider-specific auth validation (Bedrock STS, Vertex ADC, etc.)
373
+ if (!dryRun) {
374
+ const authWarning = await validateProviderAuth(plan);
375
+ if (authWarning) {
376
+ console.error(`Warning: ${authWarning}`);
377
+ }
378
+ }
379
+ // Ollama lifecycle: verify server is running and model is available (pull if needed)
380
+ if (plan.provider === 'ollama' && plan.model && !dryRun) {
381
+ const ollamaCheck = await ensureOllamaReady(plan.model);
382
+ if (!ollamaCheck.ok) {
383
+ if (jsonMode)
384
+ printJsonError('SPAWN_ERROR', ollamaCheck.message);
385
+ else
386
+ printError(ollamaCheck.message);
387
+ return ExitCode.GENERAL_ERROR;
388
+ }
389
+ }
390
+ // Dry-run: print plan and exit without spawning anything
391
+ if (dryRun) {
392
+ const output = JSON.parse(JSON.stringify(plan));
393
+ for (const [k, v] of Object.entries(output.env)) {
394
+ if (k.toLowerCase().includes('key') || k.toLowerCase().includes('token')) {
395
+ output.env[k] = String(v).slice(0, 8) + '***';
396
+ }
397
+ }
398
+ console.log(JSON.stringify(output, null, 2));
399
+ return ExitCode.SUCCESS;
400
+ }
401
+ // Append session/prompt args
402
+ const prompt = flagStr(args.flags, 'prompt');
403
+ appendHarnessSessionArgs(plan, {
404
+ resumeId: flagStr(args.flags, 'resume'),
405
+ sessionId: flagStr(args.flags, 'session-id'),
406
+ prompt,
407
+ maxTurns: flagNum(args.flags, 'max-turns'),
408
+ });
409
+ // Passthrough args after --
410
+ const dashDashIdx = process.argv.indexOf('--');
411
+ if (dashDashIdx >= 0) {
412
+ plan.args.push(...process.argv.slice(dashDashIdx + 1));
413
+ }
414
+ // Launch proxy if needed
415
+ let proxyProcess;
416
+ if (plan.proxyNeeded && plan.proxy) {
417
+ // Pre-check proxy installation
418
+ const { execSync } = await import('node:child_process');
419
+ let proxyInstalled = false;
420
+ try {
421
+ execSync('amux-proxy --version', { stdio: 'ignore', timeout: 5000 });
422
+ proxyInstalled = true;
423
+ }
424
+ catch { }
425
+ if (!proxyInstalled) {
426
+ try {
427
+ execSync('python -m amux_proxy --version', { stdio: 'ignore', timeout: 5000 });
428
+ proxyInstalled = true;
429
+ }
430
+ catch { }
431
+ }
432
+ if (!proxyInstalled) {
433
+ const msg = 'amux-proxy is not installed. Install with: pip install amux-proxy';
434
+ if (jsonMode)
435
+ printJsonError('SPAWN_ERROR', msg);
436
+ else
437
+ printError(msg);
438
+ return ExitCode.GENERAL_ERROR;
439
+ }
440
+ }
441
+ if (plan.proxyNeeded && plan.proxy) {
442
+ try {
443
+ proxyProcess = await launchProxy(plan.proxy, plan.env, {
444
+ logLevel: flagStr(args.flags, 'proxy-log-level') ?? 'warn',
445
+ });
446
+ if (proxyProcess?.pid) {
447
+ processTracker.register(proxyProcess.pid, proxyProcess.pid, 'amux-proxy');
448
+ }
449
+ }
450
+ catch (err) {
451
+ const msg = err instanceof Error ? err.message : String(err);
452
+ if (jsonMode)
453
+ printJsonError('SPAWN_ERROR', `Failed to launch proxy: ${msg}`);
454
+ else
455
+ printError(`Failed to launch proxy: ${msg}`);
456
+ return ExitCode.GENERAL_ERROR;
457
+ }
458
+ }
459
+ // Spawn harness
460
+ const isInteractive = !prompt;
461
+ let child;
462
+ let ptyProcess = null;
463
+ if (isInteractive) {
464
+ // Try to use node-pty for TUI harnesses
465
+ try {
466
+ const nodePty = require('node-pty'); // dynamic require — node-pty is optional
467
+ ptyProcess = nodePty.spawn(plan.command, plan.args, {
468
+ name: 'xterm-256color',
469
+ cols: process.stdout.columns || 80,
470
+ rows: process.stdout.rows || 24,
471
+ cwd: process.cwd(),
472
+ env: { ...process.env, ...plan.env },
473
+ });
474
+ // Pipe PTY to stdout and stdin to PTY
475
+ ptyProcess.onData((data) => process.stdout.write(data));
476
+ if (process.stdin.isTTY) {
477
+ process.stdin.setRawMode(true);
478
+ }
479
+ process.stdin.resume();
480
+ process.stdin.on('data', (data) => ptyProcess.write(data.toString()));
481
+ // Handle terminal resize
482
+ process.stdout.on('resize', () => {
483
+ ptyProcess.resize(process.stdout.columns || 80, process.stdout.rows || 24);
484
+ });
485
+ // Create a fake ChildProcess-like for signal handling
486
+ child = { pid: ptyProcess.pid, kill: (sig) => ptyProcess.kill(sig) };
487
+ }
488
+ catch {
489
+ // node-pty not available, fall back to stdio inherit
490
+ const { spawn } = await import('node:child_process');
491
+ child = spawn(plan.command, plan.args, {
492
+ stdio: 'inherit',
493
+ env: { ...process.env, ...plan.env },
494
+ cwd: process.cwd(),
495
+ shell: false,
496
+ });
497
+ }
498
+ }
499
+ else {
500
+ const { spawn } = await import('node:child_process');
501
+ child = spawn(plan.command, plan.args, {
502
+ stdio: ['pipe', 'inherit', 'inherit'],
503
+ env: { ...process.env, ...plan.env },
504
+ cwd: process.cwd(),
505
+ shell: false,
506
+ });
507
+ }
508
+ if (flagBool(args.flags, 'observe')) {
509
+ if (isInteractive) {
510
+ console.error('[amux launch] Warning: --observe does not work with interactive PTY mode');
511
+ }
512
+ else {
513
+ // Tee stdout to both console and a log file
514
+ const logPath = `.amux-launch-${Date.now()}.log`;
515
+ const logStream = (await import('node:fs')).createWriteStream(logPath);
516
+ child.stdout?.on('data', (chunk) => {
517
+ process.stdout.write(chunk);
518
+ logStream.write(chunk);
519
+ });
520
+ child.stderr?.on('data', (chunk) => {
521
+ process.stderr.write(chunk);
522
+ logStream.write(chunk);
523
+ });
524
+ child.on('exit', () => logStream.end());
525
+ console.error(`[amux launch] Observing output to ${logPath}`);
526
+ }
527
+ }
528
+ const forwardSignal = (sig) => {
529
+ if (process.platform === 'win32') {
530
+ try {
531
+ const { execSync } = require('node:child_process');
532
+ execSync(`taskkill /PID ${child.pid} /T /F`, { stdio: 'ignore' });
533
+ }
534
+ catch { /* process may already be dead */ }
535
+ }
536
+ else {
537
+ child.kill(sig);
538
+ }
539
+ };
540
+ process.on('SIGINT', forwardSignal);
541
+ process.on('SIGTERM', forwardSignal);
542
+ if (!isInteractive && prompt && child.stdin) {
543
+ child.stdin.write(prompt);
544
+ child.stdin.end();
545
+ }
546
+ const exitCode = await new Promise((resolve) => {
547
+ if (ptyProcess) {
548
+ ptyProcess.onExit(({ exitCode: code }) => {
549
+ if (process.stdin.isTTY)
550
+ process.stdin.setRawMode(false);
551
+ resolve(code);
552
+ });
553
+ }
554
+ else {
555
+ child.on('exit', (code, signal) => {
556
+ resolve(signal ? 128 + (signal === 'SIGINT' ? 2 : 15) : (code ?? 1));
557
+ });
558
+ }
559
+ });
560
+ process.off('SIGINT', forwardSignal);
561
+ process.off('SIGTERM', forwardSignal);
562
+ if (proxyProcess) {
563
+ proxyProcess.kill('SIGTERM');
564
+ await new Promise((resolve) => {
565
+ const killTimeout = setTimeout(() => {
566
+ proxyProcess.kill('SIGKILL');
567
+ resolve();
568
+ }, 5000);
569
+ proxyProcess.on('exit', () => {
570
+ clearTimeout(killTimeout);
571
+ if (proxyProcess.pid) {
572
+ processTracker.unregister(proxyProcess.pid);
573
+ }
574
+ resolve();
575
+ });
576
+ });
577
+ }
578
+ return exitCode;
579
+ }
580
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/commands/launch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CAyFjB"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,MAAM,CAAC,CA+FjB"}