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.
@@ -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
- // For npm global installs, ensure the wrapper is used
10
- process.env.__CC_CONTROL_WRAPPER = "true";
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,sDAAsD;AACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC;AAE1C,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"}
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();
@@ -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":"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"}
@@ -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
- * Claude Code stores session data in ~/.claude/projects/<path>/<session-id>.jsonl
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
- * Get the TTY of a process by PID
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":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAmC,MAAM,mBAAmB,CAAC;AAElF,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;IAoF/B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAoDnC;;OAEG;IACH,OAAO,CAAC,aAAa;YAYP,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"}
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
- const tty = this.getProcessTty(pid);
87
- if (!tty) {
88
- throw new Error(`Could not find terminal for Claude process PID ${pid}`);
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
- logger.info("Found Claude process", { pid, tty, sessionId: command.sessionId });
91
- // Use AppleScript to type the prompt into the correct Terminal.app tab
92
- // This properly simulates keyboard input (unlike writing to /dev/tty which only displays text)
93
- const escapedForAppleScript = promptText
94
- .replace(/\\/g, "\\\\")
95
- .replace(/"/g, '\\"')
96
- .replace(/\n/g, "\\n");
97
- // Find the Terminal.app tab with this TTY and type into it
98
- const script = `
99
- tell application "Terminal"
100
- set targetTTY to "/dev/${tty}"
101
- repeat with w in windows
102
- repeat with t in tabs of w
103
- if tty of t is targetTTY then
104
- -- Bring window to front and select the tab
105
- set selected tab of w to t
106
- set frontmost of w to true
107
- activate
108
- delay 0.2
109
- tell application "System Events"
110
- keystroke "${escapedForAppleScript}"
111
- delay 0.1
112
- keystroke return
113
- end tell
114
- return "sent"
115
- end if
116
- end repeat
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
- return "tty_not_found"
119
- end tell
120
- `;
121
- const result = execSync(`osascript -e '${script.replace(/'/g, "'\"'\"'")}'`, {
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
- }).trim();
125
- if (result === "tty_not_found") {
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: command.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
- catch (error) {
138
- logger.error("Failed to send prompt to Claude process", error);
139
- throw new Error(`Failed to send prompt: ${error instanceof Error ? error.message : "Unknown error"}`);
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
- * Claude Code stores session data in ~/.claude/projects/<path>/<session-id>.jsonl
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
- * Get the TTY of a process by PID
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",