@newrelic/preflight 1.70.0 → 1.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard/routes/api-handler.d.ts.map +1 -1
- package/dist/dashboard/routes/api-handler.js +11 -16
- package/dist/dashboard/routes/api-handler.js.map +1 -1
- package/dist/dashboard/subagent-timeline-store.d.ts +12 -1
- package/dist/dashboard/subagent-timeline-store.d.ts.map +1 -1
- package/dist/dashboard/subagent-timeline-store.js +32 -4
- package/dist/dashboard/subagent-timeline-store.js.map +1 -1
- package/dist/dashboard/workflow-store.d.ts.map +1 -1
- package/dist/dashboard/workflow-store.js +2 -3
- package/dist/dashboard/workflow-store.js.map +1 -1
- package/dist/hooks/collector-script.d.ts.map +1 -1
- package/dist/hooks/collector-script.js +14 -8
- package/dist/hooks/collector-script.js.map +1 -1
- package/dist/hooks/copilot-app-usage-watcher.d.ts.map +1 -1
- package/dist/hooks/copilot-app-usage-watcher.js +3 -4
- package/dist/hooks/copilot-app-usage-watcher.js.map +1 -1
- package/dist/hooks/copilot-usage-watcher.d.ts +25 -5
- package/dist/hooks/copilot-usage-watcher.d.ts.map +1 -1
- package/dist/hooks/copilot-usage-watcher.js +254 -92
- package/dist/hooks/copilot-usage-watcher.js.map +1 -1
- package/dist/hooks/event-processor.d.ts +24 -11
- package/dist/hooks/event-processor.d.ts.map +1 -1
- package/dist/hooks/event-processor.js +139 -45
- package/dist/hooks/event-processor.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/parent-transcript-watcher.d.ts +1 -1
- package/dist/hooks/parent-transcript-watcher.d.ts.map +1 -1
- package/dist/hooks/parent-transcript-watcher.js +11 -6
- package/dist/hooks/parent-transcript-watcher.js.map +1 -1
- package/dist/hooks/session-resolver.d.ts.map +1 -1
- package/dist/hooks/session-resolver.js +2 -1
- package/dist/hooks/session-resolver.js.map +1 -1
- package/dist/hooks/subagent-watcher.d.ts +21 -15
- package/dist/hooks/subagent-watcher.d.ts.map +1 -1
- package/dist/hooks/subagent-watcher.js +89 -73
- package/dist/hooks/subagent-watcher.js.map +1 -1
- package/dist/hooks/throttled-warning.d.ts +5 -5
- package/dist/hooks/throttled-warning.d.ts.map +1 -1
- package/dist/hooks/throttled-warning.js +14 -12
- package/dist/hooks/throttled-warning.js.map +1 -1
- package/dist/hooks/workflow-watcher.d.ts.map +1 -1
- package/dist/hooks/workflow-watcher.js +2 -2
- package/dist/hooks/workflow-watcher.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -62
- package/dist/index.js.map +1 -1
- package/dist/install/cli.d.ts.map +1 -1
- package/dist/install/cli.js +131 -17
- package/dist/install/cli.js.map +1 -1
- package/dist/install/copilot-install-helper.d.ts +1 -0
- package/dist/install/copilot-install-helper.d.ts.map +1 -1
- package/dist/install/copilot-install-helper.js +82 -26
- package/dist/install/copilot-install-helper.js.map +1 -1
- package/dist/install/credentials.d.ts +23 -0
- package/dist/install/credentials.d.ts.map +1 -0
- package/dist/install/credentials.js +57 -0
- package/dist/install/credentials.js.map +1 -0
- package/dist/install/diagnostics.d.ts.map +1 -1
- package/dist/install/diagnostics.js +6 -3
- package/dist/install/diagnostics.js.map +1 -1
- package/dist/install/install-helper.d.ts +9 -0
- package/dist/install/install-helper.d.ts.map +1 -1
- package/dist/install/install-helper.js +42 -17
- package/dist/install/install-helper.js.map +1 -1
- package/dist/install/schedule.d.ts.map +1 -1
- package/dist/install/schedule.js +4 -1
- package/dist/install/schedule.js.map +1 -1
- package/dist/install/setup-wizard.d.ts.map +1 -1
- package/dist/install/setup-wizard.js +3 -3
- package/dist/install/setup-wizard.js.map +1 -1
- package/dist/install/target-user.d.ts +33 -0
- package/dist/install/target-user.d.ts.map +1 -0
- package/dist/install/target-user.js +121 -0
- package/dist/install/target-user.js.map +1 -0
- package/dist/lib/claude-config-dir.d.ts +3 -0
- package/dist/lib/claude-config-dir.d.ts.map +1 -0
- package/dist/lib/claude-config-dir.js +10 -0
- package/dist/lib/claude-config-dir.js.map +1 -0
- package/dist/lib/claude-settings-env.d.ts +18 -0
- package/dist/lib/claude-settings-env.d.ts.map +1 -0
- package/dist/lib/claude-settings-env.js +78 -0
- package/dist/lib/claude-settings-env.js.map +1 -0
- package/dist/lib/date.d.ts +7 -0
- package/dist/lib/date.d.ts.map +1 -1
- package/dist/lib/date.js +11 -1
- package/dist/lib/date.js.map +1 -1
- package/dist/lib/subagent-transcript-parser.d.ts +2 -0
- package/dist/lib/subagent-transcript-parser.d.ts.map +1 -1
- package/dist/lib/subagent-transcript-parser.js +5 -0
- package/dist/lib/subagent-transcript-parser.js.map +1 -1
- package/dist/lib/transcript-types.d.ts +4 -0
- package/dist/lib/transcript-types.d.ts.map +1 -1
- package/dist/metrics/cost-forecast.d.ts +2 -0
- package/dist/metrics/cost-forecast.d.ts.map +1 -1
- package/dist/metrics/cost-forecast.js +46 -24
- package/dist/metrics/cost-forecast.js.map +1 -1
- package/dist/metrics/cost-tracker.d.ts +3 -3
- package/dist/metrics/cost-tracker.js +3 -3
- package/dist/metrics/efficiency-score.d.ts +2 -2
- package/dist/metrics/efficiency-score.js +2 -2
- package/dist/metrics/first-save-baselines.d.ts +60 -0
- package/dist/metrics/first-save-baselines.d.ts.map +1 -0
- package/dist/metrics/first-save-baselines.js +77 -0
- package/dist/metrics/first-save-baselines.js.map +1 -0
- package/dist/metrics/local-session-aggregator.d.ts +6 -5
- package/dist/metrics/local-session-aggregator.d.ts.map +1 -1
- package/dist/metrics/local-session-aggregator.js +34 -6
- package/dist/metrics/local-session-aggregator.js.map +1 -1
- package/dist/metrics/model-pricing.d.ts +1 -1
- package/dist/metrics/model-pricing.d.ts.map +1 -1
- package/dist/metrics/model-pricing.js +2 -2
- package/dist/metrics/model-pricing.js.map +1 -1
- package/dist/metrics/model-usage-tracker.d.ts +2 -2
- package/dist/metrics/model-usage-tracker.js +2 -2
- package/dist/metrics/pricing-init.d.ts.map +1 -1
- package/dist/metrics/pricing-init.js +5 -3
- package/dist/metrics/pricing-init.js.map +1 -1
- package/dist/metrics/pricing-overlay.d.ts.map +1 -1
- package/dist/metrics/pricing-overlay.js +1 -4
- package/dist/metrics/pricing-overlay.js.map +1 -1
- package/dist/metrics/pricing-refresh.d.ts +16 -4
- package/dist/metrics/pricing-refresh.d.ts.map +1 -1
- package/dist/metrics/pricing-refresh.js +47 -1
- package/dist/metrics/pricing-refresh.js.map +1 -1
- package/dist/metrics/quality-proxy-tracker.d.ts +2 -2
- package/dist/metrics/quality-proxy-tracker.js +2 -2
- package/dist/metrics/session-tracker.d.ts +5 -1
- package/dist/metrics/session-tracker.d.ts.map +1 -1
- package/dist/metrics/session-tracker.js +58 -17
- package/dist/metrics/session-tracker.js.map +1 -1
- package/dist/metrics/task-detector.d.ts +2 -2
- package/dist/metrics/task-detector.js +2 -2
- package/dist/metrics/token-usage.d.ts +6 -0
- package/dist/metrics/token-usage.d.ts.map +1 -0
- package/dist/metrics/token-usage.js +34 -0
- package/dist/metrics/token-usage.js.map +1 -0
- package/dist/metrics/turn-cost-attributor.d.ts.map +1 -1
- package/dist/metrics/turn-cost-attributor.js +3 -0
- package/dist/metrics/turn-cost-attributor.js.map +1 -1
- package/dist/platforms/copilot-adapter.d.ts.map +1 -1
- package/dist/platforms/copilot-adapter.js +3 -0
- package/dist/platforms/copilot-adapter.js.map +1 -1
- package/dist/platforms/copilot-sdk-adapter.d.ts.map +1 -1
- package/dist/platforms/copilot-sdk-adapter.js +3 -0
- package/dist/platforms/copilot-sdk-adapter.js.map +1 -1
- package/dist/storage/drain-claims.d.ts +82 -0
- package/dist/storage/drain-claims.d.ts.map +1 -0
- package/dist/storage/drain-claims.js +239 -0
- package/dist/storage/drain-claims.js.map +1 -0
- package/dist/storage/hook-buffer.d.ts +7 -0
- package/dist/storage/hook-buffer.d.ts.map +1 -0
- package/dist/storage/hook-buffer.js +132 -0
- package/dist/storage/hook-buffer.js.map +1 -0
- package/dist/storage/local-store.d.ts +38 -16
- package/dist/storage/local-store.d.ts.map +1 -1
- package/dist/storage/local-store.js +228 -72
- package/dist/storage/local-store.js.map +1 -1
- package/dist/storage/retention.d.ts.map +1 -1
- package/dist/storage/retention.js +7 -6
- package/dist/storage/retention.js.map +1 -1
- package/dist/storage/session-store.d.ts +37 -8
- package/dist/storage/session-store.d.ts.map +1 -1
- package/dist/storage/session-store.js +255 -48
- package/dist/storage/session-store.js.map +1 -1
- package/dist/storage/types.d.ts +7 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +4 -0
- package/dist/storage/types.js.map +1 -1
- package/dist/tools/cost-tools.d.ts.map +1 -1
- package/dist/tools/cost-tools.js +1 -0
- package/dist/tools/cost-tools.js.map +1 -1
- package/dist/web/assets/{index-U9DPZ-Tb.js → index-CZvLy2Qy.js} +2 -2
- package/dist/web/index.html +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot-usage-watcher.js","sourceRoot":"","sources":["../../src/hooks/copilot-usage-watcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"copilot-usage-watcher.js","sourceRoot":"","sources":["../../src/hooks/copilot-usage-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
* computes duration, and emits completed ToolCallRecords via a callback.
|
|
7
7
|
*
|
|
8
8
|
* Handles orphans:
|
|
9
|
-
* - Pre events without a post within
|
|
9
|
+
* - Pre events without a post within their wait (pendingTtlMs) → timeout record
|
|
10
10
|
* - Permission-requested pre events (PermissionRequest seen, then nothing —
|
|
11
11
|
* Claude Code fires no hook event for an interactive user rejection)
|
|
12
|
-
* without a post within
|
|
13
|
-
* - Post events
|
|
12
|
+
* without a post within their permission wait (pendingTtlMs) → rejected record
|
|
13
|
+
* - Post events with no pending pre whose call was not already counted,
|
|
14
|
+
* here or in counted/ → record with durationMs: null
|
|
14
15
|
*/
|
|
15
16
|
import type { PlatformAdapter } from '../platforms/types.js';
|
|
16
17
|
import type { LocalStore } from '../storage/local-store.js';
|
|
@@ -30,6 +31,7 @@ export interface HookEventProcessorOptions {
|
|
|
30
31
|
*/
|
|
31
32
|
drainAllSessions?: boolean;
|
|
32
33
|
onRecord: (record: ToolCallRecord) => void;
|
|
34
|
+
onRecordAmend?: (record: ToolCallRecord) => void;
|
|
33
35
|
onTokenEvent?: (event: TokenEvent) => void;
|
|
34
36
|
/**
|
|
35
37
|
* Fires for every paired ToolCallRecord whose `toolName === 'Agent'` —
|
|
@@ -86,6 +88,8 @@ export interface SubagentTurnEvent {
|
|
|
86
88
|
readonly outputTokens: number;
|
|
87
89
|
readonly cacheReadTokens: number;
|
|
88
90
|
readonly cacheCreationTokens: number;
|
|
91
|
+
/** Subset of `cacheCreationTokens` written to the 1-hour cache. Omitted when zero. */
|
|
92
|
+
readonly cacheCreation1hTokens?: number;
|
|
89
93
|
readonly reasoningTokens: number;
|
|
90
94
|
readonly stopReason: string | null;
|
|
91
95
|
readonly schemaFingerprint: string;
|
|
@@ -164,12 +168,14 @@ export interface BoundaryFrame {
|
|
|
164
168
|
readonly sessionId: string | null;
|
|
165
169
|
readonly slashCommand?: string;
|
|
166
170
|
}
|
|
171
|
+
export declare const DEFAULT_MAX_PENDING = 2000;
|
|
167
172
|
export declare class HookEventProcessor {
|
|
168
173
|
private store;
|
|
169
174
|
private readonly pollIntervalMs;
|
|
170
175
|
private readonly orphanTimeoutMs;
|
|
171
176
|
private drainAllSessions;
|
|
172
177
|
private readonly onRecord;
|
|
178
|
+
private readonly onRecordAmend;
|
|
173
179
|
private readonly onTokenEvent;
|
|
174
180
|
private readonly onWorkflowAgent;
|
|
175
181
|
private readonly onSubagentTurn;
|
|
@@ -205,11 +211,9 @@ export declare class HookEventProcessor {
|
|
|
205
211
|
private static readonly MAX_STAMPED_SESSIONS;
|
|
206
212
|
private registeredAdaptersByName;
|
|
207
213
|
/**
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
* so we drop on the seen-set. Was previously one global ring shared across
|
|
212
|
-
* every agent — see DedupRingRegistry's doc comment for why that's wrong.
|
|
214
|
+
* In-memory, per-agent dedup of subagent turns by messageId (one DedupRing
|
|
215
|
+
* per agent, LRU-bounded across agents). It cannot stop a double count
|
|
216
|
+
* across a restart; SubagentWatcher gets that from the BilledTurnLedger.
|
|
213
217
|
*/
|
|
214
218
|
private readonly subagentDedupRegistry;
|
|
215
219
|
/**
|
|
@@ -217,7 +221,7 @@ export declare class HookEventProcessor {
|
|
|
217
221
|
* events, mirroring subagentDedup above. This path only matters for
|
|
218
222
|
* `--local` mode's buffer.jsonl route — `--stdio` mode's WorkflowWatcher
|
|
219
223
|
* calls ingestScriptWorkflowRun() directly in-process, bypassing the
|
|
220
|
-
* buffer/crash-recovery path entirely. The
|
|
224
|
+
* buffer/crash-recovery path entirely. The drain-claim crash-recovery
|
|
221
225
|
* path can re-deliver the same buffered line after a crash mid-write;
|
|
222
226
|
* without this, that redelivery emits a duplicate AiWorkflowRun event
|
|
223
227
|
* (doubling cost/token metrics for that run) since a new poll cycle's
|
|
@@ -232,6 +236,8 @@ export declare class HookEventProcessor {
|
|
|
232
236
|
*/
|
|
233
237
|
private readonly tokenDedupRegistry;
|
|
234
238
|
private readonly pending;
|
|
239
|
+
private readonly countedUnpaired;
|
|
240
|
+
private readonly unpersistedCountedIds;
|
|
235
241
|
private readonly maxPendingEvents;
|
|
236
242
|
private intervalId;
|
|
237
243
|
private running;
|
|
@@ -268,11 +274,14 @@ export declare class HookEventProcessor {
|
|
|
268
274
|
private adapterForSession;
|
|
269
275
|
start(): void;
|
|
270
276
|
stop(): void;
|
|
277
|
+
private halt;
|
|
271
278
|
/**
|
|
272
279
|
* Hot-swap the underlying LocalStore and session-drain mode without
|
|
273
280
|
* recreating the processor or its callbacks. Used when the provisional
|
|
274
281
|
* unscoped store is replaced by the real session-scoped store once the
|
|
275
|
-
* Claude Code session ID is resolved asynchronously.
|
|
282
|
+
* Claude Code session ID is resolved asynchronously. The last drain of the
|
|
283
|
+
* old store still holds claims in order, and the new store takes them later,
|
|
284
|
+
* so pending pre events stay pending for the posts in those claims.
|
|
276
285
|
*/
|
|
277
286
|
replaceStore(newStore: LocalStore, drainAllSessions: boolean): void;
|
|
278
287
|
/**
|
|
@@ -306,10 +315,12 @@ export declare class HookEventProcessor {
|
|
|
306
315
|
* back ('timeout').
|
|
307
316
|
*/
|
|
308
317
|
private emitUnpairedPreRecord;
|
|
318
|
+
private rememberCountedUnpaired;
|
|
309
319
|
private sweepOrphans;
|
|
310
320
|
private flushPending;
|
|
311
321
|
private pairingKey;
|
|
312
|
-
private
|
|
322
|
+
private takeCountedUnpaired;
|
|
323
|
+
persistCountedIdsOfSavedSessions(sessionIds: Iterable<string>): void;
|
|
313
324
|
private handleSubagentTokenEvent;
|
|
314
325
|
private handleWorkflowRunEvent;
|
|
315
326
|
private handleObservabilityHealthEvent;
|
|
@@ -319,6 +330,8 @@ export declare class HookEventProcessor {
|
|
|
319
330
|
private handleModelSwitchEvent;
|
|
320
331
|
/** Shared handler for `user_prompt_submit`/`stop` — both carry nothing beyond timestamp/sessionId. */
|
|
321
332
|
private handleBoundaryEvent;
|
|
333
|
+
private emitAmend;
|
|
322
334
|
private emitRecord;
|
|
335
|
+
private emitWorkflowAgent;
|
|
323
336
|
}
|
|
324
337
|
//# sourceMappingURL=event-processor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-processor.d.ts","sourceRoot":"","sources":["../../src/hooks/event-processor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"event-processor.d.ts","sourceRoot":"","sources":["../../src/hooks/event-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
* computes duration, and emits completed ToolCallRecords via a callback.
|
|
7
7
|
*
|
|
8
8
|
* Handles orphans:
|
|
9
|
-
* - Pre events without a post within
|
|
9
|
+
* - Pre events without a post within their wait (pendingTtlMs) → timeout record
|
|
10
10
|
* - Permission-requested pre events (PermissionRequest seen, then nothing —
|
|
11
11
|
* Claude Code fires no hook event for an interactive user rejection)
|
|
12
|
-
* without a post within
|
|
13
|
-
* - Post events
|
|
12
|
+
* without a post within their permission wait (pendingTtlMs) → rejected record
|
|
13
|
+
* - Post events with no pending pre whose call was not already counted,
|
|
14
|
+
* here or in counted/ → record with durationMs: null
|
|
14
15
|
*/
|
|
15
16
|
import { randomUUID } from 'node:crypto';
|
|
16
17
|
import { readFileSync } from 'node:fs';
|
|
@@ -144,17 +145,38 @@ const TOKEN_SOURCE_PLATFORM = new Map([
|
|
|
144
145
|
]);
|
|
145
146
|
const DEFAULT_POLL_INTERVAL_MS = 100;
|
|
146
147
|
const DEFAULT_ORPHAN_TIMEOUT_MS = 60_000;
|
|
147
|
-
// Permission prompts legitimately dwell — a user thinking for 90 seconds is
|
|
148
|
-
// common, while an approval arriving after 5 minutes is rare enough to accept
|
|
149
|
-
// as a post-without-pre record instead.
|
|
150
148
|
const PERMISSION_REQUESTED_TIMEOUT_MS = 300_000;
|
|
151
|
-
const DEFAULT_MAX_PENDING = 2_000;
|
|
149
|
+
export const DEFAULT_MAX_PENDING = 2_000;
|
|
150
|
+
// Claude Code caps a Bash call at 10 minutes; a subagent (Agent, or Task on
|
|
151
|
+
// older clients) has no cap.
|
|
152
|
+
const LONG_RUNNING_TOOL_TTL_MS = new Map([
|
|
153
|
+
['Bash', 11 * 60_000],
|
|
154
|
+
['Agent', 30 * 60_000],
|
|
155
|
+
['Task', 30 * 60_000],
|
|
156
|
+
]);
|
|
157
|
+
const FALLBACK_LATE_POST_WINDOW_MS = DEFAULT_ORPHAN_TIMEOUT_MS;
|
|
158
|
+
function findOldestFallbackKey(entries, post) {
|
|
159
|
+
let oldestKey;
|
|
160
|
+
let oldestTimestamp = Infinity;
|
|
161
|
+
for (const [k, { event: pre, matchUntil }] of entries) {
|
|
162
|
+
if (k.startsWith(`${pre.tool}:`) &&
|
|
163
|
+
pre.tool.toLowerCase() === post.tool.toLowerCase() &&
|
|
164
|
+
(pre.sessionId ?? post.sessionId) === (post.sessionId ?? pre.sessionId) &&
|
|
165
|
+
(matchUntil === undefined || post.timestamp <= matchUntil) &&
|
|
166
|
+
pre.timestamp < oldestTimestamp) {
|
|
167
|
+
oldestKey = k;
|
|
168
|
+
oldestTimestamp = pre.timestamp;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return oldestKey;
|
|
172
|
+
}
|
|
152
173
|
export class HookEventProcessor {
|
|
153
174
|
store;
|
|
154
175
|
pollIntervalMs;
|
|
155
176
|
orphanTimeoutMs;
|
|
156
177
|
drainAllSessions;
|
|
157
178
|
onRecord;
|
|
179
|
+
onRecordAmend;
|
|
158
180
|
onTokenEvent;
|
|
159
181
|
onWorkflowAgent;
|
|
160
182
|
onSubagentTurn;
|
|
@@ -190,11 +212,9 @@ export class HookEventProcessor {
|
|
|
190
212
|
static MAX_STAMPED_SESSIONS = 100;
|
|
191
213
|
registeredAdaptersByName = null;
|
|
192
214
|
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* so we drop on the seen-set. Was previously one global ring shared across
|
|
197
|
-
* every agent — see DedupRingRegistry's doc comment for why that's wrong.
|
|
215
|
+
* In-memory, per-agent dedup of subagent turns by messageId (one DedupRing
|
|
216
|
+
* per agent, LRU-bounded across agents). It cannot stop a double count
|
|
217
|
+
* across a restart; SubagentWatcher gets that from the BilledTurnLedger.
|
|
198
218
|
*/
|
|
199
219
|
subagentDedupRegistry = new DedupRingRegistry(50, 4096);
|
|
200
220
|
/**
|
|
@@ -202,7 +222,7 @@ export class HookEventProcessor {
|
|
|
202
222
|
* events, mirroring subagentDedup above. This path only matters for
|
|
203
223
|
* `--local` mode's buffer.jsonl route — `--stdio` mode's WorkflowWatcher
|
|
204
224
|
* calls ingestScriptWorkflowRun() directly in-process, bypassing the
|
|
205
|
-
* buffer/crash-recovery path entirely. The
|
|
225
|
+
* buffer/crash-recovery path entirely. The drain-claim crash-recovery
|
|
206
226
|
* path can re-deliver the same buffered line after a crash mid-write;
|
|
207
227
|
* without this, that redelivery emits a duplicate AiWorkflowRun event
|
|
208
228
|
* (doubling cost/token metrics for that run) since a new poll cycle's
|
|
@@ -217,6 +237,8 @@ export class HookEventProcessor {
|
|
|
217
237
|
*/
|
|
218
238
|
tokenDedupRegistry = new DedupRingRegistry(50, 4096);
|
|
219
239
|
pending = new Map();
|
|
240
|
+
countedUnpaired = new Map();
|
|
241
|
+
unpersistedCountedIds = new Map();
|
|
220
242
|
maxPendingEvents;
|
|
221
243
|
intervalId = null;
|
|
222
244
|
running = false;
|
|
@@ -229,6 +251,7 @@ export class HookEventProcessor {
|
|
|
229
251
|
this.drainAllSessions = options.drainAllSessions ?? false;
|
|
230
252
|
this.maxPendingEvents = options.maxPendingEvents ?? DEFAULT_MAX_PENDING;
|
|
231
253
|
this.onRecord = options.onRecord;
|
|
254
|
+
this.onRecordAmend = options.onRecordAmend ?? null;
|
|
232
255
|
this.onTokenEvent = options.onTokenEvent ?? null;
|
|
233
256
|
this.onWorkflowAgent = options.onWorkflowAgent ?? null;
|
|
234
257
|
this.onSubagentTurn = options.onSubagentTurn ?? null;
|
|
@@ -327,6 +350,15 @@ export class HookEventProcessor {
|
|
|
327
350
|
});
|
|
328
351
|
}
|
|
329
352
|
stop() {
|
|
353
|
+
if (this.running)
|
|
354
|
+
this.store.giveUpHeldOrder();
|
|
355
|
+
this.halt();
|
|
356
|
+
// Always flush remaining pre-events as orphans — even on a second stop() call
|
|
357
|
+
// or when stop() is called without start(). A second call on an already-empty
|
|
358
|
+
// pending map is a no-op.
|
|
359
|
+
this.flushPending();
|
|
360
|
+
}
|
|
361
|
+
halt() {
|
|
330
362
|
if (this.running) {
|
|
331
363
|
this.running = false;
|
|
332
364
|
if (this.intervalId !== null) {
|
|
@@ -347,19 +379,17 @@ export class HookEventProcessor {
|
|
|
347
379
|
}
|
|
348
380
|
logger.info('Event processor stopped');
|
|
349
381
|
}
|
|
350
|
-
// Always flush remaining pre-events as orphans — even on a second stop() call
|
|
351
|
-
// or when stop() is called without start(). A second call on an already-empty
|
|
352
|
-
// pending map is a no-op.
|
|
353
|
-
this.flushPending();
|
|
354
382
|
}
|
|
355
383
|
/**
|
|
356
384
|
* Hot-swap the underlying LocalStore and session-drain mode without
|
|
357
385
|
* recreating the processor or its callbacks. Used when the provisional
|
|
358
386
|
* unscoped store is replaced by the real session-scoped store once the
|
|
359
|
-
* Claude Code session ID is resolved asynchronously.
|
|
387
|
+
* Claude Code session ID is resolved asynchronously. The last drain of the
|
|
388
|
+
* old store still holds claims in order, and the new store takes them later,
|
|
389
|
+
* so pending pre events stay pending for the posts in those claims.
|
|
360
390
|
*/
|
|
361
391
|
replaceStore(newStore, drainAllSessions) {
|
|
362
|
-
this.
|
|
392
|
+
this.halt();
|
|
363
393
|
this.store = newStore;
|
|
364
394
|
this.drainAllSessions = drainAllSessions;
|
|
365
395
|
this.start();
|
|
@@ -530,20 +560,29 @@ export class HookEventProcessor {
|
|
|
530
560
|
// pre-event with the same tool name (FIFO) so parallel same-tool calls don't
|
|
531
561
|
// collide — the counter in pairingKey() gives each pre-event a unique key.
|
|
532
562
|
const key = toolUseId ??
|
|
533
|
-
this.
|
|
563
|
+
findOldestFallbackKey(this.pending, event) ??
|
|
534
564
|
`${event.tool}:${event.timestamp}:${randomUUID()}`;
|
|
535
|
-
const
|
|
565
|
+
const pendingPre = this.pending.get(key)?.event;
|
|
536
566
|
this.pending.delete(key);
|
|
567
|
+
const counted = pendingPre ? undefined : this.takeCountedUnpaired(event);
|
|
568
|
+
if (counted === 'counted-elsewhere') {
|
|
569
|
+
logger.debug('Late post for a call already counted — dropped', {
|
|
570
|
+
tool: event.tool,
|
|
571
|
+
key,
|
|
572
|
+
});
|
|
573
|
+
return;
|
|
574
|
+
}
|
|
575
|
+
const preEvent = pendingPre ?? counted?.event;
|
|
537
576
|
if (preEvent) {
|
|
538
577
|
// Matched pair
|
|
539
|
-
const toolFields = parseToolSpecificFields(preEvent.tool, preEvent.toolInput, event.toolOutput);
|
|
578
|
+
const toolFields = parseToolSpecificFields(preEvent.tool, preEvent.toolInput ?? event.toolInput, event.toolOutput);
|
|
540
579
|
const wallClockMs = Math.max(0, event.timestamp - preEvent.timestamp);
|
|
541
580
|
const hasNativeDuration = typeof event.nativeDurationMs === 'number' && Number.isFinite(event.nativeDurationMs);
|
|
542
581
|
const record = {
|
|
543
|
-
id: randomUUID(),
|
|
582
|
+
id: counted?.recordId ?? randomUUID(),
|
|
544
583
|
sessionId: preEvent.sessionId ?? event.sessionId ?? null,
|
|
545
584
|
toolName: preEvent.tool,
|
|
546
|
-
toolUseId: preEvent.toolUseId ?? key,
|
|
585
|
+
toolUseId: counted?.recordToolUseId ?? preEvent.toolUseId ?? key,
|
|
547
586
|
timestamp: preEvent.timestamp,
|
|
548
587
|
durationMs: hasNativeDuration ? event.nativeDurationMs : wallClockMs,
|
|
549
588
|
permissionWaitMs: hasNativeDuration
|
|
@@ -553,6 +592,11 @@ export class HookEventProcessor {
|
|
|
553
592
|
...attributionFields(preEvent, event),
|
|
554
593
|
...toolFields,
|
|
555
594
|
};
|
|
595
|
+
if (counted) {
|
|
596
|
+
this.emitAmend(record);
|
|
597
|
+
this.emitWorkflowAgent(record);
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
556
600
|
this.emitRecord(record);
|
|
557
601
|
}
|
|
558
602
|
else {
|
|
@@ -587,6 +631,7 @@ export class HookEventProcessor {
|
|
|
587
631
|
return;
|
|
588
632
|
}
|
|
589
633
|
const platform = event.platform ?? TOKEN_SOURCE_PLATFORM.get(event.tool);
|
|
634
|
+
const cacheCreation1hTokens = numAttr(event.cacheCreation1hTokens);
|
|
590
635
|
const tokenEvent = {
|
|
591
636
|
mode: 'token',
|
|
592
637
|
timestamp: event.timestamp,
|
|
@@ -600,6 +645,7 @@ export class HookEventProcessor {
|
|
|
600
645
|
cacheCreationTokens: typeof event.cacheCreationTokens === 'number' && !isNaN(event.cacheCreationTokens)
|
|
601
646
|
? event.cacheCreationTokens
|
|
602
647
|
: 0,
|
|
648
|
+
...(cacheCreation1hTokens > 0 && { cacheCreation1hTokens }),
|
|
603
649
|
model: event.model ?? 'unknown',
|
|
604
650
|
sessionId: event.sessionId,
|
|
605
651
|
...(event.responseMs !== undefined && { responseMs: event.responseMs }),
|
|
@@ -620,9 +666,10 @@ export class HookEventProcessor {
|
|
|
620
666
|
* asked, and prompts dwell far longer than a healthy tool execution.
|
|
621
667
|
*/
|
|
622
668
|
pendingTtlMs(entry) {
|
|
669
|
+
const longRunningTtlMs = LONG_RUNNING_TOOL_TTL_MS.get(entry.event.tool) ?? 0;
|
|
623
670
|
return entry.phase === 'permission_requested'
|
|
624
|
-
? PERMISSION_REQUESTED_TIMEOUT_MS
|
|
625
|
-
: this.orphanTimeoutMs;
|
|
671
|
+
? PERMISSION_REQUESTED_TIMEOUT_MS + longRunningTtlMs
|
|
672
|
+
: Math.max(this.orphanTimeoutMs, longRunningTtlMs);
|
|
626
673
|
}
|
|
627
674
|
/**
|
|
628
675
|
* Emit the record for a pending pre that will never pair: a swept orphan,
|
|
@@ -643,8 +690,11 @@ export class HookEventProcessor {
|
|
|
643
690
|
: wasBlockedByPreToolUseHook(event.transcriptPath, toolUseId)
|
|
644
691
|
? 'hook_blocked'
|
|
645
692
|
: 'timeout';
|
|
693
|
+
const id = randomUUID();
|
|
694
|
+
if (errorType !== 'hook_blocked')
|
|
695
|
+
this.rememberCountedUnpaired(key, entry, id, toolUseId);
|
|
646
696
|
this.emitRecord({
|
|
647
|
-
id
|
|
697
|
+
id,
|
|
648
698
|
sessionId: event.sessionId ?? null,
|
|
649
699
|
toolName: event.tool,
|
|
650
700
|
toolUseId,
|
|
@@ -656,6 +706,23 @@ export class HookEventProcessor {
|
|
|
656
706
|
...toolFields,
|
|
657
707
|
});
|
|
658
708
|
}
|
|
709
|
+
rememberCountedUnpaired(key, entry, recordId, recordToolUseId) {
|
|
710
|
+
const { tool, timestamp, sessionId, toolUseId } = entry.event;
|
|
711
|
+
this.countedUnpaired.delete(key);
|
|
712
|
+
if (this.countedUnpaired.size >= this.maxPendingEvents) {
|
|
713
|
+
const oldest = this.countedUnpaired.keys().next().value;
|
|
714
|
+
if (oldest !== undefined)
|
|
715
|
+
this.countedUnpaired.delete(oldest);
|
|
716
|
+
}
|
|
717
|
+
if (toolUseId === key && sessionId)
|
|
718
|
+
this.unpersistedCountedIds.set(key, sessionId);
|
|
719
|
+
this.countedUnpaired.set(key, {
|
|
720
|
+
event: { mode: 'pre', tool, timestamp, sessionId, toolUseId },
|
|
721
|
+
recordId,
|
|
722
|
+
recordToolUseId,
|
|
723
|
+
matchUntil: timestamp + this.pendingTtlMs(entry) + FALLBACK_LATE_POST_WINDOW_MS,
|
|
724
|
+
});
|
|
725
|
+
}
|
|
659
726
|
sweepOrphans() {
|
|
660
727
|
const now = Date.now();
|
|
661
728
|
const expired = [];
|
|
@@ -684,23 +751,34 @@ export class HookEventProcessor {
|
|
|
684
751
|
// each get a unique slot in this.pending instead of overwriting each other.
|
|
685
752
|
return `${event.tool}:${event.timestamp}:${randomUUID()}`;
|
|
686
753
|
}
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
754
|
+
takeCountedUnpaired(event) {
|
|
755
|
+
const key = event.toolUseId ?? findOldestFallbackKey(this.countedUnpaired, event);
|
|
756
|
+
const counted = key === undefined ? undefined : this.countedUnpaired.get(key);
|
|
757
|
+
if (key !== undefined && counted !== undefined) {
|
|
758
|
+
this.countedUnpaired.delete(key);
|
|
759
|
+
this.unpersistedCountedIds.delete(key);
|
|
760
|
+
return counted;
|
|
761
|
+
}
|
|
762
|
+
const id = event.toolUseId;
|
|
763
|
+
return id !== undefined &&
|
|
764
|
+
(this.unpersistedCountedIds.has(id) ||
|
|
765
|
+
(event.sessionId !== undefined && this.store.hasCountedToolUseId(event.sessionId, id)))
|
|
766
|
+
? 'counted-elsewhere'
|
|
767
|
+
: undefined;
|
|
768
|
+
}
|
|
769
|
+
persistCountedIdsOfSavedSessions(sessionIds) {
|
|
770
|
+
const idsBySession = new Map();
|
|
771
|
+
for (const sessionId of sessionIds)
|
|
772
|
+
idsBySession.set(sessionId, []);
|
|
773
|
+
for (const [key, sessionId] of this.unpersistedCountedIds) {
|
|
774
|
+
idsBySession.get(sessionId)?.push(key);
|
|
775
|
+
}
|
|
776
|
+
for (const [sessionId, ids] of idsBySession) {
|
|
777
|
+
if (!this.store.rememberCountedToolUseIds(sessionId, ids, this.maxPendingEvents))
|
|
778
|
+
continue;
|
|
779
|
+
for (const key of ids)
|
|
780
|
+
this.unpersistedCountedIds.delete(key);
|
|
702
781
|
}
|
|
703
|
-
return oldestKey;
|
|
704
782
|
}
|
|
705
783
|
handleSubagentTokenEvent(event) {
|
|
706
784
|
if (!this.onSubagentTurn && !this.onSubagentToken)
|
|
@@ -712,6 +790,7 @@ export class HookEventProcessor {
|
|
|
712
790
|
if (this.subagentDedupRegistry.hasAndAdd(agentId, messageId))
|
|
713
791
|
return;
|
|
714
792
|
const agentType = normalizeAgentType(event.agentType);
|
|
793
|
+
const cacheCreation1hTokens = numAttr(event.cacheCreation1hTokens);
|
|
715
794
|
const turn = {
|
|
716
795
|
timestampMs: typeof event.timestamp === 'number' && Number.isFinite(event.timestamp)
|
|
717
796
|
? event.timestamp
|
|
@@ -726,6 +805,7 @@ export class HookEventProcessor {
|
|
|
726
805
|
outputTokens: numAttr(event.outputTokens),
|
|
727
806
|
cacheReadTokens: numAttr(event.cacheReadTokens),
|
|
728
807
|
cacheCreationTokens: numAttr(event.cacheCreationTokens),
|
|
808
|
+
...(cacheCreation1hTokens > 0 && { cacheCreation1hTokens }),
|
|
729
809
|
reasoningTokens: numAttr(event.reasoningTokens),
|
|
730
810
|
stopReason: event.stopReason ?? null,
|
|
731
811
|
schemaFingerprint: event.schemaFingerprint ?? '',
|
|
@@ -938,6 +1018,17 @@ export class HookEventProcessor {
|
|
|
938
1018
|
});
|
|
939
1019
|
}
|
|
940
1020
|
}
|
|
1021
|
+
emitAmend(record) {
|
|
1022
|
+
try {
|
|
1023
|
+
this.onRecordAmend?.(record);
|
|
1024
|
+
}
|
|
1025
|
+
catch (err) {
|
|
1026
|
+
logger.warn('onRecordAmend callback failed', {
|
|
1027
|
+
recordId: record.id,
|
|
1028
|
+
error: err instanceof Error ? err.message : String(err),
|
|
1029
|
+
});
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
941
1032
|
emitRecord(record) {
|
|
942
1033
|
try {
|
|
943
1034
|
this.onRecord(record);
|
|
@@ -948,8 +1039,11 @@ export class HookEventProcessor {
|
|
|
948
1039
|
error: err instanceof Error ? err.message : String(err),
|
|
949
1040
|
});
|
|
950
1041
|
}
|
|
951
|
-
|
|
952
|
-
|
|
1042
|
+
this.emitWorkflowAgent(record);
|
|
1043
|
+
}
|
|
1044
|
+
// Workflow observability — additively notify any registered tracker when
|
|
1045
|
+
// an Agent tool call completes. Failures here MUST NOT propagate.
|
|
1046
|
+
emitWorkflowAgent(record) {
|
|
953
1047
|
if (this.onWorkflowAgent !== null && record.toolName === 'Agent') {
|
|
954
1048
|
try {
|
|
955
1049
|
this.onWorkflowAgent(record);
|