react-native-ai-debugger 1.0.39 → 1.0.41

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.
Files changed (61) hide show
  1. package/build/__tests__/helpers/fake-cdp-server.d.ts +56 -0
  2. package/build/__tests__/helpers/fake-cdp-server.d.ts.map +1 -0
  3. package/build/__tests__/helpers/fake-cdp-server.js +108 -0
  4. package/build/__tests__/helpers/fake-cdp-server.js.map +1 -0
  5. package/build/__tests__/integration/connection-health.test.d.ts +2 -0
  6. package/build/__tests__/integration/connection-health.test.d.ts.map +1 -0
  7. package/build/__tests__/integration/connection-health.test.js +151 -0
  8. package/build/__tests__/integration/connection-health.test.js.map +1 -0
  9. package/build/__tests__/integration/execute-in-app.test.d.ts +2 -0
  10. package/build/__tests__/integration/execute-in-app.test.d.ts.map +1 -0
  11. package/build/__tests__/integration/execute-in-app.test.js +115 -0
  12. package/build/__tests__/integration/execute-in-app.test.js.map +1 -0
  13. package/build/__tests__/integration/tools.test.d.ts +2 -0
  14. package/build/__tests__/integration/tools.test.d.ts.map +1 -0
  15. package/build/__tests__/integration/tools.test.js +228 -0
  16. package/build/__tests__/integration/tools.test.js.map +1 -0
  17. package/build/__tests__/unit/bundle.test.d.ts +2 -0
  18. package/build/__tests__/unit/bundle.test.d.ts.map +1 -0
  19. package/build/__tests__/unit/bundle.test.js +53 -0
  20. package/build/__tests__/unit/bundle.test.js.map +1 -0
  21. package/build/__tests__/unit/connection-health.test.d.ts +2 -0
  22. package/build/__tests__/unit/connection-health.test.d.ts.map +1 -0
  23. package/build/__tests__/unit/connection-health.test.js +28 -0
  24. package/build/__tests__/unit/connection-health.test.js.map +1 -0
  25. package/build/__tests__/unit/executor.test.d.ts +2 -0
  26. package/build/__tests__/unit/executor.test.d.ts.map +1 -0
  27. package/build/__tests__/unit/executor.test.js +79 -0
  28. package/build/__tests__/unit/executor.test.js.map +1 -0
  29. package/build/__tests__/unit/logs.test.d.ts +2 -0
  30. package/build/__tests__/unit/logs.test.d.ts.map +1 -0
  31. package/build/__tests__/unit/logs.test.js +81 -0
  32. package/build/__tests__/unit/logs.test.js.map +1 -0
  33. package/build/__tests__/unit/metro.test.d.ts +2 -0
  34. package/build/__tests__/unit/metro.test.d.ts.map +1 -0
  35. package/build/__tests__/unit/metro.test.js +61 -0
  36. package/build/__tests__/unit/metro.test.js.map +1 -0
  37. package/build/__tests__/unit/network.test.d.ts +2 -0
  38. package/build/__tests__/unit/network.test.d.ts.map +1 -0
  39. package/build/__tests__/unit/network.test.js +102 -0
  40. package/build/__tests__/unit/network.test.js.map +1 -0
  41. package/build/core/connection.d.ts +8 -1
  42. package/build/core/connection.d.ts.map +1 -1
  43. package/build/core/connection.js +56 -1
  44. package/build/core/connection.js.map +1 -1
  45. package/build/core/executor.d.ts +20 -0
  46. package/build/core/executor.d.ts.map +1 -1
  47. package/build/core/executor.js +7 -61
  48. package/build/core/executor.js.map +1 -1
  49. package/build/core/index.d.ts +3 -2
  50. package/build/core/index.d.ts.map +1 -1
  51. package/build/core/index.js +2 -2
  52. package/build/core/index.js.map +1 -1
  53. package/build/core/state.d.ts +2 -0
  54. package/build/core/state.d.ts.map +1 -1
  55. package/build/core/state.js +8 -0
  56. package/build/core/state.js.map +1 -1
  57. package/build/core/types.d.ts +5 -0
  58. package/build/core/types.d.ts.map +1 -1
  59. package/build/index.js +91 -19
  60. package/build/index.js.map +1 -1
  61. package/package.json +8 -2
