@cmdctrl/cursor-cli 0.1.1
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/adapter/cursor-cli.d.ts +36 -0
- package/dist/adapter/cursor-cli.d.ts.map +1 -0
- package/dist/adapter/cursor-cli.js +332 -0
- package/dist/adapter/cursor-cli.js.map +1 -0
- package/dist/adapter/events.d.ts +33 -0
- package/dist/adapter/events.d.ts.map +1 -0
- package/dist/adapter/events.js +53 -0
- package/dist/adapter/events.js.map +1 -0
- package/dist/client/messages.d.ts +50 -0
- package/dist/client/messages.d.ts.map +1 -0
- package/dist/client/messages.js +6 -0
- package/dist/client/messages.js.map +1 -0
- package/dist/client/websocket.d.ts +69 -0
- package/dist/client/websocket.d.ts.map +1 -0
- package/dist/client/websocket.js +272 -0
- package/dist/client/websocket.js.map +1 -0
- package/dist/commands/register.d.ts +10 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +173 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/start.d.ts +9 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +49 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +39 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/stop.d.ts +5 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +42 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +72 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/config/config.d.ts +60 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +176 -0
- package/dist/config/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -0
- package/src/adapter/cursor-cli.ts +370 -0
- package/src/adapter/events.ts +77 -0
- package/src/client/messages.ts +75 -0
- package/src/client/websocket.ts +308 -0
- package/src/commands/register.ts +199 -0
- package/src/commands/start.ts +64 -0
- package/src/commands/status.ts +46 -0
- package/src/commands/stop.ts +47 -0
- package/src/commands/update.ts +73 -0
- package/src/config/config.ts +146 -0
- package/src/index.ts +56 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
type EventCallback = (taskId: string, eventType: string, data: Record<string, unknown>) => void;
|
|
2
|
+
export declare class CursorAdapter {
|
|
3
|
+
private running;
|
|
4
|
+
private onEvent;
|
|
5
|
+
constructor(onEvent: EventCallback);
|
|
6
|
+
/**
|
|
7
|
+
* Start a new task
|
|
8
|
+
*/
|
|
9
|
+
startTask(taskId: string, instruction: string, projectPath?: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Resume a task with user's reply
|
|
12
|
+
*/
|
|
13
|
+
resumeTask(taskId: string, sessionId: string, message: string, projectPath?: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Cancel a running task
|
|
16
|
+
*/
|
|
17
|
+
cancelTask(taskId: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Stop all running tasks
|
|
20
|
+
*/
|
|
21
|
+
stopAll(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Get list of running task IDs
|
|
24
|
+
*/
|
|
25
|
+
getRunningTasks(): string[];
|
|
26
|
+
/**
|
|
27
|
+
* Handle process stdout/stderr and emit events
|
|
28
|
+
*/
|
|
29
|
+
private handleProcessOutput;
|
|
30
|
+
/**
|
|
31
|
+
* Handle a parsed stream event from Cursor CLI
|
|
32
|
+
*/
|
|
33
|
+
private handleStreamEvent;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=cursor-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-cli.d.ts","sourceRoot":"","sources":["../../src/adapter/cursor-cli.ts"],"names":[],"mappings":"AAkDA,KAAK,aAAa,GAAG,CACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,IAAI,CAAC;AAEV,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,OAAO,EAAE,aAAa;IAIlC;;OAEG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IA2DhB;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAwDhB;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkD3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA2E1B"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.CursorAdapter = void 0;
|
|
37
|
+
const child_process_1 = require("child_process");
|
|
38
|
+
const readline = __importStar(require("readline"));
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const os = __importStar(require("os"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const events_1 = require("./events");
|
|
43
|
+
const DEFAULT_TIMEOUT = 10 * 60 * 1000; // 10 minutes
|
|
44
|
+
// Find cursor-agent CLI in common locations
|
|
45
|
+
function findCursorCli() {
|
|
46
|
+
if (process.env.CURSOR_CLI_PATH) {
|
|
47
|
+
return process.env.CURSOR_CLI_PATH;
|
|
48
|
+
}
|
|
49
|
+
const home = os.homedir();
|
|
50
|
+
const commonPaths = [
|
|
51
|
+
path.join(home, '.cursor', 'bin', 'cursor-agent'),
|
|
52
|
+
path.join(home, '.local', 'bin', 'cursor-agent'),
|
|
53
|
+
'/usr/local/bin/cursor-agent',
|
|
54
|
+
'/opt/homebrew/bin/cursor-agent',
|
|
55
|
+
'cursor-agent' // Fall back to PATH
|
|
56
|
+
];
|
|
57
|
+
for (const p of commonPaths) {
|
|
58
|
+
if (p === 'cursor-agent')
|
|
59
|
+
return p; // PATH fallback
|
|
60
|
+
try {
|
|
61
|
+
if (fs.existsSync(p)) {
|
|
62
|
+
return p;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return 'cursor-agent'; // Fall back to PATH
|
|
70
|
+
}
|
|
71
|
+
const CLI_PATH = findCursorCli();
|
|
72
|
+
console.log(`[CursorAdapter] Using CLI path: ${CLI_PATH}`);
|
|
73
|
+
class CursorAdapter {
|
|
74
|
+
running = new Map();
|
|
75
|
+
onEvent;
|
|
76
|
+
constructor(onEvent) {
|
|
77
|
+
this.onEvent = onEvent;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Start a new task
|
|
81
|
+
*/
|
|
82
|
+
async startTask(taskId, instruction, projectPath) {
|
|
83
|
+
console.log(`[${taskId}] Starting task: ${instruction.substring(0, 50)}...`);
|
|
84
|
+
const rt = {
|
|
85
|
+
taskId,
|
|
86
|
+
sessionId: '',
|
|
87
|
+
question: '',
|
|
88
|
+
context: '',
|
|
89
|
+
process: null,
|
|
90
|
+
timeoutHandle: null
|
|
91
|
+
};
|
|
92
|
+
this.running.set(taskId, rt);
|
|
93
|
+
// Validate cwd exists
|
|
94
|
+
let cwd = undefined;
|
|
95
|
+
if (projectPath && fs.existsSync(projectPath)) {
|
|
96
|
+
cwd = projectPath;
|
|
97
|
+
}
|
|
98
|
+
else if (projectPath) {
|
|
99
|
+
console.log(`[${taskId}] Warning: project path does not exist: ${projectPath}, using home dir`);
|
|
100
|
+
cwd = os.homedir();
|
|
101
|
+
this.onEvent(taskId, 'WARNING', {
|
|
102
|
+
warning: `Project path "${projectPath}" does not exist. Running in home directory instead.`
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Build command arguments for Cursor CLI
|
|
106
|
+
// cursor-agent -p "instruction" --output-format stream-json
|
|
107
|
+
const args = [
|
|
108
|
+
'-p', instruction,
|
|
109
|
+
'--output-format', 'stream-json'
|
|
110
|
+
];
|
|
111
|
+
console.log(`[${taskId}] Spawning: ${CLI_PATH} with cwd: ${cwd || 'default'}`);
|
|
112
|
+
// Spawn Cursor CLI
|
|
113
|
+
const proc = (0, child_process_1.spawn)(CLI_PATH, args, {
|
|
114
|
+
cwd,
|
|
115
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
116
|
+
env: {
|
|
117
|
+
...process.env,
|
|
118
|
+
// Pass through Cursor API key if set
|
|
119
|
+
CURSOR_API_KEY: process.env.CURSOR_API_KEY
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
rt.process = proc;
|
|
123
|
+
// Set timeout
|
|
124
|
+
rt.timeoutHandle = setTimeout(() => {
|
|
125
|
+
console.log(`[${taskId}] Task timed out`);
|
|
126
|
+
proc.kill('SIGKILL');
|
|
127
|
+
this.onEvent(taskId, 'ERROR', { error: 'execution timeout' });
|
|
128
|
+
}, DEFAULT_TIMEOUT);
|
|
129
|
+
// Handle process events
|
|
130
|
+
this.handleProcessOutput(taskId, proc, rt);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Resume a task with user's reply
|
|
134
|
+
*/
|
|
135
|
+
async resumeTask(taskId, sessionId, message, projectPath) {
|
|
136
|
+
console.log(`[${taskId}] Resuming task with session ${sessionId}`);
|
|
137
|
+
const rt = {
|
|
138
|
+
taskId,
|
|
139
|
+
sessionId,
|
|
140
|
+
question: '',
|
|
141
|
+
context: '',
|
|
142
|
+
process: null,
|
|
143
|
+
timeoutHandle: null
|
|
144
|
+
};
|
|
145
|
+
this.running.set(taskId, rt);
|
|
146
|
+
// Validate cwd exists
|
|
147
|
+
let cwd = undefined;
|
|
148
|
+
if (projectPath && fs.existsSync(projectPath)) {
|
|
149
|
+
cwd = projectPath;
|
|
150
|
+
}
|
|
151
|
+
else if (projectPath) {
|
|
152
|
+
console.log(`[${taskId}] Warning: project path does not exist: ${projectPath}, using home dir`);
|
|
153
|
+
cwd = os.homedir();
|
|
154
|
+
}
|
|
155
|
+
// Build command arguments with --resume
|
|
156
|
+
// cursor-agent --resume="session-id" -p "user response" --output-format stream-json
|
|
157
|
+
const args = [
|
|
158
|
+
`--resume=${sessionId}`,
|
|
159
|
+
'-p', message,
|
|
160
|
+
'--output-format', 'stream-json'
|
|
161
|
+
];
|
|
162
|
+
console.log(`[${taskId}] Spawning resume: ${CLI_PATH} --resume=${sessionId} with cwd: ${cwd || 'default'}`);
|
|
163
|
+
// Spawn Cursor CLI
|
|
164
|
+
const proc = (0, child_process_1.spawn)(CLI_PATH, args, {
|
|
165
|
+
cwd,
|
|
166
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
167
|
+
env: {
|
|
168
|
+
...process.env,
|
|
169
|
+
CURSOR_API_KEY: process.env.CURSOR_API_KEY
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
rt.process = proc;
|
|
173
|
+
// Set timeout
|
|
174
|
+
rt.timeoutHandle = setTimeout(() => {
|
|
175
|
+
console.log(`[${taskId}] Task timed out`);
|
|
176
|
+
proc.kill('SIGKILL');
|
|
177
|
+
this.onEvent(taskId, 'ERROR', { error: 'execution timeout' });
|
|
178
|
+
}, DEFAULT_TIMEOUT);
|
|
179
|
+
// Handle process events
|
|
180
|
+
this.handleProcessOutput(taskId, proc, rt);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Cancel a running task
|
|
184
|
+
*/
|
|
185
|
+
async cancelTask(taskId) {
|
|
186
|
+
const rt = this.running.get(taskId);
|
|
187
|
+
if (!rt) {
|
|
188
|
+
console.log(`[${taskId}] Task not found for cancellation`);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
if (rt.process) {
|
|
192
|
+
rt.process.kill('SIGTERM');
|
|
193
|
+
}
|
|
194
|
+
if (rt.timeoutHandle) {
|
|
195
|
+
clearTimeout(rt.timeoutHandle);
|
|
196
|
+
}
|
|
197
|
+
this.running.delete(taskId);
|
|
198
|
+
console.log(`[${taskId}] Task cancelled`);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Stop all running tasks
|
|
202
|
+
*/
|
|
203
|
+
async stopAll() {
|
|
204
|
+
for (const [taskId, rt] of this.running) {
|
|
205
|
+
console.log(`[${taskId}] Stopping task`);
|
|
206
|
+
if (rt.process) {
|
|
207
|
+
rt.process.kill('SIGTERM');
|
|
208
|
+
}
|
|
209
|
+
if (rt.timeoutHandle) {
|
|
210
|
+
clearTimeout(rt.timeoutHandle);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
this.running.clear();
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get list of running task IDs
|
|
217
|
+
*/
|
|
218
|
+
getRunningTasks() {
|
|
219
|
+
return Array.from(this.running.keys());
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Handle process stdout/stderr and emit events
|
|
223
|
+
*/
|
|
224
|
+
handleProcessOutput(taskId, proc, rt) {
|
|
225
|
+
// Create readline interface for NDJSON parsing
|
|
226
|
+
const rl = readline.createInterface({
|
|
227
|
+
input: proc.stdout,
|
|
228
|
+
crlfDelay: Infinity
|
|
229
|
+
});
|
|
230
|
+
// Parse each line as JSON
|
|
231
|
+
rl.on('line', (line) => {
|
|
232
|
+
// Emit raw output for verbose mode
|
|
233
|
+
this.onEvent(taskId, 'OUTPUT', { output: line });
|
|
234
|
+
try {
|
|
235
|
+
const event = JSON.parse(line);
|
|
236
|
+
this.handleStreamEvent(taskId, event, rt);
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// Not valid JSON, skip
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
// Log stderr
|
|
243
|
+
proc.stderr?.on('data', (data) => {
|
|
244
|
+
console.log(`[${taskId}] stderr: ${data.toString()}`);
|
|
245
|
+
});
|
|
246
|
+
// Handle process exit
|
|
247
|
+
proc.on('close', (code) => {
|
|
248
|
+
console.log(`[${taskId}] Process exited with code ${code}`);
|
|
249
|
+
if (rt.timeoutHandle) {
|
|
250
|
+
clearTimeout(rt.timeoutHandle);
|
|
251
|
+
}
|
|
252
|
+
this.running.delete(taskId);
|
|
253
|
+
});
|
|
254
|
+
proc.on('error', (err) => {
|
|
255
|
+
console.error(`[${taskId}] Process error:`, err);
|
|
256
|
+
this.onEvent(taskId, 'ERROR', { error: err.message });
|
|
257
|
+
if (rt.timeoutHandle) {
|
|
258
|
+
clearTimeout(rt.timeoutHandle);
|
|
259
|
+
}
|
|
260
|
+
this.running.delete(taskId);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Handle a parsed stream event from Cursor CLI
|
|
265
|
+
*/
|
|
266
|
+
handleStreamEvent(taskId, event, rt) {
|
|
267
|
+
switch (event.type) {
|
|
268
|
+
case 'start':
|
|
269
|
+
if (event.session_id) {
|
|
270
|
+
rt.sessionId = event.session_id;
|
|
271
|
+
console.log(`[${taskId}] Session initialized: ${event.session_id}`);
|
|
272
|
+
}
|
|
273
|
+
break;
|
|
274
|
+
case 'thinking':
|
|
275
|
+
// Accumulate thinking content for context
|
|
276
|
+
if (event.content) {
|
|
277
|
+
if (rt.context) {
|
|
278
|
+
rt.context += '\n\n';
|
|
279
|
+
}
|
|
280
|
+
rt.context += event.content;
|
|
281
|
+
}
|
|
282
|
+
break;
|
|
283
|
+
case 'action':
|
|
284
|
+
// Track action for progress
|
|
285
|
+
const progress = (0, events_1.extractProgressFromAction)(event);
|
|
286
|
+
if (progress) {
|
|
287
|
+
this.onEvent(taskId, 'PROGRESS', {
|
|
288
|
+
action: progress.action,
|
|
289
|
+
target: progress.target
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
break;
|
|
293
|
+
case 'approval_request':
|
|
294
|
+
// User input needed - pause and wait
|
|
295
|
+
console.log(`[${taskId}] Approval requested: ${event.action}`);
|
|
296
|
+
rt.question = event.action || 'Approve this action?';
|
|
297
|
+
this.onEvent(taskId, 'WAIT_FOR_USER', {
|
|
298
|
+
session_id: rt.sessionId,
|
|
299
|
+
prompt: rt.question,
|
|
300
|
+
options: [],
|
|
301
|
+
context: rt.context,
|
|
302
|
+
approval_details: {
|
|
303
|
+
action: event.action,
|
|
304
|
+
tool: event.tool,
|
|
305
|
+
file: event.file
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
break;
|
|
309
|
+
case 'action_complete':
|
|
310
|
+
// Action was approved and completed
|
|
311
|
+
console.log(`[${taskId}] Action complete: ${event.status}`);
|
|
312
|
+
break;
|
|
313
|
+
case 'result':
|
|
314
|
+
// Task completed
|
|
315
|
+
console.log(`[${taskId}] Task completed`);
|
|
316
|
+
this.onEvent(taskId, 'TASK_COMPLETE', {
|
|
317
|
+
session_id: rt.sessionId,
|
|
318
|
+
result: event.content || ''
|
|
319
|
+
});
|
|
320
|
+
break;
|
|
321
|
+
case 'error':
|
|
322
|
+
// Error occurred
|
|
323
|
+
console.error(`[${taskId}] Error: ${event.error}`);
|
|
324
|
+
this.onEvent(taskId, 'ERROR', {
|
|
325
|
+
error: event.error || 'Unknown error'
|
|
326
|
+
});
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
exports.CursorAdapter = CursorAdapter;
|
|
332
|
+
//# sourceMappingURL=cursor-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-cli.js","sourceRoot":"","sources":["../../src/adapter/cursor-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for Cursor CLI stream-json output
|
|
3
|
+
* Note: These are based on research and may need adjustment
|
|
4
|
+
* once we verify actual Cursor CLI output format
|
|
5
|
+
*/
|
|
6
|
+
export interface StreamEvent {
|
|
7
|
+
type: 'start' | 'thinking' | 'action' | 'approval_request' | 'action_complete' | 'result' | 'error';
|
|
8
|
+
session_id?: string;
|
|
9
|
+
timestamp?: string;
|
|
10
|
+
content?: string;
|
|
11
|
+
tool?: string;
|
|
12
|
+
file?: string;
|
|
13
|
+
diff?: string;
|
|
14
|
+
action?: string;
|
|
15
|
+
status?: string;
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ApprovalRequest {
|
|
19
|
+
action: string;
|
|
20
|
+
tool: string;
|
|
21
|
+
file?: string;
|
|
22
|
+
command?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ProgressInfo {
|
|
26
|
+
action: string;
|
|
27
|
+
target: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract progress info from action event
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractProgressFromAction(event: StreamEvent): ProgressInfo | null;
|
|
33
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/adapter/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAyCjF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Types for Cursor CLI stream-json output
|
|
4
|
+
* Note: These are based on research and may need adjustment
|
|
5
|
+
* once we verify actual Cursor CLI output format
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.extractProgressFromAction = extractProgressFromAction;
|
|
9
|
+
/**
|
|
10
|
+
* Extract progress info from action event
|
|
11
|
+
*/
|
|
12
|
+
function extractProgressFromAction(event) {
|
|
13
|
+
if (event.type !== 'action' || !event.tool) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
switch (event.tool) {
|
|
17
|
+
case 'file_read':
|
|
18
|
+
return {
|
|
19
|
+
action: 'Reading',
|
|
20
|
+
target: event.file || 'file'
|
|
21
|
+
};
|
|
22
|
+
case 'file_write':
|
|
23
|
+
case 'file_edit':
|
|
24
|
+
return {
|
|
25
|
+
action: 'Editing',
|
|
26
|
+
target: event.file || 'file'
|
|
27
|
+
};
|
|
28
|
+
case 'shell':
|
|
29
|
+
case 'terminal':
|
|
30
|
+
const cmd = event.content || '';
|
|
31
|
+
return {
|
|
32
|
+
action: 'Running',
|
|
33
|
+
target: cmd.length > 30 ? cmd.substring(0, 30) + '...' : cmd
|
|
34
|
+
};
|
|
35
|
+
case 'search':
|
|
36
|
+
case 'grep':
|
|
37
|
+
return {
|
|
38
|
+
action: 'Searching',
|
|
39
|
+
target: event.content || 'files'
|
|
40
|
+
};
|
|
41
|
+
case 'web_search':
|
|
42
|
+
return {
|
|
43
|
+
action: 'Searching web',
|
|
44
|
+
target: event.content || ''
|
|
45
|
+
};
|
|
46
|
+
default:
|
|
47
|
+
return {
|
|
48
|
+
action: event.tool,
|
|
49
|
+
target: event.file || event.content || ''
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/adapter/events.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AA+BH,8DAyCC;AA5CD;;GAEG;AACH,SAAgB,yBAAyB,CAAC,KAAkB;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,WAAW;YACd,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;aAC7B,CAAC;QACJ,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACd,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;aAC7B,CAAC;QACJ,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACb,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG;aAC7D,CAAC;QACJ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO;aACjC,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;aAC5B,CAAC;QACJ;YACE,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE;aAC1C,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message types for daemon <-> server communication
|
|
3
|
+
*/
|
|
4
|
+
export interface PingMessage {
|
|
5
|
+
type: 'ping';
|
|
6
|
+
}
|
|
7
|
+
export interface TaskStartMessage {
|
|
8
|
+
type: 'task_start';
|
|
9
|
+
task_id: string;
|
|
10
|
+
instruction: string;
|
|
11
|
+
project_path?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TaskResumeMessage {
|
|
14
|
+
type: 'task_resume';
|
|
15
|
+
task_id: string;
|
|
16
|
+
session_id: string;
|
|
17
|
+
message: string;
|
|
18
|
+
project_path?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface TaskCancelMessage {
|
|
21
|
+
type: 'task_cancel';
|
|
22
|
+
task_id: string;
|
|
23
|
+
}
|
|
24
|
+
export interface VersionStatusMessage {
|
|
25
|
+
type: 'version_status';
|
|
26
|
+
status: 'current' | 'update_available' | 'update_required';
|
|
27
|
+
your_version: string;
|
|
28
|
+
min_version?: string;
|
|
29
|
+
recommended_version?: string;
|
|
30
|
+
latest_version?: string;
|
|
31
|
+
changelog_url?: string;
|
|
32
|
+
message?: string;
|
|
33
|
+
}
|
|
34
|
+
export type ServerMessage = PingMessage | TaskStartMessage | TaskResumeMessage | TaskCancelMessage | VersionStatusMessage;
|
|
35
|
+
export interface PongMessage {
|
|
36
|
+
type: 'pong';
|
|
37
|
+
}
|
|
38
|
+
export interface StatusMessage {
|
|
39
|
+
type: 'status';
|
|
40
|
+
running_tasks: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface EventMessage {
|
|
43
|
+
type: 'event';
|
|
44
|
+
task_id: string;
|
|
45
|
+
event_type: string;
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
}
|
|
48
|
+
export type DaemonMessage = PongMessage | StatusMessage | EventMessage;
|
|
49
|
+
export type EventType = 'WAIT_FOR_USER' | 'TASK_COMPLETE' | 'OUTPUT' | 'PROGRESS' | 'ERROR';
|
|
50
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/client/messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,GACjB,oBAAoB,CAAC;AAIzB,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,aAAa,GAAG,YAAY,CAAC;AAGvE,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,eAAe,GACf,QAAQ,GACR,UAAU,GACV,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/client/messages.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { CmdCtrlConfig, Credentials } from '../config/config';
|
|
2
|
+
export declare class DaemonClient {
|
|
3
|
+
private ws;
|
|
4
|
+
private config;
|
|
5
|
+
private credentials;
|
|
6
|
+
private reconnectDelay;
|
|
7
|
+
private reconnectTimer;
|
|
8
|
+
private pingTimer;
|
|
9
|
+
private shouldReconnect;
|
|
10
|
+
private adapter;
|
|
11
|
+
constructor(config: CmdCtrlConfig, credentials: Credentials);
|
|
12
|
+
/**
|
|
13
|
+
* Connect to the CmdCtrl server via WebSocket
|
|
14
|
+
*/
|
|
15
|
+
connect(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Disconnect from server
|
|
18
|
+
*/
|
|
19
|
+
disconnect(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Send a message to the server
|
|
22
|
+
*/
|
|
23
|
+
private send;
|
|
24
|
+
/**
|
|
25
|
+
* Send an event for a task
|
|
26
|
+
*/
|
|
27
|
+
private sendEvent;
|
|
28
|
+
/**
|
|
29
|
+
* Send current status to server
|
|
30
|
+
*/
|
|
31
|
+
private sendStatus;
|
|
32
|
+
/**
|
|
33
|
+
* Handle incoming message from server
|
|
34
|
+
*/
|
|
35
|
+
private handleMessage;
|
|
36
|
+
/**
|
|
37
|
+
* Handle task_start message
|
|
38
|
+
*/
|
|
39
|
+
private handleTaskStart;
|
|
40
|
+
/**
|
|
41
|
+
* Handle task_resume message
|
|
42
|
+
*/
|
|
43
|
+
private handleTaskResume;
|
|
44
|
+
/**
|
|
45
|
+
* Handle task_cancel message
|
|
46
|
+
*/
|
|
47
|
+
private handleTaskCancel;
|
|
48
|
+
/**
|
|
49
|
+
* Handle version_status message from server
|
|
50
|
+
*/
|
|
51
|
+
private handleVersionStatus;
|
|
52
|
+
/**
|
|
53
|
+
* Schedule reconnection with exponential backoff
|
|
54
|
+
*/
|
|
55
|
+
private scheduleReconnect;
|
|
56
|
+
/**
|
|
57
|
+
* Start ping interval to keep connection alive
|
|
58
|
+
*/
|
|
59
|
+
private startPingInterval;
|
|
60
|
+
/**
|
|
61
|
+
* Stop ping interval
|
|
62
|
+
*/
|
|
63
|
+
private stopPingInterval;
|
|
64
|
+
/**
|
|
65
|
+
* Refresh access token using refresh token
|
|
66
|
+
*/
|
|
67
|
+
refreshToken(): Promise<boolean>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/client/websocket.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiB9D,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW;IAM3D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;IACH,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;OAEG;YACW,eAAe;IAa7B;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,gBAAgB;IAK9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CAIvC"}
|