xtctx 0.18.2 → 0.18.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/CHANGELOG.md +14 -0
- package/dist/src/config/mcp-config.js +19 -1
- package/dist/src/config/mcp-config.js.map +1 -1
- package/dist/src/scrapers/antigravity.d.ts.map +1 -1
- package/dist/src/scrapers/antigravity.js +29 -4
- package/dist/src/scrapers/antigravity.js.map +1 -1
- package/dist/src/scrapers/copilot.d.ts +31 -0
- package/dist/src/scrapers/copilot.d.ts.map +1 -1
- package/dist/src/scrapers/copilot.js +264 -74
- package/dist/src/scrapers/copilot.js.map +1 -1
- package/dist/src/scrapers/cursor.d.ts +32 -0
- package/dist/src/scrapers/cursor.d.ts.map +1 -1
- package/dist/src/scrapers/cursor.js +175 -1
- package/dist/src/scrapers/cursor.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFile, stat } from "node:fs/promises";
|
|
1
|
+
import { readdir, readFile, stat } from "node:fs/promises";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { glob } from "glob";
|
|
@@ -114,6 +114,57 @@ export class CopilotScraper extends AbstractScraper {
|
|
|
114
114
|
db.close();
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
// Newer VS Code keeps each chat in its own file beside the database rather
|
|
118
|
+
// than in the `interactive.sessions` blob, so a reader that only opened the
|
|
119
|
+
// database saw nothing from any recent session.
|
|
120
|
+
for (const dbPath of dbPaths) {
|
|
121
|
+
yield* this.readChatSessionFiles(dirname(dbPath), since);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Read the per-session files under `<workspace>/chatSessions/`.
|
|
126
|
+
*
|
|
127
|
+
* Two shapes live there. `.json` holds a session object directly — the same
|
|
128
|
+
* shape as the database blob, which is why parsing is shared. `.jsonl` wraps
|
|
129
|
+
* it, one record per line, under a `v` key; only the record carrying the
|
|
130
|
+
* session is of interest and the rest are editor bookkeeping.
|
|
131
|
+
*
|
|
132
|
+
* The `chat.ChatSessionStore.index` key in the database lists these too, but
|
|
133
|
+
* the directory is read directly: the files are the data, the index is a
|
|
134
|
+
* cache of it, and a stale index would silently hide sessions that exist.
|
|
135
|
+
*/
|
|
136
|
+
async *readChatSessionFiles(workspaceDir, since) {
|
|
137
|
+
const sessionsDir = join(workspaceDir, "chatSessions");
|
|
138
|
+
let names;
|
|
139
|
+
try {
|
|
140
|
+
names = await readdir(sessionsDir);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
// No chat-session directory: this workspace predates the format, or was
|
|
144
|
+
// never used for chat. Not a surprise.
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const sinceMs = since ? since.getTime() : 0;
|
|
148
|
+
for (const name of names) {
|
|
149
|
+
if (!name.endsWith(".json") && !name.endsWith(".jsonl")) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const filePath = join(sessionsDir, name);
|
|
153
|
+
let raw;
|
|
154
|
+
try {
|
|
155
|
+
raw = await readFile(filePath, "utf-8");
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
warnDrift(filePath, `chat session file unreadable: ${err.message}`, 0);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
// The file name without its extension is the session id VS Code gave it,
|
|
162
|
+
// and the only identity an id-less session has.
|
|
163
|
+
const sessionKey = name.replace(/\.jsonl?$/, "");
|
|
164
|
+
for (const session of parseChatSessionFile(raw, name, filePath)) {
|
|
165
|
+
yield* this.readSession(session, sessionKey, filePath, sinceMs);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
117
168
|
}
|
|
118
169
|
*readFromDb(db, dbPath, since) {
|
|
119
170
|
let rawValue;
|
|
@@ -140,87 +191,114 @@ export class CopilotScraper extends AbstractScraper {
|
|
|
140
191
|
warnDrift(dbPath, `interactive.sessions value is not valid JSON: ${err.message}`, 0);
|
|
141
192
|
return;
|
|
142
193
|
}
|
|
143
|
-
|
|
144
|
-
|
|
194
|
+
// VS Code writes this key as an array, and always has on the machines
|
|
195
|
+
// checked: 64 workspaces, every one an array, 18 of them holding sessions.
|
|
196
|
+
// Requiring an object meant this reader produced nothing at all from real
|
|
197
|
+
// VS Code data — it only ever worked against its own fixtures. The entries
|
|
198
|
+
// themselves are the same shape either way, so only the container differs.
|
|
199
|
+
let sessionEntries;
|
|
200
|
+
if (Array.isArray(sessionsMap)) {
|
|
201
|
+
sessionEntries = sessionsMap.map((session, index) => [String(index), session]);
|
|
202
|
+
}
|
|
203
|
+
else if (isRecord(sessionsMap)) {
|
|
204
|
+
sessionEntries = Object.entries(sessionsMap);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
warnDrift(dbPath, `expected interactive.sessions to be an object or array, got ${describeType(sessionsMap)}`, 0);
|
|
145
208
|
return;
|
|
146
209
|
}
|
|
147
210
|
const sinceMs = since ? since.getTime() : 0;
|
|
148
|
-
for (const [sessionKey, rawSession] of
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
211
|
+
for (const [sessionKey, rawSession] of sessionEntries) {
|
|
212
|
+
yield* this.readSession(rawSession, sessionKey, dbPath, sinceMs);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Turn one stored session into chunks.
|
|
217
|
+
*
|
|
218
|
+
* Shared by both places VS Code keeps chat: the `interactive.sessions`
|
|
219
|
+
* blob in state.vscdb, and the per-session files under `chatSessions/`.
|
|
220
|
+
* The two differ only in where the object comes from, so the parsing —
|
|
221
|
+
* and every drift check in it — is written once.
|
|
222
|
+
*/
|
|
223
|
+
*readSession(rawSession, sessionKey, location, sinceMs) {
|
|
224
|
+
if (!isRecord(rawSession)) {
|
|
225
|
+
warnDrift(`${location}#${sessionKey}`, `session entry is not an object (got ${describeType(rawSession)})`, 0);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
const session = rawSession;
|
|
229
|
+
// `sessionKey` is the file name for on-disk sessions, which VS Code names
|
|
230
|
+
// after the session's own id. Falling back to a constant instead merged
|
|
231
|
+
// every id-less conversation into one `copilot:unknown` session with
|
|
232
|
+
// colliding message indexes — two unrelated chats interleaved as one.
|
|
233
|
+
const sessionId = session.sessionId ?? sessionKey ?? "unknown";
|
|
234
|
+
if (session.sessionId === undefined) {
|
|
235
|
+
warnDrift(`${location}#${sessionKey}`, "session missing 'sessionId' field — using fallback 'unknown'", 0);
|
|
236
|
+
}
|
|
237
|
+
if (session.creationDate === null || (session.creationDate !== undefined &&
|
|
238
|
+
typeof session.creationDate !== "number" &&
|
|
239
|
+
typeof session.creationDate !== "string")) {
|
|
240
|
+
warnDrift(`${location}#${sessionId}`, `expected 'creationDate' to be a number, got ${describeType(session.creationDate)}`, 0);
|
|
241
|
+
}
|
|
242
|
+
// Copilot only stamps a session-level creationDate — individual turns
|
|
243
|
+
// inherit it. Using creationDate for the scrape cursor drops whole
|
|
244
|
+
// sessions that existed before the cursor but gained NEW turns after
|
|
245
|
+
// it, causing permanent turn loss (P1 from review). Fix: emit every
|
|
246
|
+
// turn every cycle and rely on chunk-ID-based upsert dedupe upstream
|
|
247
|
+
// (the ID basis now includes messageIndex so duplicates collapse
|
|
248
|
+
// safely). Note: sinceMs is still referenced below so that a future
|
|
249
|
+
// per-turn timestamp upgrade only needs a narrow edit.
|
|
250
|
+
void sinceMs;
|
|
251
|
+
const creationDate = toDate(session.creationDate);
|
|
252
|
+
if (session.requests !== undefined && !Array.isArray(session.requests)) {
|
|
253
|
+
// Schema drift: 'requests' was renamed or retyped. This is the
|
|
254
|
+
// highest-risk mutation because it silently empties whole sessions.
|
|
255
|
+
warnDrift(`${location}#${sessionId}`, `expected 'requests' to be an array, got ${describeType(session.requests)}`, 0);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (!("requests" in rawSession)) {
|
|
259
|
+
// 'requests' is missing entirely. If any other non-whitelisted key
|
|
260
|
+
// looks like a request array, it's almost certainly a rename — warn.
|
|
261
|
+
// A truly empty pre-v1 session would have no array-shaped sibling.
|
|
262
|
+
const suspiciousRename = Object.entries(rawSession).find(([k, v]) => k !== "sessionId" && k !== "creationDate" && Array.isArray(v));
|
|
263
|
+
if (suspiciousRename) {
|
|
264
|
+
warnDrift(`${location}#${sessionId}`, `session has no 'requests' key; suspected rename to '${suspiciousRename[0]}'`, 0);
|
|
162
265
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// per-turn timestamp upgrade only needs a narrow edit.
|
|
171
|
-
void sinceMs;
|
|
172
|
-
const creationDate = toDate(session.creationDate);
|
|
173
|
-
if (session.requests !== undefined && !Array.isArray(session.requests)) {
|
|
174
|
-
// Schema drift: 'requests' was renamed or retyped. This is the
|
|
175
|
-
// highest-risk mutation because it silently empties whole sessions.
|
|
176
|
-
warnDrift(`${dbPath}#${sessionId}`, `expected 'requests' to be an array, got ${describeType(session.requests)}`, 0);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
const requests = Array.isArray(session.requests) ? session.requests : [];
|
|
269
|
+
let messageIndex = 0;
|
|
270
|
+
for (const req of requests) {
|
|
271
|
+
if (!isRecord(req)) {
|
|
272
|
+
warnDrift(`${location}#${sessionId}`, `request entry is not an object (got ${describeType(req)})`, 0);
|
|
177
273
|
continue;
|
|
178
274
|
}
|
|
179
|
-
if (
|
|
180
|
-
//
|
|
181
|
-
// looks like a request array, it's almost certainly a rename — warn.
|
|
182
|
-
// A truly empty pre-v1 session would have no array-shaped sibling.
|
|
183
|
-
const suspiciousRename = Object.entries(rawSession).find(([k, v]) => k !== "sessionId" && k !== "creationDate" && Array.isArray(v));
|
|
184
|
-
if (suspiciousRename) {
|
|
185
|
-
warnDrift(`${dbPath}#${sessionId}`, `session has no 'requests' key; suspected rename to '${suspiciousRename[0]}'`, 0);
|
|
186
|
-
}
|
|
275
|
+
if (req.isCanceled) {
|
|
276
|
+
// ACCEPTED_DEGRADATIONS.canceledRequest
|
|
187
277
|
continue;
|
|
188
278
|
}
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
const assistantText = extractAssistantText(req);
|
|
213
|
-
if (assistantText) {
|
|
214
|
-
yield this.parseRaw({
|
|
215
|
-
sessionId,
|
|
216
|
-
role: "assistant",
|
|
217
|
-
content: assistantText,
|
|
218
|
-
timestamp: creationDate,
|
|
219
|
-
model: req.model,
|
|
220
|
-
completionType: req.agentId ? "agent" : "chat",
|
|
221
|
-
messageIndex: messageIndex++,
|
|
222
|
-
});
|
|
223
|
-
}
|
|
279
|
+
const userText = extractUserText(req);
|
|
280
|
+
if (userText) {
|
|
281
|
+
yield this.parseRaw({
|
|
282
|
+
sessionId,
|
|
283
|
+
role: "user",
|
|
284
|
+
content: userText,
|
|
285
|
+
timestamp: creationDate,
|
|
286
|
+
model: req.model,
|
|
287
|
+
completionType: req.agentId ? "agent" : "chat",
|
|
288
|
+
messageIndex: messageIndex++,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
const assistantText = extractAssistantText(req);
|
|
292
|
+
if (assistantText) {
|
|
293
|
+
yield this.parseRaw({
|
|
294
|
+
sessionId,
|
|
295
|
+
role: "assistant",
|
|
296
|
+
content: assistantText,
|
|
297
|
+
timestamp: creationDate,
|
|
298
|
+
model: req.model,
|
|
299
|
+
completionType: req.agentId ? "agent" : "chat",
|
|
300
|
+
messageIndex: messageIndex++,
|
|
301
|
+
});
|
|
224
302
|
}
|
|
225
303
|
}
|
|
226
304
|
}
|
|
@@ -274,6 +352,118 @@ async function workspaceMatchesProject(workspaceDbPath, projectRoot) {
|
|
|
274
352
|
}
|
|
275
353
|
}
|
|
276
354
|
/** Concatenates all text parts from a user message. */
|
|
355
|
+
/** A journal record: 0 replaces the whole state, 1 sets a path, 2 splices an array. */
|
|
356
|
+
const LOG_SNAPSHOT = 0;
|
|
357
|
+
const LOG_SET = 1;
|
|
358
|
+
const LOG_SPLICE = 2;
|
|
359
|
+
/**
|
|
360
|
+
* Rebuild a session from a `.jsonl` chat log.
|
|
361
|
+
*
|
|
362
|
+
* The file is a journal, not a list of sessions: the first record is a full
|
|
363
|
+
* snapshot and every record after it is one mutation — `k` is a key path, `v`
|
|
364
|
+
* the value, and for a splice `i` is where it goes. Reading it as "one session
|
|
365
|
+
* per line" found only the snapshot, whose `requests` array is empty because
|
|
366
|
+
* the turns arrive as later mutations, so a whole conversation read as an
|
|
367
|
+
* empty session and said nothing about it. One 182KB file on the machine this
|
|
368
|
+
* was written against holds four turns across 35 records.
|
|
369
|
+
*
|
|
370
|
+
* Turns are ordered by timestamp rather than by array position. A splice puts
|
|
371
|
+
* requests in the order the editor wants to draw them, which is not the order
|
|
372
|
+
* they happened — in that same file it places a later turn first.
|
|
373
|
+
*/
|
|
374
|
+
function replayChatSessionLog(raw, location) {
|
|
375
|
+
let state = null;
|
|
376
|
+
for (const line of raw.split(/\r?\n/)) {
|
|
377
|
+
if (!line.trim())
|
|
378
|
+
continue;
|
|
379
|
+
let record;
|
|
380
|
+
try {
|
|
381
|
+
record = JSON.parse(line);
|
|
382
|
+
}
|
|
383
|
+
catch (err) {
|
|
384
|
+
warnDrift(location, `chat session line is not valid JSON: ${err.message}`, 0);
|
|
385
|
+
continue;
|
|
386
|
+
}
|
|
387
|
+
if (!isRecord(record))
|
|
388
|
+
continue;
|
|
389
|
+
if (record.kind === LOG_SNAPSHOT) {
|
|
390
|
+
state = isRecord(record.v) ? record.v : null;
|
|
391
|
+
continue;
|
|
392
|
+
}
|
|
393
|
+
// A mutation before any snapshot has nothing to apply to. Later records
|
|
394
|
+
// are still tried, in case a snapshot appears further down.
|
|
395
|
+
if (!state || !Array.isArray(record.k))
|
|
396
|
+
continue;
|
|
397
|
+
const path = record.k;
|
|
398
|
+
if (record.kind === LOG_SET) {
|
|
399
|
+
setAtPath(state, path, record.v);
|
|
400
|
+
}
|
|
401
|
+
else if (record.kind === LOG_SPLICE && Array.isArray(record.v)) {
|
|
402
|
+
const target = readAtPath(state, path);
|
|
403
|
+
if (Array.isArray(target)) {
|
|
404
|
+
if (typeof record.i === "number")
|
|
405
|
+
target.splice(record.i, 0, ...record.v);
|
|
406
|
+
else
|
|
407
|
+
target.push(...record.v);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (!state) {
|
|
412
|
+
warnDrift(location, "chat session log has no snapshot record to rebuild from", 0);
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
if (Array.isArray(state.requests)) {
|
|
416
|
+
state.requests = sortRequestsByTime(state.requests);
|
|
417
|
+
}
|
|
418
|
+
return state;
|
|
419
|
+
}
|
|
420
|
+
/** Chronological where the data allows it, original order otherwise. */
|
|
421
|
+
function sortRequestsByTime(requests) {
|
|
422
|
+
const timed = requests.every((request) => isRecord(request) && typeof request.timestamp === "number");
|
|
423
|
+
if (!timed)
|
|
424
|
+
return requests;
|
|
425
|
+
return [...requests].sort((left, right) => (left.timestamp ?? 0) -
|
|
426
|
+
(right.timestamp ?? 0));
|
|
427
|
+
}
|
|
428
|
+
function readAtPath(root, path) {
|
|
429
|
+
let node = root;
|
|
430
|
+
for (const key of path) {
|
|
431
|
+
if (node === null || typeof node !== "object")
|
|
432
|
+
return undefined;
|
|
433
|
+
node = node[key];
|
|
434
|
+
}
|
|
435
|
+
return node;
|
|
436
|
+
}
|
|
437
|
+
function setAtPath(root, path, value) {
|
|
438
|
+
if (path.length === 0)
|
|
439
|
+
return;
|
|
440
|
+
const parent = readAtPath(root, path.slice(0, -1));
|
|
441
|
+
if (parent === null || typeof parent !== "object")
|
|
442
|
+
return;
|
|
443
|
+
parent[path[path.length - 1]] = value;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Pull the session objects out of one `chatSessions/` file.
|
|
447
|
+
*
|
|
448
|
+
* `.json` holds a session directly. `.jsonl` is a journal and is replayed.
|
|
449
|
+
*
|
|
450
|
+
* A file that does not parse is worth a warning: it is named like a session and
|
|
451
|
+
* sits where sessions live, so if it cannot be read something has changed.
|
|
452
|
+
*/
|
|
453
|
+
export function* parseChatSessionFile(raw, name, location) {
|
|
454
|
+
if (name.endsWith(".jsonl")) {
|
|
455
|
+
const session = replayChatSessionLog(raw, location);
|
|
456
|
+
if (session)
|
|
457
|
+
yield session;
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
try {
|
|
461
|
+
yield JSON.parse(raw);
|
|
462
|
+
}
|
|
463
|
+
catch (err) {
|
|
464
|
+
warnDrift(location, `chat session file is not valid JSON: ${err.message}`, 0);
|
|
465
|
+
}
|
|
466
|
+
}
|
|
277
467
|
function extractUserText(req) {
|
|
278
468
|
const parts = req.message?.parts;
|
|
279
469
|
if (!Array.isArray(parts)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/scrapers/copilot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/scrapers/copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,8 +38,40 @@ export declare class CursorScraper extends AbstractScraper<CursorChunk> {
|
|
|
38
38
|
scrape(since?: Date): AsyncIterable<CursorChunk>;
|
|
39
39
|
fullSync(): AsyncIterable<CursorChunk>;
|
|
40
40
|
private readAllMessages;
|
|
41
|
+
/**
|
|
42
|
+
* Read conversations that globalStorage holds but no workspace lists.
|
|
43
|
+
*
|
|
44
|
+
* A workspace only keeps a composer in `composer.composerData` for as long as
|
|
45
|
+
* it cares to; globalStorage keeps the conversation. On one machine that was
|
|
46
|
+
* 165 referenced against 593 stored, so discovery through workspaces alone
|
|
47
|
+
* could not reach most of the history that exists.
|
|
48
|
+
*
|
|
49
|
+
* Attribution is the whole difficulty. A workspace-referenced composer
|
|
50
|
+
* belongs to that workspace's folder, and nothing else has to be decided. An
|
|
51
|
+
* orphan has no workspace, so it is attributed only by file paths recorded
|
|
52
|
+
* inside it. That is deliberately strict: matching on any mention of a
|
|
53
|
+
* project's name is what once handed one project another project's private
|
|
54
|
+
* transcripts, and a conversation that cannot be placed is skipped rather
|
|
55
|
+
* than guessed at.
|
|
56
|
+
*/
|
|
57
|
+
private readUnreferencedComposers;
|
|
41
58
|
private readWorkspaceComposers;
|
|
42
59
|
private readComposerMessages;
|
|
43
60
|
private resolveWorkspaceDatabasePaths;
|
|
44
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Whether a composer records a file inside the given project.
|
|
64
|
+
*
|
|
65
|
+
* Fails closed: a conversation with no recorded location is not attributed to
|
|
66
|
+
* anything, matching the project boundary the other readers hold to.
|
|
67
|
+
*/
|
|
68
|
+
export declare function composerMentionsProject(composer: unknown, projectRoot: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* globalStorage for a configured store path.
|
|
71
|
+
*
|
|
72
|
+
* The store is normally `<user>/workspaceStorage`, but it can also be pointed
|
|
73
|
+
* at a single workspace directory inside it, which is what the tests do and
|
|
74
|
+
* what a `storePath` override may do. Both resolve to the same sibling.
|
|
75
|
+
*/
|
|
76
|
+
export declare function globalStoragePathForStore(storePath: string): string | null;
|
|
45
77
|
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/scrapers/cursor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAA0B,MAAM,WAAW,CAAC;AAWpE;;;GAGG;AACH,eAAO,MAAM,qBAAqB;IAChC,iEAAiE;;IAEjE,2DAA2D;;IAE3D,wEAAwE;;IAExE,gDAAgD;;IAEhD,mEAAmE;;CAEpE,CAAC;AAmCF,qBAAa,aAAc,SAAQ,eAAe,CAAC,WAAW,CAAC;IAI3D,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAL/B,QAAQ,CAAC,IAAI,YAAY;gBAGN,eAAe,EAAE,MAAM,EACxC,QAAQ,EAAE,MAAM,EACC,WAAW,CAAC,EAAE,MAAM,YAAA;IAKvC;;;;;;;;;;;OAWG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAqChC,aAAa,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC;IAMhD,QAAQ,IAAI,aAAa,CAAC,WAAW,CAAC;YAI9B,eAAe;
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/scrapers/cursor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAA0B,MAAM,WAAW,CAAC;AAWpE;;;GAGG;AACH,eAAO,MAAM,qBAAqB;IAChC,iEAAiE;;IAEjE,2DAA2D;;IAE3D,wEAAwE;;IAExE,gDAAgD;;IAEhD,mEAAmE;;CAEpE,CAAC;AAmCF,qBAAa,aAAc,SAAQ,eAAe,CAAC,WAAW,CAAC;IAI3D,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAL/B,QAAQ,CAAC,IAAI,YAAY;gBAGN,eAAe,EAAE,MAAM,EACxC,QAAQ,EAAE,MAAM,EACC,WAAW,CAAC,EAAE,MAAM,YAAA;IAKvC;;;;;;;;;;;OAWG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAqChC,aAAa,IAAI,MAAM,EAAE;IAIlB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC;IAMhD,QAAQ,IAAI,aAAa,CAAC,WAAW,CAAC;YAI9B,eAAe;IAyD9B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAE,yBAAyB;IAmGlC,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAE,oBAAoB;YA+If,6BAA6B;CA+B5C;AAmDD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEvF;AA+BD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK1E"}
|