@@ -5,7 +5,7 @@ export { DEFAULT_RECONNECTION_CONFIG, initConnectionState, updateConnectionState
5
5
  // Context health tracking
6
6
  initContextHealth, getContextHealth, updateContextHealth, markContextStale, markContextHealthy, clearContextHealth, getAllContextHealth, } from "./connectionState.js";
7
7
  // State
8
- export { logBuffer, networkBuffer, bundleErrorBuffer, connectedApps, pendingExecutions, getNextMessageId, getActiveSimulatorUdid } from "./state.js";
8
+ export { logBuffer, networkBuffer, bundleErrorBuffer, connectedApps, pendingExecutions, getNextMessageId, getActiveSimulatorUdid, getLastCDPMessageTime, updateLastCDPMessageTime } from "./state.js";
9
9
  // Logs
10
10
  export { LogBuffer, mapConsoleType, formatLogs, getLogs, searchLogs, getLogSummary } from "./logs.js";
11
11
  // Network
@@ -13,7 +13,7 @@ export { NetworkBuffer, formatRequest, formatRequests, formatRequestDetails, get
13
13
  // Metro
14
14
  export { COMMON_PORTS, isPortOpen, scanMetroPorts, fetchDevices, selectMainDevice, discoverMetroDevices, checkMetroState } from "./metro.js";
15
15
  // Connection
16
- export { formatRemoteObject, handleCDPMessage, connectToDevice, getConnectedApps, getFirstConnectedApp, hasConnectedApp, runQuickHealthCheck, ensureConnection, } from "./connection.js";
16
+ export { formatRemoteObject, handleCDPMessage, connectToDevice, getConnectedApps, getFirstConnectedApp, hasConnectedApp, runQuickHealthCheck, ensureConnection, getPassiveConnectionStatus, checkAndEnsureConnection, } from "./connection.js";
17
17
  // Executor
18
18
  export { executeInApp, listDebugGlobals, inspectGlobal, reloadApp,
19
19
  // React Component Inspection
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,6 @@ export declare function getNextMessageId(): number;
11
11
  export declare function getActiveSimulatorUdid(): string | null;
12
12
  export declare function setActiveSimulatorUdid(udid: string | null, sourceAppKey?: string): void;
13
13
  export declare function clearActiveSimulatorIfSource(appKey: string): void;
14
+ export declare function getLastCDPMessageTime(): Date | null;
15
+ export declare function updateLastCDPMessageTime(time: Date | null): void;
14
16
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAGvE,eAAO,MAAM,SAAS,WAAqB,CAAC;AAG5C,eAAO,MAAM,aAAa,eAAyB,CAAC;AAGpD,eAAO,MAAM,iBAAiB,mBAA6B,CAAC;AAM5D,eAAO,MAAM,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa,CAAC;AAGlE,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAa,CAAC;AAK1E,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAOD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAGvF;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKjE"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAyB,MAAM,aAAa,CAAC;AAGvE,eAAO,MAAM,SAAS,WAAqB,CAAC;AAG5C,eAAO,MAAM,aAAa,eAAyB,CAAC;AAGpD,eAAO,MAAM,iBAAiB,mBAA6B,CAAC;AAM5D,eAAO,MAAM,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAa,CAAC;AAGlE,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAa,CAAC;AAK1E,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAOD,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAGvF;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKjE;AAKD,wBAAgB,qBAAqB,IAAI,IAAI,GAAG,IAAI,CAEnD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAEhE"}
@@ -35,4 +35,12 @@ export function clearActiveSimulatorIfSource(appKey) {
35
35
  _activeSimulatorSourceAppKey = null;
36
36
  }
37
37
  }
