@newrelic/preflight 1.69.0 → 1.71.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 (65) hide show
  1. package/README.md +2 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +7 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/dashboard/routes/api-handler.d.ts.map +1 -1
  6. package/dist/dashboard/routes/api-handler.js +9 -7
  7. package/dist/dashboard/routes/api-handler.js.map +1 -1
  8. package/dist/hooks/collector-script.d.ts.map +1 -1
  9. package/dist/hooks/collector-script.js +14 -8
  10. package/dist/hooks/collector-script.js.map +1 -1
  11. package/dist/hooks/copilot-app-usage-watcher.d.ts.map +1 -1
  12. package/dist/hooks/copilot-app-usage-watcher.js +3 -4
  13. package/dist/hooks/copilot-app-usage-watcher.js.map +1 -1
  14. package/dist/hooks/copilot-usage-watcher.d.ts +25 -5
  15. package/dist/hooks/copilot-usage-watcher.d.ts.map +1 -1
  16. package/dist/hooks/copilot-usage-watcher.js +254 -92
  17. package/dist/hooks/copilot-usage-watcher.js.map +1 -1
  18. package/dist/hooks/event-processor.d.ts +4 -6
  19. package/dist/hooks/event-processor.d.ts.map +1 -1
  20. package/dist/hooks/event-processor.js +4 -6
  21. package/dist/hooks/event-processor.js.map +1 -1
  22. package/dist/hooks/parent-transcript-watcher.d.ts.map +1 -1
  23. package/dist/hooks/parent-transcript-watcher.js +5 -4
  24. package/dist/hooks/parent-transcript-watcher.js.map +1 -1
  25. package/dist/hooks/subagent-watcher.d.ts +18 -14
  26. package/dist/hooks/subagent-watcher.d.ts.map +1 -1
  27. package/dist/hooks/subagent-watcher.js +83 -69
  28. package/dist/hooks/subagent-watcher.js.map +1 -1
  29. package/dist/hooks/throttled-warning.d.ts +5 -5
  30. package/dist/hooks/throttled-warning.d.ts.map +1 -1
  31. package/dist/hooks/throttled-warning.js +14 -12
  32. package/dist/hooks/throttled-warning.js.map +1 -1
  33. package/dist/index.js +4 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/install/cli.d.ts.map +1 -1
  36. package/dist/install/cli.js +51 -11
  37. package/dist/install/cli.js.map +1 -1
  38. package/dist/install/credentials.d.ts +23 -0
  39. package/dist/install/credentials.d.ts.map +1 -0
  40. package/dist/install/credentials.js +57 -0
  41. package/dist/install/credentials.js.map +1 -0
  42. package/dist/install/setup-wizard.d.ts.map +1 -1
  43. package/dist/install/setup-wizard.js +3 -3
  44. package/dist/install/setup-wizard.js.map +1 -1
  45. package/dist/metrics/local-session-aggregator.d.ts +4 -4
  46. package/dist/metrics/local-session-aggregator.d.ts.map +1 -1
  47. package/dist/metrics/local-session-aggregator.js +13 -6
  48. package/dist/metrics/local-session-aggregator.js.map +1 -1
  49. package/dist/storage/drain-claims.d.ts +59 -0
  50. package/dist/storage/drain-claims.d.ts.map +1 -0
  51. package/dist/storage/drain-claims.js +174 -0
  52. package/dist/storage/drain-claims.js.map +1 -0
  53. package/dist/storage/hook-buffer.d.ts +7 -0
  54. package/dist/storage/hook-buffer.d.ts.map +1 -0
  55. package/dist/storage/hook-buffer.js +132 -0
  56. package/dist/storage/hook-buffer.js.map +1 -0
  57. package/dist/storage/local-store.d.ts +17 -16
  58. package/dist/storage/local-store.d.ts.map +1 -1
  59. package/dist/storage/local-store.js +128 -71
  60. package/dist/storage/local-store.js.map +1 -1
  61. package/dist/storage/session-store.d.ts +21 -6
  62. package/dist/storage/session-store.d.ts.map +1 -1
  63. package/dist/storage/session-store.js +13 -11
  64. package/dist/storage/session-store.js.map +1 -1
  65. package/package.json +1 -1
