execbro 1.10.25 → 1.11.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.
Files changed (135) hide show
  1. package/README.md +1 -1
  2. package/build/__tests__/integration/native-logs.test.d.ts +2 -0
  3. package/build/__tests__/integration/native-logs.test.d.ts.map +1 -0
  4. package/build/__tests__/integration/native-logs.test.js +39 -0
  5. package/build/__tests__/integration/native-logs.test.js.map +1 -0
  6. package/build/__tests__/unit/clearLogsNative.test.d.ts +2 -0
  7. package/build/__tests__/unit/clearLogsNative.test.d.ts.map +1 -0
  8. package/build/__tests__/unit/clearLogsNative.test.js +43 -0
  9. package/build/__tests__/unit/clearLogsNative.test.js.map +1 -0
  10. package/build/__tests__/unit/componentFormatNaming.test.d.ts +2 -0
  11. package/build/__tests__/unit/componentFormatNaming.test.d.ts.map +1 -0
  12. package/build/__tests__/unit/componentFormatNaming.test.js +32 -0
  13. package/build/__tests__/unit/componentFormatNaming.test.js.map +1 -0
  14. package/build/__tests__/unit/getLogsEmptyContract.test.js +20 -7
  15. package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -1
  16. package/build/__tests__/unit/getLogsNativeSource.test.d.ts +2 -0
  17. package/build/__tests__/unit/getLogsNativeSource.test.d.ts.map +1 -0
  18. package/build/__tests__/unit/getLogsNativeSource.test.js +138 -0
  19. package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -0
  20. package/build/__tests__/unit/jsLogEvents.test.d.ts +2 -0
  21. package/build/__tests__/unit/jsLogEvents.test.d.ts.map +1 -0
  22. package/build/__tests__/unit/jsLogEvents.test.js +58 -0
  23. package/build/__tests__/unit/jsLogEvents.test.js.map +1 -0
  24. package/build/__tests__/unit/logEventFormat.test.d.ts +2 -0
  25. package/build/__tests__/unit/logEventFormat.test.d.ts.map +1 -0
  26. package/build/__tests__/unit/logEventFormat.test.js +210 -0
  27. package/build/__tests__/unit/logEventFormat.test.js.map +1 -0
  28. package/build/__tests__/unit/logEvents.test.d.ts +2 -0
  29. package/build/__tests__/unit/logEvents.test.d.ts.map +1 -0
  30. package/build/__tests__/unit/logEvents.test.js +118 -0
  31. package/build/__tests__/unit/logEvents.test.js.map +1 -0
  32. package/build/__tests__/unit/logGrouping.test.d.ts +2 -0
  33. package/build/__tests__/unit/logGrouping.test.d.ts.map +1 -0
  34. package/build/__tests__/unit/logGrouping.test.js +104 -0
  35. package/build/__tests__/unit/logGrouping.test.js.map +1 -0
  36. package/build/__tests__/unit/logOwnership.test.d.ts +2 -0
  37. package/build/__tests__/unit/logOwnership.test.d.ts.map +1 -0
  38. package/build/__tests__/unit/logOwnership.test.js +118 -0
  39. package/build/__tests__/unit/logOwnership.test.js.map +1 -0
  40. package/build/__tests__/unit/logRelevance.test.d.ts +2 -0
  41. package/build/__tests__/unit/logRelevance.test.d.ts.map +1 -0
  42. package/build/__tests__/unit/logRelevance.test.js +30 -0
  43. package/build/__tests__/unit/logRelevance.test.js.map +1 -0
  44. package/build/__tests__/unit/logSourceAndroid.test.d.ts +2 -0
  45. package/build/__tests__/unit/logSourceAndroid.test.d.ts.map +1 -0
  46. package/build/__tests__/unit/logSourceAndroid.test.js +61 -0
  47. package/build/__tests__/unit/logSourceAndroid.test.js.map +1 -0
  48. package/build/__tests__/unit/logSourceIos.test.d.ts +2 -0
  49. package/build/__tests__/unit/logSourceIos.test.d.ts.map +1 -0
  50. package/build/__tests__/unit/logSourceIos.test.js +64 -0
  51. package/build/__tests__/unit/logSourceIos.test.js.map +1 -0
  52. package/build/__tests__/unit/logs.test.js +23 -0
  53. package/build/__tests__/unit/logs.test.js.map +1 -1
  54. package/build/__tests__/unit/nativeLogs.test.d.ts +2 -0
  55. package/build/__tests__/unit/nativeLogs.test.d.ts.map +1 -0
  56. package/build/__tests__/unit/nativeLogs.test.js +230 -0
  57. package/build/__tests__/unit/nativeLogs.test.js.map +1 -0
  58. package/build/__tests__/unit/toolsJson.test.js +11 -0
  59. package/build/__tests__/unit/toolsJson.test.js.map +1 -1
  60. package/build/core/componentSearch.d.ts +1 -1
  61. package/build/core/componentSearch.d.ts.map +1 -1
  62. package/build/core/componentSearch.js +8 -8
  63. package/build/core/componentSearch.js.map +1 -1
  64. package/build/core/componentTree.d.ts +1 -1
  65. package/build/core/componentTree.d.ts.map +1 -1
  66. package/build/core/componentTree.js +8 -8
  67. package/build/core/componentTree.js.map +1 -1
  68. package/build/core/guides.d.ts.map +1 -1
  69. package/build/core/guides.js +25 -0
  70. package/build/core/guides.js.map +1 -1
  71. package/build/core/index.d.ts +0 -2
  72. package/build/core/index.d.ts.map +1 -1
  73. package/build/core/index.js +0 -2
  74. package/build/core/index.js.map +1 -1
  75. package/build/core/jsLogEvents.d.ts +13 -0
  76. package/build/core/jsLogEvents.d.ts.map +1 -0
  77. package/build/core/jsLogEvents.js +65 -0
  78. package/build/core/jsLogEvents.js.map +1 -0
  79. package/build/core/logEventFormat.d.ts +14 -0
  80. package/build/core/logEventFormat.d.ts.map +1 -0
  81. package/build/core/logEventFormat.js +85 -0
  82. package/build/core/logEventFormat.js.map +1 -0
  83. package/build/core/logEvents.d.ts +115 -0
  84. package/build/core/logEvents.d.ts.map +1 -0
  85. package/build/core/logEvents.js +146 -0
  86. package/build/core/logEvents.js.map +1 -0
  87. package/build/core/logGrouping.d.ts +17 -0
  88. package/build/core/logGrouping.d.ts.map +1 -0
  89. package/build/core/logGrouping.js +134 -0
  90. package/build/core/logGrouping.js.map +1 -0
  91. package/build/core/logOwnership.d.ts +29 -0
  92. package/build/core/logOwnership.d.ts.map +1 -0
  93. package/build/core/logOwnership.js +83 -0
  94. package/build/core/logOwnership.js.map +1 -0
  95. package/build/core/logRelevance.d.ts +13 -0
  96. package/build/core/logRelevance.d.ts.map +1 -0
  97. package/build/core/logRelevance.js +23 -0
  98. package/build/core/logRelevance.js.map +1 -0
  99. package/build/core/logSourceAndroid.d.ts +27 -0
  100. package/build/core/logSourceAndroid.d.ts.map +1 -0
  101. package/build/core/logSourceAndroid.js +89 -0
  102. package/build/core/logSourceAndroid.js.map +1 -0
  103. package/build/core/logSourceIos.d.ts +26 -0
  104. package/build/core/logSourceIos.d.ts.map +1 -0
  105. package/build/core/logSourceIos.js +119 -0
  106. package/build/core/logSourceIos.js.map +1 -0
  107. package/build/core/logs.d.ts +5 -1
  108. package/build/core/logs.d.ts.map +1 -1
  109. package/build/core/logs.js +8 -1
  110. package/build/core/logs.js.map +1 -1
  111. package/build/core/nativeLogs.d.ts +75 -0
  112. package/build/core/nativeLogs.d.ts.map +1 -0
  113. package/build/core/nativeLogs.js +260 -0
  114. package/build/core/nativeLogs.js.map +1 -0
  115. package/build/core/screenLayout.d.ts +1 -1
  116. package/build/core/screenLayout.d.ts.map +1 -1
  117. package/build/core/screenLayout.js +3 -3
  118. package/build/core/screenLayout.js.map +1 -1
  119. package/build/core/types.d.ts +3 -2
  120. package/build/core/types.d.ts.map +1 -1
  121. package/build/tools/componentTools.js +6 -6
  122. package/build/tools/componentTools.js.map +1 -1
  123. package/build/tools/logTools.d.ts +25 -0
  124. package/build/tools/logTools.d.ts.map +1 -1
  125. package/build/tools/logTools.js +246 -70
  126. package/build/tools/logTools.js.map +1 -1
  127. package/build/tools/networkTools.d.ts.map +1 -1
  128. package/build/tools/networkTools.js +5 -44
  129. package/build/tools/networkTools.js.map +1 -1
  130. package/package.json +6 -4
  131. package/tools.json +447 -0
  132. package/build/core/format.d.ts +0 -8
  133. package/build/core/format.d.ts.map +0 -1
  134. package/build/core/format.js +0 -34
  135. package/build/core/format.js.map +0 -1
