@kaitranntt/ccs 7.43.0-dev.2 → 7.43.0-dev.4
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/ccs.js +7 -0
- package/dist/ccs.js.map +1 -1
- package/dist/commands/cursor-command.d.ts +12 -0
- package/dist/commands/cursor-command.d.ts.map +1 -0
- package/dist/commands/cursor-command.js +225 -0
- package/dist/commands/cursor-command.js.map +1 -0
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +14 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/config/reserved-names.d.ts +1 -1
- package/dist/config/reserved-names.d.ts.map +1 -1
- package/dist/config/reserved-names.js +2 -0
- package/dist/config/reserved-names.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts +6 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +31 -1
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +21 -0
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +12 -1
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/cursor/cursor-daemon.d.ts +47 -0
- package/dist/cursor/cursor-daemon.d.ts.map +1 -0
- package/dist/cursor/cursor-daemon.js +332 -0
- package/dist/cursor/cursor-daemon.js.map +1 -0
- package/dist/cursor/cursor-models.d.ts +43 -0
- package/dist/cursor/cursor-models.d.ts.map +1 -0
- package/dist/cursor/cursor-models.js +205 -0
- package/dist/cursor/cursor-models.js.map +1 -0
- package/dist/cursor/index.d.ts +11 -0
- package/dist/cursor/index.d.ts.map +1 -0
- package/dist/cursor/index.js +53 -0
- package/dist/cursor/index.js.map +1 -0
- package/dist/cursor/types.d.ts +33 -1
- package/dist/cursor/types.d.ts.map +1 -1
- package/dist/cursor/types.js +1 -1
- package/dist/web-server/routes/cursor-routes.d.ts +6 -0
- package/dist/web-server/routes/cursor-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cursor-routes.js +163 -0
- package/dist/web-server/routes/cursor-routes.js.map +1 -0
- package/dist/web-server/routes/cursor-settings-routes.d.ts +6 -0
- package/dist/web-server/routes/cursor-settings-routes.d.ts.map +1 -0
- package/dist/web-server/routes/cursor-settings-routes.js +171 -0
- package/dist/web-server/routes/cursor-settings-routes.js.map +1 -0
- package/dist/web-server/routes/index.d.ts.map +1 -1
- package/dist/web-server/routes/index.js +3 -0
- package/dist/web-server/routes/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Model Catalog
|
|
3
|
+
*
|
|
4
|
+
* Manages available models from Cursor IDE.
|
|
5
|
+
* Based on Cursor's supported models catalog.
|
|
6
|
+
*/
|
|
7
|
+
import type { CursorModel } from './types';
|
|
8
|
+
/** Default daemon port */
|
|
9
|
+
export declare const DEFAULT_CURSOR_PORT = 4242;
|
|
10
|
+
/** Default model ID */
|
|
11
|
+
export declare const DEFAULT_CURSOR_MODEL = "gpt-4.1";
|
|
12
|
+
/**
|
|
13
|
+
* Default models available through Cursor IDE.
|
|
14
|
+
* Used as fallback when daemon is not reachable.
|
|
15
|
+
* Source: Cursor IDE supported models (Feb 2025)
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_CURSOR_MODELS: CursorModel[];
|
|
18
|
+
/**
|
|
19
|
+
* Fetch available models from running cursor daemon.
|
|
20
|
+
*
|
|
21
|
+
* @param port The port cursor daemon is running on
|
|
22
|
+
* @returns List of available models
|
|
23
|
+
*/
|
|
24
|
+
export declare function fetchModelsFromDaemon(port: number): Promise<CursorModel[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Get available models (from daemon or defaults).
|
|
27
|
+
* Checks daemon health first to avoid 5s timeout when daemon is not running.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAvailableModels(port: number): Promise<CursorModel[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the default model.
|
|
32
|
+
* Uses gpt-4.1 as it's commonly available.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getDefaultModel(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Detect provider from model ID.
|
|
37
|
+
*/
|
|
38
|
+
export declare function detectProvider(modelId: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Format model ID to human-readable name.
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatModelName(modelId: string): string;
|
|
43
|
+
//# sourceMappingURL=cursor-models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-models.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,uBAAuB;AACvB,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,WAAW,EAiD9C,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA8DhF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAK7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYvD"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor Model Catalog
|
|
4
|
+
*
|
|
5
|
+
* Manages available models from Cursor IDE.
|
|
6
|
+
* Based on Cursor's supported models catalog.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.formatModelName = exports.detectProvider = exports.getDefaultModel = exports.getAvailableModels = exports.fetchModelsFromDaemon = exports.DEFAULT_CURSOR_MODELS = exports.DEFAULT_CURSOR_MODEL = exports.DEFAULT_CURSOR_PORT = void 0;
|
|
33
|
+
const http = __importStar(require("http"));
|
|
34
|
+
const cursor_daemon_1 = require("./cursor-daemon");
|
|
35
|
+
/** Default daemon port */
|
|
36
|
+
exports.DEFAULT_CURSOR_PORT = 4242;
|
|
37
|
+
/** Default model ID */
|
|
38
|
+
exports.DEFAULT_CURSOR_MODEL = 'gpt-4.1';
|
|
39
|
+
/**
|
|
40
|
+
* Default models available through Cursor IDE.
|
|
41
|
+
* Used as fallback when daemon is not reachable.
|
|
42
|
+
* Source: Cursor IDE supported models (Feb 2025)
|
|
43
|
+
*/
|
|
44
|
+
exports.DEFAULT_CURSOR_MODELS = [
|
|
45
|
+
// Anthropic Models
|
|
46
|
+
{
|
|
47
|
+
id: 'claude-sonnet-4',
|
|
48
|
+
name: 'Claude Sonnet 4',
|
|
49
|
+
provider: 'anthropic',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'claude-sonnet-4.5',
|
|
53
|
+
name: 'Claude Sonnet 4.5',
|
|
54
|
+
provider: 'anthropic',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: 'claude-opus-4',
|
|
58
|
+
name: 'Claude Opus 4',
|
|
59
|
+
provider: 'anthropic',
|
|
60
|
+
},
|
|
61
|
+
// OpenAI Models
|
|
62
|
+
{
|
|
63
|
+
id: 'gpt-4.1',
|
|
64
|
+
name: 'GPT-4.1',
|
|
65
|
+
provider: 'openai',
|
|
66
|
+
isDefault: true,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: 'gpt-5-mini',
|
|
70
|
+
name: 'GPT-5 Mini',
|
|
71
|
+
provider: 'openai',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: 'o3-mini',
|
|
75
|
+
name: 'O3 Mini',
|
|
76
|
+
provider: 'openai',
|
|
77
|
+
},
|
|
78
|
+
// Google Models
|
|
79
|
+
{
|
|
80
|
+
id: 'gemini-2.5-pro',
|
|
81
|
+
name: 'Gemini 2.5 Pro',
|
|
82
|
+
provider: 'google',
|
|
83
|
+
},
|
|
84
|
+
// Cursor Custom Models
|
|
85
|
+
{
|
|
86
|
+
id: 'cursor-small',
|
|
87
|
+
name: 'Cursor Small',
|
|
88
|
+
provider: 'cursor',
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
/**
|
|
92
|
+
* Fetch available models from running cursor daemon.
|
|
93
|
+
*
|
|
94
|
+
* @param port The port cursor daemon is running on
|
|
95
|
+
* @returns List of available models
|
|
96
|
+
*/
|
|
97
|
+
async function fetchModelsFromDaemon(port) {
|
|
98
|
+
return new Promise((resolve) => {
|
|
99
|
+
let resolved = false;
|
|
100
|
+
const safeResolve = (models) => {
|
|
101
|
+
if (resolved)
|
|
102
|
+
return;
|
|
103
|
+
resolved = true;
|
|
104
|
+
resolve(models);
|
|
105
|
+
};
|
|
106
|
+
const req = http.request({
|
|
107
|
+
// Use 127.0.0.1 instead of localhost for more reliable local connections
|
|
108
|
+
hostname: '127.0.0.1',
|
|
109
|
+
port,
|
|
110
|
+
path: '/v1/models',
|
|
111
|
+
method: 'GET',
|
|
112
|
+
timeout: 5000,
|
|
113
|
+
}, (res) => {
|
|
114
|
+
const MAX_BODY_SIZE = 1024 * 1024; // 1MB limit
|
|
115
|
+
let data = '';
|
|
116
|
+
res.on('data', (chunk) => {
|
|
117
|
+
data += chunk;
|
|
118
|
+
if (data.length > MAX_BODY_SIZE) {
|
|
119
|
+
req.destroy();
|
|
120
|
+
safeResolve(exports.DEFAULT_CURSOR_MODELS);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
res.on('end', () => {
|
|
124
|
+
try {
|
|
125
|
+
const response = JSON.parse(data);
|
|
126
|
+
if (response.data && Array.isArray(response.data)) {
|
|
127
|
+
const models = response.data.map((m) => ({
|
|
128
|
+
id: m.id,
|
|
129
|
+
name: formatModelName(m.id),
|
|
130
|
+
provider: detectProvider(m.id),
|
|
131
|
+
isDefault: m.id === exports.DEFAULT_CURSOR_MODEL,
|
|
132
|
+
}));
|
|
133
|
+
safeResolve(models.length > 0 ? models : exports.DEFAULT_CURSOR_MODELS);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
safeResolve(exports.DEFAULT_CURSOR_MODELS);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
safeResolve(exports.DEFAULT_CURSOR_MODELS);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
req.on('error', () => {
|
|
145
|
+
safeResolve(exports.DEFAULT_CURSOR_MODELS);
|
|
146
|
+
});
|
|
147
|
+
req.on('timeout', () => {
|
|
148
|
+
req.destroy();
|
|
149
|
+
safeResolve(exports.DEFAULT_CURSOR_MODELS);
|
|
150
|
+
});
|
|
151
|
+
req.end();
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
exports.fetchModelsFromDaemon = fetchModelsFromDaemon;
|
|
155
|
+
/**
|
|
156
|
+
* Get available models (from daemon or defaults).
|
|
157
|
+
* Checks daemon health first to avoid 5s timeout when daemon is not running.
|
|
158
|
+
*/
|
|
159
|
+
async function getAvailableModels(port) {
|
|
160
|
+
if (!(await (0, cursor_daemon_1.isDaemonRunning)(port))) {
|
|
161
|
+
return exports.DEFAULT_CURSOR_MODELS;
|
|
162
|
+
}
|
|
163
|
+
return fetchModelsFromDaemon(port);
|
|
164
|
+
}
|
|
165
|
+
exports.getAvailableModels = getAvailableModels;
|
|
166
|
+
/**
|
|
167
|
+
* Get the default model.
|
|
168
|
+
* Uses gpt-4.1 as it's commonly available.
|
|
169
|
+
*/
|
|
170
|
+
function getDefaultModel() {
|
|
171
|
+
return exports.DEFAULT_CURSOR_MODEL;
|
|
172
|
+
}
|
|
173
|
+
exports.getDefaultModel = getDefaultModel;
|
|
174
|
+
/**
|
|
175
|
+
* Detect provider from model ID.
|
|
176
|
+
*/
|
|
177
|
+
function detectProvider(modelId) {
|
|
178
|
+
if (modelId.includes('claude'))
|
|
179
|
+
return 'anthropic';
|
|
180
|
+
if (modelId.includes('gpt') || /^o[1-9]\d*(-|$)/.test(modelId))
|
|
181
|
+
return 'openai';
|
|
182
|
+
if (modelId.includes('gemini'))
|
|
183
|
+
return 'google';
|
|
184
|
+
if (modelId.includes('cursor'))
|
|
185
|
+
return 'cursor';
|
|
186
|
+
return 'unknown';
|
|
187
|
+
}
|
|
188
|
+
exports.detectProvider = detectProvider;
|
|
189
|
+
/**
|
|
190
|
+
* Format model ID to human-readable name.
|
|
191
|
+
*/
|
|
192
|
+
function formatModelName(modelId) {
|
|
193
|
+
// Find model in catalog for metadata
|
|
194
|
+
const model = exports.DEFAULT_CURSOR_MODELS.find((m) => m.id === modelId);
|
|
195
|
+
if (model) {
|
|
196
|
+
return model.name;
|
|
197
|
+
}
|
|
198
|
+
// Fallback: convert kebab-case to title case
|
|
199
|
+
return modelId
|
|
200
|
+
.split('-')
|
|
201
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
202
|
+
.join(' ');
|
|
203
|
+
}
|
|
204
|
+
exports.formatModelName = formatModelName;
|
|
205
|
+
//# sourceMappingURL=cursor-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-models.js","sourceRoot":"","sources":["../../src/cursor/cursor-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Module Index
|
|
3
|
+
*
|
|
4
|
+
* Central exports for Cursor IDE integration.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export { autoDetectTokens, saveCredentials, loadCredentials, checkAuthStatus } from './cursor-auth';
|
|
8
|
+
export { isDaemonRunning, getDaemonStatus, startDaemon, stopDaemon, getPidFromFile, writePidToFile, removePidFile, } from './cursor-daemon';
|
|
9
|
+
export { DEFAULT_CURSOR_MODELS, DEFAULT_CURSOR_PORT, DEFAULT_CURSOR_MODEL, fetchModelsFromDaemon, getAvailableModels, getDefaultModel, detectProvider, formatModelName, } from './cursor-models';
|
|
10
|
+
export { CursorExecutor } from './cursor-executor';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGpG,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor Module Index
|
|
4
|
+
*
|
|
5
|
+
* Central exports for Cursor IDE integration.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.CursorExecutor = exports.formatModelName = exports.detectProvider = exports.getDefaultModel = exports.getAvailableModels = exports.fetchModelsFromDaemon = exports.DEFAULT_CURSOR_MODEL = exports.DEFAULT_CURSOR_PORT = exports.DEFAULT_CURSOR_MODELS = exports.removePidFile = exports.writePidToFile = exports.getPidFromFile = exports.stopDaemon = exports.startDaemon = exports.getDaemonStatus = exports.isDaemonRunning = exports.checkAuthStatus = exports.loadCredentials = exports.saveCredentials = exports.autoDetectTokens = void 0;
|
|
23
|
+
// Types
|
|
24
|
+
__exportStar(require("./types"), exports);
|
|
25
|
+
// Auth
|
|
26
|
+
var cursor_auth_1 = require("./cursor-auth");
|
|
27
|
+
Object.defineProperty(exports, "autoDetectTokens", { enumerable: true, get: function () { return cursor_auth_1.autoDetectTokens; } });
|
|
28
|
+
Object.defineProperty(exports, "saveCredentials", { enumerable: true, get: function () { return cursor_auth_1.saveCredentials; } });
|
|
29
|
+
Object.defineProperty(exports, "loadCredentials", { enumerable: true, get: function () { return cursor_auth_1.loadCredentials; } });
|
|
30
|
+
Object.defineProperty(exports, "checkAuthStatus", { enumerable: true, get: function () { return cursor_auth_1.checkAuthStatus; } });
|
|
31
|
+
// Daemon
|
|
32
|
+
var cursor_daemon_1 = require("./cursor-daemon");
|
|
33
|
+
Object.defineProperty(exports, "isDaemonRunning", { enumerable: true, get: function () { return cursor_daemon_1.isDaemonRunning; } });
|
|
34
|
+
Object.defineProperty(exports, "getDaemonStatus", { enumerable: true, get: function () { return cursor_daemon_1.getDaemonStatus; } });
|
|
35
|
+
Object.defineProperty(exports, "startDaemon", { enumerable: true, get: function () { return cursor_daemon_1.startDaemon; } });
|
|
36
|
+
Object.defineProperty(exports, "stopDaemon", { enumerable: true, get: function () { return cursor_daemon_1.stopDaemon; } });
|
|
37
|
+
Object.defineProperty(exports, "getPidFromFile", { enumerable: true, get: function () { return cursor_daemon_1.getPidFromFile; } });
|
|
38
|
+
Object.defineProperty(exports, "writePidToFile", { enumerable: true, get: function () { return cursor_daemon_1.writePidToFile; } });
|
|
39
|
+
Object.defineProperty(exports, "removePidFile", { enumerable: true, get: function () { return cursor_daemon_1.removePidFile; } });
|
|
40
|
+
// Models
|
|
41
|
+
var cursor_models_1 = require("./cursor-models");
|
|
42
|
+
Object.defineProperty(exports, "DEFAULT_CURSOR_MODELS", { enumerable: true, get: function () { return cursor_models_1.DEFAULT_CURSOR_MODELS; } });
|
|
43
|
+
Object.defineProperty(exports, "DEFAULT_CURSOR_PORT", { enumerable: true, get: function () { return cursor_models_1.DEFAULT_CURSOR_PORT; } });
|
|
44
|
+
Object.defineProperty(exports, "DEFAULT_CURSOR_MODEL", { enumerable: true, get: function () { return cursor_models_1.DEFAULT_CURSOR_MODEL; } });
|
|
45
|
+
Object.defineProperty(exports, "fetchModelsFromDaemon", { enumerable: true, get: function () { return cursor_models_1.fetchModelsFromDaemon; } });
|
|
46
|
+
Object.defineProperty(exports, "getAvailableModels", { enumerable: true, get: function () { return cursor_models_1.getAvailableModels; } });
|
|
47
|
+
Object.defineProperty(exports, "getDefaultModel", { enumerable: true, get: function () { return cursor_models_1.getDefaultModel; } });
|
|
48
|
+
Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return cursor_models_1.detectProvider; } });
|
|
49
|
+
Object.defineProperty(exports, "formatModelName", { enumerable: true, get: function () { return cursor_models_1.formatModelName; } });
|
|
50
|
+
// Executor
|
|
51
|
+
var cursor_executor_1 = require("./cursor-executor");
|
|
52
|
+
Object.defineProperty(exports, "CursorExecutor", { enumerable: true, get: function () { return cursor_executor_1.CursorExecutor; } });
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cursor/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,QAAQ;AACR,0CAAwB;AAExB,OAAO;AACP,6CAAoG;AAA3F,+GAAA,gBAAgB,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,8GAAA,eAAe,OAAA;AAE5E,SAAS;AACT,iDAQyB;AAPvB,gHAAA,eAAe,OAAA;AACf,gHAAA,eAAe,OAAA;AACf,4GAAA,WAAW,OAAA;AACX,2GAAA,UAAU,OAAA;AACV,+GAAA,cAAc,OAAA;AACd,+GAAA,cAAc,OAAA;AACd,8GAAA,aAAa,OAAA;AAGf,SAAS;AACT,iDASyB;AARvB,sHAAA,qBAAqB,OAAA;AACrB,oHAAA,mBAAmB,OAAA;AACnB,qHAAA,oBAAoB,OAAA;AACpB,sHAAA,qBAAqB,OAAA;AACrB,mHAAA,kBAAkB,OAAA;AAClB,gHAAA,eAAe,OAAA;AACf,+GAAA,cAAc,OAAA;AACd,gHAAA,eAAe,OAAA;AAGjB,WAAW;AACX,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
|
package/dist/cursor/types.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cursor IDE Type Definitions
|
|
3
3
|
*
|
|
4
|
-
* TypeScript interfaces for the Cursor
|
|
4
|
+
* TypeScript interfaces for the Cursor module.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Cursor daemon configuration.
|
|
8
|
+
* Temporary interface until #521 adds cursor to unified config.
|
|
9
|
+
*/
|
|
10
|
+
export interface CursorConfig {
|
|
11
|
+
port: number;
|
|
12
|
+
model: string;
|
|
13
|
+
}
|
|
6
14
|
/**
|
|
7
15
|
* Cursor authentication credentials
|
|
8
16
|
*/
|
|
@@ -46,4 +54,28 @@ export interface AutoDetectResult {
|
|
|
46
54
|
/** Error message (if detection failed) */
|
|
47
55
|
error?: string;
|
|
48
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Cursor daemon/process status
|
|
59
|
+
*/
|
|
60
|
+
export interface CursorDaemonStatus {
|
|
61
|
+
/** Whether daemon is running */
|
|
62
|
+
running: boolean;
|
|
63
|
+
/** Port number daemon is listening on */
|
|
64
|
+
port: number;
|
|
65
|
+
/** Process ID (if available) */
|
|
66
|
+
pid?: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Cursor AI model
|
|
70
|
+
*/
|
|
71
|
+
export interface CursorModel {
|
|
72
|
+
/** Model ID */
|
|
73
|
+
id: string;
|
|
74
|
+
/** Display name */
|
|
75
|
+
name: string;
|
|
76
|
+
/** Provider (e.g., 'openai', 'anthropic') */
|
|
77
|
+
provider: string;
|
|
78
|
+
/** Whether this is the default model */
|
|
79
|
+
isDefault?: boolean;
|
|
80
|
+
}
|
|
49
81
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cursor/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC;IACrC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cursor/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC;IACrC,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IACvB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,eAAe;IACf,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
package/dist/cursor/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAqKxB,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor Routes - Cursor IDE integration via cursor proxy daemon
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const express_1 = require("express");
|
|
10
|
+
const cursor_auth_1 = require("../../cursor/cursor-auth");
|
|
11
|
+
const unified_config_loader_1 = require("../../config/unified-config-loader");
|
|
12
|
+
const cursor_settings_routes_1 = __importDefault(require("./cursor-settings-routes"));
|
|
13
|
+
const router = (0, express_1.Router)();
|
|
14
|
+
// Mount settings sub-routes
|
|
15
|
+
router.use('/settings', cursor_settings_routes_1.default);
|
|
16
|
+
/**
|
|
17
|
+
* Get daemon status
|
|
18
|
+
* TODO: Implement in cursor-executor.ts (#520)
|
|
19
|
+
*/
|
|
20
|
+
async function getDaemonStatus(port) {
|
|
21
|
+
// Stub - will be implemented in #520
|
|
22
|
+
return { running: false, port };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get available models
|
|
26
|
+
* TODO: Implement in cursor-executor.ts (#520)
|
|
27
|
+
*/
|
|
28
|
+
async function getAvailableModels() {
|
|
29
|
+
// Stub - will be implemented in #520
|
|
30
|
+
return []; // TODO: populated by cursor-models.ts (#520)
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Start daemon
|
|
34
|
+
* TODO: Implement in cursor-executor.ts (#520)
|
|
35
|
+
*/
|
|
36
|
+
async function startDaemon(port, ghostMode) {
|
|
37
|
+
// Stub - will be implemented in #520
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
message: `Daemon start not implemented (port: ${port}, ghost: ${ghostMode})`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Stop daemon
|
|
45
|
+
* TODO: Implement in cursor-executor.ts (#520)
|
|
46
|
+
*/
|
|
47
|
+
async function stopDaemon() {
|
|
48
|
+
// Stub - will be implemented in #520
|
|
49
|
+
return { success: false, message: 'Daemon stop not implemented' };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* GET /api/cursor/status - Get Cursor status (auth + daemon)
|
|
53
|
+
*/
|
|
54
|
+
router.get('/status', async (_req, res) => {
|
|
55
|
+
try {
|
|
56
|
+
const cursorConfig = (0, unified_config_loader_1.getCursorConfig)();
|
|
57
|
+
const authStatus = (0, cursor_auth_1.checkAuthStatus)();
|
|
58
|
+
const daemonStatus = await getDaemonStatus(cursorConfig.port);
|
|
59
|
+
res.json({
|
|
60
|
+
enabled: cursorConfig.enabled,
|
|
61
|
+
authenticated: authStatus.authenticated,
|
|
62
|
+
daemon_running: daemonStatus.running,
|
|
63
|
+
port: cursorConfig.port,
|
|
64
|
+
auto_start: cursorConfig.auto_start,
|
|
65
|
+
ghost_mode: cursorConfig.ghost_mode,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
res.status(500).json({ error: error.message });
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
/**
|
|
73
|
+
* POST /api/cursor/auth/import - Import Cursor token manually
|
|
74
|
+
*/
|
|
75
|
+
router.post('/auth/import', async (req, res) => {
|
|
76
|
+
try {
|
|
77
|
+
const { accessToken, machineId } = req.body;
|
|
78
|
+
if (!accessToken || !machineId) {
|
|
79
|
+
res.status(400).json({ error: 'Missing accessToken or machineId' });
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Validate token format
|
|
83
|
+
if (!(0, cursor_auth_1.validateToken)(accessToken, machineId)) {
|
|
84
|
+
res.status(400).json({ error: 'Invalid token or machine ID format' });
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Save credentials
|
|
88
|
+
(0, cursor_auth_1.saveCredentials)({
|
|
89
|
+
accessToken,
|
|
90
|
+
machineId,
|
|
91
|
+
authMethod: 'manual',
|
|
92
|
+
importedAt: new Date().toISOString(),
|
|
93
|
+
});
|
|
94
|
+
res.json({ success: true, message: 'Token imported successfully' });
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
res.status(500).json({ error: error.message });
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* POST /api/cursor/auth/auto-detect - Auto-detect token from SQLite
|
|
102
|
+
*/
|
|
103
|
+
router.post('/auth/auto-detect', async (_req, res) => {
|
|
104
|
+
try {
|
|
105
|
+
const result = (0, cursor_auth_1.autoDetectTokens)();
|
|
106
|
+
if (!result.found || !result.accessToken || !result.machineId) {
|
|
107
|
+
res.status(404).json({ error: result.error ?? 'Token not found' });
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Save credentials
|
|
111
|
+
(0, cursor_auth_1.saveCredentials)({
|
|
112
|
+
accessToken: result.accessToken,
|
|
113
|
+
machineId: result.machineId,
|
|
114
|
+
authMethod: 'auto-detect',
|
|
115
|
+
importedAt: new Date().toISOString(),
|
|
116
|
+
});
|
|
117
|
+
res.json({ success: true, message: 'Token auto-detected and imported' });
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
res.status(500).json({ error: error.message });
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
/**
|
|
124
|
+
* GET /api/cursor/models - List available models
|
|
125
|
+
*/
|
|
126
|
+
router.get('/models', async (_req, res) => {
|
|
127
|
+
try {
|
|
128
|
+
const models = await getAvailableModels();
|
|
129
|
+
res.json({ models });
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
res.status(500).json({ error: error.message });
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
/**
|
|
136
|
+
* POST /api/cursor/daemon/start - Start cursor proxy daemon
|
|
137
|
+
* Path matches copilot convention: /api/{provider}/daemon/{action}
|
|
138
|
+
*/
|
|
139
|
+
router.post('/daemon/start', async (_req, res) => {
|
|
140
|
+
try {
|
|
141
|
+
const cursorConfig = (0, unified_config_loader_1.getCursorConfig)();
|
|
142
|
+
const result = await startDaemon(cursorConfig.port, cursorConfig.ghost_mode);
|
|
143
|
+
res.json(result);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
res.status(500).json({ error: error.message });
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
/**
|
|
150
|
+
* POST /api/cursor/daemon/stop - Stop cursor proxy daemon
|
|
151
|
+
* Path matches copilot convention: /api/{provider}/daemon/{action}
|
|
152
|
+
*/
|
|
153
|
+
router.post('/daemon/stop', async (_req, res) => {
|
|
154
|
+
try {
|
|
155
|
+
const result = await stopDaemon();
|
|
156
|
+
res.json(result);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
res.status(500).json({ error: error.message });
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
exports.default = router;
|
|
163
|
+
//# sourceMappingURL=cursor-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-routes.js","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-settings-routes.d.ts","sourceRoot":"","sources":["../../../src/web-server/routes/cursor-settings-routes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAyJxB,eAAe,MAAM,CAAC"}
|