@@ -24,16 +24,18 @@
24
24
  *
25
25
  * Tailing/cursor mechanics mirror `ParentTranscriptWatcher`: durable byte
26
26
  * cursor per session (`.copilot-usage-pos-<sessionId>`), bounded reads per
27
- * poll, bounded partial-line carry, duplicate emissions after a crash are
28
- * deduped downstream by (sessionId, messageId) in
29
- * `HookEventProcessor.handleTokenEvent()` — `responseId` serves as the
30
- * message id.
27
+ * poll, bounded partial-line carry, and each `responseId` claimed in the
28
+ * BilledTurnLedger before it is buffered, so a re-read after a crash or a torn
29
+ * cursor emits nothing already emitted.
31
30
  */
32
- import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, statSync, writeFileSync, } from 'node:fs';
31
+ import { closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, statSync, writeFileSync, } from 'node:fs';
33
32
  import { homedir } from 'node:os';
34
33
  import { join } from 'node:path';
35
34
  import { StringDecoder } from 'node:string_decoder';
36
35
  import { createLogger } from '../shared/index.js';
36
+ import { appendToHookBuffer } from '../storage/hook-buffer.js';
37
+ import { BilledTurnLedger } from './billed-turn-ledger.js';
38
+ import { ThrottledWarning } from './throttled-warning.js';
37
39
  const logger = createLogger('copilot-usage-watcher');
38
40
  // ---------------------------------------------------------------------------
39
41
  // Constants
@@ -47,6 +49,15 @@ const DEFAULT_DISCOVERY_HOURS = 24;
47
49
  const MAX_BYTES_PER_POLL = 1024 * 1024;
48
50
  /** See SubagentWatcher's identical constant for the OOM-bug rationale this guards against. */
49
51
  const MAX_PARTIAL_LINE_BYTES = 4 * 1024 * 1024; // 4 MiB — sized to the larger log lines
52
+ // A line past the cap is not dropped: its head and tail windows are kept and
53
+ // the middle is elided, so memory stays bounded while the usage fields, which
54
+ // sit near the line's ends, are still extracted when the line completes.
55
+ const ELIDE_KEEP_CHARS = 64 * 1024;
56
+ // A raw JSONL line cannot contain a literal NUL, so the mark is unambiguous.
57
+ const ELIDE_MARK = '\u0000ELIDED\u0000';
58
+ // A replaced log is recognised by its first bytes, not its size or inode: a new
59
+ // file can be larger than the old cursor, and ext4 reuses freed inodes.
60
+ const FINGERPRINT_BYTES = 256;
50
61
  const SESSION_ID_RE = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
51
62
  const COPILOT_LOG_SUBPATH = join('GitHub.copilot-chat', 'debug-logs');
