@newrelic/preflight 1.68.0 → 1.69.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 +1 -1
- package/dist/config.d.ts +18 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +76 -6
- package/dist/config.js.map +1 -1
- package/dist/dashboard/routes/api-handler.d.ts +1 -0
- package/dist/dashboard/routes/api-handler.d.ts.map +1 -1
- package/dist/dashboard/routes/api-handler.js +109 -91
- package/dist/dashboard/routes/api-handler.js.map +1 -1
- package/dist/data/dashboards/ai-coding-assistant-adoption-cost.json +291 -1
- package/dist/data/dashboards/ai-coding-assistant-team-view.json +6 -6
- package/dist/hooks/billed-turn-ledger.d.ts +46 -0
- package/dist/hooks/billed-turn-ledger.d.ts.map +1 -0
- package/dist/hooks/billed-turn-ledger.js +274 -0
- package/dist/hooks/billed-turn-ledger.js.map +1 -0
- package/dist/hooks/collector-script.d.ts.map +1 -1
- package/dist/hooks/collector-script.js +5 -1
- package/dist/hooks/collector-script.js.map +1 -1
- package/dist/hooks/event-processor.d.ts +3 -7
- package/dist/hooks/event-processor.d.ts.map +1 -1
- package/dist/hooks/event-processor.js +21 -7
- package/dist/hooks/event-processor.js.map +1 -1
- package/dist/hooks/parent-transcript-watcher.d.ts +6 -5
- package/dist/hooks/parent-transcript-watcher.d.ts.map +1 -1
- package/dist/hooks/parent-transcript-watcher.js +64 -62
- package/dist/hooks/parent-transcript-watcher.js.map +1 -1
- package/dist/hooks/throttled-warning.d.ts +16 -0
- package/dist/hooks/throttled-warning.d.ts.map +1 -0
- package/dist/hooks/throttled-warning.js +32 -0
- package/dist/hooks/throttled-warning.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -8
- package/dist/index.js.map +1 -1
- package/dist/install/cli.d.ts.map +1 -1
- package/dist/install/cli.js +53 -0
- package/dist/install/cli.js.map +1 -1
- package/dist/install/diagnostics.d.ts.map +1 -1
- package/dist/install/diagnostics.js +17 -3
- package/dist/install/diagnostics.js.map +1 -1
- package/dist/install/keychain.d.ts +18 -0
- package/dist/install/keychain.d.ts.map +1 -0
- package/dist/install/keychain.js +60 -0
- package/dist/install/keychain.js.map +1 -0
- package/dist/install/kiro-install-helper.d.ts +27 -0
- package/dist/install/kiro-install-helper.d.ts.map +1 -0
- package/dist/install/kiro-install-helper.js +53 -0
- package/dist/install/kiro-install-helper.js.map +1 -0
- package/dist/install/setup-wizard.d.ts +4 -0
- package/dist/install/setup-wizard.d.ts.map +1 -1
- package/dist/install/setup-wizard.js +94 -9
- package/dist/install/setup-wizard.js.map +1 -1
- package/dist/metrics/cost-tracker-seed.d.ts +16 -0
- package/dist/metrics/cost-tracker-seed.d.ts.map +1 -1
- package/dist/metrics/cost-tracker-seed.js +42 -7
- package/dist/metrics/cost-tracker-seed.js.map +1 -1
- package/dist/metrics/cost-tracker.d.ts +11 -3
- package/dist/metrics/cost-tracker.d.ts.map +1 -1
- package/dist/metrics/cost-tracker.js +4 -1
- package/dist/metrics/cost-tracker.js.map +1 -1
- package/dist/metrics/git-activity-recorder.d.ts +3 -3
- package/dist/metrics/git-activity-recorder.d.ts.map +1 -1
- package/dist/metrics/git-activity-recorder.js +3 -3
- package/dist/metrics/git-activity-recorder.js.map +1 -1
- package/dist/metrics/git-workspace-identity.d.ts +6 -1
- package/dist/metrics/git-workspace-identity.d.ts.map +1 -1
- package/dist/metrics/git-workspace-identity.js +56 -32
- package/dist/metrics/git-workspace-identity.js.map +1 -1
- package/dist/metrics/git-workspace-reporter.d.ts +4 -3
- package/dist/metrics/git-workspace-reporter.d.ts.map +1 -1
- package/dist/metrics/git-workspace-reporter.js +4 -3
- package/dist/metrics/git-workspace-reporter.js.map +1 -1
- package/dist/metrics/skill-activation-tracker.d.ts +27 -0
- package/dist/metrics/skill-activation-tracker.d.ts.map +1 -0
- package/dist/metrics/skill-activation-tracker.js +92 -0
- package/dist/metrics/skill-activation-tracker.js.map +1 -0
- package/dist/metrics/turn-cost-attributor.d.ts +34 -16
- package/dist/metrics/turn-cost-attributor.d.ts.map +1 -1
- package/dist/metrics/turn-cost-attributor.js +95 -60
- package/dist/metrics/turn-cost-attributor.js.map +1 -1
- package/dist/secret-command.d.ts +5 -3
- package/dist/secret-command.d.ts.map +1 -1
- package/dist/secret-command.js +17 -11
- package/dist/secret-command.js.map +1 -1
- package/dist/shared/pricing-data.d.ts.map +1 -1
- package/dist/shared/pricing-data.js +223 -32
- package/dist/shared/pricing-data.js.map +1 -1
- package/dist/shared/pricing.d.ts +25 -3
- package/dist/shared/pricing.d.ts.map +1 -1
- package/dist/shared/pricing.js +46 -9
- package/dist/shared/pricing.js.map +1 -1
- package/dist/shared/tokens.d.ts +16 -0
- package/dist/shared/tokens.d.ts.map +1 -1
- package/dist/shared/tokens.js +18 -0
- package/dist/shared/tokens.js.map +1 -1
- package/dist/shared/transport/otlp-shared.d.ts.map +1 -1
- package/dist/shared/transport/otlp-shared.js +7 -14
- package/dist/shared/transport/otlp-shared.js.map +1 -1
- package/dist/storage/session-store.d.ts +24 -1
- package/dist/storage/session-store.d.ts.map +1 -1
- package/dist/storage/session-store.js +34 -4
- package/dist/storage/session-store.js.map +1 -1
- package/dist/storage/types.d.ts +13 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/tools/session-stats.js +1 -1
- package/dist/tools/session-stats.js.map +1 -1
- package/dist/transport/nr-ingest.d.ts +4 -0
- package/dist/transport/nr-ingest.d.ts.map +1 -1
- package/dist/transport/nr-ingest.js +43 -19
- package/dist/transport/nr-ingest.js.map +1 -1
- package/dist/transport/tier-types.d.ts +11 -1
- package/dist/transport/tier-types.d.ts.map +1 -1
- package/dist/transport/tier-types.js +28 -6
- package/dist/transport/tier-types.js.map +1 -1
- package/dist/web/assets/{index-lvdXUntr.js → index-U9DPZ-Tb.js} +3 -3
- package/dist/web/index.html +1 -1
- package/examples/local-alert-rules.json +28 -0
- package/package.json +1 -1
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
*
|
|
22
22
|
* Cursor durability: byte cursor persisted to
|
|
23
23
|
* `~/.newrelic-preflight/.parent-transcript-pos-<sessionId>` survives
|
|
24
|
-
* restart.
|
|
25
|
-
* → potential duplicates, which downstream dedupes by (sessionId, messageId)
|
|
26
|
-
* in `HookEventProcessor.handleTokenEvent()`.
|
|
24
|
+
* restart.
|
|
27
25
|
*/
|
|
28
26
|
import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, statSync, writeFileSync, } from 'node:fs';
|
|
29
27
|
import { homedir } from 'node:os';
|
|
30
28
|
import { dirname, join, resolve } from 'node:path';
|
|
31
29
|
import { StringDecoder } from 'node:string_decoder';
|
|
32
30
|
import { createLogger } from '../shared/index.js';
|
|
31
|
+
import { BilledTurnLedger } from './billed-turn-ledger.js';
|
|
32
|
+
import { ThrottledWarning } from './throttled-warning.js';
|
|
33
33
|
import { parseAssistantTurnLine } from '../lib/subagent-transcript-parser.js';
|
|
34
34
|
const logger = createLogger('parent-transcript-watcher');
|
|
35
35
|
// ---------------------------------------------------------------------------
|
|
@@ -64,6 +64,8 @@ export class ParentTranscriptWatcher {
|
|
|
64
64
|
discoveryHours;
|
|
65
65
|
parentSessionFilter;
|
|
66
66
|
localStore;
|
|
67
|
+
ledger;
|
|
68
|
+
retryWarning = new ThrottledWarning(logger, 'ParentTranscriptWatcher read deferred to the next poll');
|
|
67
69
|
intervalId = null;
|
|
68
70
|
running = false;
|
|
69
71
|
// Scoped-mode only: a session's transcript path never moves once found, so
|
|
@@ -75,8 +77,6 @@ export class ParentTranscriptWatcher {
|
|
|
75
77
|
decoderByPath = new Map();
|
|
76
78
|
/** Timestamp (ms) of the last parseable raw line seen for each file, any role — see `ParsedParentTurn.responseMs`. */
|
|
77
79
|
previousLineTimestampByPath = new Map();
|
|
78
|
-
/** Message ids already seen for each file, so only the first line of a message computes `responseMs`. */
|
|
79
|
-
seenMessageIdsByPath = new Map();
|
|
80
80
|
filesWatched = 0;
|
|
81
81
|
linesRead = 0;
|
|
82
82
|
bytesRead = 0;
|
|
@@ -91,6 +91,7 @@ export class ParentTranscriptWatcher {
|
|
|
91
91
|
(Number.isFinite(envHours) && envHours > 0 ? envHours : DEFAULT_DISCOVERY_HOURS);
|
|
92
92
|
this.parentSessionFilter = options.parentSessionId ?? null;
|
|
93
93
|
this.localStore = options.localStore;
|
|
94
|
+
this.ledger = options.ledger ?? new BilledTurnLedger({ storagePath: this.storagePath });
|
|
94
95
|
}
|
|
95
96
|
start() {
|
|
96
97
|
if (this.running) {
|
|
@@ -276,15 +277,17 @@ export class ParentTranscriptWatcher {
|
|
|
276
277
|
if (existing === undefined ||
|
|
277
278
|
st.mtimeMs > existing.mtimeMs ||
|
|
278
279
|
(st.mtimeMs === existing.mtimeMs && path < existing.path)) {
|
|
279
|
-
canonicalBySession.set(sessionId, {
|
|
280
|
+
canonicalBySession.set(sessionId, {
|
|
281
|
+
path,
|
|
282
|
+
mtimeMs: st.mtimeMs,
|
|
283
|
+
birthtimeMs: st.birthtimeMs,
|
|
284
|
+
});
|
|
280
285
|
}
|
|
281
286
|
}
|
|
282
287
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
287
|
-
return out;
|
|
288
|
+
return [...canonicalBySession]
|
|
289
|
+
.sort(([, a], [, b]) => byCreationOrder(a, b))
|
|
290
|
+
.map(([sessionId, { path }]) => ({ path, sessionId }));
|
|
288
291
|
}
|
|
289
292
|
// -------------------------------------------------------------------------
|
|
290
293
|
// Per-file processing
|
|
@@ -303,10 +306,7 @@ export class ParentTranscriptWatcher {
|
|
|
303
306
|
// If the canonical copy for this sessionId switched project dirs since the
|
|
304
307
|
// last poll (repo rename → newest-mtime copy now wins in discovery), the
|
|
305
308
|
// persisted byte offset belongs to the OLD file and is meaningless against
|
|
306
|
-
// this one. Start fresh so the new file is read from the top
|
|
307
|
-
// event-processor dedupes any shared-history turns by (sessionId,
|
|
308
|
-
// messageId), and day-bucketing attributes each re-read turn to its real
|
|
309
|
-
// transcript-timestamp day, so "spend today" is unaffected.
|
|
309
|
+
// this one. Start fresh so the new file is read from the top.
|
|
310
310
|
const switchedFile = persisted.path !== undefined && persisted.path !== path;
|
|
311
311
|
const startCursor = switchedFile
|
|
312
312
|
? { bytePos: 0, partialLine: '', path }
|
|
@@ -314,7 +314,6 @@ export class ParentTranscriptWatcher {
|
|
|
314
314
|
if (switchedFile) {
|
|
315
315
|
this.partialByPath.delete(path);
|
|
316
316
|
this.previousLineTimestampByPath.delete(path);
|
|
317
|
-
this.seenMessageIdsByPath.delete(path);
|
|
318
317
|
}
|
|
319
318
|
if (startCursor.bytePos >= size)
|
|
320
319
|
return;
|
|
@@ -377,14 +376,22 @@ export class ParentTranscriptWatcher {
|
|
|
377
376
|
newPartial = '';
|
|
378
377
|
this.parseErrors += 1;
|
|
379
378
|
}
|
|
379
|
+
const linesReadBefore = this.linesRead;
|
|
380
|
+
const previousLineTimestampBefore = this.previousLineTimestampByPath.get(path);
|
|
381
|
+
const parsedTurns = [];
|
|
380
382
|
for (const line of lines) {
|
|
381
383
|
if (!line)
|
|
382
384
|
continue;
|
|
383
385
|
this.linesRead += 1;
|
|
384
386
|
const parsed = this.tryParseLine(line, path);
|
|
385
|
-
if (parsed
|
|
386
|
-
|
|
387
|
-
|
|
387
|
+
if (parsed !== null)
|
|
388
|
+
parsedTurns.push(parsed);
|
|
389
|
+
}
|
|
390
|
+
// If the claim, an append or the cursor write fails, the cursor stays put
|
|
391
|
+
// and the next poll redoes the read: the ledger hands back the turns still
|
|
392
|
+
// owed and refuses the ones already appended.
|
|
393
|
+
try {
|
|
394
|
+
this.ledger.deliver(sessionId, parsedTurns, (parsed) => this.appendToParentBuffer(sessionId, {
|
|
388
395
|
mode: 'token',
|
|
389
396
|
tool: 'transcript',
|
|
390
397
|
timestamp: parsed.timestampMs,
|
|
@@ -396,10 +403,23 @@ export class ParentTranscriptWatcher {
|
|
|
396
403
|
cacheReadTokens: parsed.cacheReadTokens,
|
|
397
404
|
cacheCreationTokens: parsed.cacheCreationTokens,
|
|
398
405
|
...(parsed.responseMs !== undefined && { responseMs: parsed.responseMs }),
|
|
399
|
-
};
|
|
400
|
-
this.
|
|
406
|
+
}));
|
|
407
|
+
this.writeCursor(cursorPath, nextBytePos, newPartial, path);
|
|
408
|
+
}
|
|
409
|
+
catch (err) {
|
|
410
|
+
this.retryWarning.warn(err);
|
|
411
|
+
this.partialByPath.delete(path);
|
|
412
|
+
this.decoderByPath.delete(path);
|
|
413
|
+
this.linesRead = linesReadBefore;
|
|
414
|
+
if (previousLineTimestampBefore === undefined) {
|
|
415
|
+
this.previousLineTimestampByPath.delete(path);
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
this.previousLineTimestampByPath.set(path, previousLineTimestampBefore);
|
|
419
|
+
}
|
|
420
|
+
return;
|
|
401
421
|
}
|
|
402
|
-
this.
|
|
422
|
+
this.retryWarning.succeeded();
|
|
403
423
|
if (newPartial.length > 0) {
|
|
404
424
|
this.partialByPath.set(path, newPartial);
|
|
405
425
|
}
|
|
@@ -415,8 +435,7 @@ export class ParentTranscriptWatcher {
|
|
|
415
435
|
evictStalePartials(files) {
|
|
416
436
|
if (this.partialByPath.size === 0 &&
|
|
417
437
|
this.decoderByPath.size === 0 &&
|
|
418
|
-
this.previousLineTimestampByPath.size === 0
|
|
419
|
-
this.seenMessageIdsByPath.size === 0) {
|
|
438
|
+
this.previousLineTimestampByPath.size === 0) {
|
|
420
439
|
return;
|
|
421
440
|
}
|
|
422
441
|
const live = new Set();
|
|
@@ -434,10 +453,6 @@ export class ParentTranscriptWatcher {
|
|
|
434
453
|
if (!live.has(path))
|
|
435
454
|
this.previousLineTimestampByPath.delete(path);
|
|
436
455
|
}
|
|
437
|
-
for (const path of this.seenMessageIdsByPath.keys()) {
|
|
438
|
-
if (!live.has(path))
|
|
439
|
-
this.seenMessageIdsByPath.delete(path);
|
|
440
|
-
}
|
|
441
456
|
}
|
|
442
457
|
/**
|
|
443
458
|
* Parse a JSONL line, returning non-null only for a real, non-sidechain
|
|
@@ -473,23 +488,15 @@ export class ParentTranscriptWatcher {
|
|
|
473
488
|
const timestampMs = fields.rawTimestamp ? Date.parse(fields.rawTimestamp) : Date.now();
|
|
474
489
|
if (!Number.isFinite(timestampMs))
|
|
475
490
|
return null;
|
|
476
|
-
let seen = this.seenMessageIdsByPath.get(path);
|
|
477
|
-
if (seen === undefined) {
|
|
478
|
-
seen = new Set();
|
|
479
|
-
this.seenMessageIdsByPath.set(path, seen);
|
|
480
|
-
}
|
|
481
491
|
let responseMs;
|
|
482
|
-
if (
|
|
483
|
-
|
|
484
|
-
if (
|
|
485
|
-
|
|
486
|
-
if (gap > 0 && gap <= MAX_RESPONSE_GAP_MS) {
|
|
487
|
-
responseMs = gap;
|
|
488
|
-
}
|
|
489
|
-
}
|
|
492
|
+
if (previousLineTimestampMs !== undefined) {
|
|
493
|
+
const gap = timestampMs - previousLineTimestampMs;
|
|
494
|
+
if (gap > 0 && gap <= MAX_RESPONSE_GAP_MS)
|
|
495
|
+
responseMs = gap;
|
|
490
496
|
}
|
|
491
497
|
return {
|
|
492
498
|
timestampMs,
|
|
499
|
+
undated: !fields.rawTimestamp,
|
|
493
500
|
messageId,
|
|
494
501
|
model,
|
|
495
502
|
inputTokens: fields.inputTokens,
|
|
@@ -521,20 +528,15 @@ export class ParentTranscriptWatcher {
|
|
|
521
528
|
}
|
|
522
529
|
}
|
|
523
530
|
writeCursor(cursorPath, bytePos, partialLine, sourcePath) {
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
|
|
527
|
-
}
|
|
528
|
-
const dir = dirname(cursorPath);
|
|
529
|
-
if (!existsSync(dir))
|
|
530
|
-
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
531
|
-
writeFileSync(cursorPath, JSON.stringify({ bytePos, partialLine, path: sourcePath }), {
|
|
532
|
-
mode: 0o600,
|
|
533
|
-
});
|
|
534
|
-
}
|
|
535
|
-
catch (err) {
|
|
536
|
-
this.recordError(err);
|
|
531
|
+
if (!existsSync(this.storagePath)) {
|
|
532
|
+
mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
|
|
537
533
|
}
|
|
534
|
+
const dir = dirname(cursorPath);
|
|
535
|
+
if (!existsSync(dir))
|
|
536
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
537
|
+
writeFileSync(cursorPath, JSON.stringify({ bytePos, partialLine, path: sourcePath }), {
|
|
538
|
+
mode: 0o600,
|
|
539
|
+
});
|
|
538
540
|
}
|
|
539
541
|
/**
|
|
540
542
|
* Append to the session's own buffer file. Mirrors the path-naming used by
|
|
@@ -542,15 +544,10 @@ export class ParentTranscriptWatcher {
|
|
|
542
544
|
*/
|
|
543
545
|
appendToParentBuffer(sessionId, event) {
|
|
544
546
|
const path = join(this.storagePath, `buffer-${sessionId}.jsonl`);
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
|
|
548
|
-
}
|
|
549
|
-
appendFileSync(path, JSON.stringify(event) + '\n', { mode: 0o600 });
|
|
550
|
-
}
|
|
551
|
-
catch (err) {
|
|
552
|
-
this.recordError(err);
|
|
547
|
+
if (!existsSync(this.storagePath)) {
|
|
548
|
+
mkdirSync(this.storagePath, { recursive: true, mode: 0o700 });
|
|
553
549
|
}
|
|
550
|
+
appendFileSync(path, JSON.stringify(event) + '\n', { mode: 0o600 });
|
|
554
551
|
}
|
|
555
552
|
recordError(err) {
|
|
556
553
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -560,6 +557,11 @@ export class ParentTranscriptWatcher {
|
|
|
560
557
|
// ---------------------------------------------------------------------------
|
|
561
558
|
// Helpers
|
|
562
559
|
// ---------------------------------------------------------------------------
|
|
560
|
+
function byCreationOrder(a, b) {
|
|
561
|
+
return (a.birthtimeMs - b.birthtimeMs ||
|
|
562
|
+
a.mtimeMs - b.mtimeMs ||
|
|
563
|
+
(a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
|
|
564
|
+
}
|
|
563
565
|
/**
|
|
564
566
|
* Stable cursor file path computation, exported for tests that want to
|
|
565
567
|
* inspect cursor state without instantiating the watcher.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parent-transcript-watcher.js","sourceRoot":"","sources":["../../src/hooks/parent-transcript-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,MAAM,MAAM,GAAG,YAAY,CAAC,2BAA2B,CAAC,CAAC;AAEzD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,wBAAwB,GAAG,KAAK,CAAC;AACvC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AACrC,8FAA8F;AAC9F,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AACpD,MAAM,aAAa,GAAG,gEAAgE,CAAC;AACvF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AA2C7C,uDAAuD;AACvD,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE3C,0FAA0F;AAC1F,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACxD,OAAO,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAwBD,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,MAAM,OAAO,uBAAuB;IACjB,WAAW,CAAS;IACpB,WAAW,CAAS;IACpB,cAAc,CAAS;IACvB,cAAc,CAAS;IACvB,mBAAmB,CAAgB;IACnC,UAAU,CAAyB;IAE5C,UAAU,GAA0C,IAAI,CAAC;IACzD,OAAO,GAAG,KAAK,CAAC;IAExB,2EAA2E;IAC3E,wEAAwE;IACxE,0EAA0E;IAC1E,oDAAoD;IAC5C,gBAAgB,GAAkB,IAAI,CAAC;IAE9B,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClE,sHAAsH;IACrG,2BAA2B,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzE,yGAAyG;IACxF,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE/D,YAAY,GAAG,CAAC,CAAC;IACjB,SAAS,GAAG,CAAC,CAAC;IACd,SAAS,GAAG,CAAC,CAAC;IACd,WAAW,GAAG,CAAC,CAAC;IAExB,YAAY,UAA0C,EAAE;QACtD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACjF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc;YACjB,OAAO,CAAC,cAAc;gBACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;QACnF,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACvC,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;YAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,mBAAmB,KAAK,IAAI;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,yFAAyF;IACzF,cAAc;QACZ,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,YAAY;IACZ,4EAA4E;IAEpE,aAAa;QACnB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC3C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7D,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,GAA6C,IAAI,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;YACxE,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC/B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;oBAAE,SAAS;gBAC3B,IACE,IAAI,KAAK,IAAI;oBACb,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;oBACzB,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EACtD,CAAC;oBACD,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;gBAClD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,kDAAkD;QAClF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACnE,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,iCAAiC,EAAE,IAAI,IAAI,CAAC;QAEzF,IAAI,cAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,6EAA6E;QAC7E,6EAA6E;QAC7E,0EAA0E;QAC1E,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA6C,CAAC;QAChF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,OAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAC7C,IAAI,mBAAmB,EAAE,GAAG,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACrC,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,GAAG,QAAQ;oBAAE,SAAS;gBACpD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACnD,6DAA6D;gBAC7D,gEAAgE;gBAChE,qEAAqE;gBACrE,uEAAuE;gBACvE,IACE,QAAQ,KAAK,SAAS;oBACtB,EAAE,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;oBAC7B,CAAC,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EACzD,CAAC;oBACD,kBAAkB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAA+C,EAAE,CAAC;QAC3D,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC;YACvD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAEpE,WAAW,CAAC,IAAY,EAAE,SAAiB;QACjD,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9C,2EAA2E;QAC3E,yEAAyE;QACzE,2EAA2E;QAC3E,kEAAkE;QAClE,kEAAkE;QAClE,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;QAC7E,MAAM,WAAW,GAAgB,YAAY;YAC3C,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE;YACvC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,IAAI,IAAI;YAAE,OAAO;QAExC,MAAM,SAAS,GAAG,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACvD,IAAI,GAAW,CAAC;QAChB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,EAAE,GAAkB,IAAI,CAAC;QAC7B,IAAI,CAAC;YACH,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACzB,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,YAAY,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,SAAS,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;gBAAS,CAAC;YACT,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,SAAS,CAAC,EAAE,CAAC,CAAC;gBAChB,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,YAAY,KAAK,CAAC;YAAE,OAAO;QAE/B,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,WAAW,CAAC;QACxE,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;QAEjC,+DAA+D;QAC/D,yEAAyE;QACzE,qEAAqE;QACrE,wCAAwC;QACxC,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,YAAY,CAAC;QAEvD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;YAC/C,UAAU,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,MAAM,KAAK,IAAI;gBAAE,SAAS;YAE9B,MAAM,KAAK,GAA4B;gBACrC,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,MAAM,CAAC,WAAW;gBAC7B,SAAS;gBACT,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;gBAC/C,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;aAC1E,CAAC;YACF,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,KAAiD;QAC1E,IACE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;YAC7B,IAAI,CAAC,2BAA2B,CAAC,IAAI,KAAK,CAAC;YAC3C,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,EACpC,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,IAAY,EAAE,IAAY;QAC7C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0EAA0E;QAC1E,qEAAqE;QACrE,yEAAyE;QACzE,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,uBAAuB,GAAG,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,yEAAyE;QACzE,kEAAkE;QAClE,6FAA6F;QAC7F,IAAI,MAAM,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,aAAa;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;QAE/C,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YACzB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,UAA8B,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,IAAI,uBAAuB,KAAK,SAAS,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,WAAW,GAAG,uBAAuB,CAAC;gBAClD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,mBAAmB,EAAE,CAAC;oBAC1C,UAAU,GAAG,GAAG,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW;YACX,SAAS;YACT,KAAK;YACL,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,UAAU;SACX,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAEpE,UAAU,CAAC,SAAiB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,0BAA0B,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAEO,UAAU,CAAC,UAAkB;QACnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACpE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,WAAW,CACjB,UAAkB,EAClB,OAAe,EACf,WAAmB,EACnB,UAAkB;QAElB,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;gBACpF,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,SAAiB,EAAE,KAAa;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,SAAS,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,GAAY;QAC9B,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACnF,CAAC;CACF;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,+BAA+B,CAAC,WAAmB,EAAE,SAAiB;IACpF,OAAO,OAAO,CAAC,WAAW,EAAE,0BAA0B,SAAS,EAAE,CAAC,CAAC;AACrE,CAAC"}
|
|
1
|
+
{"version":3,"file":"parent-transcript-watcher.js","sourceRoot":"","sources":["../../src/hooks/parent-transcript-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Logger } from '../shared/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* A warning for a failure the caller retries every poll: logged on the first
|
|
4
|
+
* failure, then at most once a minute with the number suppressed since. A
|
|
5
|
+
* success resets it, so the next failure is logged at once.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ThrottledWarning {
|
|
8
|
+
private readonly logger;
|
|
9
|
+
private readonly message;
|
|
10
|
+
private lastLoggedMs;
|
|
11
|
+
private suppressed;
|
|
12
|
+
constructor(logger: Logger, message: string);
|
|
13
|
+
warn(err: unknown): void;
|
|
14
|
+
succeeded(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=throttled-warning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttled-warning.d.ts","sourceRoot":"","sources":["../../src/hooks/throttled-warning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAIjD;;;;GAIG;AACH,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,UAAU,CAAK;gBAGJ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;IAGlC,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAYxB,SAAS,IAAI,IAAI;CAIlB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const WARN_INTERVAL_MS = 60_000;
|
|
2
|
+
/**
|
|
3
|
+
* A warning for a failure the caller retries every poll: logged on the first
|
|
4
|
+
* failure, then at most once a minute with the number suppressed since. A
|
|
5
|
+
* success resets it, so the next failure is logged at once.
|
|
6
|
+
*/
|
|
7
|
+
export class ThrottledWarning {
|
|
8
|
+
logger;
|
|
9
|
+
message;
|
|
10
|
+
lastLoggedMs = null;
|
|
11
|
+
suppressed = 0;
|
|
12
|
+
constructor(logger, message) {
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
this.message = message;
|
|
15
|
+
}
|
|
16
|
+
warn(err) {
|
|
17
|
+
const nowMs = Date.now();
|
|
18
|
+
if (this.lastLoggedMs !== null && nowMs - this.lastLoggedMs < WARN_INTERVAL_MS) {
|
|
19
|
+
this.suppressed += 1;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
23
|
+
this.logger.warn(this.message, { error: error.slice(0, 200), suppressed: this.suppressed });
|
|
24
|
+
this.lastLoggedMs = nowMs;
|
|
25
|
+
this.suppressed = 0;
|
|
26
|
+
}
|
|
27
|
+
succeeded() {
|
|
28
|
+
this.lastLoggedMs = null;
|
|
29
|
+
this.suppressed = 0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=throttled-warning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttled-warning.js","sourceRoot":"","sources":["../../src/hooks/throttled-warning.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAKR;IACA;IALX,YAAY,GAAkB,IAAI,CAAC;IACnC,UAAU,GAAG,CAAC,CAAC;IAEvB,YACmB,MAAc,EACd,OAAe;QADf,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;IAC/B,CAAC;IAEJ,IAAI,CAAC,GAAY;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,gBAAgB,EAAE,CAAC;YAC/E,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAmBvB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAmBvB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAmElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAyBzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMhF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBhD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,EACf,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,CAAC;AAMnB,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAmBD;;;;;GAKG;AACH,KAAK,kBAAkB,GAAG,IAAI,CAAC,eAAe,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;AAEzF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,GAAG;IACtF,UAAU,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,SAAS,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACjD,CAmBA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1E;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,qBAAqB,CAevB;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,wBAAgB,4BAA4B,IAAI,MAAM,CAMrD;AAED;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAE1D,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mCAAmC,SAAU,CAAC;AAE3D,wBAAgB,2BAA2B,IAAI,MAAM,CAMpD;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAmBhE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAMnF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC/D;AAKD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA4BlE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAK1E;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,uJAAuJ;IACvJ,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACvC,IAAI,EAAE,qBAAqB,GAC1B,IAAI,CAiBN;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAC5D,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAC7D,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAiCjF;AAmCD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyL/E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4CpD"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,7 @@ import { CopilotUsageWatcher } from './hooks/copilot-usage-watcher.js';
|
|
|
21
21
|
import { HookEventProcessor } from './hooks/index.js';
|
|
22
22
|
import { isPlatformDetectionFellBack } from './hooks/platform-detection-health.js';
|
|
23
23
|
import { ParentTranscriptWatcher } from './hooks/parent-transcript-watcher.js';
|
|
24
|
+
import { BilledTurnLedger, pruneBilledTurns } from './hooks/billed-turn-ledger.js';
|
|
24
25
|
import { isSyntheticSessionId, readJobState, readTranscriptTitle, resolveFromBreadcrumb, resolveFromCwd, resolveFromJobDir, resolveSessionId, resolveSessionName, watchCwdBreadcrumbForCorrection, watchPpidBreadcrumb, } from './hooks/session-resolver.js';
|
|
25
26
|
import { SubagentWatcher } from './hooks/subagent-watcher.js';
|
|
26
27
|
import { WorkflowWatcher } from './hooks/workflow-watcher.js';
|
|
@@ -62,6 +63,7 @@ import { QualityProxyTracker } from './metrics/quality-proxy-tracker.js';
|
|
|
62
63
|
import { RecommendationEngine } from './metrics/recommendation-engine.js';
|
|
63
64
|
import { RetryDetector } from './metrics/retry-detector.js';
|
|
64
65
|
import { SessionTracker } from './metrics/session-tracker.js';
|
|
66
|
+
import { SkillActivationTracker } from './metrics/skill-activation-tracker.js';
|
|
65
67
|
import { TaskCompletionTracker } from './metrics/task-completion-tracker.js';
|
|
66
68
|
import { buildTaskDetectorSeed } from './metrics/task-detector-seed.js';
|
|
67
69
|
import { TaskDetector } from './metrics/task-detector.js';
|
|
@@ -111,9 +113,9 @@ export function maskCredential(key) {
|
|
|
111
113
|
* Helps users troubleshoot configuration issues without requiring
|
|
112
114
|
* manual diagnosis steps.
|
|
113
115
|
*/
|
|
114
|
-
function loadConfigOrDie(options) {
|
|
116
|
+
function loadConfigOrDie(options, loadOptions) {
|
|
115
117
|
try {
|
|
116
|
-
return loadMcpConfig(options);
|
|
118
|
+
return loadMcpConfig(options, loadOptions);
|
|
117
119
|
}
|
|
118
120
|
catch (err) {
|
|
119
121
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -223,8 +225,13 @@ export function runRetentionSweep(deps) {
|
|
|
223
225
|
return;
|
|
224
226
|
const deletedSessionFiles = purgeOldSessions(deps.storagePath, deps.retainSessionsDays);
|
|
225
227
|
const deletedWeeklySummaryFiles = purgeOldWeeklySummaries(deps.storagePath, deps.retainSessionsDays);
|
|
226
|
-
|
|
227
|
-
|
|
228
|
+
const deletedBilledTurnDays = pruneBilledTurns(deps.storagePath, deps.retainSessionsDays, Date.now());
|
|
229
|
+
if (deletedSessionFiles > 0 || deletedWeeklySummaryFiles > 0 || deletedBilledTurnDays > 0) {
|
|
230
|
+
logger.info('Retention purge complete', {
|
|
231
|
+
deletedSessionFiles,
|
|
232
|
+
deletedWeeklySummaryFiles,
|
|
233
|
+
deletedBilledTurnDays,
|
|
234
|
+
});
|
|
228
235
|
}
|
|
229
236
|
}
|
|
230
237
|
/**
|
|
@@ -897,7 +904,7 @@ async function main() {
|
|
|
897
904
|
if (!gap)
|
|
898
905
|
throw err;
|
|
899
906
|
process.env.NR_AI_MODE = 'local';
|
|
900
|
-
config = loadConfigOrDie(options);
|
|
907
|
+
config = loadConfigOrDie(options, { ignoreTiers: true });
|
|
901
908
|
unforwardedSessionMonitor = new UnforwardedSessionMonitor({ gap });
|
|
902
909
|
const problem = gap.reason === 'secret-helper-failed'
|
|
903
910
|
? `could not read ${gap.missingField} from its helper command`
|
|
@@ -1081,6 +1088,7 @@ async function main() {
|
|
|
1081
1088
|
if (options.stdio)
|
|
1082
1089
|
applyAuthoritativeSessionName(sessionTraceId);
|
|
1083
1090
|
const turnCostAttributor = new TurnCostAttributor({ rateMultiplier });
|
|
1091
|
+
const skillActivationTracker = new SkillActivationTracker();
|
|
1084
1092
|
const turnTracker = new TurnTracker();
|
|
1085
1093
|
const gitEfficiencyTracker = new GitEfficiencyTracker();
|
|
1086
1094
|
const gitWorkspaceReporter = new GitWorkspaceReporter();
|
|
@@ -1808,7 +1816,9 @@ async function main() {
|
|
|
1808
1816
|
// record, so audit/security events carry agentId and agentType.
|
|
1809
1817
|
// The watcher's on-demand read is synchronous, which is what keeps it
|
|
1810
1818
|
// ahead of auditTrail.
|
|
1811
|
-
const
|
|
1819
|
+
const attributed = subagentAttribution.attributeAtIntake(incomingRecord, activeSubagentWatcher);
|
|
1820
|
+
const activeSkill = skillActivationTracker.recordToolCall(attributed);
|
|
1821
|
+
const rawRecord = activeSkill ? { ...attributed, activeSkill } : attributed;
|
|
1812
1822
|
if (!config || !sessionTracker || !taskDetector) {
|
|
1813
1823
|
logger.warn('onRecord called before full initialization; skipping');
|
|
1814
1824
|
return;
|
|
@@ -2052,7 +2062,7 @@ async function main() {
|
|
|
2052
2062
|
ownSessionId: sessionTraceId,
|
|
2053
2063
|
});
|
|
2054
2064
|
const closedTurn = turnCostAttributor.recordTokenEvent(tokenEvent);
|
|
2055
|
-
if (
|
|
2065
|
+
if (isOwnEvent)
|
|
2056
2066
|
capturedNrIngest?.ingestTurnCost(closedTurn);
|
|
2057
2067
|
const usage = {
|
|
2058
2068
|
inputTokens: tokenEvent.inputTokens,
|
|
@@ -2302,7 +2312,9 @@ async function main() {
|
|
|
2302
2312
|
});
|
|
2303
2313
|
},
|
|
2304
2314
|
onUserPromptSubmit: (frame) => {
|
|
2305
|
-
|
|
2315
|
+
const slashRun = skillActivationTracker.recordPrompt(frame.sessionId, frame.slashCommand ?? null);
|
|
2316
|
+
if (slashRun)
|
|
2317
|
+
turnCostAttributor.recordSkillRun(frame.sessionId, slashRun);
|
|
2306
2318
|
taskDetector.startTaskIfNone(frame.timestamp);
|
|
2307
2319
|
},
|
|
2308
2320
|
onStop: (frame) => {
|
|
@@ -2457,6 +2469,11 @@ async function main() {
|
|
|
2457
2469
|
// signal for that platform, so it is gated only by its own opt-out, and
|
|
2458
2470
|
// it no-ops cheaply (a single existsSync) when data.db is absent.
|
|
2459
2471
|
const copilotAppUsageWatcherEnabled = process.env['NR_AI_ENABLE_COPILOT_APP_USAGE_WATCHER'] !== '0';
|
|
2472
|
+
// One claimant per process, shared by every watcher that bills turns.
|
|
2473
|
+
const billedTurnLedger = new BilledTurnLedger({
|
|
2474
|
+
storagePath: config.storagePath,
|
|
2475
|
+
retainDays: config.retainSessionsDays,
|
|
2476
|
+
});
|
|
2460
2477
|
// Construct + start the watchers for a given session id. In `--stdio` mode
|
|
2461
2478
|
// the watchers filter discovered transcript dirs by `parentSessionId`; in
|
|
2462
2479
|
// `--local` mode they run unfiltered (parentSessionId: undefined). Shared by
|
|
@@ -2481,6 +2498,7 @@ async function main() {
|
|
|
2481
2498
|
storagePath: config.storagePath,
|
|
2482
2499
|
parentSessionId: isStdioWatcher ? watcherSessionId : undefined,
|
|
2483
2500
|
localStore,
|
|
2501
|
+
ledger: billedTurnLedger,
|
|
2484
2502
|
});
|
|
2485
2503
|
activeParentTranscriptWatcher.start();
|
|
2486
2504
|
logger.info('ParentTranscriptWatcher started', {
|