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.
Files changed (44) hide show
  1. package/README.md +44 -25
  2. package/dist/cli.js +1 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/config.d.ts.map +1 -1
  5. package/dist/commands/config.js +18 -19
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/scan.d.ts.map +1 -1
  8. package/dist/commands/scan.js +5 -2
  9. package/dist/commands/scan.js.map +1 -1
  10. package/dist/commands/setup.d.ts.map +1 -1
  11. package/dist/commands/setup.js +32 -26
  12. package/dist/commands/setup.js.map +1 -1
  13. package/dist/commands/sync.d.ts.map +1 -1
  14. package/dist/commands/sync.js +32 -17
  15. package/dist/commands/sync.js.map +1 -1
  16. package/dist/config.d.ts +8 -2
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +1 -1
  19. package/dist/config.js.map +1 -1
  20. package/dist/prompt-consent.d.ts +37 -23
  21. package/dist/prompt-consent.d.ts.map +1 -1
  22. package/dist/prompt-consent.js +75 -58
  23. package/dist/prompt-consent.js.map +1 -1
  24. package/dist/prompt-stats.d.ts +149 -7
  25. package/dist/prompt-stats.d.ts.map +1 -1
  26. package/dist/prompt-stats.js +288 -28
  27. package/dist/prompt-stats.js.map +1 -1
  28. package/dist/scanners/incremental.d.ts +131 -17
  29. package/dist/scanners/incremental.d.ts.map +1 -1
  30. package/dist/scanners/incremental.js +252 -74
  31. package/dist/scanners/incremental.js.map +1 -1
  32. package/dist/scanners/index.d.ts +7 -3
  33. package/dist/scanners/index.d.ts.map +1 -1
  34. package/dist/scanners/index.js +8 -40
  35. package/dist/scanners/index.js.map +1 -1
  36. package/dist/scanners/util.d.ts +32 -15
  37. package/dist/scanners/util.d.ts.map +1 -1
  38. package/dist/scanners/util.js +10 -34
  39. package/dist/scanners/util.js.map +1 -1
  40. package/dist/sync.d.ts +3 -3
  41. package/dist/sync.d.ts.map +1 -1
  42. package/dist/sync.js +32 -14
  43. package/dist/sync.js.map +1 -1
  44. 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, hourlyCutoff, openclawFiles, opencodeDbPath, parseClaudeCodeLine, parseGrokLine, parseOpenclawLine, scanHermes, scanOpenCode, toDateStr, } from './index.js';
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
- export const SCAN_STATE_VERSION = 1;
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: {}, hourly: {}, models: {} };
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
- /** Persist the state, pruning hourly buckets that fell out of the 90-day window
64
- * the server keeps (they'd otherwise accumulate forever). Best-effort. */
65
- export async function saveScanState(state) {
66
- const cutoff = hourlyCutoff();
67
- for (const h of Object.values(state.harnesses)) {
68
- for (const key of Object.keys(h.hourly)) {
69
- if ((key.split('|')[0] ?? '') < cutoff)
70
- delete h.hourly[key];
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
- const hourly = {};
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, hourly: h.hourly, models: h.models }, next, dirty);
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 nothing
351
- * dirty: those tokens are already on the server (the daily job put them there),
352
- * and re-uploading every date would only invite the reconcile to prune rows
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
- state.dirty = cold ? [] : [...dirty].sort();
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 and hourly rows for the
399
- * dirty dates only.
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: the dirty dates are on the server now. */
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 just succeeded.
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 rebuildScanState(results, sources = defaultSources()) {
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
- // The full payload just went out, so nothing is outstanding.
513
- state.uploaded = cumulativeTotals(state);
514
- await saveScanState(state);
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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"}
@@ -1,4 +1,4 @@
1
- import { type CursorScanStatus, type CursorStats, type DailyToolEntry, type HourlyEntry, type ScanResult } from './util.js';
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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"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"}