52
63
  /**
@@ -91,13 +102,17 @@ export class CopilotUsageWatcher {
91
102
  discoveryHours;
92
103
  parentSessionFilter;
93
104
  localStore;
105
+ ledger;
106
+ retryWarning = new ThrottledWarning(logger, 'CopilotUsageWatcher read deferred to the next poll');
94
107
  intervalId = null;
108
+ bytePosBySession = new Map();
95
109
  partialByPath = new Map();
96
110
  decoderByPath = new Map();
97
111
  filesWatched = 0;
98
112
  linesRead = 0;
99
113
  bytesRead = 0;
100
114
  parseErrors = 0;
115
+ warnedElided = false;
101
116
  debugLoggingLikelyDisabled = false;
102
117
  warnedDebugLoggingDisabled = false;
103
118
  constructor(options = {}) {
@@ -107,6 +122,7 @@ export class CopilotUsageWatcher {
107
122
  this.discoveryHours = options.discoveryHours ?? DEFAULT_DISCOVERY_HOURS;
108
123
  this.parentSessionFilter = options.parentSessionId ?? null;
109
124
  this.localStore = options.localStore;
125
+ this.ledger = options.ledger ?? new BilledTurnLedger({ storagePath: this.storagePath });
110
126
  }
111
127
  start() {
112
128
  if (this.intervalId !== null)
@@ -202,8 +218,11 @@ export class CopilotUsageWatcher {
202
218
  continue;
203
219
  // Scoped mode always tails its own session; unscoped applies the
204
220
  // recency window so old logs don't trigger unbounded cold scans.
205
- if (this.parentSessionFilter === null && st.mtimeMs < cutoffMs)
221
+ if (this.parentSessionFilter === null &&
222
+ st.mtimeMs < cutoffMs &&
223
+ !this.hasUnreadBytes(sessionId, st.size)) {
206
224
  continue;
225
+ }
207
226
  }
208
227
  catch {
209
228
  continue;
@@ -232,9 +251,7 @@ export class CopilotUsageWatcher {
232
251
  const cursorPath = this.cursorPath(dirSessionId);
233
252
  const persisted = this.readCursor(cursorPath);
234
253
  const memPartial = this.partialByPath.get(path);
235
- const startCursor = memPartial !== undefined
236
- ? { bytePos: persisted.bytePos, partialLine: memPartial }
237
- : persisted;
254
+ let startCursor = memPartial !== undefined ? { ...persisted, partialLine: memPartial } : persisted;
238
255
  let size;
239
256
  try {
240
257
  size = statSync(path).size;
@@ -242,29 +259,51 @@ export class CopilotUsageWatcher {
242
259
  catch {
243
260
  return;
244
261
  }
245
- // Truncated/rotated file: restart from 0.
246
- const fromPos = startCursor.bytePos > size ? 0 : startCursor.bytePos;
247
- if (fromPos >= size)
248
- return;
249
- const toRead = Math.min(size - fromPos, MAX_BYTES_PER_POLL);
250
- const buf = Buffer.alloc(toRead);
251
- let actuallyRead = 0;
252
- let fd = null;
262
+ let fd;
253
263
  try {
254
264
  fd = openSync(path, 'r');
255
- actuallyRead = readSync(fd, buf, 0, toRead, fromPos);
265
+ }
266
+ catch (err) {
267
+ this.recordError(err);
268
+ return;
269
+ }
270
+ let fingerprint;
271
+ let fromPos;
272
+ let buf;
273
+ try {
274
+ const head = readAt(fd, 0, Math.min(size, FINGERPRINT_BYTES));
275
+ // Truncated or replaced file: restart from 0, and drop the carried partial
276
+ // line and decoder state, which belong to the old file's bytes. A cursor
277
+ // without a fingerprint can only detect truncation.
278
+ const knownHead = startCursor.fingerprint === undefined
279
+ ? null
280
+ : Buffer.from(startCursor.fingerprint, 'base64');
281
+ const replaced = knownHead !== null && !onePrefixesOther(head, knownHead);
282
+ if (startCursor.bytePos > size || replaced) {
283
+ startCursor = { bytePos: 0, partialLine: '' };
284
+ this.partialByPath.delete(path);
285
+ this.decoderByPath.delete(path);
286
+ }
287
+ fingerprint = (knownHead !== null && !replaced && knownHead.length > head.length ? knownHead : head).toString('base64');
288
+ fromPos = startCursor.bytePos;
289
+ if (fromPos >= size) {
290
+ this.bytePosBySession.set(dirSessionId, fromPos);
291
+ return;
292
+ }
293
+ buf = readAt(fd, fromPos, Math.min(size - fromPos, MAX_BYTES_PER_POLL));
256
294
  }
257
295
  catch (err) {
258
296
  this.recordError(err);
259
297
  return;
260
298
  }
261
299
  finally {
262
- if (fd !== null)
263
- closeSync(fd);
300
+ closeSync(fd);
264
301
  }
265
- if (actuallyRead <= 0)
302
+ const actuallyRead = buf.length;
303
+ if (actuallyRead <= 0) {
304
+ this.bytePosBySession.set(dirSessionId, fromPos);
266
305
  return;
267
- this.bytesRead += actuallyRead;
306
+ }
268
307
  let decoder = this.decoderByPath.get(path);
269
308
  if (!decoder) {
270
309
  decoder = new StringDecoder('utf8');
@@ -279,47 +318,77 @@ export class CopilotUsageWatcher {
279
318
  lines = combined.slice(0, lastNewline).split('\n');
280
319
  newPartial = combined.slice(lastNewline + 1);
281
320
  }
282
- if (newPartial.length > MAX_PARTIAL_LINE_BYTES) {
283
- newPartial = '';
284
- this.parseErrors += 1;
285
- }
321
+ newPartial = elideOversize(newPartial);
322
+ // Health counters wait until the read is committed, so a redone read counts once.
323
+ const recordsBySession = new Map();
324
+ let linesRead = 0;
325
+ let parseErrors = 0;
286
326
  for (const line of lines) {
287
327
  if (!line)
288
328
  continue;
289
- this.linesRead += 1;
290
- const parsed = this.tryParseLine(line);
329
+ linesRead += 1;
330
+ const { parsed, parseError } = line.includes(ELIDE_MARK)
331
+ ? this.parseElidedLine(line)
332
+ : this.tryParseLine(line);
333
+ if (parseError)
334
+ parseErrors += 1;
291
335
  if (parsed === null)
292
336
  continue;
293
337
  const sessionId = parsed.sessionId ?? dirSessionId;
294
- this.appendToBuffer(sessionId, {
295
- mode: 'token',
296
- tool: 'copilot-usage',
297
- timestamp: parsed.timestampMs,
298
- sessionId,
299
- messageId: parsed.responseId,
300
- model: parsed.model,
301
- // VS Code's inputTokens is cache-INCLUSIVE (verified against a real
302
- // main.jsonl: each request's cachedTokens ≈ the previous request's
303
- // inputTokens). CostTracker follows the Anthropic convention where
304
- // input excludes cache reads, so emit only the uncached remainder —
305
- // otherwise cached tokens are double-billed at full input rate.
306
- inputTokens: Math.max(0, parsed.inputTokens - parsed.cachedTokens),
307
- outputTokens: parsed.outputTokens,
308
- // `cachedTokens` is the only cache figure the debug-log schema exposes,
309
- // and it is cache-READ (confirmed against a real main.jsonl: it tracks
310
- // the previous request's input). KNOWN ESTIMATION GAP: VS Code does not
311
- // surface cache-CREATION (cache-write) tokens separately, so any turn
312
- // with a fresh cache write has those tokens folded into `inputTokens`
313
- // above and billed at the base input rate instead of the premium
314
- // `cacheCreationPerMTok` rate (src/shared/pricing.ts). This causes a
315
- // small, consistent UNDER-billing on cache-write turns. We report 0
316
- // rather than guess a split the source doesn't provide; revisit if VS
317
- // Code adds a cache-creation field to the schema.
318
- cacheReadTokens: parsed.cachedTokens,
319
- cacheCreationTokens: 0,
320
- });
338
+ const group = recordsBySession.get(sessionId);
339
+ if (group)
340
+ group.push(parsed);
341
+ else
342
+ recordsBySession.set(sessionId, [parsed]);
343
+ }
344
+ // If the claim, an append or the cursor write fails, the cursor stays put
345
+ // and the next poll redoes the read: the ledger hands back the records
346
+ // still owed and refuses the ones already appended.
347
+ try {
348
+ for (const [sessionId, records] of recordsBySession) {
349
+ this.ledger.deliver(sessionId, records, (parsed) => {
350
+ this.appendToBuffer(sessionId, {
351
+ mode: 'token',
352
+ tool: 'copilot-usage',
353
+ timestamp: parsed.timestampMs,
354
+ sessionId,
355
+ messageId: parsed.messageId,
356
+ model: parsed.model,
357
+ // VS Code's inputTokens is cache-INCLUSIVE (verified against a real
358
+ // main.jsonl: each request's cachedTokens ≈ the previous request's
359
+ // inputTokens). CostTracker follows the Anthropic convention where
360
+ // input excludes cache reads, so emit only the uncached remainder —
361
+ // otherwise cached tokens are double-billed at full input rate.
362
+ inputTokens: Math.max(0, parsed.inputTokens - parsed.cachedTokens),
363
+ outputTokens: parsed.outputTokens,
364
+ // `cachedTokens` is the only cache figure the debug-log schema exposes,
365
+ // and it is cache-READ (confirmed against a real main.jsonl: it tracks
366
+ // the previous request's input). KNOWN ESTIMATION GAP: VS Code does not
367
+ // surface cache-CREATION (cache-write) tokens separately, so any turn
368
+ // with a fresh cache write has those tokens folded into `inputTokens`
369
+ // above and billed at the base input rate instead of the premium
370
+ // `cacheCreationPerMTok` rate (src/shared/pricing.ts). This causes a
371
+ // small, consistent UNDER-billing on cache-write turns. We report 0
372
+ // rather than guess a split the source doesn't provide; revisit if VS
373
+ // Code adds a cache-creation field to the schema.
374
+ cacheReadTokens: parsed.cachedTokens,
375
+ cacheCreationTokens: 0,
376
+ });
377
+ });
378
+ }
379
+ this.writeCursor(cursorPath, nextBytePos, newPartial, fingerprint);
321
380
  }
322
- this.writeCursor(cursorPath, nextBytePos, newPartial);
381
+ catch (err) {
382
+ this.retryWarning.warn(err, path);
383
+ this.partialByPath.delete(path);
384
+ this.decoderByPath.delete(path);
385
+ return;
386
+ }
387
+ this.retryWarning.succeeded(path);
388
+ this.bytePosBySession.set(dirSessionId, nextBytePos);
389
+ this.bytesRead += actuallyRead;
390
+ this.linesRead += linesRead;
391
+ this.parseErrors += parseErrors;
323
392
  if (newPartial.length > 0)
324
393
  this.partialByPath.set(path, newPartial);
325
394
  else
@@ -339,44 +408,102 @@ export class CopilotUsageWatcher {
339
408
  }
340
409
  }
341
410
  /**
342
- * Parse a debug-log JSONL line, returning non-null only for an
411
+ * Parse a debug-log JSONL line; `parsed` is non-null only for an
343
412
  * `llm_request` record carrying a model, responseId, and token counts.
344
413
  */
