browser-debug-mcp-bridge 1.6.0 → 1.9.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 +14 -0
- package/apps/mcp-server/dist/db/events-repository.js +245 -13
- package/apps/mcp-server/dist/db/events-repository.js.map +1 -1
- package/apps/mcp-server/dist/db/migrations.js +87 -0
- package/apps/mcp-server/dist/db/migrations.js.map +1 -1
- package/apps/mcp-server/dist/db/schema.js +35 -1
- package/apps/mcp-server/dist/db/schema.js.map +1 -1
- package/apps/mcp-server/dist/main.js +18 -2
- package/apps/mcp-server/dist/main.js.map +1 -1
- package/apps/mcp-server/dist/mcp/server.js +972 -86
- package/apps/mcp-server/dist/mcp/server.js.map +1 -1
- package/apps/mcp-server/dist/retention.js +67 -4
- package/apps/mcp-server/dist/retention.js.map +1 -1
- package/apps/mcp-server/dist/websocket/messages.js +22 -0
- package/apps/mcp-server/dist/websocket/messages.js.map +1 -1
- package/apps/mcp-server/dist/websocket/websocket-server.js +18 -0
- package/apps/mcp-server/dist/websocket/websocket-server.js.map +1 -1
- package/apps/mcp-server/package.json +2 -2
- package/package.json +13 -6
package/README.md
CHANGED
|
@@ -10,6 +10,8 @@ It captures telemetry from an actual browser session (console, network, navigati
|
|
|
10
10
|
- Query recent errors, failed requests, and event timelines
|
|
11
11
|
- Run targeted live capture (DOM subtree/document, styles, layout)
|
|
12
12
|
- Pull live in-memory console logs with server-side filters (`url`, `tabId`, `levels`, `contains`)
|
|
13
|
+
- Query targeted API calls with optional sanitized request/response bodies
|
|
14
|
+
- Wait deterministically for the next matching API request during repro flows
|
|
13
15
|
- Correlate user actions with network/runtime failures
|
|
14
16
|
- Keep privacy controls enabled (safe mode, allowlist, redaction)
|
|
15
17
|
|
|
@@ -183,6 +185,7 @@ Supported tools:
|
|
|
183
185
|
- `get_navigation_history`
|
|
184
186
|
- `get_console_events`
|
|
185
187
|
- `get_network_failures`
|
|
188
|
+
- `get_network_calls`
|
|
186
189
|
|
|
187
190
|
Example: URL-only query
|
|
188
191
|
|
|
@@ -268,12 +271,23 @@ node scripts/mcp-start.cjs --stop
|
|
|
268
271
|
pnpm typecheck
|
|
269
272
|
pnpm lint
|
|
270
273
|
pnpm test
|
|
274
|
+
pnpm test:e2e
|
|
275
|
+
pnpm test:e2e:head
|
|
276
|
+
pnpm test:e2e:smoke
|
|
277
|
+
pnpm test:e2e:full
|
|
271
278
|
pnpm build
|
|
272
279
|
pnpm docs:ci
|
|
273
280
|
pnpm verify
|
|
274
281
|
node scripts/mcp-start.cjs --stop
|
|
275
282
|
```
|
|
276
283
|
|
|
284
|
+
E2E commands run headless by default. Use `pnpm test:e2e:head` only for local headed debugging.
|
|
285
|
+
|
|
286
|
+
CI lanes:
|
|
287
|
+
|
|
288
|
+
- Pull requests and pushes to `main`: `verify` + Playwright smoke + Playwright full.
|
|
289
|
+
- Nightly: `verify` + Playwright full + runtime `/health` smoke check.
|
|
290
|
+
|
|
277
291
|
Optional one-shot local setup:
|
|
278
292
|
|
|
279
293
|
```powershell
|
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
import { resolveErrorFingerprint } from './error-fingerprints.js';
|
|
2
2
|
import { getDatabasePath } from './connection.js';
|
|
3
3
|
import { writeSnapshot } from '../retention.js';
|
|
4
|
+
const INLINE_BODY_BYTES_THRESHOLD = 16 * 1024;
|
|
5
|
+
const BODY_KIND_REQUEST = 'request';
|
|
6
|
+
const BODY_KIND_RESPONSE = 'response';
|
|
7
|
+
const SENSITIVE_FIELD_NAMES = new Set([
|
|
8
|
+
'authorization',
|
|
9
|
+
'proxy-authorization',
|
|
10
|
+
'cookie',
|
|
11
|
+
'set-cookie',
|
|
12
|
+
'x-api-key',
|
|
13
|
+
'api-key',
|
|
14
|
+
'apikey',
|
|
15
|
+
'x-auth-token',
|
|
16
|
+
'access-token',
|
|
17
|
+
'refresh-token',
|
|
18
|
+
'token',
|
|
19
|
+
'password',
|
|
20
|
+
'secret',
|
|
21
|
+
'client_secret',
|
|
22
|
+
]);
|
|
23
|
+
const REDACTION_PATTERNS = [
|
|
24
|
+
{ pattern: /(Authorization:\s*Bearer\s+)[\w\-\.=]+/gi, replacement: '$1[REDACTED]' },
|
|
25
|
+
{ pattern: /eyJ[\w-]*\.eyJ[\w-]*\.[\w-]*/g, replacement: '[JWT_TOKEN]' },
|
|
26
|
+
{ pattern: /((?:api[_-]?key|apikey)\s*[:=]\s*)[\w-]+/gi, replacement: '$1[API_KEY]' },
|
|
27
|
+
{ pattern: /((?:access[_-]?token|refresh[_-]?token|token)\s*[:=]\s*)[^\s,;]+/gi, replacement: '$1[TOKEN]' },
|
|
28
|
+
{ pattern: /((?:password|pwd)\s*[:=]\s*)\S+/gi, replacement: '$1[PASSWORD]' },
|
|
29
|
+
];
|
|
4
30
|
export class EventsRepository {
|
|
5
31
|
db;
|
|
6
32
|
constructor(db) {
|
|
@@ -16,8 +42,15 @@ export class EventsRepository {
|
|
|
16
42
|
`);
|
|
17
43
|
const insertNetwork = this.db.prepare(`
|
|
18
44
|
INSERT INTO network (
|
|
19
|
-
request_id, session_id, ts_start, duration_ms, method, url, origin, status, initiator, error_class, response_size_est
|
|
20
|
-
|
|
45
|
+
request_id, session_id, trace_id, tab_id, ts_start, duration_ms, method, url, origin, status, initiator, error_class, response_size_est,
|
|
46
|
+
request_content_type, request_body_text, request_body_json, request_body_bytes, request_body_truncated, request_body_chunk_ref,
|
|
47
|
+
response_content_type, response_body_text, response_body_json, response_body_bytes, response_body_truncated, response_body_chunk_ref
|
|
48
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
49
|
+
`);
|
|
50
|
+
const insertBodyChunk = this.db.prepare(`
|
|
51
|
+
INSERT INTO body_chunks (
|
|
52
|
+
chunk_ref, session_id, request_id, trace_id, body_kind, content_type, body_text, body_bytes, truncated, created_at
|
|
53
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
21
54
|
`);
|
|
22
55
|
const upsertFingerprint = this.db.prepare(`
|
|
23
56
|
INSERT INTO error_fingerprints (
|
|
@@ -33,19 +66,22 @@ export class EventsRepository {
|
|
|
33
66
|
for (const message of batch) {
|
|
34
67
|
const eventId = `${message.sessionId}-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
|
|
35
68
|
const dbEventType = this.mapEventType(message.eventType);
|
|
69
|
+
const sanitizedData = message.eventType === 'network'
|
|
70
|
+
? sanitizeRecord(message.data)
|
|
71
|
+
: message.data;
|
|
36
72
|
const eventTabId = typeof message.tabId === 'number' && Number.isFinite(message.tabId)
|
|
37
73
|
? Math.floor(message.tabId)
|
|
38
|
-
: this.resolveTabIdFromPayload(
|
|
39
|
-
const eventOrigin = this.resolveEventOrigin(
|
|
40
|
-
insert.run(eventId, message.sessionId, message.timestamp ?? Date.now(), dbEventType, JSON.stringify(
|
|
74
|
+
: this.resolveTabIdFromPayload(sanitizedData);
|
|
75
|
+
const eventOrigin = this.resolveEventOrigin(sanitizedData, message.origin);
|
|
76
|
+
insert.run(eventId, message.sessionId, message.timestamp ?? Date.now(), dbEventType, JSON.stringify(sanitizedData), eventTabId, eventOrigin);
|
|
41
77
|
if (message.eventType === 'error') {
|
|
42
|
-
this.upsertErrorFingerprintPrepared(upsertFingerprint, message.sessionId,
|
|
78
|
+
this.upsertErrorFingerprintPrepared(upsertFingerprint, message.sessionId, sanitizedData);
|
|
43
79
|
}
|
|
44
80
|
if (message.eventType === 'network') {
|
|
45
|
-
this.insertNetworkEventPrepared(insertNetwork, message.sessionId,
|
|
81
|
+
this.insertNetworkEventPrepared(insertNetwork, insertBodyChunk, message.sessionId, sanitizedData, eventOrigin, eventTabId);
|
|
46
82
|
}
|
|
47
83
|
if (message.eventType === 'ui_snapshot') {
|
|
48
|
-
this.insertSnapshotPrepared(message.sessionId, eventId,
|
|
84
|
+
this.insertSnapshotPrepared(message.sessionId, eventId, sanitizedData);
|
|
49
85
|
}
|
|
50
86
|
}
|
|
51
87
|
});
|
|
@@ -64,11 +100,43 @@ export class EventsRepository {
|
|
|
64
100
|
endSession(message) {
|
|
65
101
|
const update = this.db.prepare(`
|
|
66
102
|
UPDATE sessions
|
|
67
|
-
SET ended_at =
|
|
103
|
+
SET ended_at = ?, paused_at = NULL
|
|
68
104
|
WHERE session_id = ?
|
|
69
105
|
`);
|
|
70
106
|
update.run(Date.now(), message.sessionId);
|
|
71
107
|
}
|
|
108
|
+
pauseSession(message) {
|
|
109
|
+
const update = this.db.prepare(`
|
|
110
|
+
UPDATE sessions
|
|
111
|
+
SET paused_at = COALESCE(paused_at, ?), ended_at = NULL
|
|
112
|
+
WHERE session_id = ? AND ended_at IS NULL
|
|
113
|
+
`);
|
|
114
|
+
const result = update.run(Date.now(), message.sessionId);
|
|
115
|
+
if (result.changes === 0) {
|
|
116
|
+
throw new Error(`Session not found or already ended: ${message.sessionId}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
resumeSession(message) {
|
|
120
|
+
const update = this.db.prepare(`
|
|
121
|
+
UPDATE sessions
|
|
122
|
+
SET
|
|
123
|
+
paused_at = NULL,
|
|
124
|
+
ended_at = NULL,
|
|
125
|
+
url_last = COALESCE(?, url_last),
|
|
126
|
+
tab_id = COALESCE(?, tab_id),
|
|
127
|
+
window_id = COALESCE(?, window_id),
|
|
128
|
+
user_agent = COALESCE(?, user_agent),
|
|
129
|
+
viewport_w = COALESCE(?, viewport_w),
|
|
130
|
+
viewport_h = COALESCE(?, viewport_h),
|
|
131
|
+
dpr = COALESCE(?, dpr),
|
|
132
|
+
safe_mode = COALESCE(?, safe_mode)
|
|
133
|
+
WHERE session_id = ? AND ended_at IS NULL
|
|
134
|
+
`);
|
|
135
|
+
const result = update.run(message.url ?? null, message.tabId ?? null, message.windowId ?? null, message.userAgent ?? null, message.viewport?.width ?? null, message.viewport?.height ?? null, message.dpr ?? null, message.safeMode === undefined ? null : (message.safeMode ? 1 : 0), message.sessionId);
|
|
136
|
+
if (result.changes === 0) {
|
|
137
|
+
throw new Error(`Session not found or already ended: ${message.sessionId}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
72
140
|
insertEvent(message) {
|
|
73
141
|
this.insertEventsBatch([message]);
|
|
74
142
|
}
|
|
@@ -98,11 +166,94 @@ export class EventsRepository {
|
|
|
98
166
|
const now = Date.now();
|
|
99
167
|
statement.run(fingerprint, sessionId, data.message ?? 'Unknown error', data.stack ?? null, now, now);
|
|
100
168
|
}
|
|
101
|
-
insertNetworkEventPrepared(
|
|
102
|
-
const
|
|
103
|
-
|
|
169
|
+
insertNetworkEventPrepared(networkStatement, bodyChunkStatement, sessionId, data, eventOrigin, eventTabId) {
|
|
170
|
+
const normalized = this.normalizeNetworkInsertInput(sessionId, data, eventOrigin, eventTabId, bodyChunkStatement);
|
|
171
|
+
networkStatement.run(normalized.requestId, sessionId, normalized.traceId, normalized.tabId, normalized.tsStart, normalized.durationMs, normalized.method, normalized.url, normalized.origin, normalized.status, normalized.initiator, normalized.errorClass, normalized.responseSizeEst, normalized.request.contentType, normalized.request.bodyText, normalized.request.bodyJson, normalized.request.bodyBytes, normalized.request.truncated ? 1 : 0, normalized.request.chunkRef, normalized.response.contentType, normalized.response.bodyText, normalized.response.bodyJson, normalized.response.bodyBytes, normalized.response.truncated ? 1 : 0, normalized.response.chunkRef);
|
|
172
|
+
}
|
|
173
|
+
normalizeNetworkInsertInput(sessionId, data, eventOrigin, eventTabId, bodyChunkStatement) {
|
|
174
|
+
const requestId = toNonEmptyString(data.requestId)
|
|
175
|
+
?? `${sessionId}-net-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
|
|
176
|
+
const traceId = toNonEmptyString(data.traceId) ?? null;
|
|
177
|
+
const url = toNonEmptyString(data.url) ?? '';
|
|
104
178
|
const origin = eventOrigin ?? normalizeOriginCandidate(url);
|
|
105
|
-
|
|
179
|
+
const request = this.processNetworkBody({
|
|
180
|
+
sessionId,
|
|
181
|
+
requestId,
|
|
182
|
+
traceId,
|
|
183
|
+
bodyKind: BODY_KIND_REQUEST,
|
|
184
|
+
contentType: toNullableContentType(data.requestContentType),
|
|
185
|
+
bodyText: toNonEmptyString(data.requestBodyText),
|
|
186
|
+
bodyJson: toRecordLike(data.requestBodyJson),
|
|
187
|
+
bodyBytes: toNullableInteger(data.requestBodyBytes),
|
|
188
|
+
truncated: data.requestBodyTruncated === true,
|
|
189
|
+
bodyChunkStatement,
|
|
190
|
+
});
|
|
191
|
+
const response = this.processNetworkBody({
|
|
192
|
+
sessionId,
|
|
193
|
+
requestId,
|
|
194
|
+
traceId,
|
|
195
|
+
bodyKind: BODY_KIND_RESPONSE,
|
|
196
|
+
contentType: toNullableContentType(data.responseContentType),
|
|
197
|
+
bodyText: toNonEmptyString(data.responseBodyText),
|
|
198
|
+
bodyJson: toRecordLike(data.responseBodyJson),
|
|
199
|
+
bodyBytes: toNullableInteger(data.responseBodyBytes),
|
|
200
|
+
truncated: data.responseBodyTruncated === true,
|
|
201
|
+
bodyChunkStatement,
|
|
202
|
+
});
|
|
203
|
+
return {
|
|
204
|
+
requestId,
|
|
205
|
+
traceId,
|
|
206
|
+
tabId: eventTabId,
|
|
207
|
+
tsStart: toNullableInteger(data.timestamp) ?? Date.now(),
|
|
208
|
+
durationMs: toNullableInteger(data.duration),
|
|
209
|
+
method: normalizeMethod(toNonEmptyString(data.method)),
|
|
210
|
+
url,
|
|
211
|
+
origin,
|
|
212
|
+
status: toNullableInteger(data.status),
|
|
213
|
+
initiator: normalizeInitiator(toNonEmptyString(data.initiator)),
|
|
214
|
+
errorClass: normalizeErrorClass(toNonEmptyString(data.errorType)),
|
|
215
|
+
responseSizeEst: toNullableInteger(data.responseSize),
|
|
216
|
+
request,
|
|
217
|
+
response,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
processNetworkBody(params) {
|
|
221
|
+
const redactedJson = params.bodyJson ? sanitizeRecord(params.bodyJson) : null;
|
|
222
|
+
const redactedText = params.bodyText ? redactString(params.bodyText) : null;
|
|
223
|
+
const resolvedText = redactedText
|
|
224
|
+
?? (redactedJson ? JSON.stringify(redactedJson) : null);
|
|
225
|
+
const resolvedBytes = resolvedText ? utf8Bytes(resolvedText) : params.bodyBytes;
|
|
226
|
+
const resolvedJsonText = redactedJson ? JSON.stringify(redactedJson) : null;
|
|
227
|
+
if (!resolvedText && !resolvedJsonText && resolvedBytes === null) {
|
|
228
|
+
return {
|
|
229
|
+
contentType: params.contentType,
|
|
230
|
+
bodyText: null,
|
|
231
|
+
bodyJson: null,
|
|
232
|
+
bodyBytes: null,
|
|
233
|
+
truncated: params.truncated,
|
|
234
|
+
chunkRef: null,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (resolvedText && resolvedBytes !== null && resolvedBytes > INLINE_BODY_BYTES_THRESHOLD) {
|
|
238
|
+
const chunkRef = `${params.requestId}:${params.bodyKind}:${Date.now()}:${Math.random().toString(36).slice(2, 8)}`;
|
|
239
|
+
params.bodyChunkStatement.run(chunkRef, params.sessionId, params.requestId, params.traceId, params.bodyKind, params.contentType, resolvedText, resolvedBytes, params.truncated ? 1 : 0, Date.now());
|
|
240
|
+
return {
|
|
241
|
+
contentType: params.contentType,
|
|
242
|
+
bodyText: null,
|
|
243
|
+
bodyJson: null,
|
|
244
|
+
bodyBytes: resolvedBytes,
|
|
245
|
+
truncated: params.truncated,
|
|
246
|
+
chunkRef,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
contentType: params.contentType,
|
|
251
|
+
bodyText: resolvedText,
|
|
252
|
+
bodyJson: resolvedJsonText,
|
|
253
|
+
bodyBytes: resolvedBytes,
|
|
254
|
+
truncated: params.truncated,
|
|
255
|
+
chunkRef: null,
|
|
256
|
+
};
|
|
106
257
|
}
|
|
107
258
|
insertSnapshotPrepared(sessionId, triggerEventId, data) {
|
|
108
259
|
writeSnapshot(this.db, getDatabasePath(), sessionId, data, triggerEventId);
|
|
@@ -144,4 +295,85 @@ function normalizeOriginCandidate(value) {
|
|
|
144
295
|
return null;
|
|
145
296
|
}
|
|
146
297
|
}
|
|
298
|
+
function toNonEmptyString(value) {
|
|
299
|
+
if (typeof value !== 'string') {
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
302
|
+
const trimmed = value.trim();
|
|
303
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
304
|
+
}
|
|
305
|
+
function toNullableInteger(value) {
|
|
306
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
return Math.floor(value);
|
|
310
|
+
}
|
|
311
|
+
function toNullableContentType(value) {
|
|
312
|
+
const normalized = toNonEmptyString(value);
|
|
313
|
+
if (!normalized) {
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
return normalized.toLowerCase();
|
|
317
|
+
}
|
|
318
|
+
function toRecordLike(value) {
|
|
319
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
320
|
+
return value;
|
|
321
|
+
}
|
|
322
|
+
return null;
|
|
323
|
+
}
|
|
324
|
+
function utf8Bytes(value) {
|
|
325
|
+
return Buffer.byteLength(value, 'utf-8');
|
|
326
|
+
}
|
|
327
|
+
function normalizeMethod(value) {
|
|
328
|
+
return value ? value.toUpperCase() : 'GET';
|
|
329
|
+
}
|
|
330
|
+
function normalizeInitiator(value) {
|
|
331
|
+
if (!value) {
|
|
332
|
+
return 'other';
|
|
333
|
+
}
|
|
334
|
+
const normalized = value.toLowerCase();
|
|
335
|
+
if (normalized === 'fetch' || normalized === 'xhr' || normalized === 'img' || normalized === 'script' || normalized === 'other') {
|
|
336
|
+
return normalized;
|
|
337
|
+
}
|
|
338
|
+
return 'other';
|
|
339
|
+
}
|
|
340
|
+
function normalizeErrorClass(value) {
|
|
341
|
+
if (!value) {
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
const normalized = value.toLowerCase();
|
|
345
|
+
if (normalized === 'timeout' || normalized === 'cors' || normalized === 'dns' || normalized === 'blocked' || normalized === 'http_error' || normalized === 'unknown') {
|
|
346
|
+
return normalized;
|
|
347
|
+
}
|
|
348
|
+
return 'unknown';
|
|
349
|
+
}
|
|
350
|
+
function sanitizeRecord(value) {
|
|
351
|
+
return sanitizeValue(value, 'root');
|
|
352
|
+
}
|
|
353
|
+
function sanitizeValue(value, key) {
|
|
354
|
+
if (typeof value === 'string') {
|
|
355
|
+
if (SENSITIVE_FIELD_NAMES.has(key.toLowerCase())) {
|
|
356
|
+
return '[REDACTED]';
|
|
357
|
+
}
|
|
358
|
+
return redactString(value);
|
|
359
|
+
}
|
|
360
|
+
if (Array.isArray(value)) {
|
|
361
|
+
return value.map((entry) => sanitizeValue(entry, key));
|
|
362
|
+
}
|
|
363
|
+
if (value && typeof value === 'object') {
|
|
364
|
+
const result = {};
|
|
365
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
366
|
+
result[entryKey] = sanitizeValue(entryValue, entryKey);
|
|
367
|
+
}
|
|
368
|
+
return result;
|
|
369
|
+
}
|
|
370
|
+
return value;
|
|
371
|
+
}
|
|
372
|
+
function redactString(value) {
|
|
373
|
+
let result = value;
|
|
374
|
+
for (const rule of REDACTION_PATTERNS) {
|
|
375
|
+
result = result.replace(rule.pattern, rule.replacement);
|
|
376
|
+
}
|
|
377
|
+
return result;
|
|
378
|
+
}
|
|
147
379
|
//# sourceMappingURL=events-repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-repository.js","sourceRoot":"","sources":["../../src/db/events-repository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"events-repository.js","sourceRoot":"","sources":["../../src/db/events-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,6 +180,93 @@ const migrations = [
|
|
|
180
180
|
runBackfill();
|
|
181
181
|
},
|
|
182
182
|
},
|
|
183
|
+
{
|
|
184
|
+
version: 5,
|
|
185
|
+
name: 'network_trace_and_body_capture',
|
|
186
|
+
up: (db) => {
|
|
187
|
+
const networkColumns = getColumnNames(db, 'network');
|
|
188
|
+
if (!networkColumns.has('trace_id')) {
|
|
189
|
+
db.exec('ALTER TABLE network ADD COLUMN trace_id TEXT;');
|
|
190
|
+
}
|
|
191
|
+
if (!networkColumns.has('tab_id')) {
|
|
192
|
+
db.exec('ALTER TABLE network ADD COLUMN tab_id INTEGER;');
|
|
193
|
+
}
|
|
194
|
+
if (!networkColumns.has('request_content_type')) {
|
|
195
|
+
db.exec('ALTER TABLE network ADD COLUMN request_content_type TEXT;');
|
|
196
|
+
}
|
|
197
|
+
if (!networkColumns.has('request_body_text')) {
|
|
198
|
+
db.exec('ALTER TABLE network ADD COLUMN request_body_text TEXT;');
|
|
199
|
+
}
|
|
200
|
+
if (!networkColumns.has('request_body_json')) {
|
|
201
|
+
db.exec('ALTER TABLE network ADD COLUMN request_body_json TEXT;');
|
|
202
|
+
}
|
|
203
|
+
if (!networkColumns.has('request_body_bytes')) {
|
|
204
|
+
db.exec('ALTER TABLE network ADD COLUMN request_body_bytes INTEGER;');
|
|
205
|
+
}
|
|
206
|
+
if (!networkColumns.has('request_body_truncated')) {
|
|
207
|
+
db.exec('ALTER TABLE network ADD COLUMN request_body_truncated INTEGER NOT NULL DEFAULT 0;');
|
|
208
|
+
}
|
|
209
|
+
if (!networkColumns.has('request_body_chunk_ref')) {
|
|
210
|
+
db.exec('ALTER TABLE network ADD COLUMN request_body_chunk_ref TEXT;');
|
|
211
|
+
}
|
|
212
|
+
if (!networkColumns.has('response_content_type')) {
|
|
213
|
+
db.exec('ALTER TABLE network ADD COLUMN response_content_type TEXT;');
|
|
214
|
+
}
|
|
215
|
+
if (!networkColumns.has('response_body_text')) {
|
|
216
|
+
db.exec('ALTER TABLE network ADD COLUMN response_body_text TEXT;');
|
|
217
|
+
}
|
|
218
|
+
if (!networkColumns.has('response_body_json')) {
|
|
219
|
+
db.exec('ALTER TABLE network ADD COLUMN response_body_json TEXT;');
|
|
220
|
+
}
|
|
221
|
+
if (!networkColumns.has('response_body_bytes')) {
|
|
222
|
+
db.exec('ALTER TABLE network ADD COLUMN response_body_bytes INTEGER;');
|
|
223
|
+
}
|
|
224
|
+
if (!networkColumns.has('response_body_truncated')) {
|
|
225
|
+
db.exec('ALTER TABLE network ADD COLUMN response_body_truncated INTEGER NOT NULL DEFAULT 0;');
|
|
226
|
+
}
|
|
227
|
+
if (!networkColumns.has('response_body_chunk_ref')) {
|
|
228
|
+
db.exec('ALTER TABLE network ADD COLUMN response_body_chunk_ref TEXT;');
|
|
229
|
+
}
|
|
230
|
+
db.exec(`
|
|
231
|
+
CREATE INDEX IF NOT EXISTS idx_network_trace_id ON network(trace_id);
|
|
232
|
+
CREATE INDEX IF NOT EXISTS idx_network_session_trace_ts ON network(session_id, trace_id, ts_start);
|
|
233
|
+
CREATE INDEX IF NOT EXISTS idx_network_tab_id ON network(tab_id);
|
|
234
|
+
`);
|
|
235
|
+
db.exec(`
|
|
236
|
+
CREATE TABLE IF NOT EXISTS body_chunks (
|
|
237
|
+
chunk_ref TEXT PRIMARY KEY,
|
|
238
|
+
session_id TEXT NOT NULL,
|
|
239
|
+
request_id TEXT,
|
|
240
|
+
trace_id TEXT,
|
|
241
|
+
body_kind TEXT NOT NULL CHECK(body_kind IN ('request', 'response')),
|
|
242
|
+
content_type TEXT,
|
|
243
|
+
body_text TEXT NOT NULL,
|
|
244
|
+
body_bytes INTEGER NOT NULL,
|
|
245
|
+
truncated INTEGER NOT NULL DEFAULT 0,
|
|
246
|
+
created_at INTEGER NOT NULL,
|
|
247
|
+
FOREIGN KEY (session_id) REFERENCES sessions(session_id) ON DELETE CASCADE
|
|
248
|
+
);
|
|
249
|
+
`);
|
|
250
|
+
db.exec(`
|
|
251
|
+
CREATE INDEX IF NOT EXISTS idx_body_chunks_session_id ON body_chunks(session_id);
|
|
252
|
+
CREATE INDEX IF NOT EXISTS idx_body_chunks_request_id ON body_chunks(request_id);
|
|
253
|
+
CREATE INDEX IF NOT EXISTS idx_body_chunks_trace_id ON body_chunks(trace_id);
|
|
254
|
+
`);
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
version: 6,
|
|
259
|
+
name: 'session_pause_resume_state',
|
|
260
|
+
up: (db) => {
|
|
261
|
+
const sessionColumns = getColumnNames(db, 'sessions');
|
|
262
|
+
if (!sessionColumns.has('paused_at')) {
|
|
263
|
+
db.exec('ALTER TABLE sessions ADD COLUMN paused_at INTEGER;');
|
|
264
|
+
}
|
|
265
|
+
db.exec(`
|
|
266
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_paused_at ON sessions(paused_at);
|
|
267
|
+
`);
|
|
268
|
+
},
|
|
269
|
+
},
|
|
183
270
|
];
|
|
184
271
|
export function runMigrations(db) {
|
|
185
272
|
const currentVersion = getSchemaVersion(db) || 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export const SCHEMA_VERSION =
|
|
1
|
+
export const SCHEMA_VERSION = 6;
|
|
2
2
|
export const CREATE_TABLES_SQL = `
|
|
3
3
|
-- Sessions table
|
|
4
4
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
5
5
|
session_id TEXT PRIMARY KEY,
|
|
6
6
|
created_at INTEGER NOT NULL,
|
|
7
|
+
paused_at INTEGER,
|
|
7
8
|
ended_at INTEGER,
|
|
8
9
|
tab_id INTEGER,
|
|
9
10
|
window_id INTEGER,
|
|
@@ -62,6 +63,8 @@ CREATE INDEX IF NOT EXISTS idx_events_session_type ON events(session_id, type);
|
|
|
62
63
|
CREATE TABLE IF NOT EXISTS network (
|
|
63
64
|
request_id TEXT PRIMARY KEY,
|
|
64
65
|
session_id TEXT NOT NULL,
|
|
66
|
+
trace_id TEXT,
|
|
67
|
+
tab_id INTEGER,
|
|
65
68
|
ts_start INTEGER NOT NULL,
|
|
66
69
|
duration_ms INTEGER,
|
|
67
70
|
method TEXT NOT NULL,
|
|
@@ -70,6 +73,18 @@ CREATE TABLE IF NOT EXISTS network (
|
|
|
70
73
|
initiator TEXT CHECK(initiator IN ('fetch', 'xhr', 'img', 'script', 'other')),
|
|
71
74
|
error_class TEXT CHECK(error_class IN ('timeout', 'cors', 'dns', 'blocked', 'http_error', 'unknown')),
|
|
72
75
|
response_size_est INTEGER,
|
|
76
|
+
request_content_type TEXT,
|
|
77
|
+
request_body_text TEXT,
|
|
78
|
+
request_body_json TEXT,
|
|
79
|
+
request_body_bytes INTEGER,
|
|
80
|
+
request_body_truncated INTEGER NOT NULL DEFAULT 0,
|
|
81
|
+
request_body_chunk_ref TEXT,
|
|
82
|
+
response_content_type TEXT,
|
|
83
|
+
response_body_text TEXT,
|
|
84
|
+
response_body_json TEXT,
|
|
85
|
+
response_body_bytes INTEGER,
|
|
86
|
+
response_body_truncated INTEGER NOT NULL DEFAULT 0,
|
|
87
|
+
response_body_chunk_ref TEXT,
|
|
73
88
|
FOREIGN KEY (session_id) REFERENCES sessions(session_id) ON DELETE CASCADE
|
|
74
89
|
);
|
|
75
90
|
|
|
@@ -79,6 +94,24 @@ CREATE INDEX IF NOT EXISTS idx_network_ts_start ON network(ts_start);
|
|
|
79
94
|
CREATE INDEX IF NOT EXISTS idx_network_error_class ON network(error_class);
|
|
80
95
|
CREATE INDEX IF NOT EXISTS idx_network_session_error ON network(session_id, error_class);
|
|
81
96
|
|
|
97
|
+
CREATE TABLE IF NOT EXISTS body_chunks (
|
|
98
|
+
chunk_ref TEXT PRIMARY KEY,
|
|
99
|
+
session_id TEXT NOT NULL,
|
|
100
|
+
request_id TEXT,
|
|
101
|
+
trace_id TEXT,
|
|
102
|
+
body_kind TEXT NOT NULL CHECK(body_kind IN ('request', 'response')),
|
|
103
|
+
content_type TEXT,
|
|
104
|
+
body_text TEXT NOT NULL,
|
|
105
|
+
body_bytes INTEGER NOT NULL,
|
|
106
|
+
truncated INTEGER NOT NULL DEFAULT 0,
|
|
107
|
+
created_at INTEGER NOT NULL,
|
|
108
|
+
FOREIGN KEY (session_id) REFERENCES sessions(session_id) ON DELETE CASCADE
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_body_chunks_session_id ON body_chunks(session_id);
|
|
112
|
+
CREATE INDEX IF NOT EXISTS idx_body_chunks_request_id ON body_chunks(request_id);
|
|
113
|
+
CREATE INDEX IF NOT EXISTS idx_body_chunks_trace_id ON body_chunks(trace_id);
|
|
114
|
+
|
|
82
115
|
-- Error fingerprints table
|
|
83
116
|
CREATE TABLE IF NOT EXISTS error_fingerprints (
|
|
84
117
|
fingerprint TEXT PRIMARY KEY,
|
|
@@ -146,6 +179,7 @@ export function getSchemaVersion(db) {
|
|
|
146
179
|
export function clearDatabase(db) {
|
|
147
180
|
db.exec(`
|
|
148
181
|
DELETE FROM error_fingerprints;
|
|
182
|
+
DELETE FROM body_chunks;
|
|
149
183
|
DELETE FROM network;
|
|
150
184
|
DELETE FROM snapshots;
|
|
151
185
|
DELETE FROM events;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkKhC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAG9B,CAAC,CAAC,GAAG,EAAE,CAAC;IAET,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,EAAqC,CAAC;IACvI,OAAO,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAY;IACxC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;GASP,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -203,7 +203,7 @@ fastify.get('/sessions', async (request) => {
|
|
|
203
203
|
const limit = Number.isFinite(rawLimit) ? Math.min(Math.max(Math.floor(rawLimit), 1), 200) : 20;
|
|
204
204
|
const offset = Number.isFinite(rawOffset) ? Math.max(Math.floor(rawOffset), 0) : 0;
|
|
205
205
|
const rows = db.prepare(`
|
|
206
|
-
SELECT session_id, created_at, ended_at, url_last, pinned
|
|
206
|
+
SELECT session_id, created_at, paused_at, ended_at, url_last, pinned
|
|
207
207
|
FROM sessions
|
|
208
208
|
ORDER BY created_at DESC
|
|
209
209
|
LIMIT ? OFFSET ?
|
|
@@ -219,7 +219,9 @@ fastify.get('/sessions', async (request) => {
|
|
|
219
219
|
sessions: page.map((row) => ({
|
|
220
220
|
sessionId: row.session_id,
|
|
221
221
|
createdAt: row.created_at,
|
|
222
|
+
pausedAt: row.paused_at,
|
|
222
223
|
endedAt: row.ended_at,
|
|
224
|
+
status: row.ended_at ? 'ended' : row.paused_at ? 'paused' : 'active',
|
|
223
225
|
urlLast: row.url_last,
|
|
224
226
|
pinned: row.pinned === 1,
|
|
225
227
|
})),
|
|
@@ -270,6 +272,8 @@ fastify.get('/sessions/:sessionId/entries', async (request) => {
|
|
|
270
272
|
), CHAR(13), ' ') AS summary,
|
|
271
273
|
json_object(
|
|
272
274
|
'requestId', request_id,
|
|
275
|
+
'traceId', trace_id,
|
|
276
|
+
'tabId', tab_id,
|
|
273
277
|
'timestamp', ts_start,
|
|
274
278
|
'durationMs', duration_ms,
|
|
275
279
|
'method', method,
|
|
@@ -277,7 +281,19 @@ fastify.get('/sessions/:sessionId/entries', async (request) => {
|
|
|
277
281
|
'status', status,
|
|
278
282
|
'initiator', initiator,
|
|
279
283
|
'errorClass', error_class,
|
|
280
|
-
'responseSizeEst', response_size_est
|
|
284
|
+
'responseSizeEst', response_size_est,
|
|
285
|
+
'request', json_object(
|
|
286
|
+
'contentType', request_content_type,
|
|
287
|
+
'bodyBytes', request_body_bytes,
|
|
288
|
+
'truncated', request_body_truncated,
|
|
289
|
+
'bodyChunkRef', request_body_chunk_ref
|
|
290
|
+
),
|
|
291
|
+
'response', json_object(
|
|
292
|
+
'contentType', response_content_type,
|
|
293
|
+
'bodyBytes', response_body_bytes,
|
|
294
|
+
'truncated', response_body_truncated,
|
|
295
|
+
'bodyChunkRef', response_body_chunk_ref
|
|
296
|
+
)
|
|
281
297
|
) AS raw_json
|
|
282
298
|
FROM network
|
|
283
299
|
WHERE session_id = ?
|