execbro 1.11.1 → 2.1.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 +4 -4
- package/build/__tests__/unit/appContext.test.d.ts +2 -0
- package/build/__tests__/unit/appContext.test.d.ts.map +1 -0
- package/build/__tests__/unit/appContext.test.js +70 -0
- package/build/__tests__/unit/appContext.test.js.map +1 -0
- package/build/__tests__/unit/appRequest.test.d.ts +2 -0
- package/build/__tests__/unit/appRequest.test.d.ts.map +1 -0
- package/build/__tests__/unit/appRequest.test.js +179 -0
- package/build/__tests__/unit/appRequest.test.js.map +1 -0
- package/build/__tests__/unit/contextWiring.test.d.ts +2 -0
- package/build/__tests__/unit/contextWiring.test.d.ts.map +1 -0
- package/build/__tests__/unit/contextWiring.test.js +28 -0
- package/build/__tests__/unit/contextWiring.test.js.map +1 -0
- package/build/__tests__/unit/coordinateMiss.test.d.ts +2 -0
- package/build/__tests__/unit/coordinateMiss.test.d.ts.map +1 -0
- package/build/__tests__/unit/coordinateMiss.test.js +111 -0
- package/build/__tests__/unit/coordinateMiss.test.js.map +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.d.ts +2 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.d.ts.map +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js +69 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -0
- package/build/__tests__/unit/epochRender.test.d.ts +2 -0
- package/build/__tests__/unit/epochRender.test.d.ts.map +1 -0
- package/build/__tests__/unit/epochRender.test.js +60 -0
- package/build/__tests__/unit/epochRender.test.js.map +1 -0
- package/build/__tests__/unit/executeBudget.test.d.ts +2 -0
- package/build/__tests__/unit/executeBudget.test.d.ts.map +1 -0
- package/build/__tests__/unit/executeBudget.test.js +27 -0
- package/build/__tests__/unit/executeBudget.test.js.map +1 -0
- package/build/__tests__/unit/executor.test.js +48 -6
- package/build/__tests__/unit/executor.test.js.map +1 -1
- package/build/__tests__/unit/findElementTreeReuse.test.d.ts +2 -0
- package/build/__tests__/unit/findElementTreeReuse.test.d.ts.map +1 -0
- package/build/__tests__/unit/findElementTreeReuse.test.js +77 -0
- package/build/__tests__/unit/findElementTreeReuse.test.js.map +1 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.js +4 -3
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -1
- package/build/__tests__/unit/getLogsNativeSource.test.js +7 -8
- package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -1
- package/build/__tests__/unit/inspectorHarvest.test.js +1 -21
- package/build/__tests__/unit/inspectorHarvest.test.js.map +1 -1
- package/build/__tests__/unit/inspectorSource.test.js +1 -38
- package/build/__tests__/unit/inspectorSource.test.js.map +1 -1
- package/build/__tests__/unit/jsLogEvents.test.js +1 -0
- package/build/__tests__/unit/jsLogEvents.test.js.map +1 -1
- package/build/__tests__/unit/logBufferEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/logBufferEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/logBufferEpoch.test.js +63 -0
- package/build/__tests__/unit/logBufferEpoch.test.js.map +1 -0
- package/build/__tests__/unit/metro.test.js +18 -1
- package/build/__tests__/unit/metro.test.js.map +1 -1
- package/build/__tests__/unit/moduleRegistry.test.d.ts +2 -0
- package/build/__tests__/unit/moduleRegistry.test.d.ts.map +1 -0
- package/build/__tests__/unit/moduleRegistry.test.js +62 -0
- package/build/__tests__/unit/moduleRegistry.test.js.map +1 -0
- package/build/__tests__/unit/navigateVerify.test.d.ts +2 -0
- package/build/__tests__/unit/navigateVerify.test.d.ts.map +1 -0
- package/build/__tests__/unit/navigateVerify.test.js +30 -0
- package/build/__tests__/unit/navigateVerify.test.js.map +1 -0
- package/build/__tests__/unit/navigation.test.d.ts +2 -0
- package/build/__tests__/unit/navigation.test.d.ts.map +1 -0
- package/build/__tests__/unit/navigation.test.js +254 -0
- package/build/__tests__/unit/navigation.test.js.map +1 -0
- package/build/__tests__/unit/network.test.js +1 -0
- package/build/__tests__/unit/network.test.js.map +1 -1
- package/build/__tests__/unit/networkBufferEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/networkBufferEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkBufferEpoch.test.js +52 -0
- package/build/__tests__/unit/networkBufferEpoch.test.js.map +1 -0
- package/build/__tests__/unit/networkInterceptor.test.js +7 -7
- package/build/__tests__/unit/networkInterceptor.test.js.map +1 -1
- package/build/__tests__/unit/promiseHandles.test.d.ts +2 -0
- package/build/__tests__/unit/promiseHandles.test.d.ts.map +1 -0
- package/build/__tests__/unit/promiseHandles.test.js +61 -0
- package/build/__tests__/unit/promiseHandles.test.js.map +1 -0
- package/build/__tests__/unit/resolveBufferOffline.test.d.ts +2 -0
- package/build/__tests__/unit/resolveBufferOffline.test.d.ts.map +1 -0
- package/build/__tests__/unit/resolveBufferOffline.test.js +25 -0
- package/build/__tests__/unit/resolveBufferOffline.test.js.map +1 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.d.ts +2 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.d.ts.map +1 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.js +118 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.js.map +1 -0
- package/build/__tests__/unit/sessionEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/sessionEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/sessionEpoch.test.js +41 -0
- package/build/__tests__/unit/sessionEpoch.test.js.map +1 -0
- package/build/__tests__/unit/settleAndDiff.test.d.ts +2 -0
- package/build/__tests__/unit/settleAndDiff.test.d.ts.map +1 -0
- package/build/__tests__/unit/settleAndDiff.test.js +110 -0
- package/build/__tests__/unit/settleAndDiff.test.js.map +1 -0
- package/build/__tests__/unit/truncate.test.d.ts +2 -0
- package/build/__tests__/unit/truncate.test.d.ts.map +1 -0
- package/build/__tests__/unit/truncate.test.js +58 -0
- package/build/__tests__/unit/truncate.test.js.map +1 -0
- package/build/__tests__/unit/verifyAction.test.js +2 -1
- package/build/__tests__/unit/verifyAction.test.js.map +1 -1
- package/build/__tests__/unit/waitForMeasurements.test.d.ts +2 -0
- package/build/__tests__/unit/waitForMeasurements.test.d.ts.map +1 -0
- package/build/__tests__/unit/waitForMeasurements.test.js +69 -0
- package/build/__tests__/unit/waitForMeasurements.test.js.map +1 -0
- package/build/core/android.d.ts +3 -1
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +5 -5
- package/build/core/android.js.map +1 -1
- package/build/core/appContext.d.ts +53 -0
- package/build/core/appContext.d.ts.map +1 -0
- package/build/core/appContext.js +172 -0
- package/build/core/appContext.js.map +1 -0
- package/build/core/appRequest.d.ts +21 -0
- package/build/core/appRequest.d.ts.map +1 -0
- package/build/core/appRequest.js +95 -0
- package/build/core/appRequest.js.map +1 -0
- package/build/core/bufferConfig.d.ts +5 -0
- package/build/core/bufferConfig.d.ts.map +1 -0
- package/build/core/bufferConfig.js +20 -0
- package/build/core/bufferConfig.js.map +1 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +29 -9
- package/build/core/connection.js.map +1 -1
- package/build/core/debugGlobals.d.ts.map +1 -1
- package/build/core/debugGlobals.js +13 -0
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/deviceDiscovery.d.ts +5 -1
- package/build/core/deviceDiscovery.d.ts.map +1 -1
- package/build/core/deviceDiscovery.js +13 -2
- package/build/core/deviceDiscovery.js.map +1 -1
- package/build/core/deviceResolver.d.ts.map +1 -1
- package/build/core/deviceResolver.js +17 -2
- package/build/core/deviceResolver.js.map +1 -1
- package/build/core/epochRender.d.ts +19 -0
- package/build/core/epochRender.d.ts.map +1 -0
- package/build/core/epochRender.js +38 -0
- package/build/core/epochRender.js.map +1 -0
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +36 -91
- package/build/core/guides.js.map +1 -1
- package/build/core/index.d.ts +2 -3
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +4 -4
- package/build/core/index.js.map +1 -1
- package/build/core/inspector.d.ts +0 -39
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +1 -358
- package/build/core/inspector.js.map +1 -1
- package/build/core/ios.d.ts +14 -3
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +41 -17
- package/build/core/ios.js.map +1 -1
- package/build/core/jsExecute.d.ts +15 -0
- package/build/core/jsExecute.d.ts.map +1 -1
- package/build/core/jsExecute.js +136 -29
- package/build/core/jsExecute.js.map +1 -1
- package/build/core/logs.d.ts +12 -3
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +28 -5
- package/build/core/logs.js.map +1 -1
- package/build/core/metro.d.ts +2 -0
- package/build/core/metro.d.ts.map +1 -1
- package/build/core/metro.js +16 -8
- package/build/core/metro.js.map +1 -1
- package/build/core/moduleRegistry.d.ts +19 -0
- package/build/core/moduleRegistry.d.ts.map +1 -0
- package/build/core/moduleRegistry.js +67 -0
- package/build/core/moduleRegistry.js.map +1 -0
- package/build/core/nativeOnlyHints.d.ts.map +1 -1
- package/build/core/nativeOnlyHints.js +0 -2
- package/build/core/nativeOnlyHints.js.map +1 -1
- package/build/core/navigate.d.ts +46 -0
- package/build/core/navigate.d.ts.map +1 -0
- package/build/core/navigate.js +119 -0
- package/build/core/navigate.js.map +1 -0
- package/build/core/navigation.d.ts +66 -0
- package/build/core/navigation.d.ts.map +1 -0
- package/build/core/navigation.js +269 -0
- package/build/core/navigation.js.map +1 -0
- package/build/core/network.d.ts +12 -2
- package/build/core/network.d.ts.map +1 -1
- package/build/core/network.js +52 -12
- package/build/core/network.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +1 -1
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +3 -2
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/pressables.d.ts +33 -0
- package/build/core/pressables.d.ts.map +1 -1
- package/build/core/pressables.js +73 -4
- package/build/core/pressables.js.map +1 -1
- package/build/core/promiseHandles.d.ts +19 -0
- package/build/core/promiseHandles.d.ts.map +1 -0
- package/build/core/promiseHandles.js +58 -0
- package/build/core/promiseHandles.js.map +1 -0
- package/build/core/register.d.ts.map +1 -1
- package/build/core/register.js +1 -4
- package/build/core/register.js.map +1 -1
- package/build/core/sdkMirrorPoller.d.ts +31 -0
- package/build/core/sdkMirrorPoller.d.ts.map +1 -0
- package/build/core/sdkMirrorPoller.js +210 -0
- package/build/core/sdkMirrorPoller.js.map +1 -0
- package/build/core/state.d.ts +14 -0
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +48 -2
- package/build/core/state.js.map +1 -1
- package/build/core/toolHelpers.d.ts.map +1 -1
- package/build/core/toolHelpers.js +42 -10
- package/build/core/toolHelpers.js.map +1 -1
- package/build/core/truncate.d.ts +42 -0
- package/build/core/truncate.d.ts.map +1 -0
- package/build/core/truncate.js +169 -0
- package/build/core/truncate.js.map +1 -0
- package/build/core/types.d.ts +3 -0
- package/build/core/types.d.ts.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -2
- package/build/index.js.map +1 -1
- package/build/pro/coordinateMiss.d.ts +55 -0
- package/build/pro/coordinateMiss.d.ts.map +1 -0
- package/build/pro/coordinateMiss.js +122 -0
- package/build/pro/coordinateMiss.js.map +1 -0
- package/build/pro/tap.d.ts +8 -0
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +99 -11
- package/build/pro/tap.js.map +1 -1
- package/build/pro/verifyAction.d.ts +43 -2
- package/build/pro/verifyAction.d.ts.map +1 -1
- package/build/pro/verifyAction.js +95 -36
- package/build/pro/verifyAction.js.map +1 -1
- package/build/tools/_deviceArg.d.ts +17 -1
- package/build/tools/_deviceArg.d.ts.map +1 -1
- package/build/tools/_deviceArg.js +17 -1
- package/build/tools/_deviceArg.js.map +1 -1
- package/build/tools/bundleTools.d.ts.map +1 -1
- package/build/tools/bundleTools.js +20 -33
- package/build/tools/bundleTools.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +41 -219
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.d.ts.map +1 -1
- package/build/tools/connectionTools.js +17 -22
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/deviceTools.d.ts.map +1 -1
- package/build/tools/deviceTools.js +13 -167
- package/build/tools/deviceTools.js.map +1 -1
- package/build/tools/executionTools.d.ts.map +1 -1
- package/build/tools/executionTools.js +63 -18
- package/build/tools/executionTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts +6 -0
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +41 -56
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +61 -80
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/metaTools.js +1 -1
- package/build/tools/metaTools.js.map +1 -1
- package/build/tools/navigationTools.d.ts +3 -0
- package/build/tools/navigationTools.d.ts.map +1 -0
- package/build/tools/navigationTools.js +60 -0
- package/build/tools/navigationTools.js.map +1 -0
- package/build/tools/networkTools.d.ts.map +1 -1
- package/build/tools/networkTools.js +44 -202
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/reduxTools.d.ts.map +1 -1
- package/build/tools/reduxTools.js +3 -2
- package/build/tools/reduxTools.js.map +1 -1
- package/build/tools/requestTools.d.ts +3 -0
- package/build/tools/requestTools.d.ts.map +1 -0
- package/build/tools/requestTools.js +79 -0
- package/build/tools/requestTools.js.map +1 -0
- package/build/tools/screenshotTools.d.ts.map +1 -1
- package/build/tools/screenshotTools.js +42 -25
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +1 -1
- package/tools.json +22 -78
- package/build/__tests__/unit/flowpoints.test.d.ts +0 -2
- package/build/__tests__/unit/flowpoints.test.d.ts.map +0 -1
- package/build/__tests__/unit/flowpoints.test.js +0 -126
- package/build/__tests__/unit/flowpoints.test.js.map +0 -1
- package/build/__tests__/unit/flowpointsQuery.test.d.ts +0 -2
- package/build/__tests__/unit/flowpointsQuery.test.d.ts.map +0 -1
- package/build/__tests__/unit/flowpointsQuery.test.js +0 -91
- package/build/__tests__/unit/flowpointsQuery.test.js.map +0 -1
- package/build/__tests__/unit/selectionPoller.test.d.ts +0 -2
- package/build/__tests__/unit/selectionPoller.test.d.ts.map +0 -1
- package/build/__tests__/unit/selectionPoller.test.js +0 -109
- package/build/__tests__/unit/selectionPoller.test.js.map +0 -1
- package/build/__tests__/unit/verifyFlow.test.d.ts +0 -2
- package/build/__tests__/unit/verifyFlow.test.d.ts.map +0 -1
- package/build/__tests__/unit/verifyFlow.test.js +0 -45
- package/build/__tests__/unit/verifyFlow.test.js.map +0 -1
- package/build/core/selectionPoller.d.ts +0 -13
- package/build/core/selectionPoller.d.ts.map +0 -1
- package/build/core/selectionPoller.js +0 -102
- package/build/core/selectionPoller.js.map +0 -1
- package/build/pro/flowpointTools.d.ts +0 -4
- package/build/pro/flowpointTools.d.ts.map +0 -1
- package/build/pro/flowpointTools.js +0 -266
- package/build/pro/flowpointTools.js.map +0 -1
- package/build/pro/flowpoints.d.ts +0 -86
- package/build/pro/flowpoints.d.ts.map +0 -1
- package/build/pro/flowpoints.js +0 -283
- package/build/pro/flowpoints.js.map +0 -1
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Default swipe gesture duration. Android has always used 300ms; iOS passed no
|
|
4
|
+
* duration at all and inherited AXe's ~1s drag, which was both slower and too
|
|
5
|
+
* slow to trigger inertial scrolling. Shared so the platforms cannot drift again.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SWIPE_DEFAULT_DURATION_MS = 300;
|
|
2
8
|
export declare function registerInteractionTools(server: McpServer): void;
|
|
3
9
|
//# sourceMappingURL=interactionTools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionTools.d.ts","sourceRoot":"","sources":["../../src/tools/interactionTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"interactionTools.d.ts","sourceRoot":"","sources":["../../src/tools/interactionTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmrBhE"}
|
|
@@ -6,7 +6,13 @@ import { captureScreenshot, verifyAndCapture, burstCaptureAndVerify, } from "../
|
|
|
6
6
|
import { clearFocusedInput, dismissKeyboard, inputTextWithReplace } from "../core/focusedInputTools.js";
|
|
7
7
|
import { primaryInteractionBanner, platformFallbackBanner, platformUniqueBanner } from "../core/toolHelpers.js";
|
|
8
8
|
import { resolveDeviceTarget, formatResolverError } from "../core/deviceResolver.js";
|
|
9
|
-
import { resolveAndroidDeviceId, resolveIosUdid } from "./_deviceArg.js";
|
|
9
|
+
import { resolveAndroidDeviceId, resolveIosUdid, ANDROID_ARG_DESC, IOS_ARG_DESC } from "./_deviceArg.js";
|
|
10
|
+
/**
|
|
11
|
+
* Default swipe gesture duration. Android has always used 300ms; iOS passed no
|
|
12
|
+
* duration at all and inherited AXe's ~1s drag, which was both slower and too
|
|
13
|
+
* slow to trigger inertial scrolling. Shared so the platforms cannot drift again.
|
|
14
|
+
*/
|
|
15
|
+
export const SWIPE_DEFAULT_DURATION_MS = 300;
|
|
10
16
|
export function registerInteractionTools(server) {
|
|
11
17
|
// Tool: Unified tap — tries fiber, accessibility, OCR, coordinate strategies
|
|
12
18
|
registerToolWithTelemetry(server, "tap", {
|
|
@@ -18,8 +24,7 @@ export function registerInteractionTools(server) {
|
|
|
18
24
|
"LIMITATIONS: iOS needs AXe (brew install cameroncooke/axe/axe) or IDB for accessibility/coordinate taps. Non-ASCII text skips fiber (Hermes); prefer testID. Pass `device` to target a specific simulator/emulator when multiple are available — call list_devices for the inventory.\n" +
|
|
19
25
|
"GOOD: tap({ testID: \"login-btn\" }); tap({ text: \"Submit\" }); tap({ x: 300, y: 600 }); tap({ x: 300, y: 600, native: true, device: \"emulator-5554\" })\n" +
|
|
20
26
|
"BAD: tap({ text: \"\" }) or tap({ x: 0, y: 0 }) — missing a target. tap({ text: \"Submit\" }) without first screenshotting an ambiguous screen.\n" +
|
|
21
|
-
"SOURCE: need the file:line that renders an element?
|
|
22
|
-
"SEE ALSO: call get_usage_guide(topic=\"interact\") for the full device-interaction playbook.",
|
|
27
|
+
"SOURCE: need the file:line that renders an element? inspect_at_point(x, y).\n",
|
|
23
28
|
inputSchema: {
|
|
24
29
|
text: z
|
|
25
30
|
.string()
|
|
@@ -163,8 +168,7 @@ export function registerInteractionTools(server) {
|
|
|
163
168
|
description: "Long press at specific coordinates on an Android device/emulator screen" +
|
|
164
169
|
platformFallbackBanner("`tap` for short taps; keep android_long_press for long-press gestures specifically") +
|
|
165
170
|
"\nPURPOSE: Emit a sustained touch at raw pixel coordinates to trigger long-press handlers (context menus, drag starts, multi-select)." +
|
|
166
|
-
"\nWHEN TO USE: Only when a long-press gesture is required — regular taps should go through `tap`."
|
|
167
|
-
"\nSEE ALSO: call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
171
|
+
"\nWHEN TO USE: Only when a long-press gesture is required — regular taps should go through `tap`.",
|
|
168
172
|
inputSchema: {
|
|
169
173
|
x: z.coerce.number().describe("X coordinate in pixels"),
|
|
170
174
|
y: z.coerce.number().describe("Y coordinate in pixels"),
|
|
@@ -172,7 +176,7 @@ export function registerInteractionTools(server) {
|
|
|
172
176
|
deviceId: z
|
|
173
177
|
.string()
|
|
174
178
|
.optional()
|
|
175
|
-
.describe(
|
|
179
|
+
.describe(ANDROID_ARG_DESC)
|
|
176
180
|
}
|
|
177
181
|
}, async ({ x, y, durationMs, deviceId }) => {
|
|
178
182
|
const r = await resolveAndroidDeviceId(deviceId);
|
|
@@ -197,8 +201,7 @@ export function registerInteractionTools(server) {
|
|
|
197
201
|
"WHEN TO USE: Scrolling lists, paging carousels, pull-to-refresh, dismissing sheets, opening drawers — anything that needs a gesture rather than a tap. Especially useful in virtualized lists (FlatList/SectionList) where off-screen items aren't mounted in the fiber tree.\n" +
|
|
198
202
|
"VERIFICATION: verify=true (default) returns `verification.meaningful` — false means the scroll did nothing (end-of-list, non-scrollable surface, or missed coordinates). burst=true catches transient feedback like overscroll bounce.\n" +
|
|
199
203
|
"WORKFLOW: swipe({ direction: \"up\" }) -> read response.verification.meaningful. Advanced: pass startX/startY/endX/endY for coordinate-precise gestures.\n" +
|
|
200
|
-
"LIMITATIONS: iOS needs AXe (brew install cameroncooke/axe/axe) or IDB. Pass `device` to target a specific simulator/emulator when multiple are available — call list_devices for the inventory.\n"
|
|
201
|
-
"SEE ALSO: call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
204
|
+
"LIMITATIONS: iOS needs AXe (brew install cameroncooke/axe/axe) or IDB. Pass `device` to target a specific simulator/emulator when multiple are available — call list_devices for the inventory.\n",
|
|
202
205
|
inputSchema: {
|
|
203
206
|
direction: z
|
|
204
207
|
.enum(["up", "down", "left", "right"])
|
|
@@ -309,22 +312,33 @@ export function registerInteractionTools(server) {
|
|
|
309
312
|
}
|
|
310
313
|
const beforeBuffer = beforeCapture?.buffer ?? null;
|
|
311
314
|
const beforeScaleFactor = beforeCapture?.scaleFactor;
|
|
315
|
+
// Prefer the scale factor of the frame captured for THIS device this
|
|
316
|
+
// turn over `connectedApps[0].lastScreenshot`, which may be stale or
|
|
317
|
+
// belong to another device on a multi-device setup — the same fix tap
|
|
318
|
+
// carries for its coordinate strategy (Bug #5, 2026-05-20).
|
|
319
|
+
const swipeScaleFactor = beforeCapture?.scaleFactor
|
|
320
|
+
?? connectedApps.values().next().value?.lastScreenshot?.scaleFactor
|
|
321
|
+
?? 1;
|
|
322
|
+
const dprHint = beforeCapture && beforeCapture.width > 0 && beforeCapture.height > 0
|
|
323
|
+
? { width: beforeCapture.width, height: beforeCapture.height }
|
|
324
|
+
: undefined;
|
|
312
325
|
let driverResult;
|
|
313
326
|
if (resolvedPlatform === "ios") {
|
|
314
|
-
const dpr = await getDevicePixelRatio(resolvedUdid);
|
|
315
|
-
const
|
|
316
|
-
const
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
327
|
+
const dpr = await getDevicePixelRatio(resolvedUdid, dprHint);
|
|
328
|
+
const start = convertScreenshotToTapCoords(startX, startY, "ios", dpr, swipeScaleFactor);
|
|
329
|
+
const end = convertScreenshotToTapCoords(endX, endY, "ios", dpr, swipeScaleFactor);
|
|
330
|
+
// Without an explicit duration, AXe drags for ~1s (measured
|
|
331
|
+
// 2026-08-01) — slower than the Android path, which has always
|
|
332
|
+
// defaulted to 300ms, and slow enough that iOS never produced the
|
|
333
|
+
// inertial fling a real scroll gesture has. Default both platforms
|
|
334
|
+
// to the same 300ms flick.
|
|
335
|
+
const duration = (durationMs ?? SWIPE_DEFAULT_DURATION_MS) / 1000;
|
|
320
336
|
driverResult = await iosSwipe(start.x, start.y, end.x, end.y, { duration, delta, udid: resolvedUdid });
|
|
321
337
|
}
|
|
322
338
|
else {
|
|
323
|
-
const
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
const end = convertScreenshotToTapCoords(endX, endY, "android", 1, scaleFactor);
|
|
327
|
-
driverResult = await androidSwipe(start.x, start.y, end.x, end.y, durationMs ?? 300, resolved.target.androidSerial);
|
|
339
|
+
const start = convertScreenshotToTapCoords(startX, startY, "android", 1, swipeScaleFactor);
|
|
340
|
+
const end = convertScreenshotToTapCoords(endX, endY, "android", 1, swipeScaleFactor);
|
|
341
|
+
driverResult = await androidSwipe(start.x, start.y, end.x, end.y, durationMs ?? SWIPE_DEFAULT_DURATION_MS, resolved.target.androidSerial);
|
|
328
342
|
}
|
|
329
343
|
if (!driverResult.success) {
|
|
330
344
|
return {
|
|
@@ -389,8 +403,7 @@ export function registerInteractionTools(server) {
|
|
|
389
403
|
"\nPURPOSE: Send keystrokes to whichever input currently has focus on Android — the tool does NOT focus a field itself." +
|
|
390
404
|
"\nWHEN TO USE: Only after an input is already focused, or when `tap(text=...)` on the input didn't take focus for some reason." +
|
|
391
405
|
"\nPREREQUISITE: A TextInput must already have focus. Tap the field first (e.g. tap({ testID: 'search' })) — `android_input_text` does NOT focus a field itself; replace:true also requires React focus." +
|
|
392
|
-
"\nREPLACE MODE: pass replace:true to clear the focused field first (via React onChangeText so controlled state stays consistent), then type the new value. Use for pre-filled fields where appending would corrupt the value."
|
|
393
|
-
"\nSEE ALSO: call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
406
|
+
"\nREPLACE MODE: pass replace:true to clear the focused field first (via React onChangeText so controlled state stays consistent), then type the new value. Use for pre-filled fields where appending would corrupt the value.",
|
|
394
407
|
inputSchema: {
|
|
395
408
|
text: z.string().describe("Text to type"),
|
|
396
409
|
replace: z
|
|
@@ -404,7 +417,7 @@ export function registerInteractionTools(server) {
|
|
|
404
417
|
deviceId: z
|
|
405
418
|
.string()
|
|
406
419
|
.optional()
|
|
407
|
-
.describe(
|
|
420
|
+
.describe(ANDROID_ARG_DESC)
|
|
408
421
|
}
|
|
409
422
|
}, async ({ text, replace, device, deviceId }) => {
|
|
410
423
|
const r = await resolveAndroidDeviceId(deviceId);
|
|
@@ -427,14 +440,13 @@ export function registerInteractionTools(server) {
|
|
|
427
440
|
platformUniqueBanner("sending Android key events (BACK, HOME, MENU, etc.)") +
|
|
428
441
|
` Common keys: ${Object.keys(ANDROID_KEY_EVENTS).join(", ")}` +
|
|
429
442
|
"\nPURPOSE: Dispatch Android system keys (BACK, HOME, MENU, ENTER, DEL, etc.) that aren't reachable via on-screen tap." +
|
|
430
|
-
"\nWHEN TO USE: Navigate back from a screen, submit a form with ENTER, dismiss the keyboard, or press hardware-style keys during a flow."
|
|
431
|
-
"\nSEE ALSO: call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
443
|
+
"\nWHEN TO USE: Navigate back from a screen, submit a form with ENTER, dismiss the keyboard, or press hardware-style keys during a flow.",
|
|
432
444
|
inputSchema: {
|
|
433
445
|
key: z.string().describe(`Key name (${Object.keys(ANDROID_KEY_EVENTS).join(", ")}) or numeric keycode`),
|
|
434
446
|
deviceId: z
|
|
435
447
|
.string()
|
|
436
448
|
.optional()
|
|
437
|
-
.describe(
|
|
449
|
+
.describe(ANDROID_ARG_DESC)
|
|
438
450
|
}
|
|
439
451
|
}, async ({ key, deviceId }) => {
|
|
440
452
|
// Try to parse as number first, otherwise treat as key name
|
|
@@ -471,14 +483,13 @@ export function registerInteractionTools(server) {
|
|
|
471
483
|
platformUniqueBanner("pressing iOS hardware buttons (HOME, LOCK, SIRI, APPLE_PAY)") +
|
|
472
484
|
" Requires an iOS UI driver: AXe (recommended: brew install cameroncooke/axe/axe) or IDB (brew install idb-companion)." +
|
|
473
485
|
"\nPURPOSE: Trigger iOS hardware buttons (HOME, LOCK, SIDE_BUTTON, SIRI, APPLE_PAY) that aren't reachable via on-screen tap." +
|
|
474
|
-
"\nWHEN TO USE: Send the app to background (HOME), lock the simulator (LOCK), or exercise Siri/Apple Pay flows."
|
|
475
|
-
"\nSEE ALSO: call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
486
|
+
"\nWHEN TO USE: Send the app to background (HOME), lock the simulator (LOCK), or exercise Siri/Apple Pay flows.",
|
|
476
487
|
inputSchema: {
|
|
477
488
|
button: z
|
|
478
489
|
.enum(IOS_BUTTON_TYPES)
|
|
479
490
|
.describe("Hardware button to press: HOME, LOCK, SIDE_BUTTON, SIRI, or APPLE_PAY"),
|
|
480
491
|
duration: z.coerce.number().optional().describe("Optional button press duration in seconds"),
|
|
481
|
-
udid: z.string().optional().describe(
|
|
492
|
+
udid: z.string().optional().describe(IOS_ARG_DESC)
|
|
482
493
|
}
|
|
483
494
|
}, async ({ button, duration, udid }) => {
|
|
484
495
|
const r = await resolveIosUdid(udid);
|
|
@@ -496,31 +507,6 @@ export function registerInteractionTools(server) {
|
|
|
496
507
|
};
|
|
497
508
|
});
|
|
498
509
|
// Tool: Clear focused text input
|
|
499
|
-
registerToolWithTelemetry(server, "clear_focused_input", {
|
|
500
|
-
description: "Clear the contents of the currently focused TextInput, updating React state correctly so controlled components (Formik, react-hook-form, useState) stay consistent." +
|
|
501
|
-
"\nPURPOSE: Reset whatever TextInput has focus to empty, with the React state owner notified via onChangeText. Use BEFORE typing a replacement value into a pre-filled field." +
|
|
502
|
-
"\nWHEN TO USE: After tap(testID=...) focuses an input that already has text. Pair with ios_input_text/android_input_text (or use their replace:true flag for one-shot)." +
|
|
503
|
-
"\nPREREQUISITE: A TextInput must already have React focus. Tap the field first (e.g. tap({ testID: 'search' })) — this tool does NOT focus a field itself." +
|
|
504
|
-
"\nLIMITATIONS: Requires Bridgeless/Fabric (RN new architecture). Returns 'no focused TextInput' if nothing is focused — does not silently no-op." +
|
|
505
|
-
"\nSEE ALSO: dismiss_keyboard, ios_input_text({replace:true}), android_input_text({replace:true}). call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
506
|
-
inputSchema: {
|
|
507
|
-
device: z
|
|
508
|
-
.string()
|
|
509
|
-
.optional()
|
|
510
|
-
.describe("Optional device name (substring match). Uses default device if not specified.")
|
|
511
|
-
}
|
|
512
|
-
}, async ({ device }) => {
|
|
513
|
-
const result = await clearFocusedInput(device);
|
|
514
|
-
return {
|
|
515
|
-
content: [
|
|
516
|
-
{
|
|
517
|
-
type: "text",
|
|
518
|
-
text: result.success ? `Cleared focused input (via ${result.via}).` : `Error: ${result.error}`
|
|
519
|
-
}
|
|
520
|
-
],
|
|
521
|
-
isError: !result.success
|
|
522
|
-
};
|
|
523
|
-
});
|
|
524
510
|
// Tool: Dismiss keyboard
|
|
525
511
|
registerToolWithTelemetry(server, "dismiss_keyboard", {
|
|
526
512
|
description: "Blur the currently focused TextInput, dismissing the on-screen keyboard." +
|
|
@@ -556,8 +542,7 @@ export function registerInteractionTools(server) {
|
|
|
556
542
|
"\nPURPOSE: Send keystrokes to the focused field on an iOS simulator via the active UI driver (AXe — preferred — or IDB)." +
|
|
557
543
|
"\nWHEN TO USE: Only after an input is already focused, or when `tap(testID=...)` on the input didn't take focus for some reason. Use the testID-first flow whenever possible — it's faster and survives UI repositioning." +
|
|
558
544
|
"\nREPLACE MODE: pass replace:true to clear the focused field first (via React onChangeText so controlled state stays consistent), then type the new value. Use for pre-filled fields where appending would corrupt the value." +
|
|
559
|
-
"\nLIMITATIONS: AXe types via the US-keyboard HID — non-ASCII characters (Cyrillic, CJK, Arabic) may not transmit correctly. If the active driver is AXe and the text contains non-ASCII chars, prefer pasting via the simulator pasteboard or setting IOS_DRIVER=idb."
|
|
560
|
-
"\nSEE ALSO: call get_usage_guide(topic=\"interact\") for the full UI-interaction playbook.",
|
|
545
|
+
"\nLIMITATIONS: AXe types via the US-keyboard HID — non-ASCII characters (Cyrillic, CJK, Arabic) may not transmit correctly. If the active driver is AXe and the text contains non-ASCII chars, prefer pasting via the simulator pasteboard or setting IOS_DRIVER=idb.",
|
|
561
546
|
inputSchema: {
|
|
562
547
|
text: z.string().describe("Text to type into the currently focused field."),
|
|
563
548
|
replace: z
|
|
@@ -568,7 +553,7 @@ export function registerInteractionTools(server) {
|
|
|
568
553
|
.string()
|
|
569
554
|
.optional()
|
|
570
555
|
.describe("Optional RN device name (substring match) — needed by replace:true when multiple RN apps are connected, to disambiguate which device's focused input to clear. Single-device sessions can omit."),
|
|
571
|
-
udid: z.string().optional().describe(
|
|
556
|
+
udid: z.string().optional().describe(IOS_ARG_DESC)
|
|
572
557
|
}
|
|
573
558
|
}, async ({ text, replace, device, udid }) => {
|
|
574
559
|
const r = await resolveIosUdid(udid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionTools.js","sourceRoot":"","sources":["../../src/tools/interactionTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interactionTools.js","sourceRoot":"","sources":["../../src/tools/interactionTools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACH,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,4BAA4B,EAAE,yBAAyB,EAAuC,MAAM,eAAe,CAAC;AAClI,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAChH,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGzG;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACtD,6EAA6E;IAC7E,yBAAyB,CACrB,MAAM,EACN,KAAK,EACL;QACI,WAAW,EACP,+HAA+H;YAC/H,wBAAwB,EAAE,GAAG,IAAI;YACjC,uIAAuI;YACvI,uMAAuM;YACvM,kNAAkN;YAClN,yRAAyR;YACzR,8JAA8J;YAC9J,mJAAmJ;YACnJ,+EAA+E;QACnF,WAAW,EAAE;YACT,IAAI,EAAE,CAAC;iBACF,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,2GAA2G,CAC9G;YACL,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2CAA2C,CAAC;YAC1D,SAAS,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,+EAA+E,CAClF;YACL,KAAK,EAAE,CAAC,CAAC,MAAM;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,6DAA6D,CAChE;YACL,CAAC,EAAE,CAAC,CAAC,MAAM;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,sEAAsE,CACzE;YACL,CAAC,EAAE,CAAC,CAAC,MAAM;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,sEAAsE,CACzE;YACL,QAAQ,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;iBAC7D,QAAQ,EAAE;iBACV,OAAO,CAAC,MAAM,CAAC;iBACf,QAAQ,CACL,6GAA6G,CAChH;YACL,iBAAiB,EAAE,CAAC,CAAC,MAAM;iBACtB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,gFAAgF;gBAChF,8FAA8F,CACjG;YACL,MAAM,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACL,kGAAkG;gBAClG,kGAAkG,CACrG;YACL,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,oDAAoD;gBACpD,kDAAkD;gBAClD,8EAA8E;gBAC9E,iFAAiF;gBACjF,4EAA4E,CAC/E;YACL,UAAU,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACL,+QAA+Q,CAClR;YACL,MAAM,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACL,wFAAwF;gBACxF,8EAA8E;gBAC9E,iIAAiI;gBACjI,kJAAkJ,CACrJ;YACL,KAAK,EAAE,CAAC;iBACH,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACL,6DAA6D;gBAC7D,oGAAoG;gBACpG,8FAA8F;gBAC9F,wFAAwF;gBACxF,iBAAiB,CACpB;SACR;KACJ,EACD,KAAK,EAAE,IAAS,EAAE,EAAE;QAChB,MAAM,MAAM,GAAc,MAAM,GAAG,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE,GAAG,MAAM,CAAC;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9D,yFAAyF;QACzF,6FAA6F;QAC7F,2FAA2F;QAC3F,qEAAqE;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,eAAe,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3D,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACL,gFAAgF;QACpF,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM;YAC1C,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/E,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,QAAQ,GAAG,GAAG,eAAe,GAAG,WAAW,GAAG,aAAa,EAAE,CAAC;QACpE,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAExE,MAAM,OAAO,GAA6E;YACtF,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE;SAClC,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,cAAc,CAAC,KAAK;gBAC1B,QAAQ,EAAE,YAAY;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO;YACH,OAAO;YACP,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS;YAC7C,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS;gBAC/C,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;gBACzD,CAAC,CAAC,SAAS;YACf,aAAa,EAAE,YAAY;YAC3B,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU;YAC5C,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU;YAC5C,YAAY,EAAE,MAAM,CAAC,MAAM;YAC3B,UAAU,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACpG,YAAY,EAAE,MAAM,CAAC,WAAW;YAChC,gBAAgB,EAAE,MAAM,CAAC,eAAe;YACxC,oBAAoB,EAAE,MAAM,CAAC,mBAAmB;YAChD,wBAAwB,EAAE,MAAM,CAAC,uBAAuB;YACxD,SAAS,EAAE,MAAM,CAAC,QAAQ;SAC7B,CAAC;IACN,CAAC,CACJ,CAAC;IACF,mCAAmC;IACnC,+EAA+E;IAE/E,2BAA2B;IAC3B,yBAAyB,CACrB,MAAM,EACN,oBAAoB,EACpB;QACI,WAAW,EAAE,yEAAyE;YAClF,sBAAsB,CAAC,oFAAoF,CAAC;YAC5G,uIAAuI;YACvI,mGAAmG;QACvG,WAAW,EAAE;YACT,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACvD,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACvD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC1G,QAAQ,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gBAAgB,CAAC;SAClC;KACJ,EACD,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrC,MAAM,CAAC,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAElE,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;iBACnE;aACJ;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,qEAAqE;IACrE,yBAAyB,CACrB,MAAM,EACN,OAAO,EACP;QACI,WAAW,EACP,wGAAwG;YACxG,wBAAwB,EAAE,GAAG,IAAI;YACjC,gXAAgX;YAChX,iRAAiR;YACjR,0OAA0O;YAC1O,4JAA4J;YAC5J,mMAAmM;QACvM,WAAW,EAAE;YACT,SAAS,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,QAAQ,CACL,sEAAsE;gBACtE,0FAA0F;gBAC1F,0FAA0F;gBAC1F,0DAA0D,CAC7D;YACL,QAAQ,EAAE,CAAC,CAAC,MAAM;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,2GAA2G,CAAC;YAC1H,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;YACtH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;YACtH,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAClH,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAClH,UAAU,EAAE,CAAC,CAAC,MAAM;iBACf,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8FAA8F,CAAC;YAC7G,KAAK,EAAE,CAAC,CAAC,MAAM;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2FAA2F,CAAC;YAC1G,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,oDAAoD;gBACpD,kDAAkD;gBAClD,8EAA8E;gBAC9E,iFAAiF;gBACjF,4EAA4E,CAC/E;YACL,MAAM,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACL,yFAAyF;gBACzF,0GAA0G;gBAC1G,6DAA6D,CAChE;YACL,UAAU,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACL,wGAAwG;gBACxG,8DAA8D,CACjE;YACL,KAAK,EAAE,CAAC;iBACH,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACL,mGAAmG;gBACnG,uGAAuG;gBACvG,qEAAqE,CACxE;SACR;KACJ,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;QAChH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBAClF,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QACD,MAAM,gBAAgB,GAAsB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrE,MAAM,YAAY,GAAuB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;QAEjE,MAAM,YAAY,GAAG,MAAM,KAAK,KAAK,CAAC;QACtC,MAAM,gBAAgB,GAAG,UAAU,KAAK,KAAK,CAAC;QAC9C,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,CAAC;QAEnC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACtF,MAAM,YAAY,GAAG,UAAU,KAAK,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC;QACnC,wEAAwE;QACxE,wEAAwE;QACxE,IAAI,CAAC,YAAY,IAAI,UAAU,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7D,OAAO;gBACH,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,+LAA+L;qBACxM,CAAC;gBACF,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,qEAAqE;QACrE,MAAM,UAAU,GAAG,YAAY,IAAI,WAAW,CAAC;QAC/C,IAAI,aAAa,GAAG,UAAU;YAC1B,CAAC,CAAC,MAAM,iBAAiB,CAAC,gBAAiB,EAAE,YAAY,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,YAAY,EAAE,CAAC;YACf,oEAAoE;YACpE,yEAAyE;YACzE,IAAI,IAAI,GAAG,aAAa,CAAC;YACzB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,IAAI,GAAG,MAAM,iBAAiB,CAAC,gBAAiB,EAAE,YAAY,CAAC,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACvC,OAAO;oBACH,OAAO,EAAE,CAAC;4BACN,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,kIAAkI;yBAC3I,CAAC;oBACF,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YACD,MAAM,QAAQ,GAAG,yBAAyB,CACtC,CAAC,SAAS,IAAI,IAAI,CAAmB,EACrC,QAAQ,EACR,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,CACd,CAAC;YACF,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACzB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YACrB,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,EAAE,MAAM,IAAI,IAAI,CAAC;QACnD,MAAM,iBAAiB,GAAG,aAAa,EAAE,WAAW,CAAC;QAErD,qEAAqE;QACrE,qEAAqE;QACrE,sEAAsE;QACtE,4DAA4D;QAC5D,MAAM,gBAAgB,GAClB,aAAa,EAAE,WAAW;eACtB,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAkC,EAAE,cAAc,EAAE,WAAW;eAC9F,CAAC,CAAC;QACT,MAAM,OAAO,GAAG,aAAa,IAAI,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAChF,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE;YAC9D,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,YAAmE,CAAC;QACxE,IAAI,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;YACzF,MAAM,GAAG,GAAG,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;YACnF,4DAA4D;YAC5D,+DAA+D;YAC/D,kEAAkE;YAClE,mEAAmE;YACnE,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,CAAC,UAAU,IAAI,yBAAyB,CAAC,GAAG,IAAI,CAAC;YAClE,YAAY,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3G,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC3F,MAAM,GAAG,GAAG,4BAA4B,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACrF,YAAY,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9I,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO;gBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjE,OAAO,EAAE,IAAI;aAChB,CAAC;QACN,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAAG,WAAW;YAC5B,CAAC,CAAC,MAAM,qBAAqB,CAAC;gBAC1B,QAAQ,EAAE,gBAAiB;gBAC3B,YAAY;gBACZ,IAAI,EAAE,YAAY;gBAClB,iBAAiB;gBACjB,MAAM,EAAE,aAAa;aACxB,CAAC;YACF,CAAC,CAAC,MAAM,gBAAgB,CAAC;gBACrB,QAAQ,EAAE,gBAAiB;gBAC3B,YAAY;gBACZ,gBAAgB;gBAChB,YAAY;gBACZ,IAAI,EAAE,YAAY;gBAClB,iBAAiB;gBACjB,MAAM,EAAE,cAAc;aACzB,CAAC,CAAC;QAEP,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;QAElE,MAAM,OAAO,GACT,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,UAAU,KAAK,KAAK;YACtE,CAAC,CAAC,yNAAyN;YAC3N,CAAC,CAAC,SAAS,CAAC;QAEpB,MAAM,YAAY,GAA4B;YAC1C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,gBAAgB;YAC1B,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE;YAC9B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;YACxB,aAAa,EAAE,YAAY,CAAC,MAAM;YAClC,GAAG,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,CAAC;YACrC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;YAC3B,UAAU,EAAE,QAAQ,CAAC,IAAI;SAC5B,CAAC;QAEF,MAAM,OAAO,GAA6E;YACtF,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SACzE,CAAC;QAEF,IAAI,gBAAgB,IAAI,cAAc,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,cAAc,CAAC,KAAK;gBAC1B,QAAQ,EAAE,YAAY;aACzB,CAAC,CAAC;QACP,CAAC;QAED,OAAO;YACH,OAAO;YACP,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACxF,WAAW,EAAE,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SAC3F,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,2BAA2B;IAC3B,yBAAyB,CACrB,MAAM,EACN,oBAAoB,EACpB;QACI,WAAW,EACP,0CAA0C;YAC1C,sBAAsB,CAAC,gEAAgE,CAAC;YACxF,gFAAgF;YAChF,wHAAwH;YACxH,gIAAgI;YAChI,yMAAyM;YACzM,+NAA+N;QACnO,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACzC,OAAO,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACL,+KAA+K,CAClL;YACL,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,iMAAiM,CACpM;YACL,QAAQ,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gBAAgB,CAAC;SAClC;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1C,MAAM,CAAC,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACrC,IAAI,EACJ,OAAO,KAAK,IAAI,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EACpC,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAClC,CAAC;QAEF,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;iBACnE;aACJ;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,0BAA0B;IAC1B,yBAAyB,CACrB,MAAM,EACN,mBAAmB,EACnB;QACI,WAAW,EAAE,iDAAiD;YAC1D,oBAAoB,CAAC,qDAAqD,CAAC;YAC3E,iBAAiB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7D,uHAAuH;YACvH,yIAAyI;QAC7I,WAAW,EAAE;YACT,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;YACvG,QAAQ,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gBAAgB,CAAC;SAClC;KACJ,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxB,4DAA4D;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,WAAW,EAAsC,CAAC;QAE/G,MAAM,CAAC,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAExD,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;iBACnE;aACJ;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CACJ,CAAC;IAGF,+EAA+E;IAC/E,6CAA6C;IAC7C,+EAA+E;IAC/E,+EAA+E;IAC/E,sBAAsB;IACtB,+EAA+E;IAI/E,wBAAwB;IAExB,+EAA+E;IAC/E,sDAAsD;IACtD,mDAAmD;IACnD,qEAAqE;IACrE,+EAA+E;IAC/E,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACf,YAAY,EACZ;QACI,WAAW,EACP,8CAA8C;YAC9C,oBAAoB,CAAC,6DAA6D,CAAC;YACnF,uHAAuH;YACvH,6HAA6H;YAC7H,gHAAgH;QACpH,WAAW,EAAE;YACT,MAAM,EAAE,CAAC;iBACJ,IAAI,CAAC,gBAAgB,CAAC;iBACtB,QAAQ,CAAC,uEAAuE,CAAC;YACtF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;YAC5F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SACrD;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnE,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;iBACnE;aACJ;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,iCAAiC;IACjC,yBAAyB;IACzB,yBAAyB,CACrB,MAAM,EACN,kBAAkB,EAClB;QACI,WAAW,EACP,0EAA0E;YAC1E,0JAA0J;YAC1J,6JAA6J;YAC7J,kHAAkH;YAClH,wHAAwH;QAC5H,WAAW,EAAE;YACT,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+EAA+E,CAAC;SACjG;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO;wBAChB,CAAC,CAAC,iCAAiC,MAAM,CAAC,SAAS,IAAI;wBACvD,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;iBACjC;aACJ;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CACJ,CAAC;IAEF,uBAAuB;IACvB,yBAAyB,CACrB,MAAM,EACN,gBAAgB,EAChB;QACI,WAAW,EACP,gCAAgC;YAChC,sBAAsB,CAAC,gEAAgE,CAAC;YACxF,wNAAwN;YACxN,0HAA0H;YAC1H,2NAA2N;YAC3N,+NAA+N;YAC/N,uQAAuQ;QAC3Q,WAAW,EAAE;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC3E,OAAO,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACL,+KAA+K,CAClL;YACL,MAAM,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACL,iMAAiM,CACpM;YACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SACrD;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACrC,IAAI,EACJ,OAAO,KAAK,IAAI,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAC9B,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAClC,CAAC;QAEF,OAAO;YACH,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE;iBACnE;aACJ;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO;SAC3B,CAAC;IACN,CAAC,CACJ,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logTools.d.ts","sourceRoot":"","sources":["../../src/tools/logTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"logTools.d.ts","sourceRoot":"","sources":["../../src/tools/logTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,OAAO,EAAsD,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA2EzG;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,QAAQ,EAAE,EAClB,OAAO,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAOtC;AAwCD,iBAAS,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B;;0BAEhB,MAAM,KAAG,IAAI;iBAGxB,IAAI;CAGlB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqcxD"}
|
package/build/tools/logTools.js
CHANGED
|
@@ -4,11 +4,42 @@ import { getLogs, searchLogs, getLogSummary, getTotalLogCount, getConnectedAppBy
|
|
|
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
|
-
import { isSDKInstalled,
|
|
7
|
+
import { isSDKInstalled, clearSDKConsole } from "../core/sdkBridge.js";
|
|
8
|
+
import { refreshMirror } from "../core/sdkMirrorPoller.js";
|
|
9
|
+
import { evictionNotice, resolveEpochFilter } from "../core/epochRender.js";
|
|
8
10
|
import { findLogEvent, nativeLogBuffers, getNativeLogBuffer } from "../core/logEvents.js";
|
|
9
11
|
import { jsEventsFromEntries } from "../core/jsLogEvents.js";
|
|
10
12
|
import { formatEventList, formatEventDetails } from "../core/logEventFormat.js";
|
|
11
13
|
import { collectNativeEvents, deviceKeyOf } from "../core/nativeLogs.js";
|
|
14
|
+
import { DEVICE_ALL_DESC } from "./_deviceArg.js";
|
|
15
|
+
/**
|
|
16
|
+
* Render JS log events with an "app restarted" divider at each run boundary.
|
|
17
|
+
*
|
|
18
|
+
* LogEvent is shared with the native pipeline, so rather than widening that
|
|
19
|
+
* type we recover each event's epoch from the source entries (events are
|
|
20
|
+
* derived 1:1 from entries, keyed `j<seq>`) and format each same-epoch run
|
|
21
|
+
* through the normal formatter so output is otherwise byte-identical.
|
|
22
|
+
*/
|
|
23
|
+
function renderWithRestartDividers(events, entries, options) {
|
|
24
|
+
if (events.length === 0)
|
|
25
|
+
return formatEventList(events, options);
|
|
26
|
+
const epochBySeq = new Map(entries.map((e) => [`j${e.seq}`, e.epoch]));
|
|
27
|
+
const runs = [];
|
|
28
|
+
for (const event of events) {
|
|
29
|
+
const epoch = epochBySeq.get(event.id) ?? 1;
|
|
30
|
+
const last = runs[runs.length - 1];
|
|
31
|
+
if (last && last.epoch === epoch) {
|
|
32
|
+
last.events.push(event);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
runs.push({ epoch, events: [event] });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return runs
|
|
39
|
+
.map((run, i) => (i === 0 ? "" : `── app restarted (epoch ${run.epoch}) ──\n`) +
|
|
40
|
+
formatEventList(run.events, options))
|
|
41
|
+
.join("\n");
|
|
42
|
+
}
|
|
12
43
|
// Binds the live connection/pipeline probes for `diagnoseEmptyLogs`. Kept here
|
|
13
44
|
// so the diagnosis logic itself stays free of module-level state and testable.
|
|
14
45
|
function logDiagnosisDeps(device) {
|
|
@@ -119,8 +150,7 @@ export function registerLogTools(server) {
|
|
|
119
150
|
"WORKFLOW: scan_metro -> get_logs(summary=true) -> narrow with search_logs(text=\"...\") or get_logs(level=\"error\") -> clear_logs between reproductions.\n" +
|
|
120
151
|
"LIMITATIONS: Circular buffer (~500 entries). Only captures logs emitted after the app connected; pre-connect logs are lost.\n" +
|
|
121
152
|
"GOOD: get_logs({ summary: true }) then get_logs({ level: \"error\", maxLogs: 20 })\n" +
|
|
122
|
-
"BAD: get_logs({ maxLogs: 500, verbose: true }) as a first call — floods context; start with summary=true.\n"
|
|
123
|
-
"SEE ALSO: call get_usage_guide(topic=\"logs\") for the full console-debugging playbook.",
|
|
153
|
+
"BAD: get_logs({ maxLogs: 500, verbose: true }) as a first call — floods context; start with summary=true.\n",
|
|
124
154
|
inputSchema: {
|
|
125
155
|
maxLogs: z.coerce
|
|
126
156
|
.number()
|
|
@@ -148,7 +178,11 @@ export function registerLogTools(server) {
|
|
|
148
178
|
.optional()
|
|
149
179
|
.default(false)
|
|
150
180
|
.describe("Return summary statistics instead of full logs (count by level + last 5 messages). Use for quick overview."),
|
|
151
|
-
device: z.string().optional().describe(
|
|
181
|
+
device: z.string().optional().describe(DEVICE_ALL_DESC),
|
|
182
|
+
epoch: z
|
|
183
|
+
.union([z.number(), z.literal("current"), z.literal("all")])
|
|
184
|
+
.optional()
|
|
185
|
+
.describe("Filter by app run. 'current' = the live run only; a number targets a specific run; omit or 'all' for everything including pre-restart data (default)."),
|
|
152
186
|
source: z
|
|
153
187
|
.enum(["js", "native", "all"])
|
|
154
188
|
.optional()
|
|
@@ -170,12 +204,7 @@ export function registerLogTools(server) {
|
|
|
170
204
|
.optional()
|
|
171
205
|
.describe("Native acquisition window — ISO timestamp or a duration like \"5m\". Widens the device query; already-seen events are still deduped.")
|
|
172
206
|
}
|
|
173
|
-
}, async ({ maxLogs, level, startFromText, maxMessageLength, verbose, summary, device, source, kind, minLevel, since }) => {
|
|
174
|
-
// Check if SDK is installed — prefer SDK data for richer logs.
|
|
175
|
-
// `device` must be threaded through: without it the SDK bridge reads
|
|
176
|
-
// whichever app happens to be first, so a multi-device session
|
|
177
|
-
// silently answers with the wrong device's buffer.
|
|
178
|
-
const sdkAvailable = await isSDKInstalled(device);
|
|
207
|
+
}, async ({ maxLogs, level, startFromText, maxMessageLength, verbose, summary, device, source, kind, minLevel, since, epoch }) => {
|
|
179
208
|
// Prepended to every return's text below when source==="all".
|
|
180
209
|
let nativePrefix = "";
|
|
181
210
|
// Set when source==="native"/"all" already paid for a native fetch
|
|
@@ -216,39 +245,10 @@ export function registerLogTools(server) {
|
|
|
216
245
|
// carrying the native block with it.
|
|
217
246
|
nativePrefix = `Native Log Events (${capped.length}):\n\n${rendered}${cappedNote}${noteText}${sinceNote}\n\n`;
|
|
218
247
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
// CDP buffer below rather than reporting zero logs.
|
|
224
|
-
if (sdkStats.success && sdkStats.data.total > 0) {
|
|
225
|
-
const s = sdkStats.data;
|
|
226
|
-
const lines = [];
|
|
227
|
-
lines.push(`Total logs: ${s.total}`);
|
|
228
|
-
if (s.byLevel && Object.keys(s.byLevel).length > 0) {
|
|
229
|
-
lines.push("\nBy Level:");
|
|
230
|
-
for (const [lvl, cnt] of Object.entries(s.byLevel))
|
|
231
|
-
lines.push(` ${lvl}: ${cnt}`);
|
|
232
|
-
}
|
|
233
|
-
// Served real SDK data — not empty, regardless of what the
|
|
234
|
-
// (separate) CDP buffer happens to hold.
|
|
235
|
-
return { _emptyResult: false, content: [{ type: "text", text: `${nativePrefix}Log Summary (SDK):\n\n${lines.join("\n")}` }] };
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
const sdkResult = await querySDKConsole({ count: maxLogs, level, text: startFromText }, device);
|
|
239
|
-
if (sdkResult.success && sdkResult.data.length > 0) {
|
|
240
|
-
const entries = sdkResult.data;
|
|
241
|
-
const lines = entries.map((e) => {
|
|
242
|
-
const time = new Date(e.timestamp).toLocaleTimeString();
|
|
243
|
-
let msg = e.message;
|
|
244
|
-
if (!verbose && maxMessageLength > 0 && msg.length > maxMessageLength) {
|
|
245
|
-
msg = msg.slice(0, maxMessageLength) + "...";
|
|
246
|
-
}
|
|
247
|
-
return `[${time}] [${e.level.toUpperCase()}] ${msg}`;
|
|
248
|
-
});
|
|
249
|
-
return { _emptyResult: false, content: [{ type: "text", text: `${nativePrefix}Console Logs (${entries.length} entries, SDK):\n\n${lines.join("\n")}` }] };
|
|
250
|
-
}
|
|
251
|
-
}
|
|
248
|
+
// The buffer is a superset of the SDK's in-app buffer (mirrored) and
|
|
249
|
+
// the CDP console stream, and it retains prior app runs. Refresh it
|
|
250
|
+
// first so this read is as current as a live SDK query would have been.
|
|
251
|
+
await refreshMirror(device);
|
|
252
252
|
// Return summary if requested
|
|
253
253
|
if (summary) {
|
|
254
254
|
const buffer = resolveLogBuffer(device);
|
|
@@ -270,7 +270,7 @@ export function registerLogTools(server) {
|
|
|
270
270
|
content: [
|
|
271
271
|
{
|
|
272
272
|
type: "text",
|
|
273
|
-
text: `${nativePrefix}Log Summary:\n\n${summaryText}${connectionWarning}`
|
|
273
|
+
text: `${nativePrefix}Log Summary:\n\n${summaryText}${evictionNotice(buffer.droppedCount, "EXECBRO_LOG_BUFFER_SIZE")}${connectionWarning}`
|
|
274
274
|
}
|
|
275
275
|
]
|
|
276
276
|
};
|
|
@@ -278,13 +278,9 @@ export function registerLogTools(server) {
|
|
|
278
278
|
// Resolved once: for the all-devices case this copies every buffered
|
|
279
279
|
// entry into a merged buffer, so it is not free to call repeatedly.
|
|
280
280
|
const logBuffer = resolveLogBuffer(device);
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
startFromText,
|
|
285
|
-
maxMessageLength,
|
|
286
|
-
verbose
|
|
287
|
-
});
|
|
281
|
+
const epochFilter = resolveEpochFilter(epoch, device);
|
|
282
|
+
const logs = logBuffer.get(maxLogs, level, startFromText, epochFilter);
|
|
283
|
+
const count = logs.length;
|
|
288
284
|
// `_emptyResult` measures CAPTURE reliability, not whether this
|
|
289
285
|
// particular call returned rows — see the 2026-03-19 empty-result
|
|
290
286
|
// spec. A filter that matches nothing is a natural outcome, so it is
|
|
@@ -388,14 +384,18 @@ export function registerLogTools(server) {
|
|
|
388
384
|
const startNote = startFromText ? ` (starting from "${startFromText}")` : "";
|
|
389
385
|
const jsEvents = jsEventsFromEntries(logs, device ?? "all devices");
|
|
390
386
|
const jsFiltered = kind ? jsEvents.filter((e) => e.kind === kind) : jsEvents;
|
|
391
|
-
const jsRendered =
|
|
387
|
+
const jsRendered = renderWithRestartDividers(jsFiltered, logs, {
|
|
388
|
+
showDevice: logBuffers.size > 1,
|
|
389
|
+
maxLength: maxMessageLength,
|
|
390
|
+
verbose
|
|
391
|
+
});
|
|
392
392
|
return {
|
|
393
393
|
_emptyResult: bufferEmpty,
|
|
394
394
|
...(emptyReason && { _emptyReason: emptyReason }),
|
|
395
395
|
content: [
|
|
396
396
|
{
|
|
397
397
|
type: "text",
|
|
398
|
-
text: `${nativePrefix}React Native Console Logs (${jsFiltered.length} entries)${startNote}:\n\n${jsRendered}${gapWarning}${connectionWarning}`
|
|
398
|
+
text: `${nativePrefix}React Native Console Logs (${jsFiltered.length} entries)${startNote}:\n\n${jsRendered}${evictionNotice(logBuffer.droppedCount, "EXECBRO_LOG_BUFFER_SIZE")}${gapWarning}${connectionWarning}`
|
|
399
399
|
}
|
|
400
400
|
]
|
|
401
401
|
};
|
|
@@ -412,8 +412,7 @@ export function registerLogTools(server) {
|
|
|
412
412
|
"WORKFLOW: scan_metro -> search_logs(text=\"...\") -> if empty, get_logs to verify buffer populated.\n" +
|
|
413
413
|
"LIMITATIONS: Only matches text captured AFTER the app connected; won't find pre-connect logs.\n" +
|
|
414
414
|
"GOOD: search_logs({ text: \"TypeError\" })\n" +
|
|
415
|
-
"BAD: search_logs({ text: \"\" }) (use get_logs for a raw dump)\n"
|
|
416
|
-
"SEE ALSO: call get_usage_guide(topic=\"logs\") for the full console-debugging playbook.",
|
|
415
|
+
"BAD: search_logs({ text: \"\" }) (use get_logs for a raw dump)\n",
|
|
417
416
|
inputSchema: {
|
|
418
417
|
text: z.string().describe("Text to search for in log messages"),
|
|
419
418
|
maxResults: z.coerce
|
|
@@ -427,28 +426,12 @@ export function registerLogTools(server) {
|
|
|
427
426
|
.default(500)
|
|
428
427
|
.describe("Max characters per message (default: 500, set to 0 for unlimited)"),
|
|
429
428
|
verbose: z.boolean().optional().default(false).describe("Disable all truncation and return full messages"),
|
|
430
|
-
device: z.string().optional().describe(
|
|
429
|
+
device: z.string().optional().describe(DEVICE_ALL_DESC)
|
|
431
430
|
}
|
|
432
431
|
}, async ({ text, maxResults, maxMessageLength, verbose, device }) => {
|
|
433
|
-
//
|
|
434
|
-
//
|
|
435
|
-
|
|
436
|
-
const sdkAvailable = await isSDKInstalled(device);
|
|
437
|
-
if (sdkAvailable) {
|
|
438
|
-
const sdkResult = await querySDKConsole({ count: maxResults, text }, device);
|
|
439
|
-
if (sdkResult.success && sdkResult.data.length > 0) {
|
|
440
|
-
const entries = sdkResult.data;
|
|
441
|
-
const lines = entries.map((e) => {
|
|
442
|
-
const time = new Date(e.timestamp).toLocaleTimeString();
|
|
443
|
-
let msg = e.message;
|
|
444
|
-
if (!verbose && maxMessageLength > 0 && msg.length > maxMessageLength) {
|
|
445
|
-
msg = msg.slice(0, maxMessageLength) + "...";
|
|
446
|
-
}
|
|
447
|
-
return `[${time}] [${e.level.toUpperCase()}] ${msg}`;
|
|
448
|
-
});
|
|
449
|
-
return { content: [{ type: "text", text: `Search results for "${text}" (${entries.length} matches, SDK):\n\n${lines.join("\n")}` }] };
|
|
450
|
-
}
|
|
451
|
-
}
|
|
432
|
+
// The buffer already holds the SDK's entries (mirrored) plus the CDP
|
|
433
|
+
// console stream, across every app run. Refresh, then read once.
|
|
434
|
+
await refreshMirror(device);
|
|
452
435
|
const { count, formatted } = searchLogs(resolveLogBuffer(device), text, { maxResults, maxMessageLength, verbose });
|
|
453
436
|
// Check connection health
|
|
454
437
|
let connectionWarning = "";
|
|
@@ -479,10 +462,9 @@ export function registerLogTools(server) {
|
|
|
479
462
|
"WHEN TO USE: Before reproducing a bug so the resulting logs are isolated; between test iterations to avoid noise from earlier runs.\n" +
|
|
480
463
|
"WORKFLOW: clear_logs -> reproduce the issue (tap / navigate / reload_app) -> get_logs or search_logs.\n" +
|
|
481
464
|
"GOOD: clear_logs() right before tap(text=\"Submit\")\n" +
|
|
482
|
-
"BAD: clear_logs() AFTER the repro — you just deleted the evidence.\n"
|
|
483
|
-
"SEE ALSO: call get_usage_guide(topic=\"logs\") for the full console-debugging playbook.",
|
|
465
|
+
"BAD: clear_logs() AFTER the repro — you just deleted the evidence.\n",
|
|
484
466
|
inputSchema: {
|
|
485
|
-
device: z.string().optional().describe(
|
|
467
|
+
device: z.string().optional().describe(DEVICE_ALL_DESC)
|
|
486
468
|
}
|
|
487
469
|
}, async ({ device }) => {
|
|
488
470
|
if (device) {
|
|
@@ -539,8 +521,7 @@ export function registerLogTools(server) {
|
|
|
539
521
|
"WORKFLOW: get_logs -> copy the id (e.g. \"n7\") -> get_log_details(id=\"n7\").\n" +
|
|
540
522
|
"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
523
|
"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.",
|
|
524
|
+
"BAD: Guessing ids — always take them from get_logs.\n",
|
|
544
525
|
inputSchema: {
|
|
545
526
|
id: z.string().describe("Event id from get_logs (e.g. \"n7\")"),
|
|
546
527
|
maxLength: z.coerce
|