@@ -1,10 +1,14 @@
1
1
  import { z } from "zod";
2
2
  import { registerToolWithTelemetry } from "../core/register.js";
3
- import { getLogs, searchLogs, getLogSummary, getTotalLogCount, getConnectedAppByDevice, getFirstConnectedApp, formatLogsAsTonl, checkAndEnsureConnection, metroMissingHintIfAbsent, logBuffers, verifyLogPipeline, getPassiveConnectionStatus, connectedApps, getRecentGaps, formatDuration, getLogBuffer, } from "../core/index.js";
3
+ import { getLogs, searchLogs, getLogSummary, getTotalLogCount, getConnectedAppByDevice, getFirstConnectedApp, checkAndEnsureConnection, metroMissingHintIfAbsent, logBuffers, verifyLogPipeline, getPassiveConnectionStatus, connectedApps, getRecentGaps, formatDuration, getLogBuffer, } from "../core/index.js";
4
4
  import { resolveLogBuffer } from "../core/toolHelpers.js";
5
5
  import { diagnoseEmptyLogs } from "../core/logDiagnosis.js";
6
6
  import { UserInputError } from "../core/errors.js";
7
7
  import { isSDKInstalled, querySDKConsole, clearSDKConsole, getSDKConsoleStats, } from "../core/sdkBridge.js";