38
+ // Last CDP message received timestamp (for connection liveness detection)
39
+ let _lastCDPMessageAt = null;
40
+ export function getLastCDPMessageTime() {
41
+ return _lastCDPMessageAt;
42
+ }
43
+ export function updateLastCDPMessageTime(time) {
44
+ _lastCDPMessageAt = time;
45
+ }
38
46
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,oBAAoB;AACpB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AAE5C,wBAAwB;AACxB,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;AAEpD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAE5D,wDAAwD;AACxD,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;AAEzC,iBAAiB;AACjB,MAAM,CAAC,MAAM,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;AAElE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;AAE1E,yBAAyB;AACzB,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,UAAU,gBAAgB;IAC5B,OAAO,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,6DAA6D;AAC7D,6DAA6D;AAC7D,IAAI,oBAAoB,GAAkB,IAAI,CAAC;AAC/C,IAAI,4BAA4B,GAAkB,IAAI,CAAC;AAEvD,MAAM,UAAU,sBAAsB;IAClC,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAmB,EAAE,YAAqB;IAC7E,oBAAoB,GAAG,IAAI,CAAC;IAC5B,4BAA4B,GAAG,YAAY,IAAI,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAc;IACvD,IAAI,4BAA4B,KAAK,MAAM,EAAE,CAAC;QAC1C,oBAAoB,GAAG,IAAI,CAAC;QAC5B,4BAA4B,GAAG,IAAI,CAAC;IACxC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/core/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,oBAAoB;AACpB,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;AAE5C,wBAAwB;AACxB,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;AAEpD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAE5D,wDAAwD;AACxD,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;AAEzC,iBAAiB;AACjB,MAAM,CAAC,MAAM,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;AAElE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAkC,IAAI,GAAG,EAAE,CAAC;AAE1E,yBAAyB;AACzB,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,UAAU,gBAAgB;IAC5B,OAAO,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,6DAA6D;AAC7D,6DAA6D;AAC7D,IAAI,oBAAoB,GAAkB,IAAI,CAAC;AAC/C,IAAI,4BAA4B,GAAkB,IAAI,CAAC;AAEvD,MAAM,UAAU,sBAAsB;IAClC,OAAO,oBAAoB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAmB,EAAE,YAAqB;IAC7E,oBAAoB,GAAG,IAAI,CAAC;IAC5B,4BAA4B,GAAG,YAAY,IAAI,IAAI,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAc;IACvD,IAAI,4BAA4B,KAAK,MAAM,EAAE,CAAC;QAC1C,oBAAoB,GAAG,IAAI,CAAC;QAC5B,4BAA4B,GAAG,IAAI,CAAC;IACxC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,IAAI,iBAAiB,GAAgB,IAAI,CAAC;AAE1C,MAAM,UAAU,qBAAqB;IACjC,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAiB;IACtD,iBAAiB,GAAG,IAAI,CAAC;AAC7B,CAAC"}
@@ -108,6 +108,11 @@ export interface ExecuteOptions {
108
108
  autoReconnect?: boolean;
109
109
  timeoutMs?: number;
110
110
  }
