hacklab 0.19.0 → 0.21.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/README.md +44 -25
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +18 -19
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +5 -2
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +32 -26
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +32 -17
- package/dist/commands/sync.js.map +1 -1
- package/dist/config.d.ts +8 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/prompt-consent.d.ts +37 -23
- package/dist/prompt-consent.d.ts.map +1 -1
- package/dist/prompt-consent.js +75 -58
- package/dist/prompt-consent.js.map +1 -1
- package/dist/prompt-stats.d.ts +149 -7
- package/dist/prompt-stats.d.ts.map +1 -1
- package/dist/prompt-stats.js +288 -28
- package/dist/prompt-stats.js.map +1 -1
- package/dist/scanners/incremental.d.ts +131 -17
- package/dist/scanners/incremental.d.ts.map +1 -1
- package/dist/scanners/incremental.js +252 -74
- package/dist/scanners/incremental.js.map +1 -1
- package/dist/scanners/index.d.ts +7 -3
- package/dist/scanners/index.d.ts.map +1 -1
- package/dist/scanners/index.js +8 -40
- package/dist/scanners/index.js.map +1 -1
- package/dist/scanners/util.d.ts +32 -15
- package/dist/scanners/util.d.ts.map +1 -1
- package/dist/scanners/util.js +10 -34
- package/dist/scanners/util.js.map +1 -1
- package/dist/sync.d.ts +3 -3
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +32 -14
- package/dist/sync.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { mkdir, open, readFile, stat, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
|
+
import { addPromptToActivity, emptyPromptActivity, parsePromptLine, } from '../prompt-stats.js';
|
|
3
4
|
import { getSessionPath } from '../session.js';
|
|
4
|
-
import { claudeCodeFiles, codexDateForFile, codexFiles, codexFileTotals, grokLogFiles, hermesDbPath,
|
|
5
|
+
import { claudeCodeFiles, codexDateForFile, codexFiles, codexFileTotals, dateDaysAgo, grokLogFiles, hermesDbPath, openclawFiles, opencodeDbPath, PROMPT_ACTIVITY_DATE_CAP, PROMPT_ACTIVITY_SESSION_CAP, parseClaudeCodeLine, parseGrokLine, parseOpenclawLine, scanHermes, scanOpenCode, toDateStr, } from './index.js';
|
|
5
6
|
// The incremental half of the scanners: what `hacklab sync --tick` runs every
|
|
6
7
|
// minute instead of the full stateless re-scan the daily job does.
|
|
7
8
|
//
|
|
@@ -16,19 +17,44 @@ import { claudeCodeFiles, codexDateForFile, codexFiles, codexFileTotals, grokLog
|
|
|
16
17
|
// following disappeared) drops that harness back to a full re-read, because we
|
|
17
18
|
// don't track which file contributed which tokens. And the daily `sync --quiet`
|
|
18
19
|
// rebuilds the whole state from its full scan, so drift can never last a day.
|
|
19
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Bumping this makes `loadScanState` return null, which re-reads every log
|
|
22
|
+
* from scratch and re-derives the aggregates.
|
|
23
|
+
*
|
|
24
|
+
* 3: the prompt scanner learned to skip harness-written `user` entries
|
|
25
|
+
* (PROMPT_SCANNER_VERSION 2). The server is wiping the prompt tables once that
|
|
26
|
+
* ships, and `replacePromptActivity` only re-sends sessions and dates whose
|
|
27
|
+
* numbers *moved* — so a day that happened to contain no harness noise would
|
|
28
|
+
* stay identical locally and never be re-uploaded after the wipe. A cold
|
|
29
|
+
* rebuild marks every session and date within local retention dirty exactly
|
|
30
|
+
* once, and they all go back out.
|
|
31
|
+
*
|
|
32
|
+
* Token totals are unaffected: they travel as cumulative absolutes that the
|
|
33
|
+
* server diffs against its own per-machine snapshot, and `state.uploaded` is
|
|
34
|
+
* only the tick's "nothing moved" short-circuit — so a rebuild re-baselines
|
|
35
|
+
* rather than double-counting.
|
|
36
|
+
*/
|
|
37
|
+
export const SCAN_STATE_VERSION = 3;
|
|
38
|
+
/** How long a session is kept in the state after its last prompt. */
|
|
39
|
+
export const PROMPT_SESSION_RETENTION_DAYS = 45;
|
|
40
|
+
/** How long a per-day prompt tally is kept. Matches the wire's date cap. */
|
|
41
|
+
export const PROMPT_DAILY_RETENTION_DAYS = PROMPT_ACTIVITY_DATE_CAP;
|
|
20
42
|
/** Lives next to the session file, so it honors HACKLAB_SESSION_PATH. */
|
|
21
43
|
export function scanStatePath() {
|
|
22
44
|
return join(dirname(getSessionPath()), 'scan-state.json');
|
|
23
45
|
}
|
|
24
46
|
export function emptyHarness() {
|
|
25
|
-
return { files: {}, daily: {},
|
|
47
|
+
return { files: {}, daily: {}, models: {} };
|
|
48
|
+
}
|
|
49
|
+
export function emptyPromptState() {
|
|
50
|
+
return { ...emptyPromptActivity(), dirtySessions: [], dirtyDates: [] };
|
|
26
51
|
}
|
|
27
52
|
export function emptyState() {
|
|
28
53
|
return {
|
|
29
54
|
version: SCAN_STATE_VERSION,
|
|
30
55
|
harnesses: {},
|
|
31
56
|
dirty: [],
|
|
57
|
+
prompts: emptyPromptState(),
|
|
32
58
|
uploaded: { toolTotals: {}, modelTotals: {} },
|
|
33
59
|
};
|
|
34
60
|
}
|
|
@@ -53,6 +79,7 @@ export async function loadScanState() {
|
|
|
53
79
|
if (!parsed.harnesses || typeof parsed.harnesses !== 'object')
|
|
54
80
|
return null;
|
|
55
81
|
parsed.dirty ??= [];
|
|
82
|
+
parsed.prompts ??= emptyPromptState();
|
|
56
83
|
parsed.uploaded ??= { toolTotals: {}, modelTotals: {} };
|
|
57
84
|
return parsed;
|
|
58
85
|
}
|
|
@@ -60,16 +87,34 @@ export async function loadScanState() {
|
|
|
60
87
|
return null;
|
|
61
88
|
}
|
|
62
89
|
}
|
|
63
|
-
/**
|
|
64
|
-
*
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Drop prompt rows that have aged out, dirty or not.
|
|
92
|
+
*
|
|
93
|
+
* Dropping a dirty row means it is never uploaded, which is the right trade at
|
|
94
|
+
* this age: a session or a day that has sat unsent for its whole retention
|
|
95
|
+
* window is not coming back, and the alternative is a dirty list that grows
|
|
96
|
+
* forever on a machine that never consented (the tick still counts prompts at
|
|
97
|
+
* the `none` tier — it just never sends them).
|
|
98
|
+
*/
|
|
99
|
+
function prunePrompts(prompts) {
|
|
100
|
+
const sessionCutoff = dateDaysAgo(PROMPT_SESSION_RETENTION_DAYS);
|
|
101
|
+
for (const [id, session] of Object.entries(prompts.sessions)) {
|
|
102
|
+
if (session.lastActiveAt.slice(0, 10) < sessionCutoff) {
|
|
103
|
+
delete prompts.sessions[id];
|
|
71
104
|
}
|
|
72
105
|
}
|
|
106
|
+
const dateCutoff = dateDaysAgo(PROMPT_DAILY_RETENTION_DAYS);
|
|
107
|
+
for (const date of Object.keys(prompts.daily)) {
|
|
108
|
+
if (date < dateCutoff)
|
|
109
|
+
delete prompts.daily[date];
|
|
110
|
+
}
|
|
111
|
+
prompts.dirtySessions = prompts.dirtySessions.filter((id) => prompts.sessions[id] !== undefined);
|
|
112
|
+
prompts.dirtyDates = prompts.dirtyDates.filter((date) => prompts.daily[date] !== undefined);
|
|
113
|
+
}
|
|
114
|
+
/** Persist the state, pruning prompt rows that aged out of their retention
|
|
115
|
+
* window (they'd otherwise accumulate forever). Best-effort. */
|
|
116
|
+
export async function saveScanState(state) {
|
|
117
|
+
prunePrompts(state.prompts);
|
|
73
118
|
try {
|
|
74
119
|
await mkdir(dirname(scanStatePath()), { recursive: true });
|
|
75
120
|
await writeFile(scanStatePath(), `${JSON.stringify(state)}\n`, 'utf8');
|
|
@@ -93,20 +138,6 @@ function addDaily(h, date, model, tokens, messages, dirty) {
|
|
|
93
138
|
h.models[model] = (h.models[model] ?? 0) + tokens;
|
|
94
139
|
dirty.add(date);
|
|
95
140
|
}
|
|
96
|
-
function addHourly(h, date, hour, model, tokens, messages, dirty) {
|
|
97
|
-
if (date < hourlyCutoff())
|
|
98
|
-
return;
|
|
99
|
-
const key = `${date}|${hour}|${model}`;
|
|
100
|
-
const existing = h.hourly[key];
|
|
101
|
-
if (existing) {
|
|
102
|
-
existing.tokens += tokens;
|
|
103
|
-
existing.messages += messages;
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
h.hourly[key] = { tokens, messages };
|
|
107
|
-
}
|
|
108
|
-
dirty.add(date);
|
|
109
|
-
}
|
|
110
141
|
/** A full scanner's result as the maps the state stores. */
|
|
111
142
|
export function aggregatesOfResult(result) {
|
|
112
143
|
const daily = {};
|
|
@@ -116,21 +147,10 @@ export function aggregatesOfResult(result) {
|
|
|
116
147
|
messages: entry.messages ?? 0,
|
|
117
148
|
};
|
|
118
149
|
}
|
|
119
|
-
|
|
120
|
-
for (const entry of result.hourly) {
|
|
121
|
-
hourly[`${entry.date}|${entry.hour}|${entry.model ?? ''}`] = {
|
|
122
|
-
tokens: entry.tokens,
|
|
123
|
-
messages: entry.messages ?? 0,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
return { daily, hourly, models: { ...result.models } };
|
|
150
|
+
return { daily, models: { ...result.models } };
|
|
127
151
|
}
|
|
128
152
|
function aggregatesOf(h) {
|
|
129
|
-
return {
|
|
130
|
-
daily: structuredClone(h.daily),
|
|
131
|
-
hourly: structuredClone(h.hourly),
|
|
132
|
-
models: { ...h.models },
|
|
133
|
-
};
|
|
153
|
+
return { daily: structuredClone(h.daily), models: { ...h.models } };
|
|
134
154
|
}
|
|
135
155
|
/**
|
|
136
156
|
* Mark every date whose rows moved between two versions of a harness's
|
|
@@ -150,15 +170,59 @@ function markMovedDates(before, after, dirty) {
|
|
|
150
170
|
}
|
|
151
171
|
};
|
|
152
172
|
compare(before.daily, after.daily);
|
|
153
|
-
compare(before.hourly, after.hourly);
|
|
154
173
|
}
|
|
155
174
|
/** Swap in freshly scanned aggregates, dirtying the dates that moved. */
|
|
156
175
|
function replaceAggregates(h, next, dirty) {
|
|
157
|
-
markMovedDates({ daily: h.daily,
|
|
176
|
+
markMovedDates({ daily: h.daily, models: h.models }, next, dirty);
|
|
158
177
|
h.daily = next.daily;
|
|
159
|
-
h.hourly = next.hourly;
|
|
160
178
|
h.models = next.models;
|
|
161
179
|
}
|
|
180
|
+
/**
|
|
181
|
+
* Swap in a freshly scanned prompt aggregate, dirtying every session and date
|
|
182
|
+
* whose numbers moved. Same idea as `markMovedDates`: a daily full scan mostly
|
|
183
|
+
* reproduces what the ticks already sent, and only the difference is worth
|
|
184
|
+
* putting back on the wire.
|
|
185
|
+
*/
|
|
186
|
+
function replacePromptActivity(prompts, next) {
|
|
187
|
+
const dirtySessions = new Set(prompts.dirtySessions);
|
|
188
|
+
for (const id of new Set([
|
|
189
|
+
...Object.keys(prompts.sessions),
|
|
190
|
+
...Object.keys(next.sessions),
|
|
191
|
+
])) {
|
|
192
|
+
const before = prompts.sessions[id];
|
|
193
|
+
const after = next.sessions[id];
|
|
194
|
+
if (!after)
|
|
195
|
+
continue;
|
|
196
|
+
if (!before ||
|
|
197
|
+
before.promptCount !== after.promptCount ||
|
|
198
|
+
before.startedAt !== after.startedAt ||
|
|
199
|
+
before.lastActiveAt !== after.lastActiveAt) {
|
|
200
|
+
dirtySessions.add(id);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const dirtyDates = new Set(prompts.dirtyDates);
|
|
204
|
+
for (const date of new Set([
|
|
205
|
+
...Object.keys(prompts.daily),
|
|
206
|
+
...Object.keys(next.daily),
|
|
207
|
+
])) {
|
|
208
|
+
const before = prompts.daily[date];
|
|
209
|
+
const after = next.daily[date];
|
|
210
|
+
if (!after)
|
|
211
|
+
continue;
|
|
212
|
+
if (!before ||
|
|
213
|
+
before.prompts !== after.prompts ||
|
|
214
|
+
before.words !== after.words) {
|
|
215
|
+
dirtyDates.add(date);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
prompts.sessions = next.sessions;
|
|
219
|
+
prompts.daily = next.daily;
|
|
220
|
+
// A session or date the full scan can no longer see has nothing left to say.
|
|
221
|
+
prompts.dirtySessions = [...dirtySessions].filter((id) => next.sessions[id] !== undefined);
|
|
222
|
+
prompts.dirtyDates = [...dirtyDates]
|
|
223
|
+
.filter((date) => next.daily[date] !== undefined)
|
|
224
|
+
.sort();
|
|
225
|
+
}
|
|
162
226
|
// ---- reading the tail ------------------------------------------------------
|
|
163
227
|
async function statOrNull(path) {
|
|
164
228
|
try {
|
|
@@ -202,6 +266,7 @@ export function defaultSources() {
|
|
|
202
266
|
tool: 'claude_code',
|
|
203
267
|
files: claudeCodeFiles,
|
|
204
268
|
parse: parseClaudeCodeLine,
|
|
269
|
+
parsePrompt: parsePromptLine,
|
|
205
270
|
},
|
|
206
271
|
{ tool: 'openclaw', files: openclawFiles, parse: parseOpenclawLine },
|
|
207
272
|
{ tool: 'grok', files: grokLogFiles, parse: parseGrokLine },
|
|
@@ -241,7 +306,6 @@ function resetHarness(h) {
|
|
|
241
306
|
if (h.codexTotals)
|
|
242
307
|
h.codexTotals = {};
|
|
243
308
|
h.daily = {};
|
|
244
|
-
h.hourly = {};
|
|
245
309
|
h.models = {};
|
|
246
310
|
}
|
|
247
311
|
async function tickJsonl(state, src, dirty) {
|
|
@@ -255,6 +319,14 @@ async function tickJsonl(state, src, dirty) {
|
|
|
255
319
|
const target = invalidated ? new Set() : dirty;
|
|
256
320
|
if (invalidated)
|
|
257
321
|
resetHarness(h);
|
|
322
|
+
// Same story for prompts: a re-read has to rebuild the aggregate from
|
|
323
|
+
// scratch, or every session in it would be counted twice.
|
|
324
|
+
const rebuildPrompts = invalidated && src.parsePrompt !== undefined;
|
|
325
|
+
const prompts = rebuildPrompts
|
|
326
|
+
? emptyPromptActivity()
|
|
327
|
+
: state.prompts;
|
|
328
|
+
const dirtySessions = new Set(state.prompts.dirtySessions);
|
|
329
|
+
const dirtyDates = new Set(state.prompts.dirtyDates);
|
|
258
330
|
let changed = invalidated;
|
|
259
331
|
for (const file of files) {
|
|
260
332
|
const prev = h.files[file.path];
|
|
@@ -265,6 +337,12 @@ async function tickJsonl(state, src, dirty) {
|
|
|
265
337
|
const { text, offset } = await readCompleteLines(file.path, from, file.size).catch(() => ({ text: '', offset: from }));
|
|
266
338
|
let fallbackDate = null;
|
|
267
339
|
for (const line of text.split('\n')) {
|
|
340
|
+
const prompt = src.parsePrompt?.(line);
|
|
341
|
+
if (prompt) {
|
|
342
|
+
const touched = addPromptToActivity(prompts, prompt);
|
|
343
|
+
dirtySessions.add(touched.sessionId);
|
|
344
|
+
dirtyDates.add(touched.date);
|
|
345
|
+
}
|
|
268
346
|
const usage = src.parse(line);
|
|
269
347
|
if (!usage)
|
|
270
348
|
continue;
|
|
@@ -274,15 +352,20 @@ async function tickJsonl(state, src, dirty) {
|
|
|
274
352
|
date = fallbackDate;
|
|
275
353
|
}
|
|
276
354
|
addDaily(h, date, usage.model, usage.tokens, 1, target);
|
|
277
|
-
if (usage.hour !== null) {
|
|
278
|
-
addHourly(h, date, usage.hour, usage.model, usage.tokens, 1, target);
|
|
279
|
-
}
|
|
280
355
|
}
|
|
281
356
|
h.files[file.path] = { size: file.size, mtimeMs: file.mtimeMs, offset };
|
|
282
357
|
changed = true;
|
|
283
358
|
}
|
|
284
359
|
if (before)
|
|
285
360
|
markMovedDates(before, aggregatesOf(h), dirty);
|
|
361
|
+
if (rebuildPrompts) {
|
|
362
|
+
// The rebuilt aggregate replaces the old one, dirtying only what moved.
|
|
363
|
+
replacePromptActivity(state.prompts, prompts);
|
|
364
|
+
}
|
|
365
|
+
else if (src.parsePrompt) {
|
|
366
|
+
state.prompts.dirtySessions = [...dirtySessions];
|
|
367
|
+
state.prompts.dirtyDates = [...dirtyDates].sort();
|
|
368
|
+
}
|
|
286
369
|
return changed;
|
|
287
370
|
}
|
|
288
371
|
async function tickCodex(state, src, dirty) {
|
|
@@ -347,10 +430,15 @@ async function tickSqlite(state, src, dirty) {
|
|
|
347
430
|
}
|
|
348
431
|
/**
|
|
349
432
|
* One incremental pass over every harness. `prev` is the saved state, or null
|
|
350
|
-
* for a cold start — in which case this reads everything and marks
|
|
351
|
-
* dirty: those tokens are already on the server (the daily job put them
|
|
352
|
-
* and re-uploading every date would only invite the reconcile to prune
|
|
353
|
-
* this scan can't see (Cursor's, above all).
|
|
433
|
+
* for a cold start — in which case this reads everything and marks no *token*
|
|
434
|
+
* date dirty: those tokens are already on the server (the daily job put them
|
|
435
|
+
* there), and re-uploading every date would only invite the reconcile to prune
|
|
436
|
+
* rows this scan can't see (Cursor's, above all).
|
|
437
|
+
*
|
|
438
|
+
* Prompt rows go the other way on a cold start: everything found is marked
|
|
439
|
+
* dirty. They're idempotent GREATEST upserts, so a resend costs nothing, and a
|
|
440
|
+
* cold start (fresh install, or a state file this version can't read) is
|
|
441
|
+
* exactly the case where we have no evidence any of it ever reached the server.
|
|
354
442
|
*/
|
|
355
443
|
export async function runTick(prev, sources = defaultSources()) {
|
|
356
444
|
const cold = prev === null;
|
|
@@ -367,7 +455,14 @@ export async function runTick(prev, sources = defaultSources()) {
|
|
|
367
455
|
if (await tickSqlite(state, src, dirty))
|
|
368
456
|
changed = true;
|
|
369
457
|
}
|
|
370
|
-
|
|
458
|
+
if (cold) {
|
|
459
|
+
state.dirty = [];
|
|
460
|
+
state.prompts.dirtySessions = Object.keys(state.prompts.sessions);
|
|
461
|
+
state.prompts.dirtyDates = Object.keys(state.prompts.daily).sort();
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
state.dirty = [...dirty].sort();
|
|
465
|
+
}
|
|
371
466
|
return { state, changed };
|
|
372
467
|
}
|
|
373
468
|
// ---- payload ---------------------------------------------------------------
|
|
@@ -393,10 +488,52 @@ export function sameTotals(a, b) {
|
|
|
393
488
|
return false;
|
|
394
489
|
return true;
|
|
395
490
|
}
|
|
491
|
+
/**
|
|
492
|
+
* Is there prompt activity waiting to go out?
|
|
493
|
+
*
|
|
494
|
+
* A dirty id whose row is gone (pruned between the mark and the send) doesn't
|
|
495
|
+
* count: it would have the tick POST an empty block every minute forever, since
|
|
496
|
+
* there'd be nothing for `markUploaded` to clear.
|
|
497
|
+
*/
|
|
498
|
+
export function hasPromptActivity(state) {
|
|
499
|
+
const { prompts } = state;
|
|
500
|
+
return (prompts.dirtySessions.some((id) => prompts.sessions[id] !== undefined) ||
|
|
501
|
+
prompts.dirtyDates.some((date) => prompts.daily[date] !== undefined));
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* Stake a claim on the outstanding prompt rows: the ones this payload carries
|
|
505
|
+
* are recorded in `prompts.sent`, and `markUploaded` clears exactly those. Rows
|
|
506
|
+
* a cap held back stay dirty and go out next tick.
|
|
507
|
+
*
|
|
508
|
+
* Most-recently-active first, so a machine with a long backlog syncs the work
|
|
509
|
+
* the user actually cares about before the archaeology.
|
|
510
|
+
*/
|
|
511
|
+
function takePromptActivity(state) {
|
|
512
|
+
const { prompts } = state;
|
|
513
|
+
const sessions = prompts.dirtySessions
|
|
514
|
+
.flatMap((sessionId) => {
|
|
515
|
+
const session = prompts.sessions[sessionId];
|
|
516
|
+
return session ? [{ sessionId, ...session }] : [];
|
|
517
|
+
})
|
|
518
|
+
.sort((a, b) => b.lastActiveAt.localeCompare(a.lastActiveAt))
|
|
519
|
+
.slice(0, PROMPT_ACTIVITY_SESSION_CAP);
|
|
520
|
+
const dates = [...prompts.dirtyDates]
|
|
521
|
+
.sort((a, b) => b.localeCompare(a))
|
|
522
|
+
.slice(0, PROMPT_ACTIVITY_DATE_CAP);
|
|
523
|
+
const dailyPrompts = dates.flatMap((date) => {
|
|
524
|
+
const day = prompts.daily[date];
|
|
525
|
+
return day ? [{ date, ...day }] : [];
|
|
526
|
+
});
|
|
527
|
+
prompts.sent = { sessions: sessions.map((s) => s.sessionId), dates };
|
|
528
|
+
if (sessions.length === 0 && dailyPrompts.length === 0)
|
|
529
|
+
return undefined;
|
|
530
|
+
return { sessions, dailyPrompts };
|
|
531
|
+
}
|
|
396
532
|
/**
|
|
397
533
|
* What a tick uploads: cumulative tool/model totals (the server diffs those
|
|
398
|
-
* against its own per-machine snapshot) plus the daily
|
|
399
|
-
*
|
|
534
|
+
* against its own per-machine snapshot) plus the daily rows for the dirty dates
|
|
535
|
+
* only, and — under the `stats` or `full` tier — the outstanding prompt
|
|
536
|
+
* activity.
|
|
400
537
|
*
|
|
401
538
|
* Every harness's rows go out for a dirty date, including Cursor's — which the
|
|
402
539
|
* tick never scans, and carries over from the last full scan instead. The
|
|
@@ -404,10 +541,9 @@ export function sameTotals(a, b) {
|
|
|
404
541
|
* payload didn't mention, so a date has to be reported complete or the harnesses
|
|
405
542
|
* left out of it lose that day.
|
|
406
543
|
*/
|
|
407
|
-
export function tickPayload(state) {
|
|
544
|
+
export function tickPayload(state, opts = {}) {
|
|
408
545
|
const dirty = new Set(state.dirty);
|
|
409
546
|
const dailyTotals = [];
|
|
410
|
-
const hourlyTotals = [];
|
|
411
547
|
for (const [tool, h] of Object.entries(state.harnesses)) {
|
|
412
548
|
for (const [key, value] of Object.entries(h.daily)) {
|
|
413
549
|
const [date = '', model = ''] = key.split('|');
|
|
@@ -421,34 +557,36 @@ export function tickPayload(state) {
|
|
|
421
557
|
model: model || undefined,
|
|
422
558
|
});
|
|
423
559
|
}
|
|
424
|
-
for (const [key, value] of Object.entries(h.hourly)) {
|
|
425
|
-
const [date = '', hour = '0', model = ''] = key.split('|');
|
|
426
|
-
if (!dirty.has(date) || value.tokens <= 0)
|
|
427
|
-
continue;
|
|
428
|
-
hourlyTotals.push({
|
|
429
|
-
date,
|
|
430
|
-
hour: Number(hour),
|
|
431
|
-
tool,
|
|
432
|
-
model: model || undefined,
|
|
433
|
-
tokens: value.tokens,
|
|
434
|
-
messages: value.messages,
|
|
435
|
-
});
|
|
436
|
-
}
|
|
437
560
|
}
|
|
561
|
+
// Claim the prompt rows this payload carries, or drop a claim a previous
|
|
562
|
+
// payload left behind: a stale one would have `markUploaded` clear rows this
|
|
563
|
+
// upload never mentioned (a tier turned down to `none` between two ticks).
|
|
564
|
+
state.prompts.sent = undefined;
|
|
565
|
+
const promptActivity = opts.promptActivity
|
|
566
|
+
? takePromptActivity(state)
|
|
567
|
+
: undefined;
|
|
438
568
|
const { toolTotals, modelTotals } = cumulativeTotals(state);
|
|
439
569
|
return {
|
|
440
570
|
toolTotals,
|
|
441
571
|
dailyTotals,
|
|
442
|
-
hourlyTotals,
|
|
443
572
|
modelTotals,
|
|
444
573
|
grandTotal: Object.values(toolTotals).reduce((a, b) => a + b, 0),
|
|
445
574
|
cursorStats: null,
|
|
446
575
|
cursorScanStatus: { source: 'none' },
|
|
576
|
+
...(promptActivity ? { promptActivity } : {}),
|
|
447
577
|
};
|
|
448
578
|
}
|
|
449
|
-
/** Called on a 200:
|
|
579
|
+
/** Called on a 200: whatever that payload carried is on the server now. */
|
|
450
580
|
export function markUploaded(state) {
|
|
451
581
|
state.dirty = [];
|
|
582
|
+
const sent = state.prompts.sent;
|
|
583
|
+
if (sent) {
|
|
584
|
+
const sessions = new Set(sent.sessions);
|
|
585
|
+
const dates = new Set(sent.dates);
|
|
586
|
+
state.prompts.dirtySessions = state.prompts.dirtySessions.filter((id) => !sessions.has(id));
|
|
587
|
+
state.prompts.dirtyDates = state.prompts.dirtyDates.filter((date) => !dates.has(date));
|
|
588
|
+
state.prompts.sent = undefined;
|
|
589
|
+
}
|
|
452
590
|
state.uploaded = cumulativeTotals(state);
|
|
453
591
|
state.lastError = undefined;
|
|
454
592
|
state.nextAllowedAt = undefined;
|
|
@@ -471,11 +609,36 @@ async function snapshotFileCursors(h, paths) {
|
|
|
471
609
|
* the design. Whatever the tick's tail-follow got wrong (a rotated log, a
|
|
472
610
|
* mid-file model switch, a Codex date guessed from an mtime) is corrected here,
|
|
473
611
|
* so incremental drift can never outlive a day. Best-effort: a state we failed
|
|
474
|
-
* to rebuild costs a tick, never the sync that
|
|
612
|
+
* to rebuild costs a tick, never the sync that called us.
|
|
613
|
+
*
|
|
614
|
+
* Staged rather than persisted outright, because the full-scan paths carry
|
|
615
|
+
* prompt activity too — a machine with no daemon has no tick to drain it. The
|
|
616
|
+
* rebuild diffs the scan's aggregate against what was already sent, claims the
|
|
617
|
+
* difference for this upload, and only `commit` (on a 200) clears it. A failed
|
|
618
|
+
* POST therefore leaves every row dirty for the next run, which the server's
|
|
619
|
+
* GREATEST upserts make free to resend.
|
|
620
|
+
*
|
|
621
|
+
* `prompts` says whether this caller has any authority over the prompt state —
|
|
622
|
+
* see `StagedPrompts`. Only a caller that actually resolved the consent tier
|
|
623
|
+
* gets to rewrite it, and only such a caller claims prompt rows for the upload.
|
|
475
624
|
*/
|
|
476
|
-
export async function
|
|
625
|
+
export async function stageFullScan(results, prompts = 'untouched', sources = defaultSources()) {
|
|
626
|
+
const nothingStaged = {
|
|
627
|
+
commit: async () => {
|
|
628
|
+
// Nothing was staged, so there is nothing to record as delivered.
|
|
629
|
+
},
|
|
630
|
+
};
|
|
477
631
|
try {
|
|
632
|
+
const previous = await loadScanState();
|
|
478
633
|
const state = emptyState();
|
|
634
|
+
state.prompts = previous?.prompts ?? emptyPromptState();
|
|
635
|
+
// Nothing is claimed as in-flight any more: whatever the last upload sent
|
|
636
|
+
// was either acked (and cleared) or lost. A caller with authority re-derives
|
|
637
|
+
// the claim below; one without leaves the rows dirty for the tick.
|
|
638
|
+
state.prompts.sent = undefined;
|
|
639
|
+
if (prompts !== 'untouched') {
|
|
640
|
+
replacePromptActivity(state.prompts, prompts.scanned ?? emptyPromptActivity());
|
|
641
|
+
}
|
|
479
642
|
for (const result of results) {
|
|
480
643
|
replaceAggregates(harness(state, result.tool), aggregatesOfResult(result), new Set());
|
|
481
644
|
}
|
|
@@ -509,12 +672,27 @@ export async function rebuildScanState(results, sources = defaultSources()) {
|
|
|
509
672
|
h.dbMtimeMs = (await statOrNull(path))?.mtimeMs ?? 0;
|
|
510
673
|
h.walMtimeMs = (await statOrNull(`${path}-wal`))?.mtimeMs ?? 0;
|
|
511
674
|
}
|
|
512
|
-
//
|
|
513
|
-
|
|
514
|
-
|
|
675
|
+
// Only a caller that knows the tier may put prompt rows on the wire. For
|
|
676
|
+
// anyone else `sent` stays empty, so `commit` clears no prompt rows either.
|
|
677
|
+
const claimed = prompts === 'untouched' ? undefined : takePromptActivity(state);
|
|
678
|
+
return {
|
|
679
|
+
...(claimed ? { promptActivity: claimed } : {}),
|
|
680
|
+
commit: async () => {
|
|
681
|
+
try {
|
|
682
|
+
// The full token payload just went out, and the server took the
|
|
683
|
+
// prompt rows this upload claimed — markUploaded records both.
|
|
684
|
+
markUploaded(state);
|
|
685
|
+
await saveScanState(state);
|
|
686
|
+
}
|
|
687
|
+
catch {
|
|
688
|
+
// never fail the sync that called us
|
|
689
|
+
}
|
|
690
|
+
},
|
|
691
|
+
};
|
|
515
692
|
}
|
|
516
693
|
catch {
|
|
517
694
|
// never fail the sync that called us
|
|
695
|
+
return nothingStaged;
|
|
518
696
|
}
|
|
519
697
|
}
|
|
520
698
|
//# sourceMappingURL=incremental.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../src/scanners/incremental.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../src/scanners/incremental.ts"],"names":[],"mappings":"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"}
|
package/dist/scanners/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CursorScanStatus, type CursorStats, type DailyToolEntry, type
|
|
1
|
+
import { type CursorScanStatus, type CursorStats, type DailyToolEntry, type PromptActivity, type ScanResult } from './util.js';
|
|
2
2
|
export * from './util.js';
|
|
3
3
|
export declare function claudeProjectsDir(): string;
|
|
4
4
|
export declare function codexSessionsDir(): string;
|
|
@@ -24,7 +24,6 @@ export type UsageLine = {
|
|
|
24
24
|
tokens: number;
|
|
25
25
|
model: string;
|
|
26
26
|
date: string | null;
|
|
27
|
-
hour: number | null;
|
|
28
27
|
};
|
|
29
28
|
export declare function parseClaudeCodeLine(line: string): UsageLine | null;
|
|
30
29
|
/** Every Claude Code transcript on this machine. */
|
|
@@ -85,10 +84,15 @@ export declare function scanCursorApi(): Promise<ScanResult>;
|
|
|
85
84
|
export type AggregateScan = {
|
|
86
85
|
toolTotals: Record<string, number>;
|
|
87
86
|
dailyTotals: DailyToolEntry[];
|
|
88
|
-
hourlyTotals: HourlyEntry[];
|
|
89
87
|
modelTotals: Record<string, number>;
|
|
90
88
|
/** Per-tool model breakdown. Optional on older incremental payloads. */
|
|
91
89
|
modelsByTool?: Record<string, Record<string, number>>;
|
|
90
|
+
/**
|
|
91
|
+
* Prompt metadata, filled in by the tick under the `stats`/`full` tier of
|
|
92
|
+
* `promptSync`. Absent at `none`, and absent on a full scan — which has no
|
|
93
|
+
* incremental dirty set to drain.
|
|
94
|
+
*/
|
|
95
|
+
promptActivity?: PromptActivity;
|
|
92
96
|
grandTotal: number;
|
|
93
97
|
cursorStats: CursorStats | null;
|
|
94
98
|
cursorScanStatus: CursorScanStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EAGnB,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"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"}
|