8
+ import { findLogEvent, nativeLogBuffers, getNativeLogBuffer } from "../core/logEvents.js";
9
+ import { jsEventsFromEntries } from "../core/jsLogEvents.js";
10
+ import { formatEventList, formatEventDetails } from "../core/logEventFormat.js";
11
+ import { collectNativeEvents, deviceKeyOf } from "../core/nativeLogs.js";
8
12
  // Binds the live connection/pipeline probes for `diagnoseEmptyLogs`. Kept here
9
13
  // so the diagnosis logic itself stays free of module-level state and testable.
10
14
  function logDiagnosisDeps(device) {
@@ -14,11 +18,103 @@ function logDiagnosisDeps(device) {
14
18
  verifyPipeline: verifyLogPipeline,
15
19
  };
16
20
  }
21
+ /**
22
+ * Parse "5m" / "90s" / an ISO timestamp into an absolute Date.
23
+ *
24
+ * Distinguishes "not provided" from "provided but unparseable" — the latter
25
+ * silently falling back to the default watermark would look, from the
26
+ * caller's side, like their filter was honored when it was actually ignored.
27
+ */
28
+ function parseSince(since) {
29
+ if (!since)
30
+ return { date: undefined };
31
+ const rel = since.match(/^(\d+)([smh])$/);
32
+ if (rel) {
33
+ const mult = { s: 1000, m: 60_000, h: 3_600_000 }[rel[2]];
34
+ return { date: new Date(Date.now() - Number(rel[1]) * mult) };
35
+ }
36
+ const parsed = new Date(since);
37
+ if (Number.isNaN(parsed.getTime())) {
38
+ return {
39
+ date: undefined,
40
+ note: `[NOTE] since="${since}" was not recognized (use an ISO timestamp or a duration like "5m"/"90s"/"2h") — showing the default window instead.`,
41
+ };
42
+ }
43
+ return { date: parsed };
44
+ }
45
+ /**
46
+ * Bound the events shown on the native/merged path to `maxLogs`, applied
47
+ * AFTER kind-filtering and keeping the newest — when investigating a crash
48
+ * the latest one is the subject. Never truncates silently: an agent that
49
+ * cannot see the list was capped will assume it has the full picture and
50
+ * reason from a partial one. Exported (not a `__`-prefixed test hook) because
51
+ * it is a genuinely reusable, side-effect-free piece of the response shape.
52
+ */
53
+ export function capEventsForDisplay(events, maxLogs) {
54
+ const capped = maxLogs > 0 && events.length > maxLogs ? events.slice(-maxLogs) : events;
55
+ const omitted = events.length - capped.length;
56
+ const note = omitted > 0
57
+ ? `\n\n[${omitted} older event${omitted === 1 ? "" : "s"} not shown — raise maxLogs or narrow with kind/minLevel/since]`
58
+ : "";
59
+ return { capped, note };
60
+ }
61
+ /**
62
+ * Native acquisition costs a ~1-1.5s subprocess per device, so it must never
63
+ * run on the hot path. It earns its cost in exactly one situation: the JS
64
+ * buffer is empty AND the app is not connected — which is what a native crash
65
+ * looks like from here. Mirrors get_bundle_errors' screenshot fallback, which
66
+ * likewise fires only when the cheap path has demonstrably failed.
67
+ */
68
+ function shouldEscalateToNative(bufferEmpty, connected) {
69
+ return bufferEmpty && !connected;
70
+ }
71
+ const ESCALATION_COOLDOWN_MS = 30_000;
72
+ /**
73
+ * Negative-result cooldown for the empty-and-disconnected escalation, keyed by
74
+ * the `device` argument that produced the miss.
75
+ *
76
+ * A miss (buffer empty, disconnected, no crash found) still costs a
77
+ * subprocess per device. Without a cooldown, every get_logs call made while
78
+ * the app stays crashed-and-disconnected would re-pay that cost forever. 30s
79
+ * is short enough that a real crash occurring during the cooldown is still
80
+ * caught by the very next get_logs call once it expires, and long enough to
81
+ * stop a tight investigation loop from thrashing the device.
82
+ *
83
+ * Keying matters: a miss for device="A" says nothing about device B, and a
84
+ * process-wide latch would let one device's quiet period suppress another
85
+ * device's real crash. An undefined device queries every device at once, so
86
+ * caching that miss under a single key is correct.
87
+ *
88
+ * Cleared for a key whenever its escalation DOES find crashes, so a genuine
89
+ * crash is never suppressed by a stale miss.
90
+ */
91
+ const lastEmptyEscalationAt = new Map();
92
+ function escalationKey(device) {
93
+ return device ?? "*";
94
+ }
95
+ function isEscalationCoolingDown(device) {
96
+ const at = lastEmptyEscalationAt.get(escalationKey(device));
97
+ return at !== undefined && Date.now() - at < ESCALATION_COOLDOWN_MS;
98
+ }
99
+ /**
100
+ * Test-only. Exercises the per-device cooldown map directly, so the
101
+ * per-device keying can be pinned without standing up a full get_logs
102
+ * invocation (device connection, CDP session, etc).
103
+ */
104
+ export const __escalationCooldownTestHooks = {
105
+ isEscalationCoolingDown,
106
+ recordMiss: (device) => {
107
+ lastEmptyEscalationAt.set(escalationKey(device), Date.now());
108
+ },
109
+ reset: () => {
110
+ lastEmptyEscalationAt.clear();
111
+ },
112
+ };
17
113
  export function registerLogTools(server) {
18
114
  // Tool: Get console logs
19
115
  registerToolWithTelemetry(server, "get_logs", {
20
116
  description: "Retrieve console logs from connected React Native app. Tip: Use summary=true first for a quick overview (counts by level + last 5 messages), then fetch specific logs as needed.\n" +
21
- "PURPOSE: Pull captured console output (log/warn/error/info/debug) from the in-memory buffer for the connected app.\n" +
117
+ "PURPOSE: Pull captured console output (log/warn/error/info/debug) from the in-memory buffer, and optionally native device logs (crashes, ANRs) via source=\"native\".\n" +
22
118
  "WHEN TO USE: Start of any log-driven investigation, verifying a code change picked up via Fast Refresh, or confirming a reported error actually fires.\n" +
23
119
  "WORKFLOW: scan_metro -> get_logs(summary=true) -> narrow with search_logs(text=\"...\") or get_logs(level=\"error\") -> clear_logs between reproductions.\n" +
24
120
  "LIMITATIONS: Circular buffer (~500 entries). Only captures logs emitted after the app connected; pre-connect logs are lost.\n" +
@@ -47,24 +143,79 @@ export function registerLogTools(server) {
47
143
  .optional()
48
144
  .default(false)
49
145
  .describe("Disable all truncation and return full messages. Tip: Use with lower maxLogs (e.g., 10) to avoid token overload when inspecting large objects."),
50
- format: z
51
- .enum(["text", "tonl"])
52
- .optional()
53
- .default("tonl")
54
- .describe("Output format: 'text' or 'tonl' (default, compact token-optimized format, ~30-50% smaller)"),
55
146
  summary: z
56
147
  .boolean()
57
148
  .optional()
58
149
  .default(false)
59
150
  .describe("Return summary statistics instead of full logs (count by level + last 5 messages). Use for quick overview."),
60
- device: z.string().optional().describe("Target device name (substring match). Omit for all devices. Run get_apps to see connected devices.")
151
+ device: z.string().optional().describe("Target device name (substring match). Omit for all devices. Run get_apps to see connected devices."),
152
+ source: z
153
+ .enum(["js", "native", "all"])
154
+ .optional()
155
+ .default("js")
156
+ .describe("Which log stream to read. 'js' (default) = console output over CDP, instant. " +
157
+ "'native' = device logs (Android logcat / iOS os_log) filtered to this app — surfaces crashes, ANRs and OOM kills that never reach JS; costs ~1-1.5s per device. " +
158
+ "'all' = both, merged. When the JS buffer is empty and the app is disconnected, native crash events are consulted automatically."),
159
+ kind: z
160
+ .enum(["crash", "anr", "exception", "lifecycle", "message"])
161
+ .optional()
162
+ .describe("Filter native/merged events by kind. Omit for all kinds."),
163
+ minLevel: z
164
+ .enum(["debug", "info", "warn", "error", "fatal"])
165
+ .optional()
166
+ .default("warn")
167
+ .describe("Relevance floor for native events (default: warn). Crashes and ANRs are always returned regardless. Lower to 'debug' to see native library loading."),
168
+ since: z
169
+ .string()
170
+ .optional()
171
+ .describe("Native acquisition window — ISO timestamp or a duration like \"5m\". Widens the device query; already-seen events are still deduped.")
61
172
  }
62
- }, async ({ maxLogs, level, startFromText, maxMessageLength, verbose, format, summary, device }) => {
173
+ }, async ({ maxLogs, level, startFromText, maxMessageLength, verbose, summary, device, source, kind, minLevel, since }) => {
63
174
  // Check if SDK is installed — prefer SDK data for richer logs.
64
175
  // `device` must be threaded through: without it the SDK bridge reads
65
176
  // whichever app happens to be first, so a multi-device session
66
177
  // silently answers with the wrong device's buffer.
67
178
  const sdkAvailable = await isSDKInstalled(device);
179
+ // Prepended to every return's text below when source==="all".
180
+ let nativePrefix = "";
181
+ // Set when source==="native"/"all" already paid for a native fetch
182
+ // this call, so the empty+disconnected escalation below can reuse
183
+ // it instead of paying twice.
184
+ let nativeEventsForEscalation;
185
+ // Explicit native / merged read — the caller asked for the cost.
186
+ if (source === "native" || source === "all") {
187
+ const sinceParsed = parseSince(since);
188
+ const nativeOpts = { device, minLevel, since: sinceParsed.date };
189
+ const { events, notes } = await collectNativeEvents(nativeOpts);
190
+ nativeEventsForEscalation = events;
191
+ const filtered = kind ? events.filter((e) => e.kind === kind) : events;
192
+ const { capped, note: cappedNote } = capEventsForDisplay(filtered, maxLogs);
193
+ const showDevice = nativeLogBuffers.size > 1;
194
+ const noteText = notes.length > 0 ? `\n\n${notes.join("\n")}` : "";
195
+ const sinceNote = sinceParsed.note ? `\n\n${sinceParsed.note}` : "";
196
+ const rendered = formatEventList(capped, { showDevice, maxLength: maxMessageLength, verbose });
197
+ if (source === "native") {
198
+ // Emptiness is judged on the UNFILTERED events: a `kind`
199
+ // filter matching nothing is a filter outcome, not a
200
+ // capture failure — mirrors the js-buffer `filtered_out`
201
+ // handling below. Capping is a display bound, not a
202
+ // capture/filter outcome, so it plays no part in either
203
+ // signal.
204
+ const nativeEmpty = events.length === 0;
205
+ const nativeEmptyReason = !nativeEmpty && filtered.length === 0 ? "filtered_out" : undefined;
206
+ return {
207
+ _emptyResult: nativeEmpty,
208
+ ...(nativeEmptyReason && { _emptyReason: nativeEmptyReason }),
209
+ content: [{
210
+ type: "text",
211
+ text: `Native Log Events (${capped.length}):\n\n${rendered}${cappedNote}${noteText}${sinceNote}\n\nUse get_log_details("<id>") for a full backtrace.`
212
+ }]
213
+ };
214
+ }
215
+ // source === "all": fall through so JS output is appended below,
216
+ // carrying the native block with it.
217
+ nativePrefix = `Native Log Events (${capped.length}):\n\n${rendered}${cappedNote}${noteText}${sinceNote}\n\n`;
218
+ }
68
219
  if (sdkAvailable) {
69
220
  if (summary) {
70
221
  const sdkStats = await getSDKConsoleStats(device);
@@ -81,23 +232,12 @@ export function registerLogTools(server) {
81
232
  }
82
233
  // Served real SDK data — not empty, regardless of what the
83
234
  // (separate) CDP buffer happens to hold.
84
- return { _emptyResult: false, content: [{ type: "text", text: `Log Summary (SDK):\n\n${lines.join("\n")}` }] };
235
+ return { _emptyResult: false, content: [{ type: "text", text: `${nativePrefix}Log Summary (SDK):\n\n${lines.join("\n")}` }] };
85
236
  }
86
237
  }
87
238
  const sdkResult = await querySDKConsole({ count: maxLogs, level, text: startFromText }, device);
88
239
  if (sdkResult.success && sdkResult.data.length > 0) {
89
240
  const entries = sdkResult.data;
90
- if (format === "tonl") {
91
- const tonlLines = entries.map((e) => {
92
- const time = new Date(e.timestamp).toLocaleTimeString();
93
- let msg = e.message;
94
- if (!verbose && maxMessageLength > 0 && msg.length > maxMessageLength) {
95
- msg = msg.slice(0, maxMessageLength) + "...";
96
- }
97
- return `${time} [${e.level}] ${msg}`;
98
- });
99
- return { _emptyResult: false, content: [{ type: "text", text: `Console Logs (${entries.length} entries, SDK):\n\n${tonlLines.join("\n")}` }] };
100
- }
101
241
  const lines = entries.map((e) => {
102
242
  const time = new Date(e.timestamp).toLocaleTimeString();
103
243
  let msg = e.message;
@@ -106,7 +246,7 @@ export function registerLogTools(server) {
106
246
  }
107
247
  return `[${time}] [${e.level.toUpperCase()}] ${msg}`;
108
248
  });
109
- return { _emptyResult: false, content: [{ type: "text", text: `Console Logs (${entries.length} entries, SDK):\n\n${lines.join("\n")}` }] };
249
+ return { _emptyResult: false, content: [{ type: "text", text: `${nativePrefix}Console Logs (${entries.length} entries, SDK):\n\n${lines.join("\n")}` }] };
110
250
  }
111
251
  }
112
252
  // Return summary if requested
@@ -130,7 +270,7 @@ export function registerLogTools(server) {
130
270
  content: [
131
271
  {
132
272
  type: "text",
133
- text: `Log Summary:\n\n${summaryText}${connectionWarning}`
273
+ text: `${nativePrefix}Log Summary:\n\n${summaryText}${connectionWarning}`
134
274
  }
135
275
  ]
136
276
  };
@@ -138,7 +278,7 @@ export function registerLogTools(server) {
138
278
  // Resolved once: for the all-devices case this copies every buffered
139
279
  // entry into a merged buffer, so it is not free to call repeatedly.
140
280
  const logBuffer = resolveLogBuffer(device);
141
- const { logs, count, formatted } = getLogs(logBuffer, {
281
+ const { logs, count } = getLogs(logBuffer, {
142
282
  maxLogs,
143
283
  level,
144
284
  startFromText,
@@ -171,16 +311,47 @@ export function registerLogTools(server) {
171
311
  maxLogs, level, startFromText, maxMessageLength, verbose
172
312
  });
173
313
  if (retryResult.count > 0) {
314
+ // Route through the same event pipeline as the final JS
315
+ // return below — retryResult.formatted is legacy text with
316
+ // no [jN] ids, which would leave get_log_details unusable
317
+ // for whatever this call surfaces.
318
+ const retryEvents = jsEventsFromEntries(retryResult.logs, device ?? "all devices");
319
+ const retryFiltered = kind ? retryEvents.filter((e) => e.kind === kind) : retryEvents;
320
+ const retryRendered = formatEventList(retryFiltered, { showDevice: logBuffers.size > 1, maxLength: maxMessageLength, verbose });
174
321
  // Return the recovered logs instead of empty
175
322
  return {
176
323
  _emptyResult: false,
177
324
  _emptyReason: "pipeline_recovered",
178
325
  content: [{
179
326
  type: "text",
180
- text: `React Native Console Logs (${retryResult.count} entries):\n\n${retryResult.formatted}${connectionWarning}`
327
+ text: `${nativePrefix}React Native Console Logs (${retryFiltered.length} entries):\n\n${retryRendered}${connectionWarning}`
328
+ }]
329
+ };
330
+ }
331
+ }
332
+ if (shouldEscalateToNative(bufferEmpty, getPassiveConnectionStatus().connected) && !isEscalationCoolingDown(device)) {
333
+ // Safe to reuse a fetch taken at a higher minLevel: isRelevant
334
+ // exempts crash/anr from the floor entirely, so they are present
335
+ // regardless of what the caller asked for.
336
+ // Reuse the native fetch already paid for by source==="all"
337
+ // instead of running the subprocess a second time.
338
+ const events = nativeEventsForEscalation
339
+ ?? (await collectNativeEvents({ device, minLevel: "warn" })).events;
340
+ const crashes = events.filter((e) => e.kind === "crash" || e.kind === "anr");
341
+ if (crashes.length > 0) {
342
+ lastEmptyEscalationAt.delete(escalationKey(device));
343
+ return {
344
+ _emptyResult: false,
345
+ _emptyReason: "native_crash_found",
346
+ content: [{
347
+ type: "text",
348
+ text: `${nativePrefix}React Native Console Logs (0 entries) — app is not connected.\n\n` +
349
+ `Native crash found:\n${formatEventList(crashes, { showDevice: nativeLogBuffers.size > 1, maxLength: maxMessageLength, verbose })}\n\n` +
350
+ `Use get_log_details("${crashes[0].id}") for the full backtrace.`
181
351
  }]
182
352
  };
183
353
  }
354
+ lastEmptyEscalationAt.set(escalationKey(device), Date.now());
184
355
  }
185
356
  // Diagnostic metadata for empty results (local dev dashboard only —
186
357
  // responsePreview is never sent to the remote telemetry backend).
@@ -215,27 +386,16 @@ export function registerLogTools(server) {
215
386
  }
216
387
  }
217
388
  const startNote = startFromText ? ` (starting from "${startFromText}")` : "";
218
- // Use TONL format if requested
219
- if (format === "tonl") {
220
- const tonlOutput = formatLogsAsTonl(logs, { maxMessageLength: verbose ? 0 : maxMessageLength });
221
- return {
222
- _emptyResult: bufferEmpty,
223
- ...(emptyReason && { _emptyReason: emptyReason }),
224
- content: [
225
- {
226
- type: "text",
227
- text: `React Native Console Logs (${count} entries)${startNote}:\n\n${tonlOutput}${gapWarning}${connectionWarning}`
228
- }
229
- ]
230
- };
231
- }
389
+ const jsEvents = jsEventsFromEntries(logs, device ?? "all devices");
390
+ const jsFiltered = kind ? jsEvents.filter((e) => e.kind === kind) : jsEvents;
391
+ const jsRendered = formatEventList(jsFiltered, { showDevice: logBuffers.size > 1, maxLength: maxMessageLength, verbose });
232
392
  return {
233
393
  _emptyResult: bufferEmpty,
234
394
  ...(emptyReason && { _emptyReason: emptyReason }),
235
395
  content: [
236
396
  {
237
397
  type: "text",
238
- text: `React Native Console Logs (${count} entries)${startNote}:\n\n${formatted}${gapWarning}${connectionWarning}`
398
+ text: `${nativePrefix}React Native Console Logs (${jsFiltered.length} entries)${startNote}:\n\n${jsRendered}${gapWarning}${connectionWarning}`
239
399
  }
240
400
  ]
241
401
  };
@@ -267,14 +427,9 @@ export function registerLogTools(server) {
267
427
  .default(500)
268
428
  .describe("Max characters per message (default: 500, set to 0 for unlimited)"),
269
429
  verbose: z.boolean().optional().default(false).describe("Disable all truncation and return full messages"),
270
- format: z
271
- .enum(["text", "tonl"])
272
- .optional()
273
- .default("tonl")
274
- .describe("Output format: 'text' or 'tonl' (default, compact token-optimized format)"),
275
430
  device: z.string().optional().describe("Target device name (substring match). Omit for all devices. Run get_apps to see connected devices.")
276
431
  }
277
- }, async ({ text, maxResults, maxMessageLength, verbose, format, device }) => {
432
+ }, async ({ text, maxResults, maxMessageLength, verbose, device }) => {
278
433
  // Check if SDK is installed — prefer SDK data. See get_logs: the
279
434
  // device must be threaded through, and an empty SDK result falls
280
435
  // through to the CDP buffer instead of short-circuiting.
@@ -283,17 +438,6 @@ export function registerLogTools(server) {
283
438
  const sdkResult = await querySDKConsole({ count: maxResults, text }, device);
284
439
  if (sdkResult.success && sdkResult.data.length > 0) {
285
440
  const entries = sdkResult.data;
286
- if (format === "tonl") {
287
- const tonlLines = entries.map((e) => {
288
- const time = new Date(e.timestamp).toLocaleTimeString();
289
- let msg = e.message;
290
- if (!verbose && maxMessageLength > 0 && msg.length > maxMessageLength) {
291
- msg = msg.slice(0, maxMessageLength) + "...";
292
- }
293
- return `${time} [${e.level}] ${msg}`;
294
- });
295
- return { content: [{ type: "text", text: `Search results for "${text}" (${entries.length} matches, SDK):\n\n${tonlLines.join("\n")}` }] };
296
- }
297
441
  const lines = entries.map((e) => {
298
442
  const time = new Date(e.timestamp).toLocaleTimeString();
299
443
  let msg = e.message;
@@ -305,7 +449,7 @@ export function registerLogTools(server) {
305
449
  return { content: [{ type: "text", text: `Search results for "${text}" (${entries.length} matches, SDK):\n\n${lines.join("\n")}` }] };
306
450
  }
307
451
  }
308
- const { logs, count, formatted } = searchLogs(resolveLogBuffer(device), text, { maxResults, maxMessageLength, verbose });
452
+ const { count, formatted } = searchLogs(resolveLogBuffer(device), text, { maxResults, maxMessageLength, verbose });
309
453
  // Check connection health
310
454
  let connectionWarning = "";
311
455
  if (count === 0) {
@@ -319,18 +463,6 @@ export function registerLogTools(server) {
319
463
  ? "\n\n[CONNECTION] Disconnected. Showing cached data. New data is not being captured."
320
464
  : "";
321
465
  }
322
- // Use TONL format if requested
323
- if (format === "tonl") {
324
- const tonlOutput = formatLogsAsTonl(logs, { maxMessageLength: verbose ? 0 : maxMessageLength });
325
- return {
326
- content: [
327
- {
328
- type: "text",
329
- text: `Search results for "${text}" (${count} matches):\n\n${tonlOutput}${connectionWarning}`
330
- }
331
- ]
332
- };
333
- }
334
466
  return {
335
467
  content: [
336
468
  {
@@ -367,6 +499,16 @@ export function registerLogTools(server) {
367
499
  if (sdkResult.success && sdkResult.count)
368
500
  count += sdkResult.count;
369
501
  }
502
+ // Clear that device's native buffer too, otherwise a targeted
503
+ // clear leaves native (logcat/os_log) events behind and
504
+ // get_logs(source="native") still shows pre-repro entries. The
505
+ // native buffer deliberately keeps its watermark on clear (see
506
+ // the all-devices branch below) so cleared events are not
507
+ // re-ingested on the next fetch.
508
+ const deviceKey = deviceKeyOf(app);
509
+ if (deviceKey) {
510
+ count += getNativeLogBuffer(deviceKey).clear();
511
+ }
370
512
  return { content: [{ type: "text", text: `Cleared ${count} log entries from ${deviceName}.` }] };
371
513
  }
372
514
  // Clear all
@@ -382,7 +524,41 @@ export function registerLogTools(server) {
382
524
  total += sdkResult.count;
383
525
  }
384
526
  }
527
+ // Native buffers keep their watermark so cleared events are not
528
+ // re-ingested on the next fetch.
529
+ for (const buffer of nativeLogBuffers.values()) {
530
+ total += buffer.clear();
531
+ }
385
532
  return { content: [{ type: "text", text: `Cleared ${total} log entries from all devices.` }] };
386
533
  });
534
+ // Tool: Get full payload for one log event
535
+ registerToolWithTelemetry(server, "get_log_details", {
536
+ description: "Get the full payload of a single log event — complete stack trace, backtrace, or oversized message.\n" +
537
+ "PURPOSE: Expand one row from get_logs into its full text. A crash row collapses a 60-line backtrace; this returns all of it.\n" +
538
+ "WHEN TO USE: After get_logs shows an event you need to read in full (a crash, an exception, a large payload).\n" +
539
+ "WORKFLOW: get_logs -> copy the id (e.g. \"n7\") -> get_log_details(id=\"n7\").\n" +
540
+ "LIMITATIONS: Ids are valid until that device's buffer rolls over or clear_logs runs, not for the whole server session — call get_logs again to get fresh ones. Reads the buffer — it does not re-query the device.\n" +
541
+ "GOOD: get_log_details({ id: \"n7\" })\n" +
542
+ "BAD: Guessing ids — always take them from get_logs.\n" +
543
+ "SEE ALSO: call get_usage_guide(topic=\"logs\") for the full console-debugging playbook.",
544
+ inputSchema: {
545
+ id: z.string().describe("Event id from get_logs (e.g. \"n7\")"),
546
+ maxLength: z.coerce
547
+ .number()
548
+ .optional()
549
+ .default(4000)
550
+ .describe("Max characters of payload (default: 4000, 0 for unlimited)"),
551
+ verbose: z.boolean().optional().default(false).describe("Disable truncation entirely")
552
+ }
553
+ }, async ({ id, maxLength, verbose }) => {
554
+ const event = findLogEvent(id);
555
+ if (!event) {
556
+ throw new UserInputError(`No log event with id "${id}". Ids come from get_logs — "n7" for native events, "j12" for console entries — ` +
557
+ `and are valid until that device's buffer rolls over or clear_logs runs. Call get_logs again to refresh them.`);
558
+ }
559
+ return {
560
+ content: [{ type: "text", text: formatEventDetails(event, { maxLength, verbose }) }]
561
+ };
562
+ });
387
563
  }
388
564
  //# sourceMappingURL=logTools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logTools.js","sourceRoot":"","sources":["../../src/tools/logTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logTools.js","sourceRoot":"","sources":["../../src/tools/logTools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"networkTools.d.ts","sourceRoot":"","sources":["../../src/tools/networkTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwCzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwhB5D"}
1
+ {"version":3,"file":"networkTools.d.ts","sourceRoot":"","sources":["../../src/tools/networkTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuCzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+e5D"}