@newrelic/preflight 1.59.0 → 1.59.2

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 (38) hide show
  1. package/dist/hooks/collector-script.d.ts.map +1 -1
  2. package/dist/hooks/collector-script.js.map +1 -1
  3. package/dist/hooks/event-processor.d.ts +2 -0
  4. package/dist/hooks/event-processor.d.ts.map +1 -1
  5. package/dist/hooks/event-processor.js +8 -2
  6. package/dist/hooks/event-processor.js.map +1 -1
  7. package/dist/hooks/subagent-watcher.d.ts +81 -2
  8. package/dist/hooks/subagent-watcher.d.ts.map +1 -1
  9. package/dist/hooks/subagent-watcher.js +300 -21
  10. package/dist/hooks/subagent-watcher.js.map +1 -1
  11. package/dist/index.js +25 -32
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/agent-id.d.ts +10 -0
  14. package/dist/lib/agent-id.d.ts.map +1 -1
  15. package/dist/lib/agent-id.js +21 -0
  16. package/dist/lib/agent-id.js.map +1 -1
  17. package/dist/lib/bounded-map.d.ts +37 -0
  18. package/dist/lib/bounded-map.d.ts.map +1 -0
  19. package/dist/lib/bounded-map.js +77 -0
  20. package/dist/lib/bounded-map.js.map +1 -0
  21. package/dist/metrics/agent-partition.d.ts +25 -4
  22. package/dist/metrics/agent-partition.d.ts.map +1 -1
  23. package/dist/metrics/agent-partition.js +24 -3
  24. package/dist/metrics/agent-partition.js.map +1 -1
  25. package/dist/metrics/cost-tracker.d.ts +8 -9
  26. package/dist/metrics/cost-tracker.d.ts.map +1 -1
  27. package/dist/metrics/cost-tracker.js.map +1 -1
  28. package/dist/metrics/subagent-attribution.d.ts +110 -0
  29. package/dist/metrics/subagent-attribution.d.ts.map +1 -0
  30. package/dist/metrics/subagent-attribution.js +143 -0
  31. package/dist/metrics/subagent-attribution.js.map +1 -0
  32. package/dist/storage/types.d.ts +30 -10
  33. package/dist/storage/types.d.ts.map +1 -1
  34. package/dist/storage/types.js.map +1 -1
  35. package/dist/transport/nr-ingest.d.ts +2 -4
  36. package/dist/transport/nr-ingest.d.ts.map +1 -1
  37. package/dist/transport/nr-ingest.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,37 @@
