@kaitranntt/ccs 7.42.0-dev.1 → 7.43.0-dev.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/cursor/cursor-auth.d.ts +58 -0
- package/dist/cursor/cursor-auth.d.ts.map +1 -0
- package/dist/cursor/cursor-auth.js +295 -0
- package/dist/cursor/cursor-auth.js.map +1 -0
- package/dist/cursor/types.d.ts +49 -0
- package/dist/cursor/types.d.ts.map +1 -0
- package/dist/cursor/types.js +8 -0
- package/dist/cursor/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor IDE Authentication Handler
|
|
3
|
+
*
|
|
4
|
+
* Handles token import and authentication for Cursor IDE integration.
|
|
5
|
+
* Supports auto-detection from Cursor's SQLite database.
|
|
6
|
+
*
|
|
7
|
+
* Token Location:
|
|
8
|
+
* - Linux: ~/.config/Cursor/User/globalStorage/state.vscdb
|
|
9
|
+
* - macOS: ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
|
|
10
|
+
* - Windows: %APPDATA%\Cursor\User\globalStorage\state.vscdb
|
|
11
|
+
*
|
|
12
|
+
* Database Keys:
|
|
13
|
+
* - cursorAuth/accessToken: Access token
|
|
14
|
+
* - storage.serviceMachineId: Machine ID for checksum
|
|
15
|
+
*/
|
|
16
|
+
import type { CursorCredentials, CursorAuthStatus, AutoDetectResult } from './types';
|
|
17
|
+
/**
|
|
18
|
+
* Get platform-specific path to Cursor's state.vscdb
|
|
19
|
+
*/
|
|
20
|
+
export declare function getTokenStoragePath(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Auto-detect tokens from Cursor's SQLite database
|
|
23
|
+
*/
|
|
24
|
+
export declare function autoDetectTokens(): AutoDetectResult;
|
|
25
|
+
/**
|
|
26
|
+
* Validate token and machine ID format
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateToken(accessToken: string, machineId: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Extract user info from token if possible
|
|
31
|
+
* Cursor tokens may contain encoded user info as JWT
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractUserInfo(accessToken: string): {
|
|
34
|
+
email?: string;
|
|
35
|
+
userId?: string;
|
|
36
|
+
exp?: number;
|
|
37
|
+
} | null;
|
|
38
|
+
/**
|
|
39
|
+
* Get path to credentials file
|
|
40
|
+
*/
|
|
41
|
+
export declare function getCredentialsPath(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Save credentials to CCS config directory
|
|
44
|
+
*/
|
|
45
|
+
export declare function saveCredentials(credentials: CursorCredentials): void;
|
|
46
|
+
/**
|
|
47
|
+
* Load credentials from CCS config directory
|
|
48
|
+
*/
|
|
49
|
+
export declare function loadCredentials(): CursorCredentials | null;
|
|
50
|
+
/**
|
|
51
|
+
* Check authentication status
|
|
52
|
+
*/
|
|
53
|
+
export declare function checkAuthStatus(): CursorAuthStatus;
|
|
54
|
+
/**
|
|
55
|
+
* Delete credentials file
|
|
56
|
+
*/
|
|
57
|
+
export declare function deleteCredentials(): boolean;
|
|
58
|
+
//# sourceMappingURL=cursor-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-auth.d.ts","sourceRoot":"","sources":["../../src/cursor/cursor-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGrF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAqB5C;AAyBD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CA4CnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAsB7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,GAClB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiC1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAcpE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAqC1D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,CAyClD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cursor IDE Authentication Handler
|
|
4
|
+
*
|
|
5
|
+
* Handles token import and authentication for Cursor IDE integration.
|
|
6
|
+
* Supports auto-detection from Cursor's SQLite database.
|
|
7
|
+
*
|
|
8
|
+
* Token Location:
|
|
9
|
+
* - Linux: ~/.config/Cursor/User/globalStorage/state.vscdb
|
|
10
|
+
* - macOS: ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
|
|
11
|
+
* - Windows: %APPDATA%\Cursor\User\globalStorage\state.vscdb
|
|
12
|
+
*
|
|
13
|
+
* Database Keys:
|
|
14
|
+
* - cursorAuth/accessToken: Access token
|
|
15
|
+
* - storage.serviceMachineId: Machine ID for checksum
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.deleteCredentials = exports.checkAuthStatus = exports.loadCredentials = exports.saveCredentials = exports.getCredentialsPath = exports.extractUserInfo = exports.validateToken = exports.autoDetectTokens = exports.getTokenStoragePath = void 0;
|
|
42
|
+
const child_process_1 = require("child_process");
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const os = __importStar(require("os"));
|
|
46
|
+
const config_manager_1 = require("../utils/config-manager");
|
|
47
|
+
/**
|
|
48
|
+
* Get platform-specific path to Cursor's state.vscdb
|
|
49
|
+
*/
|
|
50
|
+
function getTokenStoragePath() {
|
|
51
|
+
const platform = process.platform;
|
|
52
|
+
const home = os.homedir();
|
|
53
|
+
if (platform === 'win32') {
|
|
54
|
+
const appData = process.env.APPDATA || path.join(home, 'AppData', 'Roaming');
|
|
55
|
+
return path.join(appData, 'Cursor', 'User', 'globalStorage', 'state.vscdb');
|
|
56
|
+
}
|
|
57
|
+
else if (platform === 'darwin') {
|
|
58
|
+
return path.join(home, 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'state.vscdb');
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
// Linux
|
|
62
|
+
return path.join(home, '.config', 'Cursor', 'User', 'globalStorage', 'state.vscdb');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.getTokenStoragePath = getTokenStoragePath;
|
|
66
|
+
/**
|
|
67
|
+
* Query Cursor's SQLite database using sqlite3 CLI
|
|
68
|
+
*/
|
|
69
|
+
function queryStateDb(dbPath, key) {
|
|
70
|
+
try {
|
|
71
|
+
// Escape single quotes to prevent SQL injection
|
|
72
|
+
const sanitizedKey = key.replace(/'/g, "''");
|
|
73
|
+
const result = (0, child_process_1.execFileSync)('sqlite3', [dbPath, `SELECT value FROM itemTable WHERE key='${sanitizedKey}'`], { encoding: 'utf8', timeout: 5000, stdio: ['pipe', 'pipe', 'ignore'] }).trim();
|
|
74
|
+
return result || null;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
// Check if sqlite3 is not installed
|
|
78
|
+
if (err.code === 'ENOENT') {
|
|
79
|
+
// sqlite3 not found - could log this if needed
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Auto-detect tokens from Cursor's SQLite database
|
|
87
|
+
*/
|
|
88
|
+
function autoDetectTokens() {
|
|
89
|
+
// sqlite3 CLI is not bundled with Windows
|
|
90
|
+
if (process.platform === 'win32') {
|
|
91
|
+
return {
|
|
92
|
+
found: false,
|
|
93
|
+
error: 'Auto-detection is not supported on Windows. Please import tokens manually using ccs cursor auth --manual.',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
const dbPath = getTokenStoragePath();
|
|
97
|
+
// Check if database exists
|
|
98
|
+
if (!fs.existsSync(dbPath)) {
|
|
99
|
+
return {
|
|
100
|
+
found: false,
|
|
101
|
+
error: 'Cursor state database not found. Make sure Cursor IDE is installed and you are logged in.',
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// Try to query access token
|
|
105
|
+
const accessToken = queryStateDb(dbPath, 'cursorAuth/accessToken');
|
|
106
|
+
if (!accessToken) {
|
|
107
|
+
return {
|
|
108
|
+
found: false,
|
|
109
|
+
error: 'Access token not found in database. Please log in to Cursor IDE first.',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// Try to query machine ID
|
|
113
|
+
const machineId = queryStateDb(dbPath, 'storage.serviceMachineId');
|
|
114
|
+
if (!machineId) {
|
|
115
|
+
return {
|
|
116
|
+
found: false,
|
|
117
|
+
error: 'Machine ID not found in database.',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
found: true,
|
|
122
|
+
accessToken,
|
|
123
|
+
machineId,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
exports.autoDetectTokens = autoDetectTokens;
|
|
127
|
+
/**
|
|
128
|
+
* Validate token and machine ID format
|
|
129
|
+
*/
|
|
130
|
+
function validateToken(accessToken, machineId) {
|
|
131
|
+
// Basic validation
|
|
132
|
+
if (!accessToken || typeof accessToken !== 'string') {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
if (!machineId || typeof machineId !== 'string') {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
// Token format validation (Cursor tokens are typically long strings)
|
|
139
|
+
if (accessToken.length < 50) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
// Machine ID format validation (UUID without hyphens = exactly 32 hex chars)
|
|
143
|
+
const hexRegex = /^[a-f0-9]{32}$/i;
|
|
144
|
+
if (!hexRegex.test(machineId.replace(/-/g, ''))) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
exports.validateToken = validateToken;
|
|
150
|
+
/**
|
|
151
|
+
* Extract user info from token if possible
|
|
152
|
+
* Cursor tokens may contain encoded user info as JWT
|
|
153
|
+
*/
|
|
154
|
+
function extractUserInfo(accessToken) {
|
|
155
|
+
try {
|
|
156
|
+
// Try to decode as JWT
|
|
157
|
+
const parts = accessToken.split('.');
|
|
158
|
+
if (parts.length === 3) {
|
|
159
|
+
let payload = parts[1];
|
|
160
|
+
// Add padding if needed
|
|
161
|
+
while (payload.length % 4) {
|
|
162
|
+
payload += '=';
|
|
163
|
+
}
|
|
164
|
+
const decoded = JSON.parse(Buffer.from(payload.replace(/-/g, '+').replace(/_/g, '/'), 'base64').toString());
|
|
165
|
+
const email = typeof decoded.email === 'string' ? decoded.email : undefined;
|
|
166
|
+
const userId = typeof decoded.sub === 'string'
|
|
167
|
+
? decoded.sub
|
|
168
|
+
: typeof decoded.user_id === 'string'
|
|
169
|
+
? decoded.user_id
|
|
170
|
+
: undefined;
|
|
171
|
+
const exp = typeof decoded.exp === 'number' ? decoded.exp : undefined;
|
|
172
|
+
// If all claims are undefined, treat as if JWT parsing failed
|
|
173
|
+
if (!email && !userId && exp === undefined)
|
|
174
|
+
return null;
|
|
175
|
+
return { email, userId, exp };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// Token is not a JWT, that's okay
|
|
180
|
+
}
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
exports.extractUserInfo = extractUserInfo;
|
|
184
|
+
/**
|
|
185
|
+
* Get path to credentials file
|
|
186
|
+
*/
|
|
187
|
+
function getCredentialsPath() {
|
|
188
|
+
return path.join((0, config_manager_1.getCcsDir)(), 'cursor', 'credentials.json');
|
|
189
|
+
}
|
|
190
|
+
exports.getCredentialsPath = getCredentialsPath;
|
|
191
|
+
/**
|
|
192
|
+
* Save credentials to CCS config directory
|
|
193
|
+
*/
|
|
194
|
+
function saveCredentials(credentials) {
|
|
195
|
+
const credPath = getCredentialsPath();
|
|
196
|
+
const dir = path.dirname(credPath);
|
|
197
|
+
// Ensure directory exists with restrictive permissions
|
|
198
|
+
if (!fs.existsSync(dir)) {
|
|
199
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
200
|
+
}
|
|
201
|
+
// Write credentials with restrictive permissions
|
|
202
|
+
fs.writeFileSync(credPath, JSON.stringify(credentials, null, 2), {
|
|
203
|
+
encoding: 'utf8',
|
|
204
|
+
mode: 0o600,
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
exports.saveCredentials = saveCredentials;
|
|
208
|
+
/**
|
|
209
|
+
* Load credentials from CCS config directory
|
|
210
|
+
*/
|
|
211
|
+
function loadCredentials() {
|
|
212
|
+
const credPath = getCredentialsPath();
|
|
213
|
+
if (!fs.existsSync(credPath)) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
try {
|
|
217
|
+
const raw = fs.readFileSync(credPath, 'utf8');
|
|
218
|
+
const parsed = JSON.parse(raw);
|
|
219
|
+
// Basic validation
|
|
220
|
+
if (typeof parsed === 'object' &&
|
|
221
|
+
parsed !== null &&
|
|
222
|
+
'accessToken' in parsed &&
|
|
223
|
+
'machineId' in parsed &&
|
|
224
|
+
'authMethod' in parsed &&
|
|
225
|
+
'importedAt' in parsed) {
|
|
226
|
+
// Type validation
|
|
227
|
+
if (typeof parsed.accessToken !== 'string' ||
|
|
228
|
+
typeof parsed.machineId !== 'string' ||
|
|
229
|
+
typeof parsed.importedAt !== 'string' ||
|
|
230
|
+
(parsed.authMethod !== 'auto-detect' && parsed.authMethod !== 'manual')) {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
return parsed;
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
exports.loadCredentials = loadCredentials;
|
|
242
|
+
/**
|
|
243
|
+
* Check authentication status
|
|
244
|
+
*/
|
|
245
|
+
function checkAuthStatus() {
|
|
246
|
+
const credentials = loadCredentials();
|
|
247
|
+
if (!credentials) {
|
|
248
|
+
return { authenticated: false };
|
|
249
|
+
}
|
|
250
|
+
// Validate credentials are still valid format
|
|
251
|
+
if (!validateToken(credentials.accessToken, credentials.machineId)) {
|
|
252
|
+
return { authenticated: false };
|
|
253
|
+
}
|
|
254
|
+
// Try to get token expiry from JWT exp claim
|
|
255
|
+
let tokenAge;
|
|
256
|
+
let expired = false;
|
|
257
|
+
const userInfo = extractUserInfo(credentials.accessToken);
|
|
258
|
+
if (userInfo?.exp) {
|
|
259
|
+
// Use JWT exp claim for expiry detection
|
|
260
|
+
const now = Math.floor(Date.now() / 1000);
|
|
261
|
+
expired = now >= userInfo.exp;
|
|
262
|
+
}
|
|
263
|
+
// Always use importedAt for tokenAge (more reliable than reverse-engineering JWT lifetime)
|
|
264
|
+
const TOKEN_EXPIRY_HOURS = 24;
|
|
265
|
+
const importedDate = new Date(credentials.importedAt);
|
|
266
|
+
if (!isNaN(importedDate.getTime())) {
|
|
267
|
+
const now = new Date();
|
|
268
|
+
tokenAge = Math.floor((now.getTime() - importedDate.getTime()) / (1000 * 60 * 60));
|
|
269
|
+
// Only set expired from importedAt if JWT exp was not available
|
|
270
|
+
if (userInfo?.exp === undefined) {
|
|
271
|
+
expired = tokenAge >= TOKEN_EXPIRY_HOURS;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return {
|
|
275
|
+
authenticated: true,
|
|
276
|
+
credentials,
|
|
277
|
+
tokenAge,
|
|
278
|
+
expired,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
exports.checkAuthStatus = checkAuthStatus;
|
|
282
|
+
/**
|
|
283
|
+
* Delete credentials file
|
|
284
|
+
*/
|
|
285
|
+
function deleteCredentials() {
|
|
286
|
+
try {
|
|
287
|
+
fs.unlinkSync(getCredentialsPath());
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return false;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
exports.deleteCredentials = deleteCredentials;
|
|
295
|
+
//# sourceMappingURL=cursor-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-auth.js","sourceRoot":"","sources":["../../src/cursor/cursor-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor IDE Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* TypeScript interfaces for the Cursor auth module.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Cursor authentication credentials
|
|
8
|
+
*/
|
|
9
|
+
export interface CursorCredentials {
|
|
10
|
+
/** Access token from Cursor IDE */
|
|
11
|
+
accessToken: string;
|
|
12
|
+
/** Machine ID for checksum generation */
|
|
13
|
+
machineId: string;
|
|
14
|
+
/** User email (if available from token) */
|
|
15
|
+
email?: string;
|
|
16
|
+
/** User ID (if available from token) */
|
|
17
|
+
userId?: string;
|
|
18
|
+
/** How credentials were obtained */
|
|
19
|
+
authMethod: 'auto-detect' | 'manual';
|
|
20
|
+
/** ISO datetime when credentials were imported */
|
|
21
|
+
importedAt: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Cursor authentication status
|
|
25
|
+
*/
|
|
26
|
+
export interface CursorAuthStatus {
|
|
27
|
+
/** Whether user is authenticated */
|
|
28
|
+
authenticated: boolean;
|
|
29
|
+
/** Current credentials (if authenticated) */
|
|
30
|
+
credentials?: CursorCredentials;
|
|
31
|
+
/** Hours since credentials were imported (if available) */
|
|
32
|
+
tokenAge?: number;
|
|
33
|
+
/** Whether token has expired (>24 hours old) */
|
|
34
|
+
expired?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Auto-detection result
|
|
38
|
+
*/
|
|
39
|
+
export interface AutoDetectResult {
|
|
40
|
+
/** Whether tokens were found */
|
|
41
|
+
found: boolean;
|
|
42
|
+
/** Access token (if found) */
|
|
43
|
+
accessToken?: string;
|
|
44
|
+
/** Machine ID (if found) */
|
|
45
|
+
machineId?: string;
|
|
46
|
+
/** Error message (if detection failed) */
|
|
47
|
+
error?: string;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cursor/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|