@nocoo/pew 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +23 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/notify.d.ts.map +1 -1
- package/dist/commands/notify.js +2 -0
- package/dist/commands/notify.js.map +1 -1
- package/dist/commands/session-sync.d.ts +2 -0
- package/dist/commands/session-sync.d.ts.map +1 -1
- package/dist/commands/session-sync.js +3 -2
- package/dist/commands/session-sync.js.map +1 -1
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +4 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +5 -2
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/upload.js +1 -1
- package/dist/commands/upload.js.map +1 -1
- package/dist/config/manager.d.ts +6 -0
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +15 -0
- package/dist/config/manager.js.map +1 -1
- package/dist/discovery/sources.d.ts +12 -0
- package/dist/discovery/sources.d.ts.map +1 -1
- package/dist/discovery/sources.js +57 -0
- package/dist/discovery/sources.js.map +1 -1
- package/dist/drivers/registry.d.ts +1 -0
- package/dist/drivers/registry.d.ts.map +1 -1
- package/dist/drivers/registry.js +4 -0
- package/dist/drivers/registry.js.map +1 -1
- package/dist/drivers/token/vscode-copilot-token-driver.d.ts +12 -0
- package/dist/drivers/token/vscode-copilot-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/vscode-copilot-token-driver.js +66 -0
- package/dist/drivers/token/vscode-copilot-token-driver.js.map +1 -0
- package/dist/drivers/types.d.ts +17 -1
- package/dist/drivers/types.d.ts.map +1 -1
- package/dist/parsers/claude-session.d.ts.map +1 -1
- package/dist/parsers/claude-session.js +12 -4
- package/dist/parsers/claude-session.js.map +1 -1
- package/dist/parsers/vscode-copilot.d.ts +64 -0
- package/dist/parsers/vscode-copilot.d.ts.map +1 -0
- package/dist/parsers/vscode-copilot.js +257 -0
- package/dist/parsers/vscode-copilot.js.map +1 -0
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +35 -0
- package/dist/utils/paths.js.map +1 -1
- package/package.json +4 -1
|
@@ -114,4 +114,61 @@ export async function discoverOpenClawFiles(openclawDir) {
|
|
|
114
114
|
export async function discoverCodexFiles(codexSessionsDir) {
|
|
115
115
|
return collectFiles(codexSessionsDir, (name) => name.startsWith("rollout-") && name.endsWith(".jsonl"));
|
|
116
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Discover VSCode Copilot Chat session JSONL files.
|
|
119
|
+
*
|
|
120
|
+
* Scans multiple base directories (stable + insiders), each containing:
|
|
121
|
+
* - workspaceStorage/\<hash\>/chatSessions/\<uuid\>.jsonl (per-workspace)
|
|
122
|
+
* - globalStorage/emptyWindowChatSessions/\<uuid\>.jsonl (window-less)
|
|
123
|
+
*
|
|
124
|
+
* @param baseDirs Array of VSCode User directories
|
|
125
|
+
* (e.g. ["~/Library/Application Support/Code/User/",
|
|
126
|
+
* "~/Library/Application Support/Code - Insiders/User/"])
|
|
127
|
+
*/
|
|
128
|
+
export async function discoverVscodeCopilotFiles(baseDirs) {
|
|
129
|
+
const results = [];
|
|
130
|
+
for (const baseDir of baseDirs) {
|
|
131
|
+
// 1. globalStorage/emptyWindowChatSessions/*.jsonl
|
|
132
|
+
const globalChatDir = join(baseDir, "globalStorage", "emptyWindowChatSessions");
|
|
133
|
+
let globalEntries;
|
|
134
|
+
try {
|
|
135
|
+
globalEntries = await readdir(globalChatDir, { withFileTypes: true });
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
globalEntries = [];
|
|
139
|
+
}
|
|
140
|
+
for (const entry of globalEntries) {
|
|
141
|
+
if (entry.isFile() && entry.name.endsWith(".jsonl")) {
|
|
142
|
+
results.push(join(globalChatDir, entry.name));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// 2. workspaceStorage/*/chatSessions/*.jsonl
|
|
146
|
+
const workspaceStorageDir = join(baseDir, "workspaceStorage");
|
|
147
|
+
let workspaceDirs;
|
|
148
|
+
try {
|
|
149
|
+
workspaceDirs = await readdir(workspaceStorageDir, { withFileTypes: true });
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
workspaceDirs = [];
|
|
153
|
+
}
|
|
154
|
+
for (const wsEntry of workspaceDirs) {
|
|
155
|
+
if (!wsEntry.isDirectory())
|
|
156
|
+
continue;
|
|
157
|
+
const chatSessionsDir = join(workspaceStorageDir, wsEntry.name, "chatSessions");
|
|
158
|
+
let chatEntries;
|
|
159
|
+
try {
|
|
160
|
+
chatEntries = await readdir(chatSessionsDir, { withFileTypes: true });
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
for (const chatEntry of chatEntries) {
|
|
166
|
+
if (chatEntry.isFile() && chatEntry.name.endsWith(".jsonl")) {
|
|
167
|
+
results.push(join(chatSessionsDir, chatEntry.name));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return results.sort();
|
|
173
|
+
}
|
|
117
174
|
//# sourceMappingURL=sources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/discovery/sources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/discovery/sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ export interface TokenDriverRegistryOpts {
|
|
|
24
24
|
openCodeMessageDir?: string;
|
|
25
25
|
openclawDir?: string;
|
|
26
26
|
codexSessionsDir?: string;
|
|
27
|
+
vscodeCopilotDirs?: string[];
|
|
27
28
|
openCodeDbPath?: string;
|
|
28
29
|
openMessageDb?: OpenCodeSqliteTokenDriverOpts["openMessageDb"];
|
|
29
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/drivers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAEV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/drivers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAEV,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EAChB,MAAM,YAAY,CAAC;AASpB,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,yCAAyC,CAAC;AAQjD,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,6CAA6C,CAAC;AAMrD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,6BAA6B,CAAC,eAAe,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;IAC/C,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,cAAc,CAgChF;AAMD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,+BAA+B,CAAC,eAAe,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC;IAC9D,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,yBAAyB,GAAG,gBAAgB,CA6BtF"}
|
package/dist/drivers/registry.js
CHANGED
|
@@ -14,6 +14,7 @@ import { geminiTokenDriver } from "./token/gemini-token-driver.js";
|
|
|
14
14
|
import { openCodeJsonTokenDriver } from "./token/opencode-json-token-driver.js";
|
|
15
15
|
import { openClawTokenDriver } from "./token/openclaw-token-driver.js";
|
|
16
16
|
import { codexTokenDriver } from "./token/codex-token-driver.js";
|
|
17
|
+
import { vscodeCopilotTokenDriver } from "./token/vscode-copilot-token-driver.js";
|
|
17
18
|
import { createOpenCodeSqliteTokenDriver, } from "./token/opencode-sqlite-token-driver.js";
|
|
18
19
|
// -- Session driver singletons --
|
|
19
20
|
import { claudeSessionDriver } from "./session/claude-session-driver.js";
|
|
@@ -46,6 +47,9 @@ export function createTokenDrivers(opts) {
|
|
|
46
47
|
if (opts.codexSessionsDir) {
|
|
47
48
|
fileDrivers.push(codexTokenDriver);
|
|
48
49
|
}
|
|
50
|
+
if (opts.vscodeCopilotDirs && opts.vscodeCopilotDirs.length > 0) {
|
|
51
|
+
fileDrivers.push(vscodeCopilotTokenDriver);
|
|
52
|
+
}
|
|
49
53
|
if (opts.openCodeDbPath && opts.openMessageDb) {
|
|
50
54
|
dbDrivers.push(createOpenCodeSqliteTokenDriver({
|
|
51
55
|
dbPath: opts.openCodeDbPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/drivers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,gCAAgC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EACL,+BAA+B,GAEhC,MAAM,yCAAyC,CAAC;AAEjD,kCAAkC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EACL,iCAAiC,GAElC,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/drivers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSCode Copilot Chat file token driver.
|
|
3
|
+
*
|
|
4
|
+
* Strategy: Byte-offset CRDT JSONL streaming with persistent
|
|
5
|
+
* request-index→metadata mapping for cross-line correlation.
|
|
6
|
+
* Skip gate: fileUnchanged() (inode + mtimeMs + size).
|
|
7
|
+
* Parser: parseVscodeCopilotFile({ filePath, startOffset, requestMeta, processedRequestIndices })
|
|
8
|
+
*/
|
|
9
|
+
import type { VscodeCopilotCursor } from "@pew/core";
|
|
10
|
+
import type { FileTokenDriver } from "../types.js";
|
|
11
|
+
export declare const vscodeCopilotTokenDriver: FileTokenDriver<VscodeCopilotCursor>;
|
|
12
|
+
//# sourceMappingURL=vscode-copilot-token-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-copilot-token-driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/token/vscode-copilot-token-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAIrD,OAAO,KAAK,EACV,eAAe,EAOhB,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,wBAAwB,EAAE,eAAe,CAAC,mBAAmB,CAgEzE,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSCode Copilot Chat file token driver.
|
|
3
|
+
*
|
|
4
|
+
* Strategy: Byte-offset CRDT JSONL streaming with persistent
|
|
5
|
+
* request-index→metadata mapping for cross-line correlation.
|
|
6
|
+
* Skip gate: fileUnchanged() (inode + mtimeMs + size).
|
|
7
|
+
* Parser: parseVscodeCopilotFile({ filePath, startOffset, requestMeta, processedRequestIndices })
|
|
8
|
+
*/
|
|
9
|
+
import { discoverVscodeCopilotFiles } from "../../discovery/sources.js";
|
|
10
|
+
import { parseVscodeCopilotFile } from "../../parsers/vscode-copilot.js";
|
|
11
|
+
import { fileUnchanged } from "../../utils/file-changed.js";
|
|
12
|
+
export const vscodeCopilotTokenDriver = {
|
|
13
|
+
kind: "file",
|
|
14
|
+
source: "vscode-copilot",
|
|
15
|
+
async discover(opts, _ctx) {
|
|
16
|
+
if (!opts.vscodeCopilotDirs || opts.vscodeCopilotDirs.length === 0)
|
|
17
|
+
return [];
|
|
18
|
+
return discoverVscodeCopilotFiles(opts.vscodeCopilotDirs);
|
|
19
|
+
},
|
|
20
|
+
shouldSkip(cursor, fingerprint) {
|
|
21
|
+
return fileUnchanged(cursor, fingerprint);
|
|
22
|
+
},
|
|
23
|
+
resumeState(cursor, fingerprint) {
|
|
24
|
+
// If inode changed (file rotated/replaced), start from scratch
|
|
25
|
+
const inodesMatch = cursor && cursor.inode === fingerprint.inode;
|
|
26
|
+
return {
|
|
27
|
+
kind: "vscode-copilot",
|
|
28
|
+
startOffset: inodesMatch ? (cursor.offset ?? 0) : 0,
|
|
29
|
+
requestMeta: inodesMatch ? (cursor.requestMeta ?? {}) : {},
|
|
30
|
+
processedRequestIndices: inodesMatch ? (cursor.processedRequestIndices ?? []) : [],
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
async parse(filePath, resume) {
|
|
34
|
+
const r = resume;
|
|
35
|
+
const onSkip = (info) => {
|
|
36
|
+
const ms = info.modelState != null ? ` modelState=${info.modelState}` : "";
|
|
37
|
+
console.debug(`[vscode-copilot] skip request #${info.index}: ${info.reason}${ms} (${filePath})`);
|
|
38
|
+
};
|
|
39
|
+
const result = await parseVscodeCopilotFile({
|
|
40
|
+
filePath,
|
|
41
|
+
startOffset: r.startOffset,
|
|
42
|
+
requestMeta: r.requestMeta,
|
|
43
|
+
processedRequestIndices: r.processedRequestIndices,
|
|
44
|
+
onSkip,
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
deltas: result.deltas,
|
|
48
|
+
endOffset: result.endOffset,
|
|
49
|
+
requestMeta: result.requestMeta,
|
|
50
|
+
processedRequestIndices: result.processedRequestIndices,
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
buildCursor(fingerprint, result, _prev) {
|
|
54
|
+
const r = result;
|
|
55
|
+
return {
|
|
56
|
+
inode: fingerprint.inode,
|
|
57
|
+
mtimeMs: fingerprint.mtimeMs,
|
|
58
|
+
size: fingerprint.size,
|
|
59
|
+
offset: r.endOffset,
|
|
60
|
+
processedRequestIndices: r.processedRequestIndices,
|
|
61
|
+
requestMeta: r.requestMeta,
|
|
62
|
+
updatedAt: new Date().toISOString(),
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=vscode-copilot-token-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-copilot-token-driver.js","sourceRoot":"","sources":["../../../src/drivers/token/vscode-copilot-token-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAiB,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAkB5D,MAAM,CAAC,MAAM,wBAAwB,GAAyC;IAC5E,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,gBAAgB;IAExB,KAAK,CAAC,QAAQ,CAAC,IAAkB,EAAE,IAAiB;QAClD,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9E,OAAO,0BAA0B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU,CAAC,MAAuC,EAAE,WAA4B;QAC9E,OAAO,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,CACT,MAAuC,EACvC,WAA4B;QAE5B,+DAA+D;QAC/D,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC;QACjE,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1D,uBAAuB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;SACnF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,MAAmB;QAC/C,MAAM,CAAC,GAAG,MAAkC,CAAC;QAC7C,MAAM,MAAM,GAAG,CAAC,IAAc,EAAE,EAAE;YAChC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,EAAE,KAAK,QAAQ,GAAG,CAAC,CAAC;QACnG,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;YAC1C,QAAQ;YACR,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,uBAAuB,EAAE,CAAC,CAAC,uBAAuB;YAClD,MAAM;SACP,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;SACxD,CAAC;IACJ,CAAC;IAED,WAAW,CACT,WAA4B,EAC5B,MAAwB,EACxB,KAA2B;QAE3B,MAAM,CAAC,GAAG,MAAkC,CAAC;QAC7C,OAAO;YACL,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,MAAM,EAAE,CAAC,CAAC,SAAS;YACnB,uBAAuB,EAAE,CAAC,CAAC,uBAAuB;YAClD,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;CACF,CAAC"}
|
package/dist/drivers/types.d.ts
CHANGED
|
@@ -49,6 +49,7 @@ export interface DiscoverOpts {
|
|
|
49
49
|
openCodeMessageDir?: string;
|
|
50
50
|
openCodeDbPath?: string;
|
|
51
51
|
openclawDir?: string;
|
|
52
|
+
vscodeCopilotDirs?: string[];
|
|
52
53
|
}
|
|
53
54
|
/**
|
|
54
55
|
* Base result from a file token driver's parse() method.
|
|
@@ -91,11 +92,26 @@ export interface CodexResumeState {
|
|
|
91
92
|
lastTotals: TokenDelta | null;
|
|
92
93
|
lastModel: string | null;
|
|
93
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Resume state for VSCode Copilot CRDT JSONL files.
|
|
97
|
+
* Carries byte offset + persisted request metadata for cross-line correlation.
|
|
98
|
+
*/
|
|
99
|
+
export interface VscodeCopilotResumeState {
|
|
100
|
+
readonly kind: "vscode-copilot";
|
|
101
|
+
startOffset: number;
|
|
102
|
+
/** Persisted index→metadata mapping from prior parse */
|
|
103
|
+
requestMeta: Record<number, {
|
|
104
|
+
modelId: string;
|
|
105
|
+
timestamp: number;
|
|
106
|
+
}>;
|
|
107
|
+
/** Indices already emitted as records (skip on re-encounter) */
|
|
108
|
+
processedRequestIndices: number[];
|
|
109
|
+
}
|
|
94
110
|
/**
|
|
95
111
|
* Union of all resume state variants.
|
|
96
112
|
* Discriminated by `kind` so drivers can narrow safely.
|
|
97
113
|
*/
|
|
98
|
-
export type ResumeState = ByteOffsetResumeState | ArrayIndexResumeState | OpenCodeJsonResumeState | CodexResumeState;
|
|
114
|
+
export type ResumeState = ByteOffsetResumeState | ArrayIndexResumeState | OpenCodeJsonResumeState | CodexResumeState | VscodeCopilotResumeState;
|
|
99
115
|
/** Progress callback compatible with both sync and session-sync */
|
|
100
116
|
export type OnProgress = (event: {
|
|
101
117
|
source: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/drivers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,UAAU,EACX,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/drivers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-session.d.ts","sourceRoot":"","sources":["../../src/parsers/claude-session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-session.d.ts","sourceRoot":"","sources":["../../src/parsers/claude-session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,WAAW,CAAC;AAiCzD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CA0G5B"}
|
|
@@ -4,22 +4,30 @@
|
|
|
4
4
|
* Full-scans a Claude JSONL file and extracts session-level metadata.
|
|
5
5
|
* Groups lines by sessionId, counts message types, computes duration.
|
|
6
6
|
*/
|
|
7
|
+
import { createHash } from "node:crypto";
|
|
7
8
|
import { createReadStream } from "node:fs";
|
|
8
9
|
import { stat } from "node:fs/promises";
|
|
9
10
|
import { createInterface } from "node:readline";
|
|
10
11
|
/**
|
|
11
12
|
* Extract the project reference from a Claude file path.
|
|
12
13
|
*
|
|
13
|
-
* Claude stores files under ~/.claude/projects/{
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Claude stores files under ~/.claude/projects/{dirName}/{file}.jsonl
|
|
15
|
+
* where dirName is a path-encoded string like `-Users-nocoo-workspace-pew`.
|
|
16
|
+
*
|
|
17
|
+
* We SHA-256 hash the directory name and take the first 12 hex chars,
|
|
18
|
+
* matching the same format Codex uses (SHA-256(cwd)[0:12]). The raw
|
|
19
|
+
* directory name is NOT stored because it's a privacy-sensitive
|
|
20
|
+
* path variant (albeit irreversible due to Claude's encoding).
|
|
16
21
|
*/
|
|
17
22
|
function extractProjectRef(filePath) {
|
|
18
23
|
const parts = filePath.split("/");
|
|
19
24
|
const projectsIdx = parts.lastIndexOf("projects");
|
|
20
25
|
if (projectsIdx < 0 || projectsIdx + 1 >= parts.length - 1)
|
|
21
26
|
return null;
|
|
22
|
-
|
|
27
|
+
const dirName = parts[projectsIdx + 1];
|
|
28
|
+
if (!dirName)
|
|
29
|
+
return null;
|
|
30
|
+
return createHash("sha256").update(dirName).digest("hex").slice(0, 12);
|
|
23
31
|
}
|
|
24
32
|
/**
|
|
25
33
|
* Collect session snapshots from a Claude Code JSONL file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-session.js","sourceRoot":"","sources":["../../src/parsers/claude-session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-session.js","sourceRoot":"","sources":["../../src/parsers/claude-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VSCode Copilot Chat JSONL parser.
|
|
3
|
+
*
|
|
4
|
+
* Parses CRDT-style append-only operation logs from VSCode Copilot Chat
|
|
5
|
+
* session files. Three operation kinds:
|
|
6
|
+
*
|
|
7
|
+
* kind=0 (Snapshot) — full session state, first line of file
|
|
8
|
+
* kind=1 (Set) — overwrite value at a JSON path
|
|
9
|
+
* kind=2 (Append) — append to array at path
|
|
10
|
+
*
|
|
11
|
+
* Token data lives in kind=1 lines targeting ["requests", N, "result"],
|
|
12
|
+
* specifically in v.metadata.promptTokens / v.metadata.outputTokens.
|
|
13
|
+
*
|
|
14
|
+
* Model ID and timestamp come from the request itself, either in the
|
|
15
|
+
* kind=0 snapshot's requests array or kind=2 appends to ["requests"].
|
|
16
|
+
*
|
|
17
|
+
* The parser maintains a request-index → metadata mapping so that
|
|
18
|
+
* kind=1 result lines (which only carry the index) can be correlated
|
|
19
|
+
* with their model and timestamp. This mapping is persisted in the
|
|
20
|
+
* cursor for incremental sync.
|
|
21
|
+
*/
|
|
22
|
+
import type { ParsedDelta } from "./claude.js";
|
|
23
|
+
/** Per-request metadata extracted from kind=0/2 lines */
|
|
24
|
+
export interface RequestMeta {
|
|
25
|
+
modelId: string;
|
|
26
|
+
timestamp: number;
|
|
27
|
+
}
|
|
28
|
+
/** Info passed to onSkip callback when a request is skipped */
|
|
29
|
+
export interface SkipInfo {
|
|
30
|
+
index: number;
|
|
31
|
+
reason: string;
|
|
32
|
+
modelState?: number;
|
|
33
|
+
}
|
|
34
|
+
/** Options for parsing a VSCode Copilot JSONL file */
|
|
35
|
+
export interface VscodeCopilotParseOpts {
|
|
36
|
+
filePath: string;
|
|
37
|
+
startOffset: number;
|
|
38
|
+
/** Persisted index→metadata mapping from prior parse (for incremental resume) */
|
|
39
|
+
requestMeta: Record<number, RequestMeta>;
|
|
40
|
+
/** Indices already emitted as records (skip on re-encounter) */
|
|
41
|
+
processedRequestIndices: number[];
|
|
42
|
+
/** Optional callback invoked for each skipped request (debug auditing) */
|
|
43
|
+
onSkip?: (info: SkipInfo) => void;
|
|
44
|
+
}
|
|
45
|
+
/** Result of parsing a single VSCode Copilot JSONL file */
|
|
46
|
+
export interface VscodeCopilotFileResult {
|
|
47
|
+
deltas: ParsedDelta[];
|
|
48
|
+
endOffset: number;
|
|
49
|
+
/** Updated index→metadata mapping (superset of input requestMeta) */
|
|
50
|
+
requestMeta: Record<number, RequestMeta>;
|
|
51
|
+
/** Updated processed indices (superset of input processedRequestIndices) */
|
|
52
|
+
processedRequestIndices: number[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parse a VSCode Copilot Chat JSONL file incrementally from a byte offset.
|
|
56
|
+
*
|
|
57
|
+
* Strategy:
|
|
58
|
+
* 1. Build/extend index→metadata mapping from kind=0 snapshot + kind=2 request appends
|
|
59
|
+
* 2. Extract tokens from kind=1 result lines, correlate with metadata via index
|
|
60
|
+
* 3. Skip requests without exact promptTokens/outputTokens
|
|
61
|
+
* 4. Skip already-processed request indices
|
|
62
|
+
*/
|
|
63
|
+
export declare function parseVscodeCopilotFile(opts: VscodeCopilotParseOpts): Promise<VscodeCopilotFileResult>;
|
|
64
|
+
//# sourceMappingURL=vscode-copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscode-copilot.d.ts","sourceRoot":"","sources":["../../src/parsers/vscode-copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,yDAAyD;AACzD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,gEAAgE;IAChE,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACnC;AAED,2DAA2D;AAC3D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,4EAA4E;IAC5E,uBAAuB,EAAE,MAAM,EAAE,CAAC;CACnC;AAoCD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAgNlC"}
|