cc-control-agent 2.3.6 → 2.4.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.
- package/dist/src/cli-wrapper.js +13 -2
- package/dist/src/cli-wrapper.js.map +1 -1
- package/dist/src/cli.js +0 -166
- package/dist/src/cli.js.map +1 -1
- package/dist/src/command/handler.d.ts +20 -3
- package/dist/src/command/handler.d.ts.map +1 -1
- package/dist/src/command/handler.js +183 -47
- package/dist/src/command/handler.js.map +1 -1
- package/dist/src/config/default.d.ts +0 -4
- package/dist/src/config/default.d.ts.map +1 -1
- package/dist/src/config/default.js +9 -118
- package/dist/src/config/default.js.map +1 -1
- package/dist/src/session/claude-monitor.d.ts.map +1 -1
- package/dist/src/session/claude-monitor.js +7 -10
- package/dist/src/session/claude-monitor.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
package/dist/src/cli-wrapper.js
CHANGED
|
@@ -6,8 +6,19 @@ if (!process.env.NODE_ENV) {
|
|
|
6
6
|
if (!process.env.RELAY_URL) {
|
|
7
7
|
process.env.RELAY_URL = "https://api.cc.groovyconnect.co";
|
|
8
8
|
}
|
|
9
|
-
//
|
|
10
|
-
|
|
9
|
+
// Handle invalid NODE_ENV gracefully
|
|
10
|
+
const validEnvs = ["development", "production", "test"];
|
|
11
|
+
const normalizedEnv = String(process.env.NODE_ENV).toLowerCase();
|
|
12
|
+
if (!validEnvs.includes(process.env.NODE_ENV) && !["dev", "local"].includes(normalizedEnv)) {
|
|
13
|
+
console.warn(`\n⚠️ Warning: NODE_ENV="${process.env.NODE_ENV}" is not a valid environment`);
|
|
14
|
+
console.warn(` Defaulting to development mode`);
|
|
15
|
+
console.warn(` Valid values: development, production, test\n`);
|
|
16
|
+
process.env.NODE_ENV = "development";
|
|
17
|
+
}
|
|
18
|
+
else if (normalizedEnv === "dev" || normalizedEnv === "local") {
|
|
19
|
+
// Silently normalize common aliases
|
|
20
|
+
process.env.NODE_ENV = "development";
|
|
21
|
+
}
|
|
11
22
|
// Now import and run the actual CLI
|
|
12
23
|
import("./cli.js").catch(error => {
|
|
13
24
|
console.error("Failed to start CLI:", error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-wrapper.js","sourceRoot":"","sources":["../../src/cli-wrapper.ts"],"names":[],"mappings":";AAEA,oDAAoD;AACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;AACvC,CAAC;AACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,iCAAiC,CAAC;AAC5D,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"cli-wrapper.js","sourceRoot":"","sources":["../../src/cli-wrapper.ts"],"names":[],"mappings":";AAEA,oDAAoD;AACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;AACvC,CAAC;AACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,iCAAiC,CAAC;AAC5D,CAAC;AAED,qCAAqC;AACrC,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACxD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;IAC3F,OAAO,CAAC,IAAI,CAAC,4BAA4B,OAAO,CAAC,GAAG,CAAC,QAAQ,8BAA8B,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;AACvC,CAAC;KAAM,IAAI,aAAa,KAAK,KAAK,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;IAChE,oCAAoC;IACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;AACvC,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/src/cli.js
CHANGED
|
@@ -301,172 +301,6 @@ program
|
|
|
301
301
|
await credManager.clear();
|
|
302
302
|
console.log("Logged out. Credentials cleared.");
|
|
303
303
|
});
|
|
304
|
-
// ============================================================================
|
|
305
|
-
// Doctor - Health Check & Diagnostics
|
|
306
|
-
// ============================================================================
|
|
307
|
-
program
|
|
308
|
-
.command("doctor")
|
|
309
|
-
.description("Run health check and diagnostics")
|
|
310
|
-
.action(async () => {
|
|
311
|
-
console.log(style.bold("CC-Control Health Check"));
|
|
312
|
-
console.log(style.dim("=".repeat(40)));
|
|
313
|
-
console.log();
|
|
314
|
-
const issues = [];
|
|
315
|
-
const warnings = [];
|
|
316
|
-
// Check 1: Node.js version
|
|
317
|
-
const nodeVersion = process.version;
|
|
318
|
-
const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0], 10);
|
|
319
|
-
if (majorVersion < 20) {
|
|
320
|
-
issues.push(`Node.js version too old: ${nodeVersion} (need 20+)`);
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
console.log(style.green("✓") + ` Node.js version: ${nodeVersion}`);
|
|
324
|
-
}
|
|
325
|
-
// Check 2: Platform
|
|
326
|
-
const platform = process.platform;
|
|
327
|
-
const arch = process.arch;
|
|
328
|
-
console.log(style.green("✓") + ` Platform: ${platform} (${arch})`);
|
|
329
|
-
// Check 3: Claude Code directory
|
|
330
|
-
const { homedir } = await import("os");
|
|
331
|
-
const { join } = await import("path");
|
|
332
|
-
const { existsSync } = await import("fs");
|
|
333
|
-
const claudePath = join(homedir(), '.claude');
|
|
334
|
-
const projectsPath = join(claudePath, 'projects');
|
|
335
|
-
if (!existsSync(claudePath)) {
|
|
336
|
-
issues.push("Claude Code directory not found");
|
|
337
|
-
console.log(style.red("✗") + ` Claude Code directory: NOT FOUND`);
|
|
338
|
-
console.log(style.dim(" → Install Claude Code Desktop from https://claude.ai/download"));
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
console.log(style.green("✓") + ` Claude Code directory: ${claudePath}`);
|
|
342
|
-
}
|
|
343
|
-
// Check 4: Projects directory
|
|
344
|
-
if (!existsSync(projectsPath)) {
|
|
345
|
-
warnings.push("No Claude Code projects found");
|
|
346
|
-
console.log(style.yellow("⚠") + ` Projects directory: NOT FOUND`);
|
|
347
|
-
console.log(style.dim(" → Start a Claude Code session first"));
|
|
348
|
-
}
|
|
349
|
-
else {
|
|
350
|
-
console.log(style.green("✓") + ` Projects directory: EXISTS`);
|
|
351
|
-
// Count projects
|
|
352
|
-
try {
|
|
353
|
-
const { readdirSync } = await import("fs");
|
|
354
|
-
const projects = readdirSync(projectsPath);
|
|
355
|
-
console.log(style.dim(` → Found ${projects.length} project(s)`));
|
|
356
|
-
}
|
|
357
|
-
catch (e) {
|
|
358
|
-
console.log(style.yellow("⚠") + ` Could not read projects`);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
// Check 5: Credentials
|
|
362
|
-
await credManager.load();
|
|
363
|
-
const creds = credManager.get();
|
|
364
|
-
if (!creds) {
|
|
365
|
-
issues.push("Not logged in");
|
|
366
|
-
console.log(style.red("✗") + ` Login: NOT LOGGED IN`);
|
|
367
|
-
console.log(style.dim(" → Run 'cc-control onboarding' to login"));
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
console.log(style.green("✓") + ` Login: LOGGED IN`);
|
|
371
|
-
console.log(style.dim(` → Email: ${creds.email}`));
|
|
372
|
-
// Check if access token is expired
|
|
373
|
-
if (creds.expiresAt && new Date(creds.expiresAt) < new Date()) {
|
|
374
|
-
issues.push("Access token expired");
|
|
375
|
-
console.log(style.red("✗") + ` Access token: EXPIRED`);
|
|
376
|
-
console.log(style.dim(" → Run 'cc-control login' to refresh"));
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
console.log(style.green("✓") + ` Access token: VALID`);
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
// Check 6: Device registration
|
|
383
|
-
if (!creds?.deviceId) {
|
|
384
|
-
issues.push("Device not registered");
|
|
385
|
-
console.log(style.red("✗") + ` Device: NOT REGISTERED`);
|
|
386
|
-
}
|
|
387
|
-
else {
|
|
388
|
-
console.log(style.green("✓") + ` Device: REGISTERED`);
|
|
389
|
-
console.log(style.dim(` → Device ID: ${creds.deviceId.substring(0, 8)}...`));
|
|
390
|
-
}
|
|
391
|
-
// Check 7: Relay server connectivity
|
|
392
|
-
console.log();
|
|
393
|
-
console.log(style.bold("Checking server connection..."));
|
|
394
|
-
try {
|
|
395
|
-
const relayUrl = process.env.CC_CONTROL_RELAY_URL || DEFAULT_RELAY;
|
|
396
|
-
const { default: axios } = await import("axios");
|
|
397
|
-
const response = await axios.get(`${relayUrl}/health`, {
|
|
398
|
-
timeout: 5000,
|
|
399
|
-
});
|
|
400
|
-
if (response.status === 200) {
|
|
401
|
-
console.log(style.green("✓") + ` Server: CONNECTED (${relayUrl})`);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
catch (error) {
|
|
405
|
-
warnings.push(`Cannot reach server: ${error.message}`);
|
|
406
|
-
console.log(style.yellow("⚠") + ` Server: CANNOT CONNECT`);
|
|
407
|
-
console.log(style.dim(" → Check your internet connection"));
|
|
408
|
-
}
|
|
409
|
-
// Summary
|
|
410
|
-
console.log();
|
|
411
|
-
console.log(style.bold("=".repeat(40)));
|
|
412
|
-
if (issues.length === 0 && warnings.length === 0) {
|
|
413
|
-
console.log(style.bold(style.green("✓ ALL CHECKS PASSED")));
|
|
414
|
-
console.log();
|
|
415
|
-
console.log("Everything looks good! You can run:");
|
|
416
|
-
console.log(style.dim(" cc-control start"));
|
|
417
|
-
}
|
|
418
|
-
else {
|
|
419
|
-
if (issues.length > 0) {
|
|
420
|
-
console.log(style.bold(style.red("✗ ISSUES FOUND:")));
|
|
421
|
-
issues.forEach((issue, i) => {
|
|
422
|
-
console.log(style.red(` ${i + 1}. ${issue}`));
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
if (warnings.length > 0) {
|
|
426
|
-
console.log();
|
|
427
|
-
console.log(style.bold(style.yellow("⚠ WARNINGS:")));
|
|
428
|
-
warnings.forEach((warning, i) => {
|
|
429
|
-
console.log(style.yellow(` ${i + 1}. ${warning}`));
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
console.log();
|
|
433
|
-
console.log("For help, share the output of: cc-control doctor");
|
|
434
|
-
}
|
|
435
|
-
console.log();
|
|
436
|
-
});
|
|
437
|
-
// ============================================================================
|
|
438
|
-
// Logs - Show recent logs
|
|
439
|
-
// ============================================================================
|
|
440
|
-
program
|
|
441
|
-
.command("logs")
|
|
442
|
-
.description("Show recent logs for debugging")
|
|
443
|
-
.option("-n, --lines <number>", "Number of lines to show", "50")
|
|
444
|
-
.action(async (options) => {
|
|
445
|
-
const { homedir } = await import("os");
|
|
446
|
-
const { join } = await import("path");
|
|
447
|
-
const { existsSync, readFileSync, readdirSync } = await import("fs");
|
|
448
|
-
// Try to find log file
|
|
449
|
-
const logPaths = [
|
|
450
|
-
join(process.cwd(), 'logs', 'agent.log'),
|
|
451
|
-
join(homedir(), '.cc-control', 'logs', 'agent.log'),
|
|
452
|
-
join(process.env.TEMP || '/tmp', 'desktop-agent.log'),
|
|
453
|
-
];
|
|
454
|
-
let logFile = logPaths.find(p => existsSync(p));
|
|
455
|
-
if (!logFile) {
|
|
456
|
-
console.log(style.yellow("No log file found."));
|
|
457
|
-
console.log(style.dim("Logs are written to ~/.cc-control/logs/agent.log"));
|
|
458
|
-
console.log();
|
|
459
|
-
console.log("To enable logging, run: cc-control start");
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
const lines = parseInt(options.lines, 10);
|
|
463
|
-
const content = readFileSync(logFile, 'utf8');
|
|
464
|
-
const logLines = content.split('\n').slice(-lines);
|
|
465
|
-
console.log(style.bold(`Showing last ${logLines.length} lines from:`));
|
|
466
|
-
console.log(style.dim(logFile));
|
|
467
|
-
console.log(style.dim("=".repeat(40)));
|
|
468
|
-
console.log(logLines.join('\n'));
|
|
469
|
-
});
|
|
470
304
|
program.parse(process.argv);
|
|
471
305
|
if (!process.argv.slice(2).length) {
|
|
472
306
|
program.outputHelp();
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,+EAA+E;AAC/E,0DAA0D;AAC1D,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAa,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,WAAW,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAEhD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,iCAAiC,CAAC;AAE5F,SAAS,MAAM,CAAC,QAAgB;IAC9B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,oFAAoF;QACpF,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kCAAkC;AAClC,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;IAC/C,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;IAC9C,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IACjD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAChD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAClD,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAC/C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;CACjD,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,OAAO,GAAG,KAAK;IACvC,mBAAmB;IACnB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAEzB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAG,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,MAAM,eAAe,GAA0C;QAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;KACnF,CAAC;IACF,IAAI,OAAO;QAAE,eAAe,CAAC,QAAQ,GAAG,OAAO,CAAC;IAChD,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IAEjC,oBAAoB;IACpB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAElD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,8EAA8E,CAAC;KAC3F,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAC/E,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAEhE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACrC,uEAAuE;YACvE,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,MAAM,UAAU,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAC/E,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,iDAAiD;QACjD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBACjC,QAAQ,EAAE,OAAO,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YAEH,6CAA6C;YAC7C,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,6DAA6D;gBAC7D,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,MAAM,UAAU,EAAE,CAAC;YACrB,CAAC;YACD,OAAO;QACT,CAAC;QAED,yDAAyD;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,CAAC;QAEpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEtE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE3E,iCAAiC;QACjC,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4EAA4E,CAAC,CAAC,CAAC;QAC1G,CAAC;QAED,uBAAuB;QACvB,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,YAAY,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,WAAgB,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC;YAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;gBACpF,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gDAAgD,CAAC,CAAC,CAAC;gBAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;gBAC9F,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAC/E,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,iDAAiD;QACjD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;gBACjC,QAAQ,EAAE,OAAO,CAAC,KAAK;gBACvB,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,UAAU,EAAE,CAAC;YACrB,CAAC;YACD,OAAO;QACT,CAAC;QAED,yDAAyD;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,4CAA4C,CAAC,CAAC;QAEpF,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAElF,uBAAuB;QACvB,MAAM,UAAU,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,YAAY,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAC/E,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAC/E,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEhC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,QAAQ;IACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnD,4BAA4B;IAC5B,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACxF,CAAC;SAAM,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpD,SAAS;IACT,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,YAAY;IACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEtD,eAAe;IACf,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAElG,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAC/E,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -10,14 +10,31 @@ export declare class CommandHandler {
|
|
|
10
10
|
handleCommand(command: Command): Promise<void>;
|
|
11
11
|
private executeCommand;
|
|
12
12
|
private executeSendPrompt;
|
|
13
|
+
/**
|
|
14
|
+
* Unix/macOS implementation: Use AppleScript to type into Terminal.app
|
|
15
|
+
*/
|
|
16
|
+
private sendPromptUnix;
|
|
17
|
+
/**
|
|
18
|
+
* Windows implementation: Use VBScript to send keystrokes
|
|
19
|
+
* Note: This requires the Claude Code window to be active/visible
|
|
20
|
+
*/
|
|
21
|
+
private sendPromptWindows;
|
|
13
22
|
/**
|
|
14
23
|
* Find the PID of a Claude Code process for a given session ID.
|
|
15
|
-
*
|
|
16
|
-
* We find which `claude` process has the matching session active.
|
|
24
|
+
* Platform-specific implementations for macOS, Linux, and Windows.
|
|
17
25
|
*/
|
|
18
26
|
private findClaudeProcessForSession;
|
|
19
27
|
/**
|
|
20
|
-
*
|
|
28
|
+
* Unix/macOS implementation: Use ps and lsof
|
|
29
|
+
*/
|
|
30
|
+
private findClaudeProcessUnix;
|
|
31
|
+
/**
|
|
32
|
+
* Windows implementation: Use PowerShell and tasklist
|
|
33
|
+
*/
|
|
34
|
+
private findClaudeProcessWindows;
|
|
35
|
+
/**
|
|
36
|
+
* Get the TTY of a process by PID (Unix/macOS only)
|
|
37
|
+
* Returns null on Windows as Windows doesn't use TTY
|
|
21
38
|
*/
|
|
22
39
|
private getProcessTty;
|
|
23
40
|
private executeSwitchSession;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/command/handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/command/handler.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,mBAAmB,CAAC;AAIlF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,eAAe,CAA0C;gBAErD,QAAQ,EAAE,eAAe;IAKrC,KAAK,IAAI,IAAI;IAMP,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YA4CtC,cAAc;YAed,iBAAiB;IAkC/B;;OAEG;YACW,cAAc;IA4D5B;;;OAGG;YACW,iBAAiB;IAqD/B;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAYnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoD7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA4DhC;;;OAGG;IACH,OAAO,CAAC,aAAa;YAiBP,oBAAoB;YAgBpB,iBAAiB;YAkBjB,oBAAoB;YAwBpB,QAAQ;YAgBR,SAAS;YAqBT,UAAU;YAcV,SAAS;IA+BvB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,iBAAiB;IAqBnB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAShC"}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
import { promises as fs } from "fs";
|
|
5
5
|
import { resolve, join } from "path";
|
|
6
6
|
import { execSync } from "child_process";
|
|
7
|
+
import { platform } from "os";
|
|
7
8
|
import { logger } from "../utils/logger.js";
|
|
8
9
|
import { getConfig } from "../config/default.js";
|
|
9
10
|
import { CommandValidator } from "./validator.js";
|
|
11
|
+
const PLATFORM = platform();
|
|
10
12
|
export class CommandHandler {
|
|
11
13
|
wsClient;
|
|
12
14
|
config = getConfig();
|
|
@@ -83,68 +85,145 @@ export class CommandHandler {
|
|
|
83
85
|
if (!pid) {
|
|
84
86
|
throw new Error(`No running Claude Code process found for session ${command.sessionId}`);
|
|
85
87
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
logger.info("Found Claude process", { pid, sessionId: command.sessionId });
|
|
89
|
+
// Platform-specific prompt injection
|
|
90
|
+
if (PLATFORM === "win32") {
|
|
91
|
+
return await this.sendPromptWindows(pid, command.sessionId, promptText);
|
|
89
92
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
93
|
+
else {
|
|
94
|
+
return await this.sendPromptUnix(pid, command.sessionId, promptText);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logger.error("Failed to send prompt to Claude process", error);
|
|
99
|
+
throw new Error(`Failed to send prompt: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Unix/macOS implementation: Use AppleScript to type into Terminal.app
|
|
104
|
+
*/
|
|
105
|
+
async sendPromptUnix(pid, sessionId, promptText) {
|
|
106
|
+
const tty = this.getProcessTty(pid);
|
|
107
|
+
if (!tty) {
|
|
108
|
+
throw new Error(`Could not find terminal for Claude process PID ${pid}`);
|
|
109
|
+
}
|
|
110
|
+
logger.info("Found Claude process", { pid, tty, sessionId });
|
|
111
|
+
// Use AppleScript to type the prompt into the correct Terminal.app tab
|
|
112
|
+
const escapedForAppleScript = promptText
|
|
113
|
+
.replace(/\\/g, "\\\\")
|
|
114
|
+
.replace(/"/g, '\\"')
|
|
115
|
+
.replace(/\n/g, "\\n");
|
|
116
|
+
// Find the Terminal.app tab with this TTY and type into it
|
|
117
|
+
const script = `
|
|
118
|
+
tell application "Terminal"
|
|
119
|
+
set targetTTY to "/dev/${tty}"
|
|
120
|
+
repeat with w in windows
|
|
121
|
+
repeat with t in tabs of w
|
|
122
|
+
if tty of t is targetTTY then
|
|
123
|
+
-- Bring window to front and select the tab
|
|
124
|
+
set selected tab of w to t
|
|
125
|
+
set frontmost of w to true
|
|
126
|
+
activate
|
|
127
|
+
delay 0.2
|
|
128
|
+
tell application "System Events"
|
|
129
|
+
keystroke "${escapedForAppleScript}"
|
|
130
|
+
delay 0.1
|
|
131
|
+
keystroke return
|
|
132
|
+
end tell
|
|
133
|
+
return "sent"
|
|
134
|
+
end if
|
|
117
135
|
end repeat
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
136
|
+
end repeat
|
|
137
|
+
return "tty_not_found"
|
|
138
|
+
end tell
|
|
139
|
+
`;
|
|
140
|
+
const result = execSync(`osascript -e '${script.replace(/'/g, "'\"'\"'")}'`, {
|
|
141
|
+
encoding: "utf-8",
|
|
142
|
+
timeout: 10000,
|
|
143
|
+
}).trim();
|
|
144
|
+
if (result === "tty_not_found") {
|
|
145
|
+
throw new Error(`Terminal tab with TTY ${tty} not found`);
|
|
146
|
+
}
|
|
147
|
+
logger.info("Prompt sent to Claude terminal via AppleScript", { pid, tty, sessionId });
|
|
148
|
+
return {
|
|
149
|
+
sessionId,
|
|
150
|
+
pid,
|
|
151
|
+
tty,
|
|
152
|
+
timestamp: new Date().toISOString(),
|
|
153
|
+
status: "sent",
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Windows implementation: Use VBScript to send keystrokes
|
|
158
|
+
* Note: This requires the Claude Code window to be active/visible
|
|
159
|
+
*/
|
|
160
|
+
async sendPromptWindows(pid, sessionId, promptText) {
|
|
161
|
+
logger.info("Sending prompt on Windows", { pid, sessionId });
|
|
162
|
+
// For Windows, we'll use a different approach:
|
|
163
|
+
// 1. We can't easily inject into other processes' stdin
|
|
164
|
+
// 2. We'll use Windows Script Host SendKeys as a fallback
|
|
165
|
+
// 3. This requires the Claude Code terminal to be the active window
|
|
166
|
+
// Escape the prompt for VBScript
|
|
167
|
+
const escapedForVBS = promptText
|
|
168
|
+
.replace(/"/g, '""')
|
|
169
|
+
.replace(/\n/g, '" & SendKeys "{ENTER}" & SendKeys "');
|
|
170
|
+
// Create a temporary VBScript file
|
|
171
|
+
const tempDir = process.env.TEMP || "/tmp";
|
|
172
|
+
const vbsPath = join(tempDir, `cc-control-send-${Date.now()}.vbs`);
|
|
173
|
+
const vbsContent = `
|
|
174
|
+
Set WshShell = WScript.CreateObject("WScript.Shell")
|
|
175
|
+
WScript.Sleep 500
|
|
176
|
+
WshShell.SendKeys "${escapedForVBS}"
|
|
177
|
+
WScript.Sleep 100
|
|
178
|
+
WshShell.SendKeys "{ENTER}"
|
|
179
|
+
`;
|
|
180
|
+
await fs.writeFile(vbsPath, vbsContent, "utf-8");
|
|
181
|
+
try {
|
|
182
|
+
// Execute the VBScript
|
|
183
|
+
execSync(`cscript //nologo "${vbsPath}"`, {
|
|
122
184
|
encoding: "utf-8",
|
|
123
185
|
timeout: 10000,
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
throw new Error(`Terminal tab with TTY ${tty} not found`);
|
|
127
|
-
}
|
|
128
|
-
logger.info("Prompt sent to Claude terminal via AppleScript", { pid, tty, sessionId: command.sessionId });
|
|
186
|
+
});
|
|
187
|
+
logger.info("Prompt sent via Windows VBScript SendKeys", { pid, sessionId });
|
|
129
188
|
return {
|
|
130
|
-
sessionId
|
|
189
|
+
sessionId,
|
|
131
190
|
pid,
|
|
132
|
-
tty,
|
|
133
191
|
timestamp: new Date().toISOString(),
|
|
134
192
|
status: "sent",
|
|
193
|
+
method: "SendKeys",
|
|
135
194
|
};
|
|
136
195
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
196
|
+
finally {
|
|
197
|
+
// Clean up the temp file
|
|
198
|
+
try {
|
|
199
|
+
await fs.unlink(vbsPath);
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Ignore cleanup errors
|
|
203
|
+
}
|
|
140
204
|
}
|
|
141
205
|
}
|
|
142
206
|
/**
|
|
143
207
|
* Find the PID of a Claude Code process for a given session ID.
|
|
144
|
-
*
|
|
145
|
-
* We find which `claude` process has the matching session active.
|
|
208
|
+
* Platform-specific implementations for macOS, Linux, and Windows.
|
|
146
209
|
*/
|
|
147
210
|
findClaudeProcessForSession(sessionId) {
|
|
211
|
+
try {
|
|
212
|
+
if (PLATFORM === "win32") {
|
|
213
|
+
return this.findClaudeProcessWindows(sessionId);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
return this.findClaudeProcessUnix(sessionId);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Unix/macOS implementation: Use ps and lsof
|
|
225
|
+
*/
|
|
226
|
+
findClaudeProcessUnix(sessionId) {
|
|
148
227
|
try {
|
|
149
228
|
// Get all running claude processes with their PIDs and ttys
|
|
150
229
|
const psOutput = execSync("ps -eo pid,tty,args | grep '[c]laude' | grep -v cc-control", { encoding: "utf-8", timeout: 5000 }).trim();
|
|
@@ -188,9 +267,66 @@ export class CommandHandler {
|
|
|
188
267
|
}
|
|
189
268
|
}
|
|
190
269
|
/**
|
|
191
|
-
*
|
|
270
|
+
* Windows implementation: Use PowerShell and tasklist
|
|
271
|
+
*/
|
|
272
|
+
findClaudeProcessWindows(sessionId) {
|
|
273
|
+
try {
|
|
274
|
+
// Use PowerShell to find all node.exe processes (Claude Code runs on Node)
|
|
275
|
+
// and get their PIDs and command lines
|
|
276
|
+
const psCommand = `
|
|
277
|
+
Get-CimInstance Win32_Process |
|
|
278
|
+
Where-Object {
|
|
279
|
+
$_.Name -eq 'node.exe' -or
|
|
280
|
+
$_.Name -eq 'Claude.exe' -or
|
|
281
|
+
$_.CommandLine -like '*claude*'
|
|
282
|
+
} |
|
|
283
|
+
Select-Object ProcessId, CommandLine |
|
|
284
|
+
ConvertTo-Json
|
|
285
|
+
`;
|
|
286
|
+
const output = execSync(`powershell -NoProfile -Command "${psCommand.replace(/"/g, '\\"')}"`, { encoding: "utf-8", timeout: 10000 }).trim();
|
|
287
|
+
if (!output)
|
|
288
|
+
return null;
|
|
289
|
+
const processes = JSON.parse(output);
|
|
290
|
+
const processList = Array.isArray(processes) ? processes : [processes];
|
|
291
|
+
if (processList.length === 0)
|
|
292
|
+
return null;
|
|
293
|
+
// Filter out our own process
|
|
294
|
+
const ownPid = process.pid;
|
|
295
|
+
const filteredProcesses = processList.filter((p) => p.ProcessId && p.ProcessId !== ownPid);
|
|
296
|
+
if (filteredProcesses.length === 0)
|
|
297
|
+
return null;
|
|
298
|
+
// Try to match session by checking command line for session ID
|
|
299
|
+
for (const proc of filteredProcesses) {
|
|
300
|
+
if (proc.CommandLine && proc.CommandLine.includes(sessionId)) {
|
|
301
|
+
return proc.ProcessId;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// Fallback: if only one Claude process, use it
|
|
305
|
+
if (filteredProcesses.length === 1) {
|
|
306
|
+
logger.warn("Could not match session to process, using only running Claude process");
|
|
307
|
+
return filteredProcesses[0].ProcessId;
|
|
308
|
+
}
|
|
309
|
+
// If multiple processes and no match found, return null
|
|
310
|
+
logger.warn("Multiple Claude processes found but none matched session", {
|
|
311
|
+
sessionId,
|
|
312
|
+
processPids: filteredProcesses.map((p) => p.ProcessId),
|
|
313
|
+
});
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
logger.error("Error finding Claude process on Windows", error);
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Get the TTY of a process by PID (Unix/macOS only)
|
|
323
|
+
* Returns null on Windows as Windows doesn't use TTY
|
|
192
324
|
*/
|
|
193
325
|
getProcessTty(pid) {
|
|
326
|
+
if (PLATFORM === "win32") {
|
|
327
|
+
// Windows doesn't use TTY
|
|
328
|
+
return "windows";
|
|
329
|
+
}
|
|
194
330
|
try {
|
|
195
331
|
const output = execSync(`ps -o tty= -p ${pid}`, {
|
|
196
332
|
encoding: "utf-8",
|