345
414
  tryParseLine(line) {
346
- let parsed;
415
+ let json;
347
416
  try {
348
- parsed = JSON.parse(line);
417
+ json = JSON.parse(line);
349
418
  }
350
419
  catch {
351
- this.parseErrors += 1;
352
- return null;
420
+ return { parsed: null, parseError: true };
353
421
  }
354
- if (!parsed || typeof parsed !== 'object')
355
- return null;
356
- const obj = parsed;
422
+ const none = { parsed: null, parseError: false };
423
+ if (!json || typeof json !== 'object')
424
+ return none;
425
+ const obj = json;
357
426
  if (obj.type !== 'llm_request')
358
- return null;
427
+ return none;
359
428
  const attrs = obj.attrs;
360
429
  if (!attrs || typeof attrs !== 'object')
361
- return null;
430
+ return none;
362
431
  const a = attrs;
363
432
  const model = typeof a.model === 'string' && a.model.length > 0 ? a.model : null;
364
433
  if (!model)
365
- return null;
434
+ return none;
366
435
  const responseId = typeof a.responseId === 'string' && a.responseId.length > 0 ? a.responseId : null;
367
436
  if (!responseId)
368
- return null;
369
- const timestampMs = typeof obj.ts === 'number' && Number.isFinite(obj.ts) && obj.ts > 0 ? obj.ts : Date.now();
437
+ return none;
438
+ const ts = typeof obj.ts === 'number' && Number.isFinite(obj.ts) && obj.ts > 0 ? obj.ts : null;
370
439
  const sid = typeof obj.sid === 'string' && SESSION_ID_RE.test(obj.sid) ? obj.sid : null;
371
- return {
372
- timestampMs,
440
+ const parsed = {
441
+ timestampMs: ts ?? Date.now(),
442
+ undated: ts === null,
373
443
  sessionId: sid,
374
- responseId,
444
+ messageId: responseId,
375
445
  model,
376
446
  inputTokens: num(a.inputTokens),
377
447
  outputTokens: num(a.outputTokens),
378
448
  cachedTokens: num(a.cachedTokens),
379
449
  };
450
+ return { parsed, parseError: false };
451
+ }
452
+ /**
453
+ * Extract usage fields from a line whose middle was elided. Only scalar
454
+ * fields are matched, and an escaped quote inside a string payload never
455
+ * matches the unescaped patterns below. A field that fell in the elided
456
+ * middle yields no record: a guessed zero-token record would misreport cost.
457
+ */
458
+ parseElidedLine(line) {
459
+ const at = line.indexOf(ELIDE_MARK);
460
+ const head = line.slice(0, at);
461
+ const tail = line.slice(at + ELIDE_MARK.length);
462
+ // The same field in both windows with different values is ambiguous, for
463
+ // example a nested object carrying its own `model`. Refuse it instead of
464
+ // guessing which one is the request's.
465
+ let ambiguous = false;
466
+ const find = (re) => {
467
+ const inHead = re.exec(head)?.[1] ?? null;
468
+ const inTail = re.exec(tail)?.[1] ?? null;
469
+ if (inHead !== null && inTail !== null && inHead !== inTail)
470
+ ambiguous = true;
471
+ return inHead ?? inTail;
472
+ };
473
+ if (find(/("type":"llm_request")/) === null)
474
+ return { parsed: null, parseError: false };
475
+ // A number must end at a delimiter, or a value cut by the head boundary
476
+ // would match its leading digits.
477
+ const findNumber = (name) => {
478
+ const raw = find(new RegExp(`"${name}":(\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)(?=[,}\\s])`));
479
+ return raw === null ? null : num(Number(raw));
480
+ };
481
+ const model = find(/"model":"([^"\\]+)"/);
482
+ const responseId = find(/"responseId":"([^"\\]+)"/);
483
+ const inputTokens = findNumber('inputTokens');
484
+ const outputTokens = findNumber('outputTokens');
485
+ const cachedTokens = findNumber('cachedTokens');
486
+ if (ambiguous || !model || !responseId || inputTokens === null || outputTokens === null) {
487
+ if (!this.warnedElided) {
488
+ this.warnedElided = true;
489
+ logger.warn('Skipped an oversize Copilot log line whose usage fields were not recoverable');
490
+ }
491
+ return { parsed: null, parseError: true };
492
+ }
493
+ const ts = Number(/"ts":(\d+)/.exec(head)?.[1]);
494
+ const dated = Number.isFinite(ts) && ts > 0;
495
+ const sid = /"sid":"([^"\\]+)"/.exec(head)?.[1];
496
+ const parsed = {
497
+ timestampMs: dated ? ts : Date.now(),
498
+ undated: !dated,
499
+ sessionId: sid !== undefined && SESSION_ID_RE.test(sid) ? sid : null,
500
+ messageId: responseId,
501
+ model,
502
+ inputTokens,
503
+ outputTokens,
504
+ cachedTokens: cachedTokens ?? 0,
505
+ };
506
+ return { parsed, parseError: false };
380
507
  }
