cc-control-agent 2.0.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/auth/device-manager.d.ts +20 -0
- package/dist/auth/device-manager.d.ts.map +1 -0
- package/dist/auth/device-manager.js +101 -0
- package/dist/auth/device-manager.js.map +1 -0
- package/dist/auth/user-credentials.d.ts +35 -0
- package/dist/auth/user-credentials.d.ts.map +1 -0
- package/dist/auth/user-credentials.js +128 -0
- package/dist/auth/user-credentials.js.map +1 -0
- package/dist/claude/hook-handler.d.ts +27 -0
- package/dist/claude/hook-handler.d.ts.map +1 -0
- package/dist/claude/hook-handler.js +191 -0
- package/dist/claude/hook-handler.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +195 -0
- package/dist/cli.js.map +1 -0
- package/dist/command/handler.d.ts +34 -0
- package/dist/command/handler.d.ts.map +1 -0
- package/dist/command/handler.js +371 -0
- package/dist/command/handler.js.map +1 -0
- package/dist/command/validator.d.ts +23 -0
- package/dist/command/validator.d.ts.map +1 -0
- package/dist/command/validator.js +295 -0
- package/dist/command/validator.js.map +1 -0
- package/dist/communication/websocket-client.d.ts +28 -0
- package/dist/communication/websocket-client.d.ts.map +1 -0
- package/dist/communication/websocket-client.js +224 -0
- package/dist/communication/websocket-client.js.map +1 -0
- package/dist/config/default.d.ts +19 -0
- package/dist/config/default.d.ts.map +1 -0
- package/dist/config/default.js +40 -0
- package/dist/config/default.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +155 -0
- package/dist/index.js.map +1 -0
- package/dist/session/claude-monitor.d.ts +66 -0
- package/dist/session/claude-monitor.d.ts.map +1 -0
- package/dist/session/claude-monitor.js +770 -0
- package/dist/session/claude-monitor.js.map +1 -0
- package/dist/session/monitor.d.ts +22 -0
- package/dist/session/monitor.d.ts.map +1 -0
- package/dist/session/monitor.js +189 -0
- package/dist/session/monitor.js.map +1 -0
- package/dist/session/parser.d.ts +51 -0
- package/dist/session/parser.d.ts.map +1 -0
- package/dist/session/parser.js +139 -0
- package/dist/session/parser.js.map +1 -0
- package/dist/utils/logger-new.d.ts +1 -0
- package/dist/utils/logger-new.d.ts.map +1 -0
- package/dist/utils/logger-new.js +2 -0
- package/dist/utils/logger-new.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +37 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAAC,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAS;;IAepB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,oBAAoB;CAoB7B;AAMD,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB1C"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// CC-Control Desktop Agent - Main Entry Point
|
|
3
|
+
// ============================================================================
|
|
4
|
+
import { logger } from "./utils/logger.js";
|
|
5
|
+
import { DeviceManager } from "./auth/device-manager.js";
|
|
6
|
+
import { WebSocketClient } from "./communication/websocket-client.js";
|
|
7
|
+
import { ClaudeSessionMonitor } from "./session/claude-monitor.js";
|
|
8
|
+
import { CommandHandler } from "./command/handler.js";
|
|
9
|
+
import { HookHandler } from "./claude/hook-handler.js";
|
|
10
|
+
export class DesktopAgent {
|
|
11
|
+
deviceManager;
|
|
12
|
+
wsClient;
|
|
13
|
+
sessionMonitor; // Optional, created in start()
|
|
14
|
+
commandHandler;
|
|
15
|
+
hookHandler;
|
|
16
|
+
isRunning = false;
|
|
17
|
+
constructor() {
|
|
18
|
+
this.deviceManager = new DeviceManager();
|
|
19
|
+
this.wsClient = new WebSocketClient(this.deviceManager, {
|
|
20
|
+
onMessage: this.handleMessage.bind(this),
|
|
21
|
+
onConnected: async () => {
|
|
22
|
+
logger.info("WebSocket connected");
|
|
23
|
+
},
|
|
24
|
+
onDisconnected: () => logger.warn("WebSocket disconnected"),
|
|
25
|
+
onError: (error) => logger.error("WebSocket error", error),
|
|
26
|
+
});
|
|
27
|
+
this.commandHandler = new CommandHandler(this.wsClient);
|
|
28
|
+
this.hookHandler = new HookHandler(this.wsClient);
|
|
29
|
+
}
|
|
30
|
+
async start() {
|
|
31
|
+
if (this.isRunning) {
|
|
32
|
+
logger.warn("Desktop agent is already running");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
logger.info("Starting CC-Control Desktop Agent...");
|
|
37
|
+
// Initialize device manager
|
|
38
|
+
await this.deviceManager.initialize();
|
|
39
|
+
logger.info(`Device ID: ${this.deviceManager.getDeviceId()}`);
|
|
40
|
+
// Create session monitor with initialized deviceId
|
|
41
|
+
this.sessionMonitor = new ClaudeSessionMonitor(this.wsClient, this.deviceManager.getDeviceId());
|
|
42
|
+
// Initialize hook handler
|
|
43
|
+
await this.hookHandler.initialize();
|
|
44
|
+
// Connect to relay server
|
|
45
|
+
await this.wsClient.connect();
|
|
46
|
+
logger.info("Connected to relay server");
|
|
47
|
+
// Start monitoring Claude Code sessions (populates cache)
|
|
48
|
+
await this.sessionMonitor.start();
|
|
49
|
+
logger.info("Session monitor started");
|
|
50
|
+
// Initial sync - send all cached sessions to relay
|
|
51
|
+
await this.sessionMonitor.sendAllSessionsToRelay();
|
|
52
|
+
// Setup command handler
|
|
53
|
+
this.commandHandler.setup();
|
|
54
|
+
logger.info("Command handler ready");
|
|
55
|
+
this.isRunning = true;
|
|
56
|
+
logger.info("Desktop agent started successfully");
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger.error("Failed to start desktop agent", error);
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async stop() {
|
|
64
|
+
if (!this.isRunning) {
|
|
65
|
+
logger.warn("Desktop agent is not running");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
logger.info("Stopping desktop agent...");
|
|
69
|
+
try {
|
|
70
|
+
await this.commandHandler.shutdown();
|
|
71
|
+
await this.hookHandler.shutdown();
|
|
72
|
+
await this.sessionMonitor?.stop();
|
|
73
|
+
await this.wsClient.disconnect();
|
|
74
|
+
await this.deviceManager.shutdown();
|
|
75
|
+
this.isRunning = false;
|
|
76
|
+
logger.info("Desktop agent stopped");
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
logger.error("Error stopping desktop agent", error);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
isStarted() {
|
|
84
|
+
return this.isRunning;
|
|
85
|
+
}
|
|
86
|
+
handleMessage(message) {
|
|
87
|
+
logger.debug("Received message", { type: message.type });
|
|
88
|
+
switch (message.type) {
|
|
89
|
+
case "command:send_prompt":
|
|
90
|
+
case "command:switch_session":
|
|
91
|
+
case "command:manage_task":
|
|
92
|
+
case "command:file_operation":
|
|
93
|
+
// Handle commands
|
|
94
|
+
this.handleCommandMessage(message);
|
|
95
|
+
break;
|
|
96
|
+
case "auth:success":
|
|
97
|
+
logger.info("Authentication successful");
|
|
98
|
+
break;
|
|
99
|
+
case "auth:error":
|
|
100
|
+
logger.error("Authentication failed", message.payload);
|
|
101
|
+
break;
|
|
102
|
+
default:
|
|
103
|
+
logger.debug(`Unhandled message type: ${message.type}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
handleCommandMessage(message) {
|
|
107
|
+
// Extract command-specific data from message
|
|
108
|
+
const payload = message.payload;
|
|
109
|
+
const commandPayload = {
|
|
110
|
+
sessionId: payload.sessionId,
|
|
111
|
+
commandId: payload.commandId,
|
|
112
|
+
...payload,
|
|
113
|
+
};
|
|
114
|
+
// Convert message to command format
|
|
115
|
+
const command = {
|
|
116
|
+
id: message.id,
|
|
117
|
+
type: message.type.replace("command:", ""),
|
|
118
|
+
sessionId: payload.sessionId || "",
|
|
119
|
+
payload: commandPayload,
|
|
120
|
+
timestamp: new Date(message.timestamp),
|
|
121
|
+
};
|
|
122
|
+
this.commandHandler.handleCommand(command);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// CLI Entry Point
|
|
127
|
+
// ============================================================================
|
|
128
|
+
export async function main() {
|
|
129
|
+
const agent = new DesktopAgent();
|
|
130
|
+
// Handle graceful shutdown
|
|
131
|
+
process.on("SIGINT", async () => {
|
|
132
|
+
logger.info("Received SIGINT, shutting down...");
|
|
133
|
+
await agent.stop();
|
|
134
|
+
process.exit(0);
|
|
135
|
+
});
|
|
136
|
+
process.on("SIGTERM", async () => {
|
|
137
|
+
logger.info("Received SIGTERM, shutting down...");
|
|
138
|
+
await agent.stop();
|
|
139
|
+
process.exit(0);
|
|
140
|
+
});
|
|
141
|
+
try {
|
|
142
|
+
await agent.start();
|
|
143
|
+
// Keep process alive
|
|
144
|
+
process.stdin.resume();
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
logger.error("Fatal error", error);
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Run if called directly
|
|
152
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
153
|
+
main();
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { WebSocketClient } from "../communication/websocket-client.js";
|
|
2
|
+
import type { Session } from "cc-control-shared";
|
|
3
|
+
export declare class ClaudeSessionMonitor {
|
|
4
|
+
private wsClient;
|
|
5
|
+
private watcher;
|
|
6
|
+
private sessionCache;
|
|
7
|
+
private debounceTimer;
|
|
8
|
+
private periodicSyncTimer;
|
|
9
|
+
private claudePath;
|
|
10
|
+
private projectsPath;
|
|
11
|
+
private deviceId;
|
|
12
|
+
constructor(wsClient: WebSocketClient, deviceId: string, claudePath?: string);
|
|
13
|
+
start(): Promise<void>;
|
|
14
|
+
private initializeSessionCache;
|
|
15
|
+
/**
|
|
16
|
+
* Scan a project directory for .jsonl session files not in cache
|
|
17
|
+
*/
|
|
18
|
+
private scanForJsonlFiles;
|
|
19
|
+
/**
|
|
20
|
+
* Look up customTitle from JSONL lines and sessions-index.json.
|
|
21
|
+
* JSONL has {"type":"custom-title","customTitle":"..."} entries written by /rename.
|
|
22
|
+
*/
|
|
23
|
+
private lookupCustomTitleFromLines;
|
|
24
|
+
private lookupCustomTitleFromIndex;
|
|
25
|
+
/**
|
|
26
|
+
* Parse a session directly from a JSONL file (no index entry needed)
|
|
27
|
+
*/
|
|
28
|
+
private parseSessionFromFile;
|
|
29
|
+
sendAllSessionsToRelay(): Promise<void>;
|
|
30
|
+
sendInitialSessions(limit?: number): Promise<void>;
|
|
31
|
+
private handleFileChange;
|
|
32
|
+
private debounce;
|
|
33
|
+
private processSessionIndex;
|
|
34
|
+
private processSessionFile;
|
|
35
|
+
private parseSession;
|
|
36
|
+
/**
|
|
37
|
+
* Calculate session status based on last modification time and message history.
|
|
38
|
+
* - If file not modified in >5 minutes -> "idle"
|
|
39
|
+
* - If last message role is "assistant" -> "waiting_input" (Claude finished, waiting for user)
|
|
40
|
+
* - If last message role is "user" -> "processing" (Claude is working)
|
|
41
|
+
* - Default -> "processing"
|
|
42
|
+
*/
|
|
43
|
+
private calculateStatusFromMessages;
|
|
44
|
+
/**
|
|
45
|
+
* Backward-compatible status calculation when messages are not available.
|
|
46
|
+
*/
|
|
47
|
+
private calculateStatus;
|
|
48
|
+
private parseMessages;
|
|
49
|
+
private extractSessionId;
|
|
50
|
+
/**
|
|
51
|
+
* Send a lightweight session update (no messages array - just metadata)
|
|
52
|
+
*/
|
|
53
|
+
private sendSessionUpdate;
|
|
54
|
+
/**
|
|
55
|
+
* Periodic sync: scan for recently modified JSONL files and push updates.
|
|
56
|
+
* Safety net in case the file watcher misses changes.
|
|
57
|
+
*/
|
|
58
|
+
private periodicSync;
|
|
59
|
+
stop(): Promise<void>;
|
|
60
|
+
getSessionCache(): Map<string, Session>;
|
|
61
|
+
getSession(sessionId: string): Session | undefined;
|
|
62
|
+
getAllSessions(): Session[];
|
|
63
|
+
getSessionsByProject(projectPath: string): Session[];
|
|
64
|
+
getActiveSessions(minutes?: number): Session[];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=claude-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-monitor.d.ts","sourceRoot":"","sources":["../../src/session/claude-monitor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,mBAAmB,CAAC;AAyChE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,MAAsC;IAOrG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAgDd,sBAAsB;IAmCpC;;OAEG;YACW,iBAAiB;IA4C/B;;;OAGG;IACH,OAAO,CAAC,0BAA0B;YAcpB,0BAA0B;IAaxC;;OAEG;YACW,oBAAoB;IAwD5B,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwFvC,mBAAmB,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,QAAQ;YAqBF,mBAAmB;YA4CnB,kBAAkB;YAkElB,YAAY;IAyC1B;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IAenC;;OAEG;IACH,OAAO,CAAC,eAAe;YAIT,aAAa;IAqG3B,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkEzB;;;OAGG;YACW,YAAY;IAoCpB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAIvC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIlD,cAAc,IAAI,OAAO,EAAE;IAI3B,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE;IAMpD,iBAAiB,CAAC,OAAO,GAAE,MAAU,GAAG,OAAO,EAAE;CAMlD"}
|