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 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
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
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(message.data);
39
- const eventOrigin = this.resolveEventOrigin(message.data, message.origin);
40
- insert.run(eventId, message.sessionId, message.timestamp ?? Date.now(), dbEventType, JSON.stringify(message.data), eventTabId, eventOrigin);
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, message.data);
78
+ this.upsertErrorFingerprintPrepared(upsertFingerprint, message.sessionId, sanitizedData);
43
79
  }
44
80
  if (message.eventType === 'network') {
45
- this.insertNetworkEventPrepared(insertNetwork, message.sessionId, message.data, eventOrigin);
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, message.data);
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(statement, sessionId, data, eventOrigin) {
102
- const requestId = `${sessionId}-net-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
103
- const url = data.url ?? '';
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
- statement.run(requestId, sessionId, data.timestamp ?? Date.now(), data.duration ?? null, data.method ?? 'GET', url, origin, data.status ?? null, data.initiator ?? 'other', data.errorType ?? null, data.responseSize ?? null);
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 = 4;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIhC,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;;;;;;;;GAQP,CAAC,CAAC;AACL,CAAC"}
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 = ?