@nocoo/pew 0.7.0 → 0.9.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 +30 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/notify.d.ts +7 -2
- package/dist/commands/notify.d.ts.map +1 -1
- package/dist/commands/notify.js +48 -10
- package/dist/commands/notify.js.map +1 -1
- package/dist/commands/session-sync.d.ts +12 -0
- package/dist/commands/session-sync.d.ts.map +1 -1
- package/dist/commands/session-sync.js +99 -311
- package/dist/commands/session-sync.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +112 -330
- package/dist/commands/sync.js.map +1 -1
- package/dist/drivers/registry.d.ts +63 -0
- package/dist/drivers/registry.d.ts.map +1 -0
- package/dist/drivers/registry.js +88 -0
- package/dist/drivers/registry.js.map +1 -0
- package/dist/drivers/session/claude-session-driver.d.ts +10 -0
- package/dist/drivers/session/claude-session-driver.d.ts.map +1 -0
- package/dist/drivers/session/claude-session-driver.js +29 -0
- package/dist/drivers/session/claude-session-driver.js.map +1 -0
- package/dist/drivers/session/codex-session-driver.d.ts +10 -0
- package/dist/drivers/session/codex-session-driver.d.ts.map +1 -0
- package/dist/drivers/session/codex-session-driver.js +29 -0
- package/dist/drivers/session/codex-session-driver.js.map +1 -0
- package/dist/drivers/session/gemini-session-driver.d.ts +10 -0
- package/dist/drivers/session/gemini-session-driver.d.ts.map +1 -0
- package/dist/drivers/session/gemini-session-driver.js +29 -0
- package/dist/drivers/session/gemini-session-driver.js.map +1 -0
- package/dist/drivers/session/openclaw-session-driver.d.ts +10 -0
- package/dist/drivers/session/openclaw-session-driver.d.ts.map +1 -0
- package/dist/drivers/session/openclaw-session-driver.js +29 -0
- package/dist/drivers/session/openclaw-session-driver.js.map +1 -0
- package/dist/drivers/session/opencode-json-session-driver.d.ts +14 -0
- package/dist/drivers/session/opencode-json-session-driver.d.ts.map +1 -0
- package/dist/drivers/session/opencode-json-session-driver.js +51 -0
- package/dist/drivers/session/opencode-json-session-driver.js.map +1 -0
- package/dist/drivers/session/opencode-sqlite-session-driver.d.ts +23 -0
- package/dist/drivers/session/opencode-sqlite-session-driver.d.ts.map +1 -0
- package/dist/drivers/session/opencode-sqlite-session-driver.js +88 -0
- package/dist/drivers/session/opencode-sqlite-session-driver.js.map +1 -0
- package/dist/drivers/token/claude-token-driver.d.ts +11 -0
- package/dist/drivers/token/claude-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/claude-token-driver.js +42 -0
- package/dist/drivers/token/claude-token-driver.js.map +1 -0
- package/dist/drivers/token/codex-token-driver.d.ts +11 -0
- package/dist/drivers/token/codex-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/codex-token-driver.js +59 -0
- package/dist/drivers/token/codex-token-driver.js.map +1 -0
- package/dist/drivers/token/gemini-token-driver.d.ts +11 -0
- package/dist/drivers/token/gemini-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/gemini-token-driver.js +57 -0
- package/dist/drivers/token/gemini-token-driver.js.map +1 -0
- package/dist/drivers/token/openclaw-token-driver.d.ts +11 -0
- package/dist/drivers/token/openclaw-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/openclaw-token-driver.js +42 -0
- package/dist/drivers/token/openclaw-token-driver.js.map +1 -0
- package/dist/drivers/token/opencode-json-token-driver.d.ts +15 -0
- package/dist/drivers/token/opencode-json-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/opencode-json-token-driver.js +73 -0
- package/dist/drivers/token/opencode-json-token-driver.js.map +1 -0
- package/dist/drivers/token/opencode-sqlite-token-driver.d.ts +25 -0
- package/dist/drivers/token/opencode-sqlite-token-driver.d.ts.map +1 -0
- package/dist/drivers/token/opencode-sqlite-token-driver.js +99 -0
- package/dist/drivers/token/opencode-sqlite-token-driver.js.map +1 -0
- package/dist/drivers/types.d.ts +202 -0
- package/dist/drivers/types.d.ts.map +1 -0
- package/dist/drivers/types.js +12 -0
- package/dist/drivers/types.js.map +1 -0
- package/dist/notifier/coordinator.d.ts +3 -2
- package/dist/notifier/coordinator.d.ts.map +1 -1
- package/dist/notifier/coordinator.js +76 -5
- package/dist/notifier/coordinator.js.map +1 -1
- package/dist/storage/base-cursor-store.d.ts +16 -0
- package/dist/storage/base-cursor-store.d.ts.map +1 -0
- package/dist/storage/base-cursor-store.js +33 -0
- package/dist/storage/base-cursor-store.js.map +1 -0
- package/dist/storage/cursor-store.d.ts +2 -6
- package/dist/storage/cursor-store.d.ts.map +1 -1
- package/dist/storage/cursor-store.js +4 -25
- package/dist/storage/cursor-store.js.map +1 -1
- package/dist/storage/session-cursor-store.d.ts +2 -6
- package/dist/storage/session-cursor-store.d.ts.map +1 -1
- package/dist/storage/session-cursor-store.js +4 -25
- package/dist/storage/session-cursor-store.js.map +1 -1
- package/dist/utils/file-changed.d.ts +35 -0
- package/dist/utils/file-changed.d.ts.map +1 -0
- package/dist/utils/file-changed.js +34 -0
- package/dist/utils/file-changed.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/sync.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { stat } from "node:fs/promises";
|
|
2
2
|
import { CursorStore } from "../storage/cursor-store.js";
|
|
3
3
|
import { LocalQueue } from "../storage/local-queue.js";
|
|
4
|
-
import { discoverClaudeFiles, discoverCodexFiles, discoverGeminiFiles, discoverOpenCodeFiles, discoverOpenClawFiles, } from "../discovery/sources.js";
|
|
5
|
-
import { parseClaudeFile } from "../parsers/claude.js";
|
|
6
|
-
import { parseCodexFile } from "../parsers/codex.js";
|
|
7
|
-
import { parseGeminiFile } from "../parsers/gemini.js";
|
|
8
|
-
import { parseOpenCodeFile } from "../parsers/opencode.js";
|
|
9
|
-
import { parseOpenClawFile } from "../parsers/openclaw.js";
|
|
10
|
-
import { processOpenCodeMessages } from "../parsers/opencode-sqlite.js";
|
|
11
4
|
import { toUtcHalfHourStart, bucketKey, addTokens, emptyTokenDelta } from "../utils/buckets.js";
|
|
5
|
+
import { createTokenDrivers } from "../drivers/registry.js";
|
|
6
|
+
/** Map Source type to short result key */
|
|
7
|
+
function sourceKey(source) {
|
|
8
|
+
switch (source) {
|
|
9
|
+
case "claude-code": return "claude";
|
|
10
|
+
case "gemini-cli": return "gemini";
|
|
11
|
+
case "opencode": return "opencode";
|
|
12
|
+
case "openclaw": return "openclaw";
|
|
13
|
+
case "codex": return "codex";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
12
16
|
/**
|
|
13
17
|
* Execute the sync operation: discover files, parse incrementally,
|
|
14
18
|
* aggregate into half-hour buckets, and write to local queue.
|
|
@@ -23,149 +27,68 @@ export async function executeSync(opts) {
|
|
|
23
27
|
const allDeltas = [];
|
|
24
28
|
const sourceCounts = { claude: 0, codex: 0, gemini: 0, opencode: 0, openclaw: 0 };
|
|
25
29
|
const filesScanned = { claude: 0, codex: 0, gemini: 0, opencode: 0, openclaw: 0 };
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const prev = cursors.files[filePath];
|
|
43
|
-
const st = await stat(filePath).catch(() => null);
|
|
44
|
-
if (!st)
|
|
45
|
-
continue;
|
|
46
|
-
const inode = st.ino;
|
|
47
|
-
const startOffset = prev && prev.inode === inode ? (prev.offset ?? 0) : 0;
|
|
48
|
-
const result = await parseClaudeFile({ filePath, startOffset }).catch((err) => {
|
|
49
|
-
onProgress?.({
|
|
50
|
-
source: "claude-code",
|
|
51
|
-
phase: "warn",
|
|
52
|
-
message: `Skipping ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
|
|
53
|
-
});
|
|
54
|
-
return null;
|
|
55
|
-
});
|
|
56
|
-
if (!result)
|
|
57
|
-
continue;
|
|
58
|
-
cursors.files[filePath] = {
|
|
59
|
-
inode,
|
|
60
|
-
offset: result.endOffset,
|
|
61
|
-
updatedAt: new Date().toISOString(),
|
|
62
|
-
};
|
|
63
|
-
allDeltas.push(...result.deltas);
|
|
64
|
-
sourceCounts.claude += result.deltas.length;
|
|
65
|
-
onProgress?.({
|
|
66
|
-
source: "claude-code",
|
|
67
|
-
phase: "parse",
|
|
68
|
-
current: i + 1,
|
|
69
|
-
total: files.length,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// ---------- Gemini CLI ----------
|
|
74
|
-
if (opts.geminiDir) {
|
|
30
|
+
// Build driver sets from options
|
|
31
|
+
const { fileDrivers, dbDrivers } = createTokenDrivers(opts);
|
|
32
|
+
// Shared state bag for cross-driver communication
|
|
33
|
+
const ctx = { dirMtimes: cursors.dirMtimes };
|
|
34
|
+
// Discovery options bag (drivers read their relevant directory)
|
|
35
|
+
const discoverOpts = {
|
|
36
|
+
claudeDir: opts.claudeDir,
|
|
37
|
+
codexSessionsDir: opts.codexSessionsDir,
|
|
38
|
+
geminiDir: opts.geminiDir,
|
|
39
|
+
openCodeMessageDir: opts.openCodeMessageDir,
|
|
40
|
+
openCodeDbPath: opts.openCodeDbPath,
|
|
41
|
+
openclawDir: opts.openclawDir,
|
|
42
|
+
};
|
|
43
|
+
// ---------- Phase 1: File-based drivers (generic loop) ----------
|
|
44
|
+
for (const driver of fileDrivers) {
|
|
45
|
+
const key = sourceKey(driver.source);
|
|
75
46
|
onProgress?.({
|
|
76
|
-
source:
|
|
47
|
+
source: driver.source,
|
|
77
48
|
phase: "discover",
|
|
78
|
-
message:
|
|
49
|
+
message: `Discovering ${driver.source} files...`,
|
|
79
50
|
});
|
|
80
|
-
const files = await
|
|
81
|
-
filesScanned
|
|
51
|
+
const files = await driver.discover(discoverOpts, ctx);
|
|
52
|
+
filesScanned[key] = files.length;
|
|
53
|
+
// Build discover message with skipped dirs info from context
|
|
54
|
+
const skippedDirs = driver.source === "opencode" && ctx.dirMtimes
|
|
55
|
+
? Object.keys(ctx.dirMtimes).length
|
|
56
|
+
: 0;
|
|
57
|
+
const parseMsg = driver.source === "opencode" && skippedDirs > 0
|
|
58
|
+
? `Parsing ${files.length} ${driver.source} files (${skippedDirs} dirs skipped)...`
|
|
59
|
+
: `Parsing ${files.length} ${driver.source} files...`;
|
|
82
60
|
onProgress?.({
|
|
83
|
-
source:
|
|
61
|
+
source: driver.source,
|
|
84
62
|
phase: "parse",
|
|
85
63
|
total: files.length,
|
|
86
|
-
message:
|
|
64
|
+
message: parseMsg,
|
|
87
65
|
});
|
|
88
66
|
for (let i = 0; i < files.length; i++) {
|
|
89
67
|
const filePath = files[i];
|
|
90
|
-
const prev = cursors.files[filePath];
|
|
91
68
|
const st = await stat(filePath).catch(() => null);
|
|
92
69
|
if (!st)
|
|
93
70
|
continue;
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
filePath,
|
|
99
|
-
startIndex,
|
|
100
|
-
lastTotals,
|
|
101
|
-
}).catch((err) => {
|
|
102
|
-
onProgress?.({
|
|
103
|
-
source: "gemini-cli",
|
|
104
|
-
phase: "warn",
|
|
105
|
-
message: `Skipping ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
|
|
106
|
-
});
|
|
107
|
-
return null;
|
|
108
|
-
});
|
|
109
|
-
if (!result)
|
|
110
|
-
continue;
|
|
111
|
-
cursors.files[filePath] = {
|
|
112
|
-
inode,
|
|
113
|
-
lastIndex: result.lastIndex,
|
|
114
|
-
lastTotals: result.lastTotals,
|
|
115
|
-
lastModel: result.lastModel,
|
|
116
|
-
updatedAt: new Date().toISOString(),
|
|
71
|
+
const fingerprint = {
|
|
72
|
+
inode: st.ino,
|
|
73
|
+
mtimeMs: st.mtimeMs,
|
|
74
|
+
size: st.size,
|
|
117
75
|
};
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
source: "gemini-cli",
|
|
122
|
-
phase: "parse",
|
|
123
|
-
current: i + 1,
|
|
124
|
-
total: files.length,
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
// ---------- OpenCode ----------
|
|
129
|
-
if (opts.openCodeMessageDir) {
|
|
130
|
-
onProgress?.({
|
|
131
|
-
source: "opencode",
|
|
132
|
-
phase: "discover",
|
|
133
|
-
message: "Discovering OpenCode files...",
|
|
134
|
-
});
|
|
135
|
-
const discovery = await discoverOpenCodeFiles(opts.openCodeMessageDir, cursors.dirMtimes);
|
|
136
|
-
const files = discovery.files;
|
|
137
|
-
// Count includes files in skipped dirs (already tracked in cursors)
|
|
138
|
-
filesScanned.opencode = files.length;
|
|
139
|
-
onProgress?.({
|
|
140
|
-
source: "opencode",
|
|
141
|
-
phase: "parse",
|
|
142
|
-
total: files.length,
|
|
143
|
-
message: `Parsing ${files.length} OpenCode files (${discovery.skippedDirs} dirs skipped)...`,
|
|
144
|
-
});
|
|
145
|
-
for (let i = 0; i < files.length; i++) {
|
|
146
|
-
const filePath = files[i];
|
|
147
|
-
const prev = cursors.files[filePath];
|
|
148
|
-
const st = await stat(filePath).catch(() => null);
|
|
149
|
-
if (!st)
|
|
150
|
-
continue;
|
|
151
|
-
const inode = st.ino;
|
|
152
|
-
// Triple-check unchanged optimization
|
|
153
|
-
if (prev &&
|
|
154
|
-
prev.inode === inode &&
|
|
155
|
-
prev.size === st.size &&
|
|
156
|
-
prev.mtimeMs === st.mtimeMs) {
|
|
76
|
+
const cursor = cursors.files[filePath];
|
|
77
|
+
// Fast skip: file unchanged since last cursor?
|
|
78
|
+
if (driver.shouldSkip(cursor, fingerprint)) {
|
|
157
79
|
onProgress?.({
|
|
158
|
-
source:
|
|
80
|
+
source: driver.source,
|
|
159
81
|
phase: "parse",
|
|
160
82
|
current: i + 1,
|
|
161
83
|
total: files.length,
|
|
162
84
|
});
|
|
163
85
|
continue;
|
|
164
86
|
}
|
|
165
|
-
|
|
166
|
-
const
|
|
87
|
+
// Extract resume state and parse
|
|
88
|
+
const resume = driver.resumeState(cursor, fingerprint);
|
|
89
|
+
const result = await driver.parse(filePath, resume).catch((err) => {
|
|
167
90
|
onProgress?.({
|
|
168
|
-
source:
|
|
91
|
+
source: driver.source,
|
|
169
92
|
phase: "warn",
|
|
170
93
|
message: `Skipping ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
|
|
171
94
|
});
|
|
@@ -173,230 +96,89 @@ export async function executeSync(opts) {
|
|
|
173
96
|
});
|
|
174
97
|
if (!result)
|
|
175
98
|
continue;
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
updatedAt: new Date().toISOString(),
|
|
183
|
-
};
|
|
184
|
-
if (result.delta) {
|
|
185
|
-
allDeltas.push(result.delta);
|
|
186
|
-
sourceCounts.opencode += 1;
|
|
187
|
-
}
|
|
99
|
+
// Build and persist cursor (cast: driver returns concrete cursor type
|
|
100
|
+
// but the generic loop types it as FileCursorBase)
|
|
101
|
+
cursors.files[filePath] = driver.buildCursor(fingerprint, result, cursor);
|
|
102
|
+
// Collect deltas
|
|
103
|
+
allDeltas.push(...result.deltas);
|
|
104
|
+
sourceCounts[key] += result.deltas.length;
|
|
188
105
|
onProgress?.({
|
|
189
|
-
source:
|
|
106
|
+
source: driver.source,
|
|
190
107
|
phase: "parse",
|
|
191
108
|
current: i + 1,
|
|
192
109
|
total: files.length,
|
|
193
110
|
});
|
|
194
111
|
}
|
|
195
|
-
//
|
|
196
|
-
cursors.
|
|
112
|
+
// Post-parse hook (e.g. OpenCode JSON deposits messageKeys into ctx)
|
|
113
|
+
driver.afterAll?.(cursors.files, ctx);
|
|
197
114
|
}
|
|
198
|
-
// ----------
|
|
115
|
+
// ---------- Phase 2: DB-based drivers ----------
|
|
116
|
+
// SQLite warning paths are handled at the orchestrator level because:
|
|
117
|
+
// - "bun:sqlite not available": registry doesn't create a driver (no openMessageDb)
|
|
118
|
+
// - "Failed to open": factory returns null, driver would silently return empty
|
|
119
|
+
// We pre-probe the factory here to emit warnings BEFORE running the driver,
|
|
120
|
+
// avoiding the need for double-open detection after the fact.
|
|
121
|
+
let activeDbDrivers = dbDrivers;
|
|
199
122
|
if (opts.openCodeDbPath) {
|
|
200
|
-
onProgress?.({
|
|
201
|
-
source: "opencode-sqlite",
|
|
202
|
-
phase: "discover",
|
|
203
|
-
message: "Checking OpenCode SQLite database...",
|
|
204
|
-
});
|
|
205
|
-
// Check if DB file exists
|
|
206
123
|
const dbStat = await stat(opts.openCodeDbPath).catch(() => null);
|
|
207
|
-
if (dbStat
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
// We dedup previously-processed IDs from the prior batch.
|
|
230
|
-
const rawRows = handle.queryMessages(lastTimeCreated);
|
|
231
|
-
const rows = prevProcessedIds.size > 0
|
|
232
|
-
? rawRows.filter((r) => !prevProcessedIds.has(r.id))
|
|
233
|
-
: rawRows;
|
|
234
|
-
// Collect JSON messageKeys from cursor store for dedup.
|
|
235
|
-
// During the overlap window (~Feb 15-17), both JSON and SQLite
|
|
236
|
-
// sources contain the same messages. We skip any SQLite row
|
|
237
|
-
// whose messageKey is already tracked by a JSON file cursor.
|
|
238
|
-
const jsonMessageKeys = new Set();
|
|
239
|
-
for (const cursor of Object.values(cursors.files)) {
|
|
240
|
-
const oc = cursor;
|
|
241
|
-
if (oc.messageKey) {
|
|
242
|
-
jsonMessageKeys.add(oc.messageKey);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
// Filter rows: exclude assistant messages already tracked by JSON parser.
|
|
246
|
-
// row.role is extracted at the SQL level via json_extract — no need to
|
|
247
|
-
// parse the full data JSON here.
|
|
248
|
-
const filteredRows = rows.filter((row) => {
|
|
249
|
-
if (row.role !== "assistant")
|
|
250
|
-
return true; // non-assistant rows don't produce deltas
|
|
251
|
-
const key = `${row.session_id}|${row.id}`;
|
|
252
|
-
return !jsonMessageKeys.has(key);
|
|
124
|
+
if (dbStat) {
|
|
125
|
+
if (!opts.openMessageDb) {
|
|
126
|
+
// Case 1: DB file exists but bun:sqlite adapter is missing
|
|
127
|
+
onProgress?.({
|
|
128
|
+
source: "opencode-sqlite",
|
|
129
|
+
phase: "discover",
|
|
130
|
+
message: "Checking OpenCode SQLite database...",
|
|
131
|
+
});
|
|
132
|
+
onProgress?.({
|
|
133
|
+
source: "opencode-sqlite",
|
|
134
|
+
phase: "warn",
|
|
135
|
+
message: `OpenCode SQLite database found at ${opts.openCodeDbPath} but bun:sqlite is not available — SQLite token data will NOT be synced`,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// Case 2: Both provided — pre-probe if factory returns null
|
|
140
|
+
const handle = opts.openMessageDb(opts.openCodeDbPath);
|
|
141
|
+
if (!handle) {
|
|
142
|
+
onProgress?.({
|
|
143
|
+
source: "opencode-sqlite",
|
|
144
|
+
phase: "discover",
|
|
145
|
+
message: "Checking OpenCode SQLite database...",
|
|
253
146
|
});
|
|
254
|
-
const dedupSkipped = rows.length - filteredRows.length;
|
|
255
|
-
const result = processOpenCodeMessages(filteredRows);
|
|
256
147
|
onProgress?.({
|
|
257
148
|
source: "opencode-sqlite",
|
|
258
|
-
phase: "
|
|
259
|
-
message: `
|
|
149
|
+
phase: "warn",
|
|
150
|
+
message: `Failed to open OpenCode SQLite database at ${opts.openCodeDbPath} — SQLite token data will NOT be synced`,
|
|
260
151
|
});
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
// Update SQLite cursor — advance past ALL rows (including deduped).
|
|
264
|
-
// Rows are ORDER BY time_created ASC, so the last row has the
|
|
265
|
-
// highest time_created. Track IDs at the max timestamp for
|
|
266
|
-
// same-millisecond dedup on the next query.
|
|
267
|
-
const maxTime = rawRows.length > 0
|
|
268
|
-
? rawRows[rawRows.length - 1].time_created
|
|
269
|
-
: lastTimeCreated;
|
|
270
|
-
const idsAtMax = rawRows
|
|
271
|
-
.filter((r) => r.time_created === maxTime)
|
|
272
|
-
.map((r) => r.id);
|
|
273
|
-
cursors.openCodeSqlite = {
|
|
274
|
-
lastTimeCreated: maxTime,
|
|
275
|
-
lastProcessedIds: idsAtMax,
|
|
276
|
-
lastSessionUpdated: prevSqlite?.lastSessionUpdated ?? 0,
|
|
277
|
-
inode: dbInode,
|
|
278
|
-
updatedAt: new Date().toISOString(),
|
|
279
|
-
};
|
|
152
|
+
// Skip DB drivers — factory returns null, driver would return empty anyway
|
|
153
|
+
activeDbDrivers = [];
|
|
280
154
|
}
|
|
281
|
-
|
|
155
|
+
else {
|
|
282
156
|
handle.close();
|
|
283
157
|
}
|
|
284
158
|
}
|
|
285
|
-
else {
|
|
286
|
-
// openMessageDb returned null — DB exists but couldn't be opened
|
|
287
|
-
onProgress?.({
|
|
288
|
-
source: "opencode-sqlite",
|
|
289
|
-
phase: "warn",
|
|
290
|
-
message: `Failed to open OpenCode SQLite database at ${opts.openCodeDbPath} — SQLite token data will NOT be synced`,
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
// ---------- OpenClaw ----------
|
|
296
|
-
if (opts.openclawDir) {
|
|
297
|
-
onProgress?.({
|
|
298
|
-
source: "openclaw",
|
|
299
|
-
phase: "discover",
|
|
300
|
-
message: "Discovering OpenClaw files...",
|
|
301
|
-
});
|
|
302
|
-
const files = await discoverOpenClawFiles(opts.openclawDir);
|
|
303
|
-
filesScanned.openclaw = files.length;
|
|
304
|
-
onProgress?.({
|
|
305
|
-
source: "openclaw",
|
|
306
|
-
phase: "parse",
|
|
307
|
-
total: files.length,
|
|
308
|
-
message: `Parsing ${files.length} OpenClaw files...`,
|
|
309
|
-
});
|
|
310
|
-
for (let i = 0; i < files.length; i++) {
|
|
311
|
-
const filePath = files[i];
|
|
312
|
-
const prev = cursors.files[filePath];
|
|
313
|
-
const st = await stat(filePath).catch(() => null);
|
|
314
|
-
if (!st)
|
|
315
|
-
continue;
|
|
316
|
-
const inode = st.ino;
|
|
317
|
-
const startOffset = prev && prev.inode === inode ? (prev.offset ?? 0) : 0;
|
|
318
|
-
const result = await parseOpenClawFile({ filePath, startOffset }).catch((err) => {
|
|
319
|
-
onProgress?.({
|
|
320
|
-
source: "openclaw",
|
|
321
|
-
phase: "warn",
|
|
322
|
-
message: `Skipping ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
|
|
323
|
-
});
|
|
324
|
-
return null;
|
|
325
|
-
});
|
|
326
|
-
if (!result)
|
|
327
|
-
continue;
|
|
328
|
-
cursors.files[filePath] = {
|
|
329
|
-
inode,
|
|
330
|
-
offset: result.endOffset,
|
|
331
|
-
updatedAt: new Date().toISOString(),
|
|
332
|
-
};
|
|
333
|
-
allDeltas.push(...result.deltas);
|
|
334
|
-
sourceCounts.openclaw += result.deltas.length;
|
|
335
|
-
onProgress?.({
|
|
336
|
-
source: "openclaw",
|
|
337
|
-
phase: "parse",
|
|
338
|
-
current: i + 1,
|
|
339
|
-
total: files.length,
|
|
340
|
-
});
|
|
341
159
|
}
|
|
342
160
|
}
|
|
343
|
-
|
|
344
|
-
|
|
161
|
+
for (const driver of activeDbDrivers) {
|
|
162
|
+
const key = sourceKey(driver.source);
|
|
345
163
|
onProgress?.({
|
|
346
|
-
source: "
|
|
164
|
+
source: "opencode-sqlite",
|
|
347
165
|
phase: "discover",
|
|
348
|
-
message: "
|
|
166
|
+
message: "Checking OpenCode SQLite database...",
|
|
349
167
|
});
|
|
350
|
-
const
|
|
351
|
-
|
|
168
|
+
const prevCursor = cursors.openCodeSqlite;
|
|
169
|
+
const result = await driver.run(prevCursor, ctx);
|
|
170
|
+
cursors.openCodeSqlite = result.cursor;
|
|
171
|
+
allDeltas.push(...result.deltas);
|
|
172
|
+
sourceCounts[key] += result.deltas.length;
|
|
173
|
+
const dedupSkipped = result.rowCount - (result.deltas.length > 0 ? result.deltas.length : 0);
|
|
352
174
|
onProgress?.({
|
|
353
|
-
source: "
|
|
175
|
+
source: "opencode-sqlite",
|
|
354
176
|
phase: "parse",
|
|
355
|
-
|
|
356
|
-
message: `Parsing ${files.length} Codex files...`,
|
|
177
|
+
message: `Parsed ${result.deltas.length} deltas from ${result.rowCount} SQLite rows${dedupSkipped > 0 ? ` (${dedupSkipped} deduped)` : ""}`,
|
|
357
178
|
});
|
|
358
|
-
for (let i = 0; i < files.length; i++) {
|
|
359
|
-
const filePath = files[i];
|
|
360
|
-
const prev = cursors.files[filePath];
|
|
361
|
-
const st = await stat(filePath).catch(() => null);
|
|
362
|
-
if (!st)
|
|
363
|
-
continue;
|
|
364
|
-
const inode = st.ino;
|
|
365
|
-
const startOffset = prev && prev.inode === inode ? (prev.offset ?? 0) : 0;
|
|
366
|
-
const lastTotals = prev && prev.inode === inode ? (prev.lastTotals ?? null) : null;
|
|
367
|
-
const lastModel = prev && prev.inode === inode ? (prev.lastModel ?? null) : null;
|
|
368
|
-
const result = await parseCodexFile({
|
|
369
|
-
filePath,
|
|
370
|
-
startOffset,
|
|
371
|
-
lastTotals,
|
|
372
|
-
lastModel,
|
|
373
|
-
}).catch((err) => {
|
|
374
|
-
onProgress?.({
|
|
375
|
-
source: "codex",
|
|
376
|
-
phase: "warn",
|
|
377
|
-
message: `Skipping ${filePath}: ${err instanceof Error ? err.message : String(err)}`,
|
|
378
|
-
});
|
|
379
|
-
return null;
|
|
380
|
-
});
|
|
381
|
-
if (!result)
|
|
382
|
-
continue;
|
|
383
|
-
cursors.files[filePath] = {
|
|
384
|
-
inode,
|
|
385
|
-
offset: result.endOffset,
|
|
386
|
-
lastTotals: result.lastTotals,
|
|
387
|
-
lastModel: result.lastModel,
|
|
388
|
-
updatedAt: new Date().toISOString(),
|
|
389
|
-
};
|
|
390
|
-
allDeltas.push(...result.deltas);
|
|
391
|
-
sourceCounts.codex += result.deltas.length;
|
|
392
|
-
onProgress?.({
|
|
393
|
-
source: "codex",
|
|
394
|
-
phase: "parse",
|
|
395
|
-
current: i + 1,
|
|
396
|
-
total: files.length,
|
|
397
|
-
});
|
|
398
|
-
}
|
|
399
179
|
}
|
|
180
|
+
// Persist context state
|
|
181
|
+
cursors.dirMtimes = ctx.dirMtimes;
|
|
400
182
|
// ---------- Aggregate into half-hour buckets ----------
|
|
401
183
|
onProgress?.({
|
|
402
184
|
source: "all",
|
|
@@ -408,8 +190,8 @@ export async function executeSync(opts) {
|
|
|
408
190
|
const hourStart = toUtcHalfHourStart(delta.timestamp);
|
|
409
191
|
if (!hourStart)
|
|
410
192
|
continue;
|
|
411
|
-
const
|
|
412
|
-
let bucket = buckets.get(
|
|
193
|
+
const bk = bucketKey(delta.source, delta.model, hourStart);
|
|
194
|
+
let bucket = buckets.get(bk);
|
|
413
195
|
if (!bucket) {
|
|
414
196
|
bucket = {
|
|
415
197
|
source: delta.source,
|
|
@@ -417,7 +199,7 @@ export async function executeSync(opts) {
|
|
|
417
199
|
hourStart,
|
|
418
200
|
tokens: emptyTokenDelta(),
|
|
419
201
|
};
|
|
420
|
-
buckets.set(
|
|
202
|
+
buckets.set(bk, bucket);
|
|
421
203
|
}
|
|
422
204
|
addTokens(bucket.tokens, delta.tokens);
|
|
423
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAUxC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AA+D5D,0CAA0C;AAC1C,SAAS,SAAS,CAAC,MAAc;IAC/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa,CAAC,CAAC,OAAO,QAAQ,CAAC;QACpC,KAAK,YAAY,CAAC,CAAC,OAAO,QAAQ,CAAC;QACnC,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC;QACnC,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC;QACnC,KAAK,OAAO,CAAC,CAAC,OAAO,OAAO,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAiB;IACjD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAEtC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;IAEzC,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClF,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAElF,iCAAiC;IACjC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE5D,kDAAkD;IAClD,MAAM,GAAG,GAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IAE1D,gEAAgE;IAChE,MAAM,YAAY,GAAG;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;IAEF,mEAAmE;IACnE,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErC,UAAU,EAAE,CAAC;YACX,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,eAAe,MAAM,CAAC,MAAM,WAAW;SACjD,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACvD,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAEjC,6DAA6D;QAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,SAAS;YAC/D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM;YACnC,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,WAAW,GAAG,CAAC;YAC9D,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,WAAW,WAAW,mBAAmB;YACnF,CAAC,CAAC,WAAW,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,WAAW,CAAC;QAExD,UAAU,EAAE,CAAC;YACX,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,OAAO,EAAE,QAAQ;SAClB,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,EAAE;gBAAE,SAAS;YAElB,MAAM,WAAW,GAAoB;gBACnC,KAAK,EAAE,EAAE,CAAC,GAAG;gBACb,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,IAAI,EAAE,EAAE,CAAC,IAAI;aACd,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAA+B,CAAC;YAErE,+CAA+C;YAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC3C,UAAU,EAAE,CAAC;oBACX,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE,CAAC,GAAG,CAAC;oBACd,KAAK,EAAE,KAAK,CAAC,MAAM;iBACpB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,iCAAiC;YACjC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CACvD,CAAC,GAAY,EAAE,EAAE;gBACf,UAAU,EAAE,CAAC;oBACX,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,YAAY,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;iBACrF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC,CACF,CAAC;YACF,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,sEAAsE;YACtE,mDAAmD;YACnD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAe,CAAC;YAExF,iBAAiB;YACjB,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,YAAY,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAE1C,UAAU,EAAE,CAAC;gBACX,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,CAAC,GAAG,CAAC;gBACd,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,kDAAkD;IAClD,sEAAsE;IACtE,oFAAoF;IACpF,+EAA+E;IAC/E,4EAA4E;IAC5E,8DAA8D;IAC9D,IAAI,eAAe,GAAG,SAAS,CAAC;IAChC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,2DAA2D;gBAC3D,UAAU,EAAE,CAAC;oBACX,MAAM,EAAE,iBAAiB;oBACzB,KAAK,EAAE,UAAU;oBACjB,OAAO,EAAE,sCAAsC;iBAChD,CAAC,CAAC;gBACH,UAAU,EAAE,CAAC;oBACX,MAAM,EAAE,iBAAiB;oBACzB,KAAK,EAAE,MAAM;oBACb,OAAO,EAAE,qCAAqC,IAAI,CAAC,cAAc,yEAAyE;iBAC3I,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,UAAU,EAAE,CAAC;wBACX,MAAM,EAAE,iBAAiB;wBACzB,KAAK,EAAE,UAAU;wBACjB,OAAO,EAAE,sCAAsC;qBAChD,CAAC,CAAC;oBACH,UAAU,EAAE,CAAC;wBACX,MAAM,EAAE,iBAAiB;wBACzB,KAAK,EAAE,MAAM;wBACb,OAAO,EAAE,8CAA8C,IAAI,CAAC,cAAc,yCAAyC;qBACpH,CAAC,CAAC;oBACH,2EAA2E;oBAC3E,eAAe,GAAG,EAAE,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAErC,UAAU,EAAE,CAAC;YACX,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,sCAAsC;SAChD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,OAAO,CAAC,cAAkD,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAEjD,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,MAAuC,CAAC;QAExE,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAE1C,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,UAAU,EAAE,CAAC;YACX,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,UAAU,MAAM,CAAC,MAAM,CAAC,MAAM,gBAAgB,MAAM,CAAC,QAAQ,eAAe,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE;SAC5I,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAElC,yDAAyD;IACzD,UAAU,EAAE,CAAC;QACX,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,eAAe,SAAS,CAAC,MAAM,yBAAyB;KAClE,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG;gBACP,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS;gBACT,MAAM,EAAE,eAAe,EAAE;aAC1B,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,uCAAuC;IACvC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,CAAC,WAAW;YACzB,MAAM,CAAC,MAAM,CAAC,iBAAiB;YAC/B,MAAM,CAAC,MAAM,CAAC,YAAY;YAC1B,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAEtC,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW;YACvC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;YACpD,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY;YACzC,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB;YAC5D,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,+DAA+D;IAC/D,kEAAkE;IAClE,mEAAmE;IACnE,mEAAmE;IACnE,6DAA6D;IAC7D,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEhC,uCAAuC;IACvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,EAAE,CAAC;QACX,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,UAAU,SAAS,CAAC,MAAM,aAAa,OAAO,CAAC,MAAM,UAAU;KACzE,CAAC,CAAC;IAEH,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,MAAM;QAC7B,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,OAAO,EAAE,YAAY;QACrB,YAAY;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Driver Registry — single entry point for constructing active driver sets.
|
|
3
|
+
*
|
|
4
|
+
* Returns drivers for enabled sources based on which directories/DB paths
|
|
5
|
+
* exist in the provided options. File-based drivers are singletons;
|
|
6
|
+
* DB-based drivers are constructed via factory functions (need DI params).
|
|
7
|
+
*
|
|
8
|
+
* The orchestrator (sync.ts / session-sync.ts) calls these once per run
|
|
9
|
+
* and iterates the returned arrays with generic loops.
|
|
10
|
+
*/
|
|
11
|
+
import type { FileCursorBase, SessionFileCursor } from "@pew/core";
|
|
12
|
+
import type { FileTokenDriver, DbTokenDriver, FileSessionDriver, DbSessionDriver } from "./types.js";
|
|
13
|
+
import { type OpenCodeSqliteTokenDriverOpts } from "./token/opencode-sqlite-token-driver.js";
|
|
14
|
+
import { type OpenCodeSqliteSessionDriverOpts } from "./session/opencode-sqlite-session-driver.js";
|
|
15
|
+
/**
|
|
16
|
+
* Options for constructing the token driver set.
|
|
17
|
+
*
|
|
18
|
+
* Directory fields control which file-based drivers are included.
|
|
19
|
+
* DB fields control the SQLite driver (requires both path + opener).
|
|
20
|
+
*/
|
|
21
|
+
export interface TokenDriverRegistryOpts {
|
|
22
|
+
claudeDir?: string;
|
|
23
|
+
geminiDir?: string;
|
|
24
|
+
openCodeMessageDir?: string;
|
|
25
|
+
openclawDir?: string;
|
|
26
|
+
codexSessionsDir?: string;
|
|
27
|
+
openCodeDbPath?: string;
|
|
28
|
+
openMessageDb?: OpenCodeSqliteTokenDriverOpts["openMessageDb"];
|
|
29
|
+
}
|
|
30
|
+
export interface TokenDriverSet {
|
|
31
|
+
fileDrivers: FileTokenDriver<FileCursorBase>[];
|
|
32
|
+
dbDrivers: DbTokenDriver[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Construct the active token driver set based on which sources are available.
|
|
36
|
+
*
|
|
37
|
+
* A file driver is included when its corresponding directory option is truthy.
|
|
38
|
+
* The SQLite DB driver is included when both `openCodeDbPath` and `openMessageDb` are provided.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createTokenDrivers(opts: TokenDriverRegistryOpts): TokenDriverSet;
|
|
41
|
+
/**
|
|
42
|
+
* Options for constructing the session driver set.
|
|
43
|
+
*/
|
|
44
|
+
export interface SessionDriverRegistryOpts {
|
|
45
|
+
claudeDir?: string;
|
|
46
|
+
geminiDir?: string;
|
|
47
|
+
openCodeMessageDir?: string;
|
|
48
|
+
openclawDir?: string;
|
|
49
|
+
codexSessionsDir?: string;
|
|
50
|
+
openCodeDbPath?: string;
|
|
51
|
+
openSessionDb?: OpenCodeSqliteSessionDriverOpts["openSessionDb"];
|
|
52
|
+
}
|
|
53
|
+
export interface SessionDriverSet {
|
|
54
|
+
fileDrivers: FileSessionDriver<SessionFileCursor | unknown>[];
|
|
55
|
+
dbDrivers: DbSessionDriver[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Construct the active session driver set based on which sources are available.
|
|
59
|
+
*
|
|
60
|
+
* Same pattern as token drivers: directory presence → file driver, DB opts → DB driver.
|
|
61
|
+
*/
|
|
62
|
+
export declare function createSessionDrivers(opts: SessionDriverRegistryOpts): SessionDriverSet;
|
|
63
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +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;AAQpB,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,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,CA6BhF;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"}
|