@newrelic/preflight 1.17.1 → 1.18.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/dashboard/routes/api-handler.d.ts +3 -0
- package/dist/dashboard/routes/api-handler.d.ts.map +1 -1
- package/dist/dashboard/routes/api-handler.js +53 -4
- package/dist/dashboard/routes/api-handler.js.map +1 -1
- package/dist/hooks/session-resolver.d.ts +134 -0
- package/dist/hooks/session-resolver.d.ts.map +1 -1
- package/dist/hooks/session-resolver.js +283 -16
- package/dist/hooks/session-resolver.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +88 -2
- package/dist/index.js.map +1 -1
- package/dist/metrics/live-session-registry.d.ts +24 -0
- package/dist/metrics/live-session-registry.d.ts.map +1 -1
- package/dist/metrics/live-session-registry.js +57 -2
- package/dist/metrics/live-session-registry.js.map +1 -1
- package/dist/metrics/session-tracker.d.ts +49 -0
- package/dist/metrics/session-tracker.d.ts.map +1 -1
- package/dist/metrics/session-tracker.js +63 -4
- package/dist/metrics/session-tracker.js.map +1 -1
- package/dist/storage/session-store.d.ts +11 -0
- package/dist/storage/session-store.d.ts.map +1 -1
- package/dist/storage/session-store.js +26 -0
- package/dist/storage/session-store.js.map +1 -1
- package/dist/tools/cross-session-tools.d.ts.map +1 -1
- package/dist/tools/cross-session-tools.js +4 -0
- package/dist/tools/cross-session-tools.js.map +1 -1
- package/dist/tools/session-stats.d.ts +2 -0
- package/dist/tools/session-stats.d.ts.map +1 -1
- package/dist/tools/session-stats.js +8 -1
- package/dist/tools/session-stats.js.map +1 -1
- package/dist/web/assets/{index-BSqTG7nX.js → index-CC_l0esP.js} +1 -1
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
|
@@ -3,13 +3,21 @@
|
|
|
3
3
|
* A session is "live" if it received a tool call within the staleness threshold.
|
|
4
4
|
*/
|
|
5
5
|
import { basename } from 'node:path';
|
|
6
|
-
import { isSyntheticSessionId } from '../hooks/session-resolver.js';
|
|
6
|
+
import { isSyntheticSessionId, shouldReplaceSessionName, } from '../hooks/session-resolver.js';
|
|
7
7
|
export const DEFAULT_STALE_THRESHOLD_MS = 180_000; // 3 minutes
|
|
8
8
|
const MAX_CONCURRENCY_SAMPLES = 2880; // 24h at 30s intervals
|
|
9
9
|
const SAMPLE_INTERVAL_MS = 30_000;
|
|
10
10
|
export class LiveSessionRegistry {
|
|
11
11
|
lastActivity = new Map();
|
|
12
12
|
sessionNames = new Map();
|
|
13
|
+
// Sessions whose name was set authoritatively (job-state title / transcript
|
|
14
|
+
// ai-title). `touch()` must never overwrite these with a cwd basename.
|
|
15
|
+
authoritativeNames = new Set();
|
|
16
|
+
// The source that produced each authoritative name, so a Phase-2 freshness
|
|
17
|
+
// re-resolve can be refused when it would DOWNGRADE the name (e.g. a `cwd`
|
|
18
|
+
// re-resolve arriving after a `user` name was set). Keyed identically to
|
|
19
|
+
// `authoritativeNames`; cleared alongside it on eviction/reset.
|
|
20
|
+
authoritativeSources = new Map();
|
|
13
21
|
staleThresholdMs;
|
|
14
22
|
peakConcurrent = 0;
|
|
15
23
|
concurrencyTimeSeries = [];
|
|
@@ -19,10 +27,19 @@ export class LiveSessionRegistry {
|
|
|
19
27
|
}
|
|
20
28
|
touch(sessionId, cwd) {
|
|
21
29
|
this.lastActivity.set(sessionId, Date.now());
|
|
22
|
-
|
|
30
|
+
// Streaming FALLBACK naming: skip when an authoritative name is set, and
|
|
31
|
+
// (as before) only fill the first time we see a cwd for this session.
|
|
32
|
+
if (cwd && !this.authoritativeNames.has(sessionId) && !this.sessionNames.has(sessionId)) {
|
|
23
33
|
const name = basename(cwd);
|
|
24
34
|
if (name.length > 0 && name !== '.' && name !== '..') {
|
|
25
35
|
this.sessionNames.set(sessionId, name);
|
|
36
|
+
// Tag the fallback source so getSessionNameSource() reports 'cwd' for a
|
|
37
|
+
// basename-named session (matching SessionTracker's streaming fallback,
|
|
38
|
+
// which also tags 'cwd'). NOT added to `authoritativeNames`: this stays
|
|
39
|
+
// a low-trust fallback that setAuthoritativeName may freely upgrade —
|
|
40
|
+
// 'cwd' is the lowest rank, so shouldReplaceSessionName lets any real
|
|
41
|
+
// source override it.
|
|
42
|
+
this.authoritativeSources.set(sessionId, 'cwd');
|
|
26
43
|
}
|
|
27
44
|
}
|
|
28
45
|
const liveCount = this.getLiveSessions({ includeSynthetic: true }).length;
|
|
@@ -30,9 +47,41 @@ export class LiveSessionRegistry {
|
|
|
30
47
|
this.peakConcurrent = liveCount;
|
|
31
48
|
}
|
|
32
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Set the authoritative display name for a session (from the job-state title
|
|
52
|
+
* or transcript ai-title, per `resolveSessionName`'s precedence). Overrides
|
|
53
|
+
* any cwd basename `touch()` may have already stored and pins it against
|
|
54
|
+
* future `touch()` calls. Ignores empty names. Mirrors
|
|
55
|
+
* `SessionTracker.setAuthoritativeName`, including the Phase-2 freshness
|
|
56
|
+
* guard: when re-resolved on the persist/shutdown path, a strictly-less-
|
|
57
|
+
* trusted `source` (e.g. `cwd` after a `user` name) is refused via
|
|
58
|
+
* `shouldReplaceSessionName`, so a better name is never downgraded here.
|
|
59
|
+
*/
|
|
60
|
+
setAuthoritativeName(sessionId, name, source) {
|
|
61
|
+
if (typeof name !== 'string' || name.length === 0)
|
|
62
|
+
return;
|
|
63
|
+
if (!shouldReplaceSessionName(this.authoritativeSources.get(sessionId) ?? null, source)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.authoritativeNames.add(sessionId);
|
|
67
|
+
this.authoritativeSources.set(sessionId, source);
|
|
68
|
+
this.sessionNames.set(sessionId, name);
|
|
69
|
+
}
|
|
33
70
|
getSessionName(sessionId) {
|
|
34
71
|
return this.sessionNames.get(sessionId) ?? null;
|
|
35
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Which source produced the name `getSessionName` returns for this session
|
|
75
|
+
* (see `SessionNameSource`), or null when the session is untracked or was
|
|
76
|
+
* only ever named by the streaming cwd fallback in `touch()` (which records
|
|
77
|
+
* a name but no source). Lets dashboard surfaces distinguish an
|
|
78
|
+
* authoritative `user`/`ai-title`/`auto` name from a cwd-basename fallback,
|
|
79
|
+
* matching the `session_name_source` the MCP tool and persisted summaries
|
|
80
|
+
* already expose.
|
|
81
|
+
*/
|
|
82
|
+
getSessionNameSource(sessionId) {
|
|
83
|
+
return this.authoritativeSources.get(sessionId) ?? null;
|
|
84
|
+
}
|
|
36
85
|
// The dashboard's `/api/sessions/live` endpoint surfaces last-activity per
|
|
37
86
|
// live session so the Today selector can default to the most-recently-active
|
|
38
87
|
// live session. Returns null when the session is not tracked (e.g. already
|
|
@@ -55,6 +104,8 @@ export class LiveSessionRegistry {
|
|
|
55
104
|
for (const id of stale) {
|
|
56
105
|
this.lastActivity.delete(id);
|
|
57
106
|
this.sessionNames.delete(id);
|
|
107
|
+
this.authoritativeNames.delete(id);
|
|
108
|
+
this.authoritativeSources.delete(id);
|
|
58
109
|
}
|
|
59
110
|
// Synthetic session IDs (`local-*`, `proxy-*`, `pending-*`) are
|
|
60
111
|
// MCP-internal bookkeeping from --local / proxy modes, not real Claude
|
|
@@ -66,6 +117,8 @@ export class LiveSessionRegistry {
|
|
|
66
117
|
reset() {
|
|
67
118
|
this.lastActivity.clear();
|
|
68
119
|
this.sessionNames.clear();
|
|
120
|
+
this.authoritativeNames.clear();
|
|
121
|
+
this.authoritativeSources.clear();
|
|
69
122
|
}
|
|
70
123
|
isLive(sessionId) {
|
|
71
124
|
const ts = this.lastActivity.get(sessionId);
|
|
@@ -74,6 +127,8 @@ export class LiveSessionRegistry {
|
|
|
74
127
|
if (Date.now() - ts > this.staleThresholdMs) {
|
|
75
128
|
this.lastActivity.delete(sessionId);
|
|
76
129
|
this.sessionNames.delete(sessionId);
|
|
130
|
+
this.authoritativeNames.delete(sessionId);
|
|
131
|
+
this.authoritativeSources.delete(sessionId);
|
|
77
132
|
return false;
|
|
78
133
|
}
|
|
79
134
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-session-registry.js","sourceRoot":"","sources":["../../src/metrics/live-session-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"live-session-registry.js","sourceRoot":"","sources":["../../src/metrics/live-session-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { MetricAggregator } from '../shared/index.js';
|
|
9
9
|
import type { ToolCallRecord } from '../storage/types.js';
|
|
10
|
+
import { type SessionNameSource } from '../hooks/session-resolver.js';
|
|
10
11
|
import type { Resettable } from './tracker-contracts.js';
|
|
11
12
|
export interface DurationStats {
|
|
12
13
|
count: number;
|
|
@@ -24,6 +25,16 @@ export interface TimelineEntry {
|
|
|
24
25
|
export interface SessionMetrics {
|
|
25
26
|
sessionId: string;
|
|
26
27
|
sessionName: string | null;
|
|
28
|
+
/** Which source produced `sessionName` (see SessionNameSource), or null when unnamed. */
|
|
29
|
+
sessionNameSource: SessionNameSource | null;
|
|
30
|
+
/**
|
|
31
|
+
* The session's originating intent (the first user prompt), or null. This is
|
|
32
|
+
* SENSITIVE content: it is populated ONLY when `recordContent` is enabled
|
|
33
|
+
* (force-disabled under highSecurity upstream) and is always redacted before
|
|
34
|
+
* being stored. Null whenever content recording is off. See
|
|
35
|
+
* `setSessionIntent`.
|
|
36
|
+
*/
|
|
37
|
+
sessionIntent: string | null;
|
|
27
38
|
sessionStartTime: number;
|
|
28
39
|
sessionDurationMs: number;
|
|
29
40
|
toolCallCount: number;
|
|
@@ -68,6 +79,15 @@ export interface SessionTrackerSeed {
|
|
|
68
79
|
export declare class SessionTracker implements Resettable {
|
|
69
80
|
private sessionId;
|
|
70
81
|
private sessionName;
|
|
82
|
+
private sessionNameSource;
|
|
83
|
+
private sessionIntent;
|
|
84
|
+
/**
|
|
85
|
+
* True once an authoritative name (resolved at startup from the job state
|
|
86
|
+
* file or transcript title) has been set via `setAuthoritativeName`. While
|
|
87
|
+
* true, the streaming cwd-basename derivation in `recordToolCall` is
|
|
88
|
+
* suppressed — the authoritative name always wins.
|
|
89
|
+
*/
|
|
90
|
+
private authoritativeName;
|
|
71
91
|
private sessionStartTime;
|
|
72
92
|
private toolCallCount;
|
|
73
93
|
private toolErrorCount;
|
|
@@ -88,6 +108,35 @@ export declare class SessionTracker implements Resettable {
|
|
|
88
108
|
recordToolCall(record: ToolCallRecord): void;
|
|
89
109
|
getMetrics(): SessionMetrics;
|
|
90
110
|
emitMetrics(aggregator: MetricAggregator): void;
|
|
111
|
+
/**
|
|
112
|
+
* Set the authoritative session name (from the job-state title or the
|
|
113
|
+
* transcript ai-title, per `resolveSessionName`'s precedence). Overrides any
|
|
114
|
+
* name the streaming cwd fallback may have set, and suppresses that fallback
|
|
115
|
+
* for the rest of the session. Ignores empty names. The name is a display
|
|
116
|
+
* LABEL; callers redact it at each sink.
|
|
117
|
+
*
|
|
118
|
+
* Called both once at startup AND repeatedly on the persist/shutdown path
|
|
119
|
+
* (Phase 2 freshness), so a refined `ai-title` — or a name a human later
|
|
120
|
+
* assigns — replaces the first-prompt guess. `shouldReplaceSessionName`
|
|
121
|
+
* enforces the no-downgrade invariant: a strictly-less-trusted source (e.g.
|
|
122
|
+
* a `cwd` re-resolve arriving after a `user` name was set) is refused rather
|
|
123
|
+
* than allowed to demote the better name.
|
|
124
|
+
*
|
|
125
|
+
* Returns true only when the stored name or source actually changed, so the
|
|
126
|
+
* caller can log a genuine (re)naming without spamming on every no-op
|
|
127
|
+
* re-resolve.
|
|
128
|
+
*/
|
|
129
|
+
setAuthoritativeName(name: string, source: SessionNameSource): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Set the session's originating intent (the first user prompt).
|
|
132
|
+
*
|
|
133
|
+
* The caller owns the content gate and redaction: this must only be called
|
|
134
|
+
* with an already-redacted string, and only when `recordContent` is enabled
|
|
135
|
+
* (force-disabled under highSecurity upstream — never bypass). A null/empty
|
|
136
|
+
* value clears it. Because the intent is stable across a session (it is the
|
|
137
|
+
* first prompt), re-calling on the persist/shutdown path is idempotent.
|
|
138
|
+
*/
|
|
139
|
+
setSessionIntent(intent: string | null): void;
|
|
91
140
|
/** Update the session ID in place without clearing any accumulated metrics. */
|
|
92
141
|
adoptSessionId(sessionId: string): void;
|
|
93
142
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-tracker.d.ts","sourceRoot":"","sources":["../../src/metrics/session-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* emission (for NR ingestion via MetricAggregator).
|
|
7
7
|
*/
|
|
8
8
|
import { basename } from 'node:path';
|
|
9
|
+
import { DEGENERATE_NAMES, shouldReplaceSessionName, } from '../hooks/session-resolver.js';
|
|
9
10
|
import { computePercentile } from './percentile.js';
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
11
12
|
// Helpers
|
|
@@ -58,6 +59,15 @@ export function computeDurationStats(durations) {
|
|
|
58
59
|
export class SessionTracker {
|
|
59
60
|
sessionId;
|
|
60
61
|
sessionName = null;
|
|
62
|
+
sessionNameSource = null;
|
|
63
|
+
sessionIntent = null;
|
|
64
|
+
/**
|
|
65
|
+
* True once an authoritative name (resolved at startup from the job state
|
|
66
|
+
* file or transcript title) has been set via `setAuthoritativeName`. While
|
|
67
|
+
* true, the streaming cwd-basename derivation in `recordToolCall` is
|
|
68
|
+
* suppressed — the authoritative name always wins.
|
|
69
|
+
*/
|
|
70
|
+
authoritativeName = false;
|
|
61
71
|
sessionStartTime;
|
|
62
72
|
toolCallCount = 0;
|
|
63
73
|
toolErrorCount = 0;
|
|
@@ -85,14 +95,17 @@ export class SessionTracker {
|
|
|
85
95
|
}
|
|
86
96
|
recordToolCall(record) {
|
|
87
97
|
this.toolCallCount++;
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
// FALLBACK naming only: an authoritative name (job-state title or
|
|
99
|
+
// transcript ai-title, resolved once at startup) always wins, so skip the
|
|
100
|
+
// cwd derivation entirely once one is set. Otherwise derive from cwd,
|
|
101
|
+
// preferring a later, more meaningful name if the current one is a
|
|
102
|
+
// degenerate system directory (tmp, var, usr, etc.).
|
|
103
|
+
if (!this.authoritativeName && typeof record.cwd === 'string' && record.cwd.length > 0) {
|
|
92
104
|
const name = basename(record.cwd);
|
|
93
105
|
if (name.length > 0 && name !== '.' && name !== '..') {
|
|
94
106
|
if (this.sessionName === null || DEGENERATE_NAMES.has(this.sessionName.toLowerCase())) {
|
|
95
107
|
this.sessionName = name;
|
|
108
|
+
this.sessionNameSource = 'cwd';
|
|
96
109
|
}
|
|
97
110
|
}
|
|
98
111
|
}
|
|
@@ -193,6 +206,8 @@ export class SessionTracker {
|
|
|
193
206
|
return {
|
|
194
207
|
sessionId: this.sessionId,
|
|
195
208
|
sessionName: this.sessionName,
|
|
209
|
+
sessionNameSource: this.sessionNameSource,
|
|
210
|
+
sessionIntent: this.sessionIntent,
|
|
196
211
|
sessionStartTime: this.sessionStartTime,
|
|
197
212
|
sessionDurationMs: Date.now() - this.sessionStartTime,
|
|
198
213
|
toolCallCount: this.toolCallCount,
|
|
@@ -237,6 +252,47 @@ export class SessionTracker {
|
|
|
237
252
|
aggregator.record('ai.session.unique_files_read', this.filesRead.size);
|
|
238
253
|
aggregator.record('ai.session.unique_files_written', this.filesWritten.size);
|
|
239
254
|
}
|
|
255
|
+
/**
|
|
256
|
+
* Set the authoritative session name (from the job-state title or the
|
|
257
|
+
* transcript ai-title, per `resolveSessionName`'s precedence). Overrides any
|
|
258
|
+
* name the streaming cwd fallback may have set, and suppresses that fallback
|
|
259
|
+
* for the rest of the session. Ignores empty names. The name is a display
|
|
260
|
+
* LABEL; callers redact it at each sink.
|
|
261
|
+
*
|
|
262
|
+
* Called both once at startup AND repeatedly on the persist/shutdown path
|
|
263
|
+
* (Phase 2 freshness), so a refined `ai-title` — or a name a human later
|
|
264
|
+
* assigns — replaces the first-prompt guess. `shouldReplaceSessionName`
|
|
265
|
+
* enforces the no-downgrade invariant: a strictly-less-trusted source (e.g.
|
|
266
|
+
* a `cwd` re-resolve arriving after a `user` name was set) is refused rather
|
|
267
|
+
* than allowed to demote the better name.
|
|
268
|
+
*
|
|
269
|
+
* Returns true only when the stored name or source actually changed, so the
|
|
270
|
+
* caller can log a genuine (re)naming without spamming on every no-op
|
|
271
|
+
* re-resolve.
|
|
272
|
+
*/
|
|
273
|
+
setAuthoritativeName(name, source) {
|
|
274
|
+
if (typeof name !== 'string' || name.length === 0)
|
|
275
|
+
return false;
|
|
276
|
+
if (!shouldReplaceSessionName(this.sessionNameSource, source))
|
|
277
|
+
return false;
|
|
278
|
+
const changed = this.sessionName !== name || this.sessionNameSource !== source;
|
|
279
|
+
this.sessionName = name;
|
|
280
|
+
this.sessionNameSource = source;
|
|
281
|
+
this.authoritativeName = true;
|
|
282
|
+
return changed;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Set the session's originating intent (the first user prompt).
|
|
286
|
+
*
|
|
287
|
+
* The caller owns the content gate and redaction: this must only be called
|
|
288
|
+
* with an already-redacted string, and only when `recordContent` is enabled
|
|
289
|
+
* (force-disabled under highSecurity upstream — never bypass). A null/empty
|
|
290
|
+
* value clears it. Because the intent is stable across a session (it is the
|
|
291
|
+
* first prompt), re-calling on the persist/shutdown path is idempotent.
|
|
292
|
+
*/
|
|
293
|
+
setSessionIntent(intent) {
|
|
294
|
+
this.sessionIntent = intent && intent.length > 0 ? intent : null;
|
|
295
|
+
}
|
|
240
296
|
/** Update the session ID in place without clearing any accumulated metrics. */
|
|
241
297
|
adoptSessionId(sessionId) {
|
|
242
298
|
if (typeof sessionId !== 'string' || sessionId.length === 0) {
|
|
@@ -261,6 +317,9 @@ export class SessionTracker {
|
|
|
261
317
|
}
|
|
262
318
|
this.sessionId = sessionId;
|
|
263
319
|
this.sessionName = null;
|
|
320
|
+
this.sessionNameSource = null;
|
|
321
|
+
this.sessionIntent = null;
|
|
322
|
+
this.authoritativeName = false;
|
|
264
323
|
this.sessionStartTime = Date.now();
|
|
265
324
|
this.toolCallCount = 0;
|
|
266
325
|
this.toolErrorCount = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/metrics/session-tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-tracker.js","sourceRoot":"","sources":["../../src/metrics/session-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAEzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AA0DpD,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,6EAA6E;AAC7E,0EAA0E;AAC1E,oEAAoE;AACpE,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,wGAAwG;AACxG,SAAS,cAAc,CAAC,GAAgB,EAAE,QAAgB;IACxD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QACzC,IAAI,MAAM,KAAK,SAAS;YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAgB;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAmB;IACtD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG,EAAE,UAAU,CAAC,SAAS,CAAC;KAC3B,CAAC;AACJ,CAAC;AAoBD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,OAAO,cAAc;IACjB,SAAS,CAAS;IAClB,WAAW,GAAkB,IAAI,CAAC;IAClC,iBAAiB,GAA6B,IAAI,CAAC;IACnD,aAAa,GAAkB,IAAI,CAAC;IAC5C;;;;;OAKG;IACK,iBAAiB,GAAG,KAAK,CAAC;IAC1B,gBAAgB,CAAS;IAEzB,aAAa,GAAG,CAAC,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;IACnB,YAAY,GAAG,CAAC,CAAC;IACjB,eAAe,GAAG,CAAC,CAAC;IACpB,aAAa,GAAG,CAAC,CAAC;IAET,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,mBAAmB,GAAG,IAAI,GAAG,EAAoB,CAAC;IAClD,iBAAiB,GAAG,IAAI,GAAG,EAA8C,CAAC;IAC1E,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzD,QAAQ,GAAoB,EAAE,CAAC;IAC/B,kBAAkB,GAAG,CAAC,CAAC;IAE/B,YAAY,SAAiB;QAC3B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,kEAAkE;YAClE,8DAA8D;YAC9D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,MAAsB;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,kEAAkE;QAClE,0EAA0E;QAC1E,sEAAsE;QACtE,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACrD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACtF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAElF,oBAAoB;QACpB,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,SAAS,EAAE,CAAC;gBACd,gEAAgE;gBAChE,8CAA8C;gBAC9C,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG;oBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClF,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,YAAY,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,MAAM,CAAC,SAAS,EAChB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAE/C,yDAAyD;QACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA8B,CAAC;QACvD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/C,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA8B,CAAC;YACvD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAkC,CAAC;YAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU;QACR,gCAAgC;QAChC,MAAM,mBAAmB,GAA2B,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrD,mBAAmB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACpC,CAAC;QAED,MAAM,oBAAoB,GAAkC,EAAE,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,oBAAoB,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,qBAAqB,GAA2B,EAAE,CAAC;QACzD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACnD,qBAAqB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,gBAAgB,GAA2B,EAAE,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACjC,CAAC;QAED,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,CAAC;QAED,MAAM,mBAAmB,GAA2B,EAAE,CAAC;QACvD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,mBAAmB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACxC,CAAC;QAED,MAAM,kBAAkB,GACtB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB;YACrD,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,mBAAmB;YACnB,oBAAoB;YACpB,eAAe,EAAE,kBAAkB;YACnC,qBAAqB;YACrB,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB;YAChB,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YACpC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;YAC1C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,aAAa;YACb,mBAAmB;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YACpC,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;YACjE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,UAA4B;QACtC,mBAAmB;QACnB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrD,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,UAAU,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,UAAU,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,qEAAqE;QACrE,oEAAoE;QACpE,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzD,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,wBAAwB;QACxB,UAAU,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChF,UAAU,CAAC,MAAM,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvE,UAAU,CAAC,MAAM,CAAC,iCAAiC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,oBAAoB,CAAC,IAAY,EAAE,MAAyB;QAC1D,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,CAAC;QAC/E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,MAAqB;QACpC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,CAAC;IAED,+EAA+E;IAC/E,cAAc,CAAC,SAAiB;QAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,IAAwB;QACxC,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC;YAAE,OAAO;QACpE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* `buildSessionSummary()` pulls getMetrics() from each tracker and aggregates
|
|
12
12
|
* task-level data into a single FullSessionSummary.
|
|
13
13
|
*/
|
|
14
|
+
import { type SessionNameSource } from '../hooks/session-resolver.js';
|
|
14
15
|
import type { SessionSummary, ReplayTimelineEntry } from './types.js';
|
|
15
16
|
import type { SessionTracker } from '../metrics/session-tracker.js';
|
|
16
17
|
import type { CostTracker } from '../metrics/cost-tracker.js';
|
|
@@ -47,6 +48,14 @@ export interface PersistedAntiPattern {
|
|
|
47
48
|
export declare function toPersistedAntiPatterns(patterns: readonly AntiPattern[]): PersistedAntiPattern[];
|
|
48
49
|
export interface FullSessionSummary extends SessionSummary {
|
|
49
50
|
readonly sessionName: string | null;
|
|
51
|
+
/** Which source produced `sessionName` (see SessionNameSource), or null. */
|
|
52
|
+
readonly sessionNameSource: SessionNameSource | null;
|
|
53
|
+
/**
|
|
54
|
+
* The session's originating intent (first user prompt), redacted, or null.
|
|
55
|
+
* SENSITIVE content: only ever non-null when recordContent was enabled at
|
|
56
|
+
* capture time (force-disabled under highSecurity). See SessionMetrics.
|
|
57
|
+
*/
|
|
58
|
+
readonly sessionIntent: string | null;
|
|
50
59
|
readonly repoName: string | null;
|
|
51
60
|
readonly model: string | null;
|
|
52
61
|
readonly toolBreakdown: Record<string, number>;
|
|
@@ -251,6 +260,8 @@ export declare function sessionSummaryToDriftRecord(summary: FullSessionSummary)
|
|
|
251
260
|
interface SerializedFullSessionSummary {
|
|
252
261
|
readonly sessionId?: unknown;
|
|
253
262
|
readonly sessionName?: unknown;
|
|
263
|
+
readonly sessionNameSource?: unknown;
|
|
264
|
+
readonly sessionIntent?: unknown;
|
|
254
265
|
readonly repoName?: unknown;
|
|
255
266
|
readonly startTime?: unknown;
|
|
256
267
|
readonly endTime?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/storage/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/storage/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,6 +129,17 @@ export function mergeSummaries(existing, incoming) {
|
|
|
129
129
|
durationMs: Math.max(0, endTime - startTime),
|
|
130
130
|
toolCallCount: maxNum(existing.toolCallCount, incoming.toolCallCount),
|
|
131
131
|
sessionName: incoming.sessionName ?? existing.sessionName,
|
|
132
|
+
// Tie the source to whichever name won above so a name/source desync can't
|
|
133
|
+
// arise (incoming spreads a null source alongside a null name). The
|
|
134
|
+
// in-process tracker already enforces the no-downgrade invariant on
|
|
135
|
+
// `incoming`, so taking incoming's name+source when present is safe.
|
|
136
|
+
sessionNameSource: incoming.sessionName
|
|
137
|
+
? incoming.sessionNameSource
|
|
138
|
+
: existing.sessionNameSource,
|
|
139
|
+
// Never clobber a previously-captured intent with a later intent-less write
|
|
140
|
+
// (e.g. a checkpoint saved before the name/intent was resolved, or a run
|
|
141
|
+
// with recordContent off).
|
|
142
|
+
sessionIntent: incoming.sessionIntent ?? existing.sessionIntent,
|
|
132
143
|
repoName: incoming.repoName ?? existing.repoName,
|
|
133
144
|
model: incoming.model ?? existing.model,
|
|
134
145
|
platform: incoming.platform ?? existing.platform,
|
|
@@ -486,6 +497,14 @@ export function buildSessionSummary(sources) {
|
|
|
486
497
|
return {
|
|
487
498
|
sessionId: sessionMetrics.sessionId,
|
|
488
499
|
sessionName: sessionMetrics.sessionName ? redactSensitive(sessionMetrics.sessionName) : null,
|
|
500
|
+
// Source is an enum label (not user content) — persisted unredacted.
|
|
501
|
+
sessionNameSource: sessionMetrics.sessionNameSource ?? null,
|
|
502
|
+
// Intent is SENSITIVE content; the tracker only holds a value when
|
|
503
|
+
// recordContent was on, and it is already redacted there. Redact again
|
|
504
|
+
// (idempotent) so persistence is safe regardless of caller.
|
|
505
|
+
sessionIntent: sessionMetrics.sessionIntent
|
|
506
|
+
? redactSensitive(sessionMetrics.sessionIntent)
|
|
507
|
+
: null,
|
|
489
508
|
repoName: sources.repoName ? redactSensitive(sources.repoName) : null,
|
|
490
509
|
startTime: sessionMetrics.sessionStartTime,
|
|
491
510
|
endTime: now,
|
|
@@ -739,6 +758,13 @@ export function deserializeFullSessionSummary(obj) {
|
|
|
739
758
|
return {
|
|
740
759
|
sessionId: typeof obj.sessionId === 'string' && obj.sessionId.length > 0 ? obj.sessionId : 'unknown',
|
|
741
760
|
sessionName: typeof obj.sessionName === 'string' ? obj.sessionName : null,
|
|
761
|
+
sessionNameSource: obj.sessionNameSource === 'user' ||
|
|
762
|
+
obj.sessionNameSource === 'ai-title' ||
|
|
763
|
+
obj.sessionNameSource === 'auto' ||
|
|
764
|
+
obj.sessionNameSource === 'cwd'
|
|
765
|
+
? obj.sessionNameSource
|
|
766
|
+
: null,
|
|
767
|
+
sessionIntent: typeof obj.sessionIntent === 'string' ? obj.sessionIntent : null,
|
|
742
768
|
repoName: typeof obj.repoName === 'string' ? obj.repoName : null,
|
|
743
769
|
startTime: typeof obj.startTime === 'number' ? obj.startTime : 0,
|
|
744
770
|
endTime: typeof obj.endTime === 'number' ? obj.endTime : 0,
|