111
+ export interface ConnectionCheckResult {
112
+ connected: boolean;
113
+ wasReconnected: boolean;
114
+ message: string | null;
115
+ }
111
116
  export interface EnsureConnectionResult {
112
117
  connected: boolean;
113
118
  wasReconnected: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -10,7 +10,7 @@ getAllConnectionStates, getAllConnectionMetadata, getRecentGaps, formatDuration,
10
10
  // Context health tracking
11
11
  getContextHealth,
12
12
  // Connection resilience
13
- ensureConnection,
13
+ ensureConnection, checkAndEnsureConnection, getPassiveConnectionStatus,
14
14
  // Bundle (Metro build errors)
15
15
  connectMetroBuildEvents, getBundleErrors, getBundleStatusWithErrors, checkMetroState,
16
16
  // Error screen parsing (OCR fallback)
@@ -412,29 +412,46 @@ registerToolWithTelemetry("get_logs", {
412
412
  // Return summary if requested
413
413
  if (summary) {
414
414
  const summaryText = getLogSummary(logBuffer, { lastN: 5, maxMessageLength: 100 });
415
+ let connectionWarning = "";
416
+ if (logBuffer.size === 0) {
417
+ const status = await checkAndEnsureConnection();
418
+ connectionWarning = status.message ? `\n\n${status.message}` : "";
419
+ }
415
420
  return {
416
421
  content: [
417
422
  {
418
423
  type: "text",
419
- text: `Log Summary:\n\n${summaryText}`
424
+ text: `Log Summary:\n\n${summaryText}${connectionWarning}`
420
425
  }
421
426
  ]
422
427
  };
423
428
  }
424
429
  const { logs, count, formatted } = getLogs(logBuffer, { maxLogs, level, startFromText, maxMessageLength, verbose });
430
+ // Check connection health
431
+ let connectionWarning = "";
432
+ if (count === 0) {
433
+ const status = await checkAndEnsureConnection();
434
+ connectionWarning = status.message ? `\n\n${status.message}` : "";
435
+ }
436
+ else {
437
+ const passive = getPassiveConnectionStatus();
438
+ connectionWarning = !passive.connected
439
+ ? "\n\n[CONNECTION] Disconnected. Showing cached data. New data is not being captured."
440
+ : "";
441
+ }
425
442
  // Check for recent connection gaps
426
443
  const warningThresholdMs = 30000; // 30 seconds
427
444
  const recentGaps = getRecentGaps(warningThresholdMs);
428
- let warning = "";
445
+ let gapWarning = "";
429
446
  if (recentGaps.length > 0) {
430
447
  const latestGap = recentGaps[recentGaps.length - 1];
431
448
  const gapDuration = latestGap.durationMs || (Date.now() - latestGap.disconnectedAt.getTime());
432
449
  if (latestGap.reconnectedAt) {
433
450
  const secAgo = Math.round((Date.now() - latestGap.reconnectedAt.getTime()) / 1000);
434
- warning = `\n\n[WARNING] Connection was restored ${secAgo}s ago. Some logs may have been missed during the ${formatDuration(gapDuration)} gap.`;
451
+ gapWarning = `\n\n[WARNING] Connection was restored ${secAgo}s ago. Some logs may have been missed during the ${formatDuration(gapDuration)} gap.`;
435
452
  }
436
453
  else {
437
- warning = `\n\n[WARNING] Connection is currently disconnected. Logs may be incomplete.`;
454
+ gapWarning = `\n\n[WARNING] Connection is currently disconnected. Logs may be incomplete.`;
438
455
  }
439
456
  }
440
457
  const startNote = startFromText ? ` (starting from "${startFromText}")` : "";
@@ -445,7 +462,7 @@ registerToolWithTelemetry("get_logs", {
445
462
  content: [
446
463
  {
447
464
  type: "text",
448
- text: `React Native Console Logs (${count} entries)${startNote}:\n\n${tonlOutput}${warning}`
465
+ text: `React Native Console Logs (${count} entries)${startNote}:\n\n${tonlOutput}${gapWarning}${connectionWarning}`
449
466
  }
450
467
  ]
451
468
  };
@@ -454,7 +471,7 @@ registerToolWithTelemetry("get_logs", {
454
471
  content: [
455
472
  {
456
473
  type: "text",
457
- text: `React Native Console Logs (${count} entries)${startNote}:\n\n${formatted}${warning}`
474
+ text: `React Native Console Logs (${count} entries)${startNote}:\n\n${formatted}${gapWarning}${connectionWarning}`
458
475
  }
459
476
  ]
460
477
  };
@@ -483,6 +500,18 @@ registerToolWithTelemetry("search_logs", {
483
500
  }
484
501
  }, async ({ text, maxResults, maxMessageLength, verbose, format }) => {
485
502
  const { logs, count, formatted } = searchLogs(logBuffer, text, { maxResults, maxMessageLength, verbose });
503
+ // Check connection health
504
+ let connectionWarning = "";
505
+ if (count === 0) {
506
+ const status = await checkAndEnsureConnection();
507
+ connectionWarning = status.message ? `\n\n${status.message}` : "";
508
+ }
509
+ else {
510
+ const passive = getPassiveConnectionStatus();
511
+ connectionWarning = !passive.connected
512
+ ? "\n\n[CONNECTION] Disconnected. Showing cached data. New data is not being captured."
513
+ : "";
514
+ }
486
515
  // Use TONL format if requested
487
516
  if (format === "tonl") {
488
517
  const tonlOutput = formatLogsAsTonl(logs, { maxMessageLength: verbose ? 0 : maxMessageLength });
@@ -490,7 +519,7 @@ registerToolWithTelemetry("search_logs", {
490
519
  content: [
491
520
  {
492
521
  type: "text",
493
- text: `Search results for "${text}" (${count} matches):\n\n${tonlOutput}`
522
+ text: `Search results for "${text}" (${count} matches):\n\n${tonlOutput}${connectionWarning}`
494
523
  }
495
524
  ]
496
525
  };
@@ -499,7 +528,7 @@ registerToolWithTelemetry("search_logs", {
499
528
  content: [
500
529
  {
501
530
  type: "text",
502
- text: `Search results for "${text}" (${count} matches):\n\n${formatted}`
531
+ text: `Search results for "${text}" (${count} matches):\n\n${formatted}${connectionWarning}`
503
532
  }
504
533
  ]
505
534
  };
@@ -1171,11 +1200,16 @@ registerToolWithTelemetry("get_network_requests", {
1171
1200
  // Return summary if requested
1172
1201
  if (summary) {
1173
1202
  const stats = getNetworkStats(networkBuffer);
1203
+ let connectionWarning = "";
1204
+ if (networkBuffer.size === 0) {
1205
+ const connStatus = await checkAndEnsureConnection();
1206
+ connectionWarning = connStatus.message ? `\n\n${connStatus.message}` : "";
1207
+ }
1174
1208
  return {
1175
1209
  content: [
1176
1210
  {
1177
1211
  type: "text",
1178
- text: `Network Summary:\n\n${stats}`
1212
+ text: `Network Summary:\n\n${stats}${connectionWarning}`
1179
1213
  }
1180
1214
  ]
1181
1215
  };
@@ -1186,19 +1220,31 @@ registerToolWithTelemetry("get_network_requests", {
1186
1220
  urlPattern,
1187
1221
  status
1188
1222
  });
1223
+ // Check connection health
1224
+ let connectionWarning = "";
1225
+ if (count === 0) {
1226
+ const connStatus = await checkAndEnsureConnection();
1227
+ connectionWarning = connStatus.message ? `\n\n${connStatus.message}` : "";
1228
+ }
1229
+ else {
1230
+ const passive = getPassiveConnectionStatus();
1231
+ connectionWarning = !passive.connected
1232
+ ? "\n\n[CONNECTION] Disconnected. Showing cached data. New data is not being captured."
1233
+ : "";
1234
+ }
1189
1235
  // Check for recent connection gaps
1190
1236
  const warningThresholdMs = 30000; // 30 seconds
1191
1237
  const recentGaps = getRecentGaps(warningThresholdMs);
1192
- let warning = "";
1238
+ let gapWarning = "";
1193
1239
  if (recentGaps.length > 0) {
1194
1240
  const latestGap = recentGaps[recentGaps.length - 1];
1195
1241
  const gapDuration = latestGap.durationMs || (Date.now() - latestGap.disconnectedAt.getTime());
1196
1242
  if (latestGap.reconnectedAt) {
1197
1243
  const secAgo = Math.round((Date.now() - latestGap.reconnectedAt.getTime()) / 1000);
1198
- warning = `\n\n[WARNING] Connection was restored ${secAgo}s ago. Some requests may have been missed during the ${formatDuration(gapDuration)} gap.`;
1244
+ gapWarning = `\n\n[WARNING] Connection was restored ${secAgo}s ago. Some requests may have been missed during the ${formatDuration(gapDuration)} gap.`;
1199
1245
  }
1200
1246
  else {
1201
- warning = `\n\n[WARNING] Connection is currently disconnected. Network data may be incomplete.`;
1247
+ gapWarning = `\n\n[WARNING] Connection is currently disconnected. Network data may be incomplete.`;
1202
1248
  }
1203
1249
  }
1204
1250
  // Use TONL format if requested
@@ -1208,7 +1254,7 @@ registerToolWithTelemetry("get_network_requests", {
1208
1254
  content: [
1209
1255
  {
1210
1256
  type: "text",
1211
- text: `Network Requests (${count} entries):\n\n${tonlOutput}${warning}`
1257
+ text: `Network Requests (${count} entries):\n\n${tonlOutput}${gapWarning}${connectionWarning}`
1212
1258
  }
1213
1259
  ]
1214
1260
  };
@@ -1217,7 +1263,7 @@ registerToolWithTelemetry("get_network_requests", {
1217
1263
  content: [
1218
1264
  {
1219
1265
  type: "text",
1220
- text: `Network Requests (${count} entries):\n\n${formatted}${warning}`
1266
+ text: `Network Requests (${count} entries):\n\n${formatted}${gapWarning}${connectionWarning}`
1221
1267
  }
1222
1268
  ]
1223
1269
  };
@@ -1240,6 +1286,18 @@ registerToolWithTelemetry("search_network", {
1240
1286
  }
1241
1287
  }, async ({ urlPattern, maxResults, format }) => {
1242
1288
  const { requests, count, formatted } = searchNetworkRequests(networkBuffer, urlPattern, maxResults);
1289
+ // Check connection health
1290
+ let connectionWarning = "";
1291
+ if (count === 0) {
1292
+ const status = await checkAndEnsureConnection();
1293
+ connectionWarning = status.message ? `\n\n${status.message}` : "";
1294
+ }
1295
+ else {
1296
+ const passive = getPassiveConnectionStatus();
1297
+ connectionWarning = !passive.connected
1298
+ ? "\n\n[CONNECTION] Disconnected. Showing cached data. New data is not being captured."
1299
+ : "";
1300
+ }
1243
1301
  // Use TONL format if requested
1244
1302
  if (format === "tonl") {
1245
1303
  const tonlOutput = formatNetworkAsTonl(requests);
@@ -1247,7 +1305,7 @@ registerToolWithTelemetry("search_network", {
1247
1305
  content: [
1248
1306
  {
1249
1307
  type: "text",
1250
- text: `Network search results for "${urlPattern}" (${count} matches):\n\n${tonlOutput}`
1308
+ text: `Network search results for "${urlPattern}" (${count} matches):\n\n${tonlOutput}${connectionWarning}`
1251
1309
  }
1252
1310
  ]
1253
1311
  };
@@ -1256,7 +1314,7 @@ registerToolWithTelemetry("search_network", {
1256
1314
  content: [
1257
1315
  {
1258
1316
  type: "text",
1259
- text: `Network search results for "${urlPattern}" (${count} matches):\n\n${formatted}`
1317
+ text: `Network search results for "${urlPattern}" (${count} matches):\n\n${formatted}${connectionWarning}`
1260
1318
  }
1261
1319
  ]
1262
1320
  };
@@ -1280,11 +1338,13 @@ registerToolWithTelemetry("get_request_details", {
1280
1338
  }, async ({ requestId, maxBodyLength, verbose }) => {
1281
1339
  const request = networkBuffer.get(requestId);
1282
1340
  if (!request) {
1341
+ const status = await checkAndEnsureConnection();
1342
+ const connectionNote = status.message ? `\n\n${status.message}` : "";
1283
1343
  return {
1284
1344
  content: [
1285
1345
  {
1286
1346
  type: "text",
1287
- text: `Request not found: ${requestId}`
1347
+ text: `Request not found: ${requestId}${connectionNote}`
1288
1348
  }
1289
1349
  ],
1290
1350
  isError: true
@@ -1305,11 +1365,23 @@ registerToolWithTelemetry("get_network_stats", {
1305
1365
  inputSchema: {}
1306
1366
  }, async () => {
1307
1367
  const stats = getNetworkStats(networkBuffer);
1368
+ // Check connection health
1369
+ let connectionWarning = "";
1370
+ if (networkBuffer.size === 0) {
1371
+ const status = await checkAndEnsureConnection();
1372
+ connectionWarning = status.message ? `\n\n${status.message}` : "";
1373
+ }
1374
+ else {
1375
+ const passive = getPassiveConnectionStatus();
1376
+ connectionWarning = !passive.connected
1377
+ ? "\n\n[CONNECTION] Disconnected. Showing cached data. New data is not being captured."
1378
+ : "";
1379
+ }
1308
1380
  return {
1309
1381
  content: [
1310
1382
  {
1311
1383
  type: "text",
1312
- text: `Network Statistics:\n\n${stats}`
1384
+ text: `Network Statistics:\n\n${stats}${connectionWarning}`
1313
1385
  }
1314
1386
  ]
1315
1387
  };