@newrelic/preflight 1.59.0 → 1.59.1
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/dist/hooks/collector-script.d.ts.map +1 -1
- package/dist/hooks/collector-script.js.map +1 -1
- package/dist/hooks/event-processor.d.ts +2 -0
- package/dist/hooks/event-processor.d.ts.map +1 -1
- package/dist/hooks/event-processor.js +8 -2
- package/dist/hooks/event-processor.js.map +1 -1
- package/dist/hooks/subagent-watcher.d.ts +81 -2
- package/dist/hooks/subagent-watcher.d.ts.map +1 -1
- package/dist/hooks/subagent-watcher.js +300 -21
- package/dist/hooks/subagent-watcher.js.map +1 -1
- package/dist/index.js +25 -32
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-id.d.ts +10 -0
- package/dist/lib/agent-id.d.ts.map +1 -1
- package/dist/lib/agent-id.js +21 -0
- package/dist/lib/agent-id.js.map +1 -1
- package/dist/lib/bounded-map.d.ts +37 -0
- package/dist/lib/bounded-map.d.ts.map +1 -0
- package/dist/lib/bounded-map.js +77 -0
- package/dist/lib/bounded-map.js.map +1 -0
- package/dist/metrics/agent-partition.d.ts +25 -4
- package/dist/metrics/agent-partition.d.ts.map +1 -1
- package/dist/metrics/agent-partition.js +24 -3
- package/dist/metrics/agent-partition.js.map +1 -1
- package/dist/metrics/cost-tracker.d.ts +8 -9
- package/dist/metrics/cost-tracker.d.ts.map +1 -1
- package/dist/metrics/cost-tracker.js.map +1 -1
- package/dist/metrics/subagent-attribution.d.ts +110 -0
- package/dist/metrics/subagent-attribution.d.ts.map +1 -0
- package/dist/metrics/subagent-attribution.js +143 -0
- package/dist/metrics/subagent-attribution.js.map +1 -0
- package/dist/storage/types.d.ts +30 -10
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js.map +1 -1
- package/dist/transport/nr-ingest.d.ts +2 -4
- package/dist/transport/nr-ingest.d.ts.map +1 -1
- package/dist/transport/nr-ingest.js.map +1 -1
- 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
|
|
25
|
-
* `agent_id
|
|
26
|
-
*
|
|
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:
|
|
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,
|
|
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
|
|
35
|
-
* `agent_id
|
|
36
|
-
*
|
|
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":"
|
|
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
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
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`).
|
|
103
|
-
*
|
|
104
|
-
*
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAQ7D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AA4BD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,mBAAmB,EAAE,aAAa,GAAG,IAAI,CAAC;IACnD,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sFAAsF;IACtF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE;;;;;;;;;OASG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C;6EACyE;IACzE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD
|
|
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":"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"}
|
|
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;AA8HD,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"}
|
|
@@ -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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"}
|