1
+ export interface BoundedMapOptions {
2
+ /** Hard cap on entries; inserting past it evicts the least-recently-used entry. */
3
+ readonly maxEntries: number;
4
+ /**
5
+ * Optional idle expiry: an entry not set or read (via `get`) for this long is
6
+ * dropped. Omit to bound by size only.
7
+ */
8
+ readonly ttlMs?: number;
9
+ /** Clock override for tests. Defaults to `Date.now`. */
10
+ readonly now?: () => number;
11
+ }
12
+ /**
13
+ * A size-capped LRU map with optional idle expiry, for lookup tables that a
14
+ * long-running process fills for its whole lifetime and would otherwise never
15
+ * shrink. Insertion order of the backing `Map` doubles as recency order
16
+ * (`set`/`get` move the key to the end), so the least-recently-used entry is
17
+ * always first and both eviction and the expiry sweep only ever look at the
18
+ * front.
19
+ */
20
+ export declare class BoundedMap<K, V> {
21
+ private readonly entries;
22
+ private readonly maxEntries;
23
+ private readonly ttlMs;
24
+ private readonly now;
25
+ constructor(options: BoundedMapOptions);
26
+ get size(): number;
27
+ /** Returns the value and marks the entry as recently used; `undefined` if absent or expired. */
28
+ get(key: K): V | undefined;
29
+ /** Presence check that does not count as a use. */
30
+ has(key: K): boolean;
31
+ set(key: K, value: V): this;
32
+ delete(key: K): boolean;
33
+ clear(): void;
34
+ private isExpired;
35
+ private sweepExpired;
36
+ }
37
+ //# sourceMappingURL=bounded-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-map.d.ts","sourceRoot":"","sources":["../../src/lib/bounded-map.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAOD;;;;;;;GAOG;AACH,qBAAa,UAAU,CAAC,CAAC,EAAE,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,EAAE,iBAAiB;IAYtC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,gGAAgG;IAChG,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAU1B,mDAAmD;IACnD,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAKpB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,YAAY;CAOrB"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * A size-capped LRU map with optional idle expiry, for lookup tables that a
3
+ * long-running process fills for its whole lifetime and would otherwise never
4
+ * shrink. Insertion order of the backing `Map` doubles as recency order
5
+ * (`set`/`get` move the key to the end), so the least-recently-used entry is
6
+ * always first and both eviction and the expiry sweep only ever look at the
7
+ * front.
8
+ */
9
+ export class BoundedMap {
10
+ entries = new Map();
11
+ maxEntries;
12
+ ttlMs;
13
+ now;
14
+ constructor(options) {
15
+ if (!Number.isInteger(options.maxEntries) || options.maxEntries < 1) {
16
+ throw new RangeError(`maxEntries must be a positive integer, got ${options.maxEntries}`);
17
+ }
18
+ if (options.ttlMs !== undefined && !(options.ttlMs > 0)) {
19
+ throw new RangeError(`ttlMs must be positive, got ${options.ttlMs}`);
20
+ }
21
+ this.maxEntries = options.maxEntries;
22
+ this.ttlMs = options.ttlMs;
23
+ this.now = options.now ?? Date.now;
24
+ }
25
+ get size() {
26
+ return this.entries.size;
27
+ }
28
+ /** Returns the value and marks the entry as recently used; `undefined` if absent or expired. */
29
+ get(key) {
30
+ const entry = this.entries.get(key);
31
+ if (entry === undefined)
32
+ return undefined;
33
+ const now = this.now();
34
+ this.entries.delete(key);
35
+ if (this.isExpired(entry, now))
36
+ return undefined;
37
+ this.entries.set(key, { value: entry.value, touchedAt: now });
38
+ return entry.value;
39
+ }
40
+ /** Presence check that does not count as a use. */
41
+ has(key) {
42
+ const entry = this.entries.get(key);
43
+ return entry !== undefined && !this.isExpired(entry, this.now());
44
+ }
45
+ set(key, value) {
46
+ const now = this.now();
47
+ this.entries.delete(key);
48
+ this.sweepExpired(now);
49
+ this.entries.set(key, { value, touchedAt: now });
50
+ while (this.entries.size > this.maxEntries) {
51
+ const oldest = this.entries.keys().next();
52
+ if (oldest.done === true)
53
+ break;
54
+ this.entries.delete(oldest.value);
55
+ }
56
+ return this;
57
+ }
58
+ delete(key) {
59
+ return this.entries.delete(key);
60
+ }
61
+ clear() {
62
+ this.entries.clear();
63
+ }
64
+ isExpired(entry, now) {
65
+ return this.ttlMs !== undefined && now - entry.touchedAt >= this.ttlMs;
66
+ }
67
+ sweepExpired(now) {
68
+ if (this.ttlMs === undefined)
69
+ return;
70
+ for (const [key, entry] of this.entries) {
71
+ if (!this.isExpired(entry, now))
72
+ break;
73
+ this.entries.delete(key);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=bounded-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-map.js","sourceRoot":"","sources":["../../src/lib/bounded-map.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,13 @@
1
1
  import type { ToolCallRecord } from '../storage/types.js';
2
+ /**
3
+ * A string-keyed lookup, satisfied by `Map` and `BoundedMap`. Not a read-only
4
+ * contract: `BoundedMap.get` counts as a use, refreshing the entry's LRU
5
+ * position and idle-expiry clock, so the backfill functions below keep the
6
+ * entries they look up alive.
7
+ */
8
+ export interface StringLookup {
9
+ get(key: string): string | undefined;
10
+ }
2
11
  /**
3
12
  * Splits a flat, timestamp-ordered sequence into one group per agent — the
4
13
  * parent/orchestrator session (`agentId` absent) plus one per distinct
@@ -21,14 +30,26 @@ export declare function partitionByAgent<T extends {
21
30
  }>(items: readonly T[]): readonly T[][];
22
31
  /**
23
32
  * Fills in `ToolCallRecord.agentId` from a `toolUseId → agentId` map when the
24
- * record's own `agentId` is absent — Claude Code's hook envelope documents
25
- * `agent_id`/`agent_type` as present on every hook event fired inside a
26
- * subagent call, but in practice it never populates. `toolUseId`
33
+ * record's own `agentId` is absent. Claude Code's hook envelope documents
34
+ * `agent_id` as present on every hook event fired inside a subagent call, but
35
+ * some installs have been observed never sending it. `toolUseId`
27
36
  * is reliable on both sides: it's already captured correctly on every
28
37
  * ToolCallRecord, and it's the same id Claude Code assigns to the matching
29
38
  * `tool_use` block in that subagent's own transcript, which `SubagentWatcher`
30
39
  * already tails for token accounting. Returns the same object reference when
31
40
  * no backfill applies, so callers can cheaply check whether anything changed.
32
41
  */
33
- export declare function backfillAgentId(record: ToolCallRecord, toolUseIdToAgentId: ReadonlyMap<string, string>): ToolCallRecord;
42
+ export declare function backfillAgentId(record: ToolCallRecord, toolUseIdToAgentId: StringLookup): ToolCallRecord;
43
+ /**
44
+ * Fills in `ToolCallRecord.agentType` from an `agentId → subagent type` map
45
+ * once the record's `agentId` is known (either from the envelope or from
46
+ * `backfillAgentId()`, so run that first). Recent Claude Code sends
47
+ * `agent_type` on the hook envelope itself, and a non-empty envelope value is
48
+ * never overwritten; this covers the records where the envelope left it out
49
+ * (as on installs that send neither). The map is filled from the subagent
50
+ * transcript's meta sidecar and from the parent's own `Agent` tool call (see
51
+ * `SubagentAttributionIndex`). Returns the same object reference when no
52
+ * backfill applies.
53
+ */
54
+ export declare function backfillAgentType(record: ToolCallRecord, agentTypeByAgentId: StringLookup): ToolCallRecord;
34
55
  //# sourceMappingURL=agent-partition.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-partition.d.ts","sourceRoot":"","sources":["../../src/metrics/agent-partition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,KAAK,EAAE,SAAS,CAAC,EAAE,GAClB,SAAS,CAAC,EAAE,EAAE,CAchB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9C,cAAc,CAMhB"}
1
+ {"version":3,"file":"agent-partition.d.ts","sourceRoot":"","sources":["../../src/metrics/agent-partition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACtE,KAAK,EAAE,SAAS,CAAC,EAAE,GAClB,SAAS,CAAC,EAAE,EAAE,CAchB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,YAAY,GAC/B,cAAc,CAMhB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,kBAAkB,EAAE,YAAY,GAC/B,cAAc,CAMhB"}
@@ -31,9 +31,9 @@ export function partitionByAgent(items) {
31
31
  }
32
32
  /**
33
33
  * Fills in `ToolCallRecord.agentId` from a `toolUseId → agentId` map when the
34
- * record's own `agentId` is absent — Claude Code's hook envelope documents
35
- * `agent_id`/`agent_type` as present on every hook event fired inside a
36
- * subagent call, but in practice it never populates. `toolUseId`
34
+ * record's own `agentId` is absent. Claude Code's hook envelope documents
35
+ * `agent_id` as present on every hook event fired inside a subagent call, but
36
+ * some installs have been observed never sending it. `toolUseId`
37
37
  * is reliable on both sides: it's already captured correctly on every
38
38
  * ToolCallRecord, and it's the same id Claude Code assigns to the matching
39
39
  * `tool_use` block in that subagent's own transcript, which `SubagentWatcher`
@@ -50,4 +50,25 @@ export function backfillAgentId(record, toolUseIdToAgentId) {
50
50
  return record;
51
51
  return { ...record, agentId };
52
52
  }
53
+ /**
54
+ * Fills in `ToolCallRecord.agentType` from an `agentId → subagent type` map
55
+ * once the record's `agentId` is known (either from the envelope or from
56
+ * `backfillAgentId()`, so run that first). Recent Claude Code sends
57
+ * `agent_type` on the hook envelope itself, and a non-empty envelope value is
58
+ * never overwritten; this covers the records where the envelope left it out
59
+ * (as on installs that send neither). The map is filled from the subagent
60
+ * transcript's meta sidecar and from the parent's own `Agent` tool call (see
61
+ * `SubagentAttributionIndex`). Returns the same object reference when no
62
+ * backfill applies.
63
+ */
64
+ export function backfillAgentType(record, agentTypeByAgentId) {
65
+ if (typeof record.agentType === 'string' && record.agentType.length > 0)
66
+ return record;
67
+ if (typeof record.agentId !== 'string')
68
+ return record;
69
+ const agentType = agentTypeByAgentId.get(record.agentId);
70
+ if (agentType === undefined)
71
+ return record;
72
+ return { ...record, agentType };
73
+ }
53
74
  //# sourceMappingURL=agent-partition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-partition.js","sourceRoot":"","sources":["../../src/metrics/agent-partition.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,kBAA+C;IAE/C,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAChD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"agent-partition.js","sourceRoot":"","sources":["../../src/metrics/agent-partition.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmB;IAEnB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,kBAAgC;IAEhC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAChD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAsB,EACtB,kBAAgC;IAEhC,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IACvF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC3C,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC"}
@@ -34,11 +34,11 @@ export interface TokenRecordContext {
34
34
  readonly workflowRunId?: string | null;
35
35
  readonly agentId?: string;
36
36
  /**
37
- * Best-effort subagent type, cross-referenced by the caller from a
38
- * `ToolCallRecord` sharing the same `agentId` (the transcript-derived
39
- * subagent token pipeline carries no type of its own — see
40
- * `subagentByAgentType`'s doc comment). Absent when no such record has
41
- * been seen yet for this `agentId`.
37
+ * Best-effort subagent type for this `agentId`, supplied by the caller from
38
+ * the subagent transcript's `agent-<id>.meta.json` sidecar, the hook
39
+ * envelope of one of that subagent's tool calls, or, failing those, the
40
+ * parent's `Agent` tool call (see `SubagentAttributionIndex`). Absent when
41
+ * none has been seen yet for this `agentId`.
42
42
  */
43
43
  readonly agentType?: string;
44
44
  /**
@@ -99,10 +99,9 @@ export interface CostMetrics {
99
99
  readonly subagentCostByDayUsd: Record<string, number>;
100
100
  /**
101
101
  * Subagent-attributed spend bucketed by `ctx.agentType` (best-effort — see
102
- * `TokenRecordContext.agentType`). Entries only appear for `agentId`s a
103
- * `ToolCallRecord` with a matching type has already been seen for; a
104
- * subagent that never makes a hook-visible tool call has its cost counted
105
- * in `subagentCostUsd` but not broken out here. `count` is the number of
102
+ * `TokenRecordContext.agentType`). Only token events whose `agentId` had a
103
+ * known type when recorded land here; the rest are counted in
104
+ * `subagentCostUsd` but not broken out by type. `count` is the number of
106
105
  * token events attributed to that agent type; `durationMs` is always 0 (no
107
106
  * per-call duration signal reaches this tracker). In-memory only — unlike
108
107
  * `costByModel`, this does NOT survive a process restart.
@@ -1 +1 @@
1
- {"version":3,"file":"cost-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/cost-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/cost-tracker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cost-tracker.js","sourceRoot":"","sources":["../../src/metrics/cost-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AA+C5C,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtD;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,SAAwB,EAAE,MAAc;IAClE,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM;QACrC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM;QACvC,WAAW,EAAE,SAAS,CAAC,WAAW,GAAG,MAAM;QAC3C,YAAY,EAAE,SAAS,CAAC,YAAY,GAAG,MAAM;QAC7C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,GAAG,MAAM;QACrD,QAAQ,EAAE,SAAS,CAAC,QAAQ,GAAG,MAAM;QACrC,mBAAmB,EAAE,SAAS,CAAC,mBAAmB,GAAG,MAAM;KAC5D,CAAC;AACJ,CAAC;AA+HD,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,OAAO,WAAW;IACd,cAAc,CAAwB;IAEtC,YAAY,GAAG,CAAC,CAAC;IACjB,gBAAgB,GAAG,CAAC,CAAC;IACrB,iBAAiB,GAAG,CAAC,CAAC;IACtB,mBAAmB,GAAG,CAAC,CAAC;IACxB,oBAAoB,GAAG,CAAC,CAAC;IACzB,wBAAwB,GAAG,CAAC,CAAC;IAC7B,oBAAoB,GAAG,CAAC,CAAC;IACzB,YAAY,GAAkB,IAAI,CAAC;IACnC,WAAW,GAAG,CAAC,CAAC;IAChB,eAAe,GAAG,CAAC,CAAC;IACpB,mBAAmB,GAAyB,IAAI,CAAC;IACjD,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,yEAAyE;IACzE,0CAA0C;IAClC,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzD;;;;;;OAMG;IACK,mBAAmB,GAAG,IAAI,GAAG,EAA+B,CAAC;IACrE,8EAA8E;IACtE,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxD;;;OAGG;IACK,eAAe,GAAG,CAAC,CAAC;IAE5B,2EAA2E;IACnE,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzD,6FAA6F;IACrF,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnE,4CAA4C;IACpC,kBAAkB,GAAG,CAAC,CAAC;IAC/B,0FAA0F;IAClF,aAAa,GAAkB,IAAI,CAAC;IACpC,aAAa,GAAG,CAAC,CAAC;IAClB,iBAAiB,GAAG,CAAC,CAAC;IACb,cAAc,CAAS;IAExC;;;;;;;;;;;;;OAaG;IACH,YAAY,cAA+B,EAAE,OAAqC;QAChF,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAiB,EAAE,KAAa,EAAE,GAAwB;QACzE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,UAAkB,EAAE,WAAmB,EAAE,KAAa;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,KAAK,GAAe;YACxB,WAAW;YACX,YAAY;YACZ,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;YAClB,mBAAmB,EAAE,CAAC;YACtB,WAAW,EAAE,WAAW,GAAG,YAAY;SACxC,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACK,4BAA4B,CAClC,KAAiB,EACjB,GAAmC,EACnC,SAAwB;QAExB,IAAI,GAAG,EAAE,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9D,MAAM,MAAM,GACV,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,mBAAmB,CAAC;YAC7F,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,iBAAiB,GAAG,QAAQ,EAAE,SAAS,CAAC;YAC9C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC1C,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ;gBACtD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,MAAM;gBACxC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC;gBACjC,UAAU,EAAE,CAAC;gBACb,SAAS,EAAE;oBACT,WAAW,EAAE,CAAC,iBAAiB,EAAE,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW;oBACtE,YAAY,EAAE,CAAC,iBAAiB,EAAE,YAAY,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY;oBACzE,eAAe,EAAE,CAAC,iBAAiB,EAAE,eAAe,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe;oBAClF,mBAAmB,EACjB,CAAC,iBAAiB,EAAE,mBAAmB,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB;iBAC5E;aACF,CAAC,CAAC;QACL,CAAC;QAED,IACE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,mBAAmB;YACrE,mBAAmB,EACnB,CAAC;YACD,IAAI,CAAC,kBAAkB,IAAI,SAAS,CAAC,QAAQ,CAAC;QAChD,CAAC;QAED,IAAI,GAAG,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;QAClE,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,KAAiB,EACjB,KAAa,EACb,GAAwB;QAExB,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,SAAS,GACb,IAAI,CAAC,cAAc,KAAK,CAAC;YACvB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,0EAA0E;QAC1E,wEAAwE;QACxE,wEAAwE;QACxE,gDAAgD;QAChD,MAAM,IAAI,GAAG,GAAG,EAAE,WAAW,IAAI,SAAS,CAAC;QAC3C,MAAM,MAAM,GACV,GAAG,EAAE,WAAW,KAAK,SAAS,IAAI,SAAS,GAAG,GAAG,CAAC,WAAW,GAAG,yBAAyB,CAAC;QAE5F,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBAC9D,WAAW,EAAE,GAAG,EAAE,WAAW;gBAC7B,OAAO,EAAE,SAAS,GAAG,CAAC,GAAG,EAAE,WAAW,IAAI,SAAS,CAAC;aACrD,CAAC,CAAC;YACH,oEAAoE;YACpE,qBAAqB;YACrB,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW,CAAC;YAC3C,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,YAAY,CAAC;YAC7C,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,cAAc,CAAC;YACjD,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,eAAe,CAAC;YACnD,IAAI,CAAC,wBAAwB,IAAI,KAAK,CAAC,mBAAmB,CAAC;YAC3D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACrF,IAAI,CAAC,oBAAoB,IAAI,SAAS,CAAC,mBAAmB,CAAC;YAC3D,IAAI,GAAG,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC,QAAQ,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,QAAQ,CAAC;YAC3C,CAAC;YACD,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,wBAAwB,IAAI,KAAK,CAAC,mBAAmB,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrF,IAAI,CAAC,oBAAoB,IAAI,SAAS,CAAC,mBAAmB,CAAC;QAE3D,2BAA2B;QAC3B,IAAI,GAAG,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC,QAAQ,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,QAAQ,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,4BAA4B,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAEzD,gBAAgB;QAChB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,GAAG,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAC3B,MAAM,EACN,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;YACxD,uEAAuE;YACvE,2DAA2D;YAC3D,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAED,iCAAiC;QACjC,IAAI,GAAG,EAAE,aAAa,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;YAC5F,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,iBAAiB,CAAC,IAAqB;QACrC,MAAM,WAAW,GACf,IAAI,CAAC,YAAY,KAAK,CAAC;YACvB,IAAI,CAAC,gBAAgB,KAAK,CAAC;YAC3B,IAAI,CAAC,iBAAiB,KAAK,CAAC;YAC5B,IAAI,CAAC,mBAAmB,KAAK,CAAC;YAC9B,IAAI,CAAC,oBAAoB,KAAK,CAAC;YAC/B,IAAI,CAAC,wBAAwB,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAC/C,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,wBAAwB,CAAC;QAC/D,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAEtB,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,MAAM,EACX,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAC5D,CAAC;YACF,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAC3B,IAAI,CAAC,MAAM,EACX,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAC5E,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;YAChF,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,MAAM,WAAW,GACf,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QACpF,IAAI,WAAW,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,oBAAoB,KAAK,CAAC,IAAI,IAAI,CAAC,wBAAwB,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACxF,OAAO,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,MAAc;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,MAAc;QAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;IACvD,CAAC;IAED,+EAA+E;IAC/E,uBAAuB,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,KAAa;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;YAAE,KAAK,IAAI,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,qBAAqB,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,+EAA+E;IAC/E,CAAC,qBAAqB;QACpB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClD,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC;QACxD,MAAM,gBAAgB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,eAAe;YACjC,SAAS,EAAE,IAAI,CAAC,aAAa;YAC7B,gBAAgB;YAChB,sBAAsB,EAAE,IAAI;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAa;QAC9B,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAClC,CAAC;IAED,UAAU;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEjE,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc;YAC5C,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,kBAAkB;YACrD,CAAC,CAAC,CAAC,CAAC;QAEN,0EAA0E;QAC1E,MAAM,mBAAmB,GAA2C,EAAE,CAAC;QACvE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACvD,mBAAmB,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,mBAAmB,GACvB,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,oBAAoB;YACzB,IAAI,CAAC,wBAAwB,CAAC;QAEhC,OAAO;YACL,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;YACvD,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;YACjD,iBAAiB,EACf,OAAO,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI;YAC3F,mBAAmB,EACjB,OAAO,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI;YACnF,oBAAoB,EAClB,OAAO,IAAI,mBAAmB,GAAG,CAAC;gBAChC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,GAAG,SAAS;gBACvD,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACxC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,mBAAmB;YACnB,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;YACnD,oBAAoB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACnE,mBAAmB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC;YACjE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,yBAAyB,EAAE,IAAI,CAAC,cAAc;SAC/C,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,UAA4B;QACtC,MAAM,KAAK,GAAoC,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,CAAC;QAED,yEAAyE;QACzE,uEAAuE;QACvE,sDAAsD;QACtD,wEAAwE;QACxE,mEAAmE;QACnE,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,UAAU,CAAC,MAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzE,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACxE,UAAU,CAAC,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC1E,UAAU,CAAC,MAAM,CAAC,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC9E,UAAU,CAAC,MAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACjF,UAAU,CAAC,MAAM,CAAC,+BAA+B,EAAE,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACzF,UAAU,CAAC,MAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAEjF,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;YAC/B,UAAU,CAAC,MAAM,CACf,+BAA+B,EAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAC1C,KAAK,CACN,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC;YAC/E,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,MAAM,CACf,gCAAgC,EAChC,IAAI,CAAC,YAAY,GAAG,kBAAkB,EACtC,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACnE,UAAU,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC3E,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACvE,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,UAAkB;QACtB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"cost-tracker.js","sourceRoot":"","sources":["../../src/metrics/cost-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import type { ToolCallRecord } from '../storage/types.js';
2
+ /**
3
+ * One entry per subagent tool call. Each entry only has to live from when
4
+ * `SubagentWatcher` sees the `tool_use` block until the hook record is
5
+ * attributed at intake and again at task close, so 10k covers many concurrent
6
+ * subagents' worth of in-flight calls in roughly 2 MB. Evicting an entry only
7
+ * leaves that one call unattributed, which is already the best-effort
8
+ * behavior when the transcript tail lags.
9
+ */
10
+ export declare const DEFAULT_MAX_TOOL_USE_IDS = 10000;
11
+ /** One entry per spawned subagent; far fewer than tool calls. */
12
+ export declare const DEFAULT_MAX_SUBAGENTS = 1000;
13
+ /**
14
+ * Idle expiry for both indexes. Any use refreshes an entry, so a live
15
+ * subagent never expires; this only reclaims entries from sessions that
16
+ * ended long ago in a `--local` daemon that otherwise runs indefinitely.
17
+ */
18
+ export declare const DEFAULT_SUBAGENT_ATTRIBUTION_TTL_MS: number;
19
+ export interface SubagentAttributionIndexOptions {
20
+ readonly maxToolUseIds?: number;
21
+ readonly maxSubagents?: number;
22
+ readonly ttlMs?: number;
23
+ /** Clock override for tests. */
24
+ readonly now?: () => number;
25
+ }
26
+ /**
27
+ * What one subagent transcript turn tells the index: its subagent, that
28
+ * subagent's type when known, and the tool calls it made.
29
+ */
30
+ export interface SubagentTurnAttribution {
31
+ readonly agentId: string;
32
+ readonly toolUseIds: readonly string[];
33
+ readonly agentType?: string;
34
+ }
35
+ /**
36
+ * Reads the turns live subagent transcripts gained since they were last read,
37
+ * feeding each into the index (`SubagentWatcher` does, through its
38
+ * `onTurnRead` option), and returns how many it read.
39
+ */
40
+ export interface LiveSubagentTranscriptReader {
41
+ readLiveTails(sessionId: string | undefined): number;
42
+ }
43
+ export interface SubagentAttributionIndexSize {
44
+ readonly toolUseIds: number;
45
+ readonly subagents: number;
46
+ }
47
+ /**
48
+ * Joins the two signals that attribute a hook `ToolCallRecord` to the
49
+ * subagent that made it when the hook envelope leaves `agent_id` or
50
+ * `agent_type` out. Claude Code documents both on calls made inside a
51
+ * subagent, and recent versions do send `agent_type`, but some installs have
52
+ * been observed sending neither:
53
+ *
54
+ * - `toolUseId → agentId`, from `tool_use` blocks `SubagentWatcher` finds
55
+ * while tailing each subagent's transcript (see `backfillAgentId()`).
56
+ * - `agentId → subagent type`, from the subagent transcript's
57
+ * `agent-<id>.meta.json` sidecar (written at spawn, carried on each
58
+ * `SubagentWatcher` turn), from a hook envelope that carries both fields,
59
+ * and as a fallback from the parent's own `Agent` tool call, the one record
60
+ * carrying both `spawnedAgentId` (`tool_response.agentId`) and
61
+ * `subagentType` (`tool_input.subagent_type`).
62
+ *
63
+ * Both indexes are size-capped LRU maps with idle expiry so a long-running
64
+ * `--local` daemon doesn't accumulate one entry per subagent call forever.
65
+ */
66
+ export declare class SubagentAttributionIndex {
67
+ private readonly toolUseIdToAgentId;
68
+ private readonly agentTypeByAgentId;
69
+ constructor(options?: SubagentAttributionIndexOptions);
70
+ /**
71
+ * Learns a subagent's type from the parent's `Agent` tool call; ignores every
72
+ * other record. `subagentType` is `tool_input.subagent_type` read straight
73
+ * off a `buffer.jsonl` line, so it passes the same `normalizeAgentType()`
74
+ * check as the sidecar type before it can be backfilled onto audit records.
75
+ */
76
+ recordAgentToolCall(record: ToolCallRecord): void;
77
+ /**
78
+ * Learns a subagent's type from its own transcript's meta sidecar, which
79
+ * exists from spawn time. This is the earlier of the two type signals: the
80
+ * parent's `Agent` call normally completes only after the subagent returns.
81
+ */
82
+ recordSubagentType(agentId: string, agentType: string | undefined): void;
83
+ /** Records the `tool_use` ids a subagent transcript turn contained. */
84
+ recordSubagentToolUses(agentId: string, toolUseIds: readonly string[]): void;
85
+ /** Records a subagent transcript turn's type and `tool_use` ids. */
86
+ recordSubagentTurn(turn: SubagentTurnAttribution): void;
87
+ /**
88
+ * Attributes a hook record as it arrives, before any consumer (notably the
89
+ * audit trail) sees it. An envelope carrying both `agent_id` and
90
+ * `agent_type` teaches the index that subagent's type, for turns that lack a
91
+ * sidecar. When the backfill still leaves `agentId` unknown, `reader` reads
92
+ * the subagent transcripts now and the backfill runs again: a fast call's
93
+ * `tool_use` line is usually on disk but not yet polled, and the record would
94
+ * otherwise be audited without its subagent. Parent-session calls
95
+ * take the same path, since nothing tells them apart before the read, at the
96
+ * cost `SubagentWatcher.readLiveTails()` bounds. If the read throws, the
97
+ * record is returned as the first backfill left it.
98
+ */
99
+ attributeAtIntake(record: ToolCallRecord, reader: LiveSubagentTranscriptReader | null): ToolCallRecord;
100
+ /** The subagent type for `agentId`, if its sidecar, a hook envelope, or its spawning `Agent` call has been seen. */
101
+ agentTypeFor(agentId: string): string | undefined;
102
+ /**
103
+ * Fills in `agentId` and then `agentType` where each is absent and known.
104
+ * Never overwrites envelope-provided values. Returns the same reference
105
+ * when nothing changed.
106
+ */
107
+ backfill(record: ToolCallRecord): ToolCallRecord;
108
+ get size(): SubagentAttributionIndexSize;
109
+ }
110
+ //# sourceMappingURL=subagent-attribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-attribution.d.ts","sourceRoot":"","sources":["../../src/metrics/subagent-attribution.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,iEAAiE;AACjE,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAAsB,CAAC;AAEvE,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA4B;IAC3C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CACtD;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAChE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;gBAEpD,OAAO,GAAE,+BAAoC;IAczD;;;;;OAKG;IACH,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAUjD;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIxE,uEAAuE;IACvE,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAM5E,oEAAoE;IACpE,kBAAkB,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI;IAKvD;;;;;;;;;;;OAWG;IACH,iBAAiB,CACf,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,4BAA4B,GAAG,IAAI,GAC1C,cAAc;IAkBjB,oHAAoH;IACpH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc;IAOhD,IAAI,IAAI,IAAI,4BAA4B,CAKvC;CACF"}
@@ -0,0 +1,143 @@
1
+ import { createLogger } from '../shared/index.js';
2
+ import { normalizeAgentType } from '../lib/agent-id.js';
3
+ import { BoundedMap } from '../lib/bounded-map.js';
4
+ import { backfillAgentId, backfillAgentType } from './agent-partition.js';
5
+ const logger = createLogger('subagent-attribution');
6
+ /**
7
+ * One entry per subagent tool call. Each entry only has to live from when
8
+ * `SubagentWatcher` sees the `tool_use` block until the hook record is
9
+ * attributed at intake and again at task close, so 10k covers many concurrent
10
+ * subagents' worth of in-flight calls in roughly 2 MB. Evicting an entry only
11
+ * leaves that one call unattributed, which is already the best-effort
12
+ * behavior when the transcript tail lags.
13
+ */
14
+ export const DEFAULT_MAX_TOOL_USE_IDS = 10_000;
15
+ /** One entry per spawned subagent; far fewer than tool calls. */
16
+ export const DEFAULT_MAX_SUBAGENTS = 1_000;
17
+ /**
18
+ * Idle expiry for both indexes. Any use refreshes an entry, so a live
19
+ * subagent never expires; this only reclaims entries from sessions that
20
+ * ended long ago in a `--local` daemon that otherwise runs indefinitely.
21
+ */
22
+ export const DEFAULT_SUBAGENT_ATTRIBUTION_TTL_MS = 24 * 60 * 60 * 1000;
23
+ /**
24
+ * Joins the two signals that attribute a hook `ToolCallRecord` to the
25
+ * subagent that made it when the hook envelope leaves `agent_id` or
26
+ * `agent_type` out. Claude Code documents both on calls made inside a
27
+ * subagent, and recent versions do send `agent_type`, but some installs have
28
+ * been observed sending neither:
29
+ *
30
+ * - `toolUseId → agentId`, from `tool_use` blocks `SubagentWatcher` finds
31
+ * while tailing each subagent's transcript (see `backfillAgentId()`).
32
+ * - `agentId → subagent type`, from the subagent transcript's
33
+ * `agent-<id>.meta.json` sidecar (written at spawn, carried on each
34
+ * `SubagentWatcher` turn), from a hook envelope that carries both fields,
35
+ * and as a fallback from the parent's own `Agent` tool call, the one record
36
+ * carrying both `spawnedAgentId` (`tool_response.agentId`) and
37
+ * `subagentType` (`tool_input.subagent_type`).
38
+ *
39
+ * Both indexes are size-capped LRU maps with idle expiry so a long-running
40
+ * `--local` daemon doesn't accumulate one entry per subagent call forever.
41
+ */
42
+ export class SubagentAttributionIndex {
43
+ toolUseIdToAgentId;
44
+ agentTypeByAgentId;
45
+ constructor(options = {}) {
46
+ const ttlMs = options.ttlMs ?? DEFAULT_SUBAGENT_ATTRIBUTION_TTL_MS;
47
+ this.toolUseIdToAgentId = new BoundedMap({
48
+ maxEntries: options.maxToolUseIds ?? DEFAULT_MAX_TOOL_USE_IDS,
49
+ ttlMs,
50
+ now: options.now,
51
+ });
52
+ this.agentTypeByAgentId = new BoundedMap({
53
+ maxEntries: options.maxSubagents ?? DEFAULT_MAX_SUBAGENTS,
54
+ ttlMs,
55
+ now: options.now,
56
+ });
57
+ }
58
+ /**
59
+ * Learns a subagent's type from the parent's `Agent` tool call; ignores every
60
+ * other record. `subagentType` is `tool_input.subagent_type` read straight
61
+ * off a `buffer.jsonl` line, so it passes the same `normalizeAgentType()`
62
+ * check as the sidecar type before it can be backfilled onto audit records.
63
+ */
64
+ recordAgentToolCall(record) {
65
+ if (record.toolName !== 'Agent')
66
+ return;
67
+ const spawnedAgentId = typeof record.spawnedAgentId === 'string' ? record.spawnedAgentId : undefined;
68
+ const subagentType = normalizeAgentType(record.subagentType);
69
+ if (spawnedAgentId && subagentType && !this.agentTypeByAgentId.has(spawnedAgentId)) {
70
+ this.agentTypeByAgentId.set(spawnedAgentId, subagentType);
71
+ }
72
+ }
73
+ /**
74
+ * Learns a subagent's type from its own transcript's meta sidecar, which
75
+ * exists from spawn time. This is the earlier of the two type signals: the
76
+ * parent's `Agent` call normally completes only after the subagent returns.
77
+ */
78
+ recordSubagentType(agentId, agentType) {
79
+ if (agentType)
80
+ this.agentTypeByAgentId.set(agentId, agentType);
81
+ }
82
+ /** Records the `tool_use` ids a subagent transcript turn contained. */
83
+ recordSubagentToolUses(agentId, toolUseIds) {
84
+ for (const toolUseId of toolUseIds) {
85
+ this.toolUseIdToAgentId.set(toolUseId, agentId);
86
+ }
87
+ }
88
+ /** Records a subagent transcript turn's type and `tool_use` ids. */
89
+ recordSubagentTurn(turn) {
90
+ this.recordSubagentType(turn.agentId, turn.agentType);
91
+ this.recordSubagentToolUses(turn.agentId, turn.toolUseIds);
92
+ }
93
+ /**
94
+ * Attributes a hook record as it arrives, before any consumer (notably the
95
+ * audit trail) sees it. An envelope carrying both `agent_id` and
96
+ * `agent_type` teaches the index that subagent's type, for turns that lack a
97
+ * sidecar. When the backfill still leaves `agentId` unknown, `reader` reads
98
+ * the subagent transcripts now and the backfill runs again: a fast call's
99
+ * `tool_use` line is usually on disk but not yet polled, and the record would
100
+ * otherwise be audited without its subagent. Parent-session calls
101
+ * take the same path, since nothing tells them apart before the read, at the
102
+ * cost `SubagentWatcher.readLiveTails()` bounds. If the read throws, the
103
+ * record is returned as the first backfill left it.
104
+ */
105
+ attributeAtIntake(record, reader) {
106
+ if (typeof record.agentId === 'string' && record.agentId.length > 0) {
107
+ this.recordSubagentType(record.agentId, normalizeAgentType(record.agentType));
108
+ }
109
+ const backfilled = this.backfill(record);
110
+ if (reader === null || backfilled.agentId !== undefined)
111
+ return backfilled;
112
+ let turnsRead;
113
+ try {
114
+ turnsRead = reader.readLiveTails(record.sessionId ?? undefined);
115
+ }
116
+ catch (err) {
117
+ logger.warn('On-demand subagent transcript read failed', {
118
+ error: err instanceof Error ? err.message : String(err),
119
+ });
120
+ return backfilled;
121
+ }
122
+ return turnsRead > 0 ? this.backfill(backfilled) : backfilled;
123
+ }
124
+ /** The subagent type for `agentId`, if its sidecar, a hook envelope, or its spawning `Agent` call has been seen. */
125
+ agentTypeFor(agentId) {
126
+ return this.agentTypeByAgentId.get(agentId);
127
+ }
128
+ /**
129
+ * Fills in `agentId` and then `agentType` where each is absent and known.
130
+ * Never overwrites envelope-provided values. Returns the same reference
131
+ * when nothing changed.
132
+ */
133
+ backfill(record) {
134
+ return backfillAgentType(backfillAgentId(record, this.toolUseIdToAgentId), this.agentTypeByAgentId);
135
+ }
136
+ get size() {
137
+ return {
138
+ toolUseIds: this.toolUseIdToAgentId.size,
139
+ subagents: this.agentTypeByAgentId.size,
140
+ };
141
+ }
142
+ }
143
+ //# sourceMappingURL=subagent-attribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-attribution.js","sourceRoot":"","sources":["../../src/metrics/subagent-attribution.ts"],"names":[],"mappings":"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"}