381
508
  // -------------------------------------------------------------------------
382
509
  // Buffer + cursor I/O
@@ -384,6 +511,23 @@ export class CopilotUsageWatcher {
384
511
  cursorPath(sessionId) {
385
512
  return join(this.storagePath, `.copilot-usage-pos-${sessionId}`);
386
513
  }
514
+ /**
515
+ * True when a cursor exists and the file has bytes past it. An existing
516
+ * cursor is read from disk once per session and tailFile keeps the cached
517
+ * position current, so the 2s poll does not re-read every old session's
518
+ * cursor file. Absence is not cached: another process may create the cursor.
519
+ */
520
+ hasUnreadBytes(sessionId, size) {
521
+ let bytePos = this.bytePosBySession.get(sessionId);
522
+ if (bytePos === undefined) {
523
+ const cursorPath = this.cursorPath(sessionId);
524
+ if (!existsSync(cursorPath))
525
+ return false;
526
+ bytePos = this.readCursor(cursorPath).bytePos;
527
+ this.bytePosBySession.set(sessionId, bytePos);
528
+ }
529
+ return bytePos < size;
530
+ }
387
531
  readCursor(cursorPath) {
388
532
  if (!existsSync(cursorPath))
389
533
  return { bytePos: 0, partialLine: '' };
@@ -391,36 +535,27 @@ export class CopilotUsageWatcher {
391
535
  const parsed = JSON.parse(readFileSync(cursorPath, 'utf-8').trim());
392
536
  const bytePos = typeof parsed.bytePos === 'number' && parsed.bytePos >= 0 ? parsed.bytePos : 0;
393
537
  const partialLine = typeof parsed.partialLine === 'string' ? parsed.partialLine : '';
394
- return { bytePos, partialLine };
538
+ const fingerprint = typeof parsed.fingerprint === 'string' ? parsed.fingerprint : undefined;
539
+ return { bytePos, partialLine, fingerprint };
395
540
  }
396
541
  catch {
397
542
  return { bytePos: 0, partialLine: '' };
398
543
  }
399
544
  }
400
- writeCursor(cursorPath, bytePos, partialLine) {
401
- try {
402
- if (!existsSync(this.storagePath)) {
403
- mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
404
- }
405
- writeFileSync(cursorPath, JSON.stringify({ bytePos, partialLine }), { mode: 0o600 });
406
- }
407
- catch (err) {
408
- this.recordError(err);
545
+ writeCursor(cursorPath, bytePos, partialLine, fingerprint) {
546
+ if (!existsSync(this.storagePath)) {
547
+ mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
409
548
  }
549
+ writeFileSync(cursorPath, JSON.stringify({ bytePos, partialLine, fingerprint }), {
550
+ mode: 0o600,
551
+ });
410
552
  }
411
553
  /** Append into the session's hook buffer, same path convention as the collector. */
412
554
  appendToBuffer(sessionId, event) {
413
- try {
414
- if (!existsSync(this.storagePath)) {
415
- mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
416
- }
417
- appendFileSync(join(this.storagePath, `buffer-${sessionId}.jsonl`), JSON.stringify(event) + '\n', {
418
- mode: 0o600,
419
- });
420
- }
421
- catch (err) {
422
- this.recordError(err);
555
+ if (!existsSync(this.storagePath)) {
556
+ mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
423
557
  }
558
+ appendToHookBuffer(join(this.storagePath, `buffer-${sessionId}.jsonl`), JSON.stringify(event) + '\n');
424
559
  }
425
560
  recordError(err) {
426
561
  const message = err instanceof Error ? err.message : String(err);
@@ -430,6 +565,33 @@ export class CopilotUsageWatcher {
430
565
  // ---------------------------------------------------------------------------
431
566
  // Helpers
432
567
  // ---------------------------------------------------------------------------
568
+ /**
569
+ * Bound a carried partial line. Past the cap, keep the first and last
570
+ * ELIDE_KEEP_CHARS and replace the middle with ELIDE_MARK.
571
+ */
572
+ function elideOversize(partial) {
573
+ const at = partial.indexOf(ELIDE_MARK);
574
+ if (at === -1) {
575
+ if (partial.length <= MAX_PARTIAL_LINE_BYTES)
576
+ return partial;
577
+ return (partial.slice(0, ELIDE_KEEP_CHARS) +
578
+ ELIDE_MARK +
579
+ partial.slice(partial.length - ELIDE_KEEP_CHARS));
580
+ }
581
+ const tailStart = at + ELIDE_MARK.length;
582
+ if (partial.length - tailStart <= 2 * ELIDE_KEEP_CHARS)
583
+ return partial;
584
+ return partial.slice(0, tailStart) + partial.slice(partial.length - ELIDE_KEEP_CHARS);
585
+ }
586
+ function readAt(fd, pos, len) {
587
+ const buf = Buffer.alloc(len);
588
+ const n = len === 0 ? 0 : readSync(fd, buf, 0, len, pos);
589
+ return n === len ? buf : buf.subarray(0, n);
590
+ }
591
+ function onePrefixesOther(a, b) {
592
+ const n = Math.min(a.length, b.length);
593
+ return a.subarray(0, n).equals(b.subarray(0, n));
594
+ }
433
595
  function num(v) {
434
596
  return typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : 0;
435
597
  }
@@ -1 +1 @@
1
- {"version":3,"file":"copilot-usage-watcher.js","sourceRoot":"","sources":["../../src/hooks/copilot-usage-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilot-usage-watcher.js","sourceRoot":"","sources":["../../src/hooks/copilot-usage-watcher.ts"],"names":[],"mappings":"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"}
@@ -205,11 +205,9 @@ export declare class HookEventProcessor {
205
205
  private static readonly MAX_STAMPED_SESSIONS;
206
206
  private registeredAdaptersByName;
207
207
  /**
208
- * Per-agent dedup rings for recent subagent turns (scoped by agentId, one
209
- * DedupRing per agent, LRU-bounded across agents). Cursor recovery may
210
- * re-read a line after a crash mid-write; double-counting would be silent,
211
- * so we drop on the seen-set. Was previously one global ring shared across
212
- * every agent — see DedupRingRegistry's doc comment for why that's wrong.
208
+ * In-memory, per-agent dedup of subagent turns by messageId (one DedupRing
209
+ * per agent, LRU-bounded across agents). It cannot stop a double count
210
+ * across a restart; SubagentWatcher gets that from the BilledTurnLedger.
213
211
  */
214
212
  private readonly subagentDedupRegistry;
215
213
  /**
@@ -217,7 +215,7 @@ export declare class HookEventProcessor {
217
215
  * events, mirroring subagentDedup above. This path only matters for
218
216
  * `--local` mode's buffer.jsonl route — `--stdio` mode's WorkflowWatcher
219
217
  * calls ingestScriptWorkflowRun() directly in-process, bypassing the
220
- * buffer/crash-recovery path entirely. The `.drain` file crash-recovery
218
+ * buffer/crash-recovery path entirely. The drain-claim crash-recovery
221
219
  * path can re-deliver the same buffered line after a crash mid-write;
222
220
  * without this, that redelivery emits a duplicate AiWorkflowRun event
223
221
  * (doubling cost/token metrics for that run) since a new poll cycle's
@@ -1 +1 @@
1
- {"version":3,"file":"event-processor.d.ts","sourceRoot":"","sources":["../../src/hooks/event-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-processor.d.ts","sourceRoot":"","sources":["../../src/hooks/event-processor.ts"],"names":[],"mappings":"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"}