execbro 2.3.0 → 2.5.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/build/__tests__/helpers/fake-cdp-server.d.ts +0 -12
- package/build/__tests__/helpers/fake-cdp-server.d.ts.map +1 -1
- package/build/__tests__/helpers/fake-cdp-server.js +0 -22
- package/build/__tests__/helpers/fake-cdp-server.js.map +1 -1
- package/build/__tests__/helpers/tap-test-helpers.d.ts +0 -23
- package/build/__tests__/helpers/tap-test-helpers.d.ts.map +1 -1
- package/build/__tests__/helpers/tap-test-helpers.js +2 -29
- package/build/__tests__/helpers/tap-test-helpers.js.map +1 -1
- package/build/__tests__/integration/auto-reconnect.test.js +4 -14
- package/build/__tests__/integration/auto-reconnect.test.js.map +1 -1
- package/build/__tests__/integration/connection-health.test.js +1 -10
- package/build/__tests__/integration/connection-health.test.js.map +1 -1
- package/build/__tests__/integration/execute-in-app.test.js +1 -11
- package/build/__tests__/integration/execute-in-app.test.js.map +1 -1
- package/build/__tests__/integration/native-logs.test.js +0 -5
- package/build/__tests__/integration/native-logs.test.js.map +1 -1
- package/build/__tests__/integration/per-call-timeout.test.js +1 -5
- package/build/__tests__/integration/per-call-timeout.test.js.map +1 -1
- package/build/__tests__/integration/socket-close-midflight.test.js +2 -12
- package/build/__tests__/integration/socket-close-midflight.test.js.map +1 -1
- package/build/__tests__/integration/stale-target-probe.test.js +2 -17
- package/build/__tests__/integration/stale-target-probe.test.js.map +1 -1
- package/build/__tests__/integration/tap-strategies.test.js +2 -36
- package/build/__tests__/integration/tap-strategies.test.js.map +1 -1
- package/build/__tests__/integration/text-input.test.js +0 -39
- package/build/__tests__/integration/text-input.test.js.map +1 -1
- package/build/__tests__/integration/tools.test.js +1 -7
- package/build/__tests__/integration/tools.test.js.map +1 -1
- package/build/__tests__/setup.js +0 -2
- package/build/__tests__/setup.js.map +1 -1
- package/build/__tests__/unit/androidEmulatorAvds.test.js +0 -10
- package/build/__tests__/unit/androidEmulatorAvds.test.js.map +1 -1
- package/build/__tests__/unit/appContext.test.js +0 -2
- package/build/__tests__/unit/appContext.test.js.map +1 -1
- package/build/__tests__/unit/appRequest.test.js +0 -3
- package/build/__tests__/unit/appRequest.test.js.map +1 -1
- package/build/__tests__/unit/buildToken.test.js +0 -6
- package/build/__tests__/unit/buildToken.test.js.map +1 -1
- package/build/__tests__/unit/burst.test.js +0 -1
- package/build/__tests__/unit/burst.test.js.map +1 -1
- package/build/__tests__/unit/clearLogsNative.test.js +0 -8
- package/build/__tests__/unit/clearLogsNative.test.js.map +1 -1
- package/build/__tests__/unit/componentFormatNaming.test.js +0 -13
- package/build/__tests__/unit/componentFormatNaming.test.js.map +1 -1
- package/build/__tests__/unit/componentSource.test.js +0 -4
- package/build/__tests__/unit/componentSource.test.js.map +1 -1
- package/build/__tests__/unit/componentSourceResolve.test.js +0 -1
- package/build/__tests__/unit/componentSourceResolve.test.js.map +1 -1
- package/build/__tests__/unit/contextWiring.test.js +0 -3
- package/build/__tests__/unit/contextWiring.test.js.map +1 -1
- package/build/__tests__/unit/coordinateMiss.test.js +0 -16
- package/build/__tests__/unit/coordinateMiss.test.js.map +1 -1
- package/build/__tests__/unit/deviceDiscovery.test.js +0 -4
- package/build/__tests__/unit/deviceDiscovery.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolution.test.js +0 -2
- package/build/__tests__/unit/deviceResolution.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolver.test.js +0 -1
- package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js +0 -8
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -1
- package/build/__tests__/unit/epochRender.test.js +0 -3
- package/build/__tests__/unit/epochRender.test.js.map +1 -1
- package/build/__tests__/unit/errorCategorization.test.js +0 -18
- package/build/__tests__/unit/errorCategorization.test.js.map +1 -1
- package/build/__tests__/unit/exec.test.js +0 -1
- package/build/__tests__/unit/exec.test.js.map +1 -1
- package/build/__tests__/unit/executor.test.js +0 -15
- package/build/__tests__/unit/executor.test.js.map +1 -1
- package/build/__tests__/unit/findElementTreeReuse.test.js +0 -12
- package/build/__tests__/unit/findElementTreeReuse.test.js.map +1 -1
- package/build/__tests__/unit/fingerprint.test.js +0 -4
- package/build/__tests__/unit/fingerprint.test.js.map +1 -1
- package/build/__tests__/unit/focusedInputTools.test.js +0 -4
- package/build/__tests__/unit/focusedInputTools.test.js.map +1 -1
- package/build/__tests__/unit/getLogsEmptyContract.test.js +0 -30
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -1
- package/build/__tests__/unit/getLogsNativeSource.test.js +0 -22
- package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -1
- package/build/__tests__/unit/graphqlOperation.test.d.ts +2 -0
- package/build/__tests__/unit/graphqlOperation.test.d.ts.map +1 -0
- package/build/__tests__/unit/graphqlOperation.test.js +107 -0
- package/build/__tests__/unit/graphqlOperation.test.js.map +1 -0
- package/build/__tests__/unit/inputTarget.test.js +0 -16
- package/build/__tests__/unit/inputTarget.test.js.map +1 -1
- package/build/__tests__/unit/inputTextTool.test.js +0 -3
- package/build/__tests__/unit/inputTextTool.test.js.map +1 -1
- package/build/__tests__/unit/jsLogEvents.test.js +0 -3
- package/build/__tests__/unit/jsLogEvents.test.js.map +1 -1
- package/build/__tests__/unit/keyboardMetrics.test.js +0 -2
- package/build/__tests__/unit/keyboardMetrics.test.js.map +1 -1
- package/build/__tests__/unit/keyboardRaise.test.js +0 -2
- package/build/__tests__/unit/keyboardRaise.test.js.map +1 -1
- package/build/__tests__/unit/licenseGrace.test.js +1 -4
- package/build/__tests__/unit/licenseGrace.test.js.map +1 -1
- package/build/__tests__/unit/logEventFormat.test.js +0 -27
- package/build/__tests__/unit/logEventFormat.test.js.map +1 -1
- package/build/__tests__/unit/logEvents.test.js +1 -5
- package/build/__tests__/unit/logEvents.test.js.map +1 -1
- package/build/__tests__/unit/logGrouping.test.js +0 -2
- package/build/__tests__/unit/logGrouping.test.js.map +1 -1
- package/build/__tests__/unit/logOwnership.test.js +0 -11
- package/build/__tests__/unit/logOwnership.test.js.map +1 -1
- package/build/__tests__/unit/logRelevance.test.js +0 -6
- package/build/__tests__/unit/logRelevance.test.js.map +1 -1
- package/build/__tests__/unit/logSourceAndroid.test.js +0 -4
- package/build/__tests__/unit/logSourceAndroid.test.js.map +1 -1
- package/build/__tests__/unit/logSourceIos.test.js +0 -5
- package/build/__tests__/unit/logSourceIos.test.js.map +1 -1
- package/build/__tests__/unit/logs.test.js +0 -1
- package/build/__tests__/unit/logs.test.js.map +1 -1
- package/build/__tests__/unit/measureComponentTools.test.js +0 -1
- package/build/__tests__/unit/measureComponentTools.test.js.map +1 -1
- package/build/__tests__/unit/metro.test.js +0 -2
- package/build/__tests__/unit/metro.test.js.map +1 -1
- package/build/__tests__/unit/nativeInputValue.test.js +0 -4
- package/build/__tests__/unit/nativeInputValue.test.js.map +1 -1
- package/build/__tests__/unit/nativeLogs.test.js +1 -23
- package/build/__tests__/unit/nativeLogs.test.js.map +1 -1
- package/build/__tests__/unit/navigateVerify.test.js +0 -6
- package/build/__tests__/unit/navigateVerify.test.js.map +1 -1
- package/build/__tests__/unit/navigation.test.js +0 -5
- package/build/__tests__/unit/navigation.test.js.map +1 -1
- package/build/__tests__/unit/networkInterceptor.test.js +0 -2
- package/build/__tests__/unit/networkInterceptor.test.js.map +1 -1
- package/build/__tests__/unit/overlayGuard.test.d.ts +2 -0
- package/build/__tests__/unit/overlayGuard.test.d.ts.map +1 -0
- package/build/__tests__/unit/overlayGuard.test.js +123 -0
- package/build/__tests__/unit/overlayGuard.test.js.map +1 -0
- package/build/__tests__/unit/pendingExecutions.test.js +0 -6
- package/build/__tests__/unit/pendingExecutions.test.js.map +1 -1
- package/build/__tests__/unit/probe.test.js +0 -1
- package/build/__tests__/unit/probe.test.js.map +1 -1
- package/build/__tests__/unit/projectMemory.test.js +6 -7
- package/build/__tests__/unit/projectMemory.test.js.map +1 -1
- package/build/__tests__/unit/projectStore.test.js +2 -2
- package/build/__tests__/unit/projectStore.test.js.map +1 -1
- package/build/__tests__/unit/reloadAppAutoConnect.test.js +0 -9
- package/build/__tests__/unit/reloadAppAutoConnect.test.js.map +1 -1
- package/build/__tests__/unit/rnGlobalsBootstrap.test.js +3 -3
- package/build/__tests__/unit/rnGlobalsBootstrap.test.js.map +1 -1
- package/build/__tests__/unit/routeHistory.test.d.ts +2 -0
- package/build/__tests__/unit/routeHistory.test.d.ts.map +1 -0
- package/build/__tests__/unit/routeHistory.test.js +136 -0
- package/build/__tests__/unit/routeHistory.test.js.map +1 -0
- package/build/__tests__/unit/screenSpace.test.js +30 -13
- package/build/__tests__/unit/screenSpace.test.js.map +1 -1
- package/build/__tests__/unit/screenState.test.js +3 -6
- package/build/__tests__/unit/screenState.test.js.map +1 -1
- package/build/__tests__/unit/screenStateInputValue.test.js +0 -7
- package/build/__tests__/unit/screenStateInputValue.test.js.map +1 -1
- package/build/__tests__/unit/screenStateKeyboard.test.js +0 -1
- package/build/__tests__/unit/screenStateKeyboard.test.js.map +1 -1
- package/build/__tests__/unit/screenshot-diff.test.js +0 -6
- package/build/__tests__/unit/screenshot-diff.test.js.map +1 -1
- package/build/__tests__/unit/sdkMirrorPoller.test.js +0 -8
- package/build/__tests__/unit/sdkMirrorPoller.test.js.map +1 -1
- package/build/__tests__/unit/settleAndDiff.test.js +0 -11
- package/build/__tests__/unit/settleAndDiff.test.js.map +1 -1
- package/build/__tests__/unit/signedVerdict.test.js +0 -5
- package/build/__tests__/unit/signedVerdict.test.js.map +1 -1
- package/build/__tests__/unit/swipeDirection.test.js +6 -9
- package/build/__tests__/unit/swipeDirection.test.js.map +1 -1
- package/build/__tests__/unit/symbolicate.test.js +0 -1
- package/build/__tests__/unit/symbolicate.test.js.map +1 -1
- package/build/__tests__/unit/tap.test.js +2 -40
- package/build/__tests__/unit/tap.test.js.map +1 -1
- package/build/__tests__/unit/textEntry.test.js +0 -27
- package/build/__tests__/unit/textEntry.test.js.map +1 -1
- package/build/__tests__/unit/toolDescriptions.test.js +0 -40
- package/build/__tests__/unit/toolDescriptions.test.js.map +1 -1
- package/build/__tests__/unit/toolsJson.test.js +0 -10
- package/build/__tests__/unit/toolsJson.test.js.map +1 -1
- package/build/__tests__/unit/transportClassify.test.js +0 -20
- package/build/__tests__/unit/transportClassify.test.js.map +1 -1
- package/build/__tests__/unit/truncate.test.js +0 -5
- package/build/__tests__/unit/truncate.test.js.map +1 -1
- package/build/__tests__/unit/usageCache.test.js +0 -3
- package/build/__tests__/unit/usageCache.test.js.map +1 -1
- package/build/__tests__/unit/usageGate.test.js +1 -1
- package/build/__tests__/unit/usageGate.test.js.map +1 -1
- package/build/__tests__/unit/visibility.test.js +0 -8
- package/build/__tests__/unit/visibility.test.js.map +1 -1
- package/build/__tests__/unit/waitForMeasurements.test.js +2 -7
- package/build/__tests__/unit/waitForMeasurements.test.js.map +1 -1
- package/build/bin.js +0 -18
- package/build/bin.js.map +1 -1
- package/build/core/android.d.ts +0 -120
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +4 -259
- package/build/core/android.js.map +1 -1
- package/build/core/appContext.d.ts +0 -50
- package/build/core/appContext.d.ts.map +1 -1
- package/build/core/appContext.js +0 -50
- package/build/core/appContext.js.map +1 -1
- package/build/core/appDetection.d.ts +0 -16
- package/build/core/appDetection.d.ts.map +1 -1
- package/build/core/appDetection.js +0 -36
- package/build/core/appDetection.js.map +1 -1
- package/build/core/appRequest.d.ts +0 -12
- package/build/core/appRequest.d.ts.map +1 -1
- package/build/core/appRequest.js +0 -15
- package/build/core/appRequest.js.map +1 -1
- package/build/core/bufferConfig.d.ts +0 -2
- package/build/core/bufferConfig.d.ts.map +1 -1
- package/build/core/bufferConfig.js +0 -2
- package/build/core/bufferConfig.js.map +1 -1
- package/build/core/bundle.js +0 -40
- package/build/core/bundle.js.map +1 -1
- package/build/core/componentSearch.d.ts +0 -19
- package/build/core/componentSearch.d.ts.map +1 -1
- package/build/core/componentSearch.js +1 -22
- package/build/core/componentSearch.js.map +1 -1
- package/build/core/componentSource.d.ts +0 -21
- package/build/core/componentSource.d.ts.map +1 -1
- package/build/core/componentSource.js +0 -27
- package/build/core/componentSource.js.map +1 -1
- package/build/core/componentTree.js +0 -12
- package/build/core/componentTree.js.map +1 -1
- package/build/core/config.d.ts +0 -8
- package/build/core/config.d.ts.map +1 -1
- package/build/core/config.js +0 -10
- package/build/core/config.js.map +1 -1
- package/build/core/connection.d.ts +0 -76
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +15 -340
- package/build/core/connection.js.map +1 -1
- package/build/core/connectionState.d.ts +0 -78
- package/build/core/connectionState.d.ts.map +1 -1
- package/build/core/connectionState.js +4 -92
- package/build/core/connectionState.js.map +1 -1
- package/build/core/debugGlobals.js +0 -68
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/deviceDiscovery.d.ts +0 -5
- package/build/core/deviceDiscovery.d.ts.map +1 -1
- package/build/core/deviceDiscovery.js +0 -12
- package/build/core/deviceDiscovery.js.map +1 -1
- package/build/core/deviceResolver.d.ts +0 -10
- package/build/core/deviceResolver.d.ts.map +1 -1
- package/build/core/deviceResolver.js +0 -54
- package/build/core/deviceResolver.js.map +1 -1
- package/build/core/epochRender.d.ts +0 -12
- package/build/core/epochRender.d.ts.map +1 -1
- package/build/core/epochRender.js +0 -12
- package/build/core/epochRender.js.map +1 -1
- package/build/core/errorScreenParser.d.ts +0 -21
- package/build/core/errorScreenParser.d.ts.map +1 -1
- package/build/core/errorScreenParser.js +0 -50
- package/build/core/errorScreenParser.js.map +1 -1
- package/build/core/errors.d.ts +0 -15
- package/build/core/errors.d.ts.map +1 -1
- package/build/core/errors.js +0 -15
- package/build/core/errors.js.map +1 -1
- package/build/core/escapeNonAscii.d.ts +0 -9
- package/build/core/escapeNonAscii.d.ts.map +1 -1
- package/build/core/escapeNonAscii.js +1 -43
- package/build/core/escapeNonAscii.js.map +1 -1
- package/build/core/exec.d.ts +0 -12
- package/build/core/exec.d.ts.map +1 -1
- package/build/core/exec.js +2 -14
- package/build/core/exec.js.map +1 -1
- package/build/core/executor.js +0 -3
- package/build/core/executor.js.map +1 -1
- package/build/core/fastRefreshRecorder.js +0 -4
- package/build/core/fastRefreshRecorder.js.map +1 -1
- package/build/core/fastRefreshTools.js +0 -3
- package/build/core/fastRefreshTools.js.map +1 -1
- package/build/core/feedback.js +0 -4
- package/build/core/feedback.js.map +1 -1
- package/build/core/graphqlOperation.d.ts +13 -0
- package/build/core/graphqlOperation.d.ts.map +1 -0
- package/build/core/graphqlOperation.js +80 -0
- package/build/core/graphqlOperation.js.map +1 -0
- package/build/core/guides.d.ts +0 -10
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +0 -10
- package/build/core/guides.js.map +1 -1
- package/build/core/iconSemantics.d.ts +0 -15
- package/build/core/iconSemantics.d.ts.map +1 -1
- package/build/core/iconSemantics.js +0 -31
- package/build/core/iconSemantics.js.map +1 -1
- package/build/core/index.js +4 -47
- package/build/core/index.js.map +1 -1
- package/build/core/injected/visibility.d.ts +0 -30
- package/build/core/injected/visibility.d.ts.map +1 -1
- package/build/core/injected/visibility.js +0 -33
- package/build/core/injected/visibility.js.map +1 -1
- package/build/core/injectedFilters.d.ts +0 -28
- package/build/core/injectedFilters.d.ts.map +1 -1
- package/build/core/injectedFilters.js +0 -28
- package/build/core/injectedFilters.js.map +1 -1
- package/build/core/inputTarget.d.ts +1 -34
- package/build/core/inputTarget.d.ts.map +1 -1
- package/build/core/inputTarget.js +0 -26
- package/build/core/inputTarget.js.map +1 -1
- package/build/core/inputTargetTools.d.ts +0 -7
- package/build/core/inputTargetTools.d.ts.map +1 -1
- package/build/core/inputTargetTools.js +0 -7
- package/build/core/inputTargetTools.js.map +1 -1
- package/build/core/inspector.d.ts +0 -33
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +27 -40
- package/build/core/inspector.js.map +1 -1
- package/build/core/ios.d.ts +11 -122
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +32 -299
- package/build/core/ios.js.map +1 -1
- package/build/core/jsExecute.d.ts +0 -100
- package/build/core/jsExecute.d.ts.map +1 -1
- package/build/core/jsExecute.js +0 -261
- package/build/core/jsExecute.js.map +1 -1
- package/build/core/jsLogEvents.d.ts +0 -8
- package/build/core/jsLogEvents.d.ts.map +1 -1
- package/build/core/jsLogEvents.js +0 -8
- package/build/core/jsLogEvents.js.map +1 -1
- package/build/core/keyboardMetrics.js +0 -8
- package/build/core/keyboardMetrics.js.map +1 -1
- package/build/core/keyboardRaise.d.ts +0 -8
- package/build/core/keyboardRaise.d.ts.map +1 -1
- package/build/core/keyboardRaise.js +0 -23
- package/build/core/keyboardRaise.js.map +1 -1
- package/build/core/license.d.ts +0 -4
- package/build/core/license.d.ts.map +1 -1
- package/build/core/license.js +2 -55
- package/build/core/license.js.map +1 -1
- package/build/core/logDiagnosis.d.ts +0 -34
- package/build/core/logDiagnosis.d.ts.map +1 -1
- package/build/core/logDiagnosis.js +0 -15
- package/build/core/logDiagnosis.js.map +1 -1
- package/build/core/logEventFormat.d.ts +0 -1
- package/build/core/logEventFormat.d.ts.map +1 -1
- package/build/core/logEventFormat.js +0 -30
- package/build/core/logEventFormat.js.map +1 -1
- package/build/core/logEvents.d.ts +0 -54
- package/build/core/logEvents.d.ts.map +1 -1
- package/build/core/logEvents.js +0 -37
- package/build/core/logEvents.js.map +1 -1
- package/build/core/logGrouping.d.ts +0 -9
- package/build/core/logGrouping.d.ts.map +1 -1
- package/build/core/logGrouping.js +0 -17
- package/build/core/logGrouping.js.map +1 -1
- package/build/core/logOwnership.d.ts +0 -17
- package/build/core/logOwnership.d.ts.map +1 -1
- package/build/core/logOwnership.js +0 -34
- package/build/core/logOwnership.js.map +1 -1
- package/build/core/logRelevance.d.ts +0 -8
- package/build/core/logRelevance.d.ts.map +1 -1
- package/build/core/logRelevance.js +0 -15
- package/build/core/logRelevance.js.map +1 -1
- package/build/core/logSourceAndroid.d.ts +0 -8
- package/build/core/logSourceAndroid.d.ts.map +1 -1
- package/build/core/logSourceAndroid.js +0 -11
- package/build/core/logSourceAndroid.js.map +1 -1
- package/build/core/logSourceIos.d.ts +0 -8
- package/build/core/logSourceIos.d.ts.map +1 -1
- package/build/core/logSourceIos.js +1 -24
- package/build/core/logSourceIos.js.map +1 -1
- package/build/core/logbox.d.ts +0 -30
- package/build/core/logbox.d.ts.map +1 -1
- package/build/core/logbox.js +0 -43
- package/build/core/logbox.js.map +1 -1
- package/build/core/logs.d.ts +0 -6
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +0 -19
- package/build/core/logs.js.map +1 -1
- package/build/core/metro.d.ts +0 -14
- package/build/core/metro.d.ts.map +1 -1
- package/build/core/metro.js +1 -32
- package/build/core/metro.js.map +1 -1
- package/build/core/moduleRegistry.d.ts +0 -17
- package/build/core/moduleRegistry.d.ts.map +1 -1
- package/build/core/moduleRegistry.js +0 -17
- package/build/core/moduleRegistry.js.map +1 -1
- package/build/core/nativeInputValue.d.ts +0 -29
- package/build/core/nativeInputValue.d.ts.map +1 -1
- package/build/core/nativeInputValue.js +0 -18
- package/build/core/nativeInputValue.js.map +1 -1
- package/build/core/nativeLogs.d.ts +0 -47
- package/build/core/nativeLogs.d.ts.map +1 -1
- package/build/core/nativeLogs.js +0 -82
- package/build/core/nativeLogs.js.map +1 -1
- package/build/core/nativeOnlyHints.js +0 -4
- package/build/core/nativeOnlyHints.js.map +1 -1
- package/build/core/navigate.d.ts +0 -15
- package/build/core/navigate.d.ts.map +1 -1
- package/build/core/navigate.js +0 -22
- package/build/core/navigate.js.map +1 -1
- package/build/core/navigation.d.ts +0 -60
- package/build/core/navigation.d.ts.map +1 -1
- package/build/core/navigation.js +0 -60
- package/build/core/navigation.js.map +1 -1
- package/build/core/network.d.ts +0 -5
- package/build/core/network.d.ts.map +1 -1
- package/build/core/network.js +10 -31
- package/build/core/network.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +0 -19
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +3 -27
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/ocr.d.ts +0 -31
- package/build/core/ocr.d.ts.map +1 -1
- package/build/core/ocr.js +1 -71
- package/build/core/ocr.js.map +1 -1
- package/build/core/paths.js +0 -1
- package/build/core/paths.js.map +1 -1
- package/build/core/posthog.js +0 -7
- package/build/core/posthog.js.map +1 -1
- package/build/core/pressables.d.ts +0 -25
- package/build/core/pressables.d.ts.map +1 -1
- package/build/core/pressables.js +0 -37
- package/build/core/pressables.js.map +1 -1
- package/build/core/probe.d.ts +0 -9
- package/build/core/probe.d.ts.map +1 -1
- package/build/core/probe.js +0 -9
- package/build/core/probe.js.map +1 -1
- package/build/core/projectMemory.d.ts +0 -2
- package/build/core/projectMemory.d.ts.map +1 -1
- package/build/core/projectMemory.js +2 -7
- package/build/core/projectMemory.js.map +1 -1
- package/build/core/projectStore.d.ts +0 -18
- package/build/core/projectStore.d.ts.map +1 -1
- package/build/core/projectStore.js +0 -19
- package/build/core/projectStore.js.map +1 -1
- package/build/core/promiseHandles.d.ts +0 -13
- package/build/core/promiseHandles.d.ts.map +1 -1
- package/build/core/promiseHandles.js +0 -25
- package/build/core/promiseHandles.js.map +1 -1
- package/build/core/register.js +0 -44
- package/build/core/register.js.map +1 -1
- package/build/core/rnGlobalsBootstrap.d.ts +0 -13
- package/build/core/rnGlobalsBootstrap.d.ts.map +1 -1
- package/build/core/rnGlobalsBootstrap.js +0 -22
- package/build/core/rnGlobalsBootstrap.js.map +1 -1
- package/build/core/routeHistory.d.ts +24 -0
- package/build/core/routeHistory.d.ts.map +1 -0
- package/build/core/routeHistory.js +186 -0
- package/build/core/routeHistory.js.map +1 -0
- package/build/core/screenLayout.d.ts +0 -11
- package/build/core/screenLayout.d.ts.map +1 -1
- package/build/core/screenLayout.js +24 -61
- package/build/core/screenLayout.js.map +1 -1
- package/build/core/screenSpace.d.ts +32 -44
- package/build/core/screenSpace.d.ts.map +1 -1
- package/build/core/screenSpace.js +80 -46
- package/build/core/screenSpace.js.map +1 -1
- package/build/core/screenSpaceDevice.d.ts +0 -8
- package/build/core/screenSpaceDevice.d.ts.map +1 -1
- package/build/core/screenSpaceDevice.js +31 -14
- package/build/core/screenSpaceDevice.js.map +1 -1
- package/build/core/screenState.d.ts +2 -74
- package/build/core/screenState.d.ts.map +1 -1
- package/build/core/screenState.js +204 -145
- package/build/core/screenState.js.map +1 -1
- package/build/core/sdkBridge.js +0 -8
- package/build/core/sdkBridge.js.map +1 -1
- package/build/core/sdkMirrorPoller.d.ts +0 -18
- package/build/core/sdkMirrorPoller.d.ts.map +1 -1
- package/build/core/sdkMirrorPoller.js +0 -47
- package/build/core/sdkMirrorPoller.js.map +1 -1
- package/build/core/selectionBuffer.d.ts +0 -6
- package/build/core/selectionBuffer.d.ts.map +1 -1
- package/build/core/selectionBuffer.js +0 -5
- package/build/core/selectionBuffer.js.map +1 -1
- package/build/core/signedVerdict.js +0 -6
- package/build/core/signedVerdict.js.map +1 -1
- package/build/core/state.d.ts +0 -31
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +0 -57
- package/build/core/state.js.map +1 -1
- package/build/core/symbolicate.js +0 -11
- package/build/core/symbolicate.js.map +1 -1
- package/build/core/telemetry.d.ts +0 -47
- package/build/core/telemetry.d.ts.map +1 -1
- package/build/core/telemetry.js +1 -173
- package/build/core/telemetry.js.map +1 -1
- package/build/core/textEntry.d.ts +0 -34
- package/build/core/textEntry.d.ts.map +1 -1
- package/build/core/textEntry.js +0 -73
- package/build/core/textEntry.js.map +1 -1
- package/build/core/toolHelpers.d.ts +0 -12
- package/build/core/toolHelpers.d.ts.map +1 -1
- package/build/core/toolHelpers.js +2 -47
- package/build/core/toolHelpers.js.map +1 -1
- package/build/core/truncate.d.ts +0 -17
- package/build/core/truncate.d.ts.map +1 -1
- package/build/core/truncate.js +0 -32
- package/build/core/truncate.js.map +1 -1
- package/build/core/types.d.ts +0 -6
- package/build/core/types.d.ts.map +1 -1
- package/build/core/usageCache.js +0 -12
- package/build/core/usageCache.js.map +1 -1
- package/build/index.js +0 -18
- package/build/index.js.map +1 -1
- package/build/pro/coordinateMiss.d.ts +0 -30
- package/build/pro/coordinateMiss.d.ts.map +1 -1
- package/build/pro/coordinateMiss.js +0 -17
- package/build/pro/coordinateMiss.js.map +1 -1
- package/build/pro/overlayGuard.d.ts +27 -0
- package/build/pro/overlayGuard.d.ts.map +1 -0
- package/build/pro/overlayGuard.js +103 -0
- package/build/pro/overlayGuard.js.map +1 -0
- package/build/pro/screenshot-diff.js +4 -6
- package/build/pro/screenshot-diff.js.map +1 -1
- package/build/pro/tap.d.ts +0 -55
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +72 -316
- package/build/pro/tap.js.map +1 -1
- package/build/pro/usageGate.js +0 -9
- package/build/pro/usageGate.js.map +1 -1
- package/build/pro/usageNotifications.js +1 -13
- package/build/pro/usageNotifications.js.map +1 -1
- package/build/pro/verifyAction.d.ts +0 -13
- package/build/pro/verifyAction.d.ts.map +1 -1
- package/build/pro/verifyAction.js +0 -45
- package/build/pro/verifyAction.js.map +1 -1
- package/build/tools/_deviceArg.d.ts +0 -35
- package/build/tools/_deviceArg.d.ts.map +1 -1
- package/build/tools/_deviceArg.js +0 -35
- package/build/tools/_deviceArg.js.map +1 -1
- package/build/tools/accountTools.js +2 -2
- package/build/tools/accountTools.js.map +1 -1
- package/build/tools/bundleTools.js +0 -16
- package/build/tools/bundleTools.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +47 -53
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.js +1 -59
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/deviceTools.js +0 -11
- package/build/tools/deviceTools.js.map +1 -1
- package/build/tools/executionTools.js +1 -18
- package/build/tools/executionTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts +0 -10
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +0 -57
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts +0 -13
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +2 -126
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/metaTools.js +0 -10
- package/build/tools/metaTools.js.map +1 -1
- package/build/tools/networkTools.js +4 -43
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/requestTools.js +0 -5
- package/build/tools/requestTools.js.map +1 -1
- package/build/tools/screenshotTools.js +5 -111
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +2 -2
- package/tools.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textEntry.d.ts","sourceRoot":"","sources":["../../src/core/textEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAyC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvG,MAAM,MAAM,aAAa,GAAG;
|
|
1
|
+
{"version":3,"file":"textEntry.d.ts","sourceRoot":"","sources":["../../src/core/textEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAyC,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvG,MAAM,MAAM,aAAa,GAAG;IAExB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAClF,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzE,KAAK,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAKlC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAErD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;AAOF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAc5E;AAWD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAInD;AAmBD,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CA2MlG"}
|
package/build/core/textEntry.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { resolveWrittenField } from "./nativeInputValue.js";
|
|
2
|
-
/**
|
|
3
|
-
* Names the likely cause of a mismatch. The field's own keyboard settings
|
|
4
|
-
* transform text on the way in, and "landed differently" alone sends the
|
|
5
|
-
* reader hunting for a bug in the write when the write was fine.
|
|
6
|
-
*/
|
|
7
2
|
export function diagnoseMismatch(sent, landed) {
|
|
8
3
|
if (landed === null)
|
|
9
4
|
return "";
|
|
@@ -20,18 +15,7 @@ export function diagnoseMismatch(sent, landed) {
|
|
|
20
15
|
}
|
|
21
16
|
return "";
|
|
22
17
|
}
|
|
23
|
-
/**
|
|
24
|
-
* Whether the HID driver can express this text at all.
|
|
25
|
-
*
|
|
26
|
-
* AXe types US-keyboard HID keycodes: A-Z, a-z, 0-9, space and the ASCII
|
|
27
|
-
* symbols. Nothing outside that map has a keycode to send — which rules out
|
|
28
|
-
* Cyrillic and CJK, and equally Spanish accents (á, ñ, ü), a case that is easy
|
|
29
|
-
* to miss because the text otherwise looks Latin. `adb shell input text` is no
|
|
30
|
-
* better: non-ASCII throws a NullPointerException inside InputShellCommand.
|
|
31
|
-
*/
|
|
32
18
|
export function isHidTypeable(text) {
|
|
33
|
-
// Printable ASCII plus tab/newline. Deliberately excludes the C1 range and
|
|
34
|
-
// anything above 0x7E.
|
|
35
19
|
return /^[\x20-\x7E\t\n]*$/.test(text);
|
|
36
20
|
}
|
|
37
21
|
function queryOf(a) {
|
|
@@ -46,18 +30,8 @@ function queryOf(a) {
|
|
|
46
30
|
q.index = a.index;
|
|
47
31
|
return Object.keys(q).length > 0 ? q : undefined;
|
|
48
32
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Resolve -> focus -> write -> read back -> retry once -> raise keyboard.
|
|
51
|
-
*
|
|
52
|
-
* The read-back comparison is EXACT. The corruption reproduced on device is a
|
|
53
|
-
* reorder (CASEB -> CSEBA), which every loose check — length, non-empty,
|
|
54
|
-
* prefix — passes. A success from this function means the field holds the
|
|
55
|
-
* requested string, or it says it could not confirm that.
|
|
56
|
-
*/
|
|
57
33
|
export async function enterText(args, deps) {
|
|
58
34
|
const q = queryOf(args);
|
|
59
|
-
// 1. Resolve. A miss is a hard failure — this is precisely where the old
|
|
60
|
-
// tools typed into the void and reported success.
|
|
61
35
|
const target = await deps.runOp({ kind: "find" }, q, args.device);
|
|
62
36
|
if (!target.found) {
|
|
63
37
|
return {
|
|
@@ -68,8 +42,6 @@ export async function enterText(args, deps) {
|
|
|
68
42
|
...(target.totalInputs !== undefined && { totalInputs: target.totalInputs })
|
|
69
43
|
};
|
|
70
44
|
}
|
|
71
|
-
// 2. Focus it ourselves if needed. A tap reporting success does not
|
|
72
|
-
// guarantee React focus — reproduced on device.
|
|
73
45
|
if (!target.focused) {
|
|
74
46
|
const focused = await deps.runOp({ kind: "focus" }, q, args.device);
|
|
75
47
|
if (!focused.found)
|
|
@@ -77,11 +49,6 @@ export async function enterText(args, deps) {
|
|
|
77
49
|
if (!focused.ok)
|
|
78
50
|
return { success: false, error: focused.via ?? "could not focus the input" };
|
|
79
51
|
}
|
|
80
|
-
// An uncontrolled field's current text is not in props, so `target.value` is
|
|
81
|
-
// always null for one. Taking that as "" made append silently behave as
|
|
82
|
-
// replace, and the retry then CLEARED the field to make the wrong answer
|
|
83
|
-
// verify clean. The accessibility tree is the only place the real previous
|
|
84
|
-
// text exists, so it has to be read before `desired` is computed.
|
|
85
52
|
let nativeBefore = [];
|
|
86
53
|
const usesNativeReadBack = !target.controlled && deps.readNativeFields !== undefined;
|
|
87
54
|
let previous = target.value ?? "";
|
|
@@ -95,24 +62,6 @@ export async function enterText(args, deps) {
|
|
|
95
62
|
}
|
|
96
63
|
}
|
|
97
64
|
const desired = args.replace ? args.text : previous + args.text;
|
|
98
|
-
// Three paths, chosen by what the field can actually honour:
|
|
99
|
-
//
|
|
100
|
-
// controlled -> onChangeText. The value prop mirrors the text,
|
|
101
|
-
// so this both writes and stays verifiable.
|
|
102
|
-
// uncontrolled + handler, ASCII -> real keystrokes. The most faithful
|
|
103
|
-
// simulation, and the retry now catches its
|
|
104
|
-
// keystroke race, so the racy path is only taken
|
|
105
|
-
// where it can actually succeed.
|
|
106
|
-
// uncontrolled + handler, non-ASCII -> setNativeProps AND a direct
|
|
107
|
-
// onChangeText call. HID cannot express these
|
|
108
|
-
// characters at all, so faithfulness is not on
|
|
109
|
-
// offer; firing the handler is what keeps the
|
|
110
|
-
// app from missing text the field displays.
|
|
111
|
-
// uncontrolled, no handler -> setNativeProps. Nothing to fire.
|
|
112
|
-
// `fromEmpty` says whether the field was just cleared. It matters only for
|
|
113
|
-
// HID, which appends at the caret rather than setting a value: typing the
|
|
114
|
-
// delta into a populated field is right, but typing it into a cleared one
|
|
115
|
-
// would lose whatever came before.
|
|
116
65
|
const write = async (fromEmpty) => {
|
|
117
66
|
if (target.controlled) {
|
|
118
67
|
const r = await deps.runOp({ kind: "setValue", value: desired }, q, args.device);
|
|
@@ -125,9 +74,6 @@ export async function enterText(args, deps) {
|
|
|
125
74
|
const r = await deps.runOp({ kind: "setNative", value: desired }, q, args.device);
|
|
126
75
|
return { path: "native", ok: r.found && r.ok, error: r.found ? r.via : r.reason };
|
|
127
76
|
};
|
|
128
|
-
// `undefined` from readBack means "could not determine" and must surface as
|
|
129
|
-
// unverified — never as a mismatch, which is what comparing against an
|
|
130
|
-
// always-null read produced before.
|
|
131
77
|
const readBack = async () => {
|
|
132
78
|
if (target.controlled) {
|
|
133
79
|
const r = await deps.runOp({ kind: "read" }, q, args.device);
|
|
@@ -135,10 +81,6 @@ export async function enterText(args, deps) {
|
|
|
135
81
|
}
|
|
136
82
|
if (!usesNativeReadBack)
|
|
137
83
|
return undefined;
|
|
138
|
-
// A native write updates the view asynchronously, and the accessibility
|
|
139
|
-
// dump is a separate process — reading immediately captures the state
|
|
140
|
-
// from before the write. Poll until the text appears, then stop. Going
|
|
141
|
-
// through MCP hid this because the call latency happened to cover it.
|
|
142
84
|
const wait = deps.delay ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
143
85
|
let last;
|
|
144
86
|
for (const ms of [0, 250, 500]) {
|
|
@@ -156,15 +98,12 @@ export async function enterText(args, deps) {
|
|
|
156
98
|
}
|
|
157
99
|
return last;
|
|
158
100
|
};
|
|
159
|
-
// HID appends at the caret, so a replace must clear first or it concatenates.
|
|
160
101
|
const needsClearFirst = args.replace === true && !target.controlled && target.hasOnChangeText &&
|
|
161
102
|
isHidTypeable(args.text) && previous.length > 0;
|
|
162
103
|
if (needsClearFirst)
|
|
163
104
|
await deps.runOp({ kind: "clear" }, q, args.device);
|
|
164
105
|
const first = await write(needsClearFirst);
|
|
165
106
|
if (!first.ok) {
|
|
166
|
-
// A failed replace already cleared the field. Put it back rather than
|
|
167
|
-
// leaving the user's data destroyed with no mention of it.
|
|
168
107
|
if (args.replace && target.hasOnChangeText && previous.length > 0) {
|
|
169
108
|
const restored = await deps.runOp({ kind: "setValue", value: previous }, q, args.device);
|
|
170
109
|
return {
|
|
@@ -176,7 +115,6 @@ export async function enterText(args, deps) {
|
|
|
176
115
|
return { success: false, path: first.path, error: first.error ?? "write failed" };
|
|
177
116
|
}
|
|
178
117
|
let landed = await readBack();
|
|
179
|
-
// Could not read the field at all — say so instead of guessing either way.
|
|
180
118
|
if (landed === undefined) {
|
|
181
119
|
const keyboard = await deps.raise();
|
|
182
120
|
return {
|
|
@@ -193,19 +131,11 @@ export async function enterText(args, deps) {
|
|
|
193
131
|
let retried = false;
|
|
194
132
|
if (landed !== desired) {
|
|
195
133
|
retried = true;
|
|
196
|
-
// Clear only for HID, which appends at the caret. The other paths set
|
|
197
|
-
// the whole value, so a clear is redundant — and actively harmful:
|
|
198
|
-
// publicInstance.clear() after HID typing races the setNativeProps that
|
|
199
|
-
// follows and wipes it, which made every non-ASCII retry land empty.
|
|
200
134
|
const clearedForRetry = first.path === "hid";
|
|
201
135
|
if (clearedForRetry) {
|
|
202
136
|
await deps.runOp({ kind: "clear" }, q, args.device);
|
|
203
137
|
}
|
|
204
138
|
else {
|
|
205
|
-
// A native write immediately after another input operation is
|
|
206
|
-
// sometimes swallowed — the value simply does not change. Give the
|
|
207
|
-
// previous operation a beat to settle before rewriting, rather than
|
|
208
|
-
// repeating the same call into the same contention.
|
|
209
139
|
const wait = deps.delay ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
210
140
|
await wait(300);
|
|
211
141
|
}
|
|
@@ -216,8 +146,6 @@ export async function enterText(args, deps) {
|
|
|
216
146
|
landed = await readBack();
|
|
217
147
|
}
|
|
218
148
|
if (landed !== desired) {
|
|
219
|
-
// A read that failed only on the retry is still "unconfirmed", not a
|
|
220
|
-
// mismatch — we have no evidence about what the field holds.
|
|
221
149
|
if (landed === undefined) {
|
|
222
150
|
const keyboard = await deps.raise();
|
|
223
151
|
return {
|
|
@@ -238,7 +166,6 @@ export async function enterText(args, deps) {
|
|
|
238
166
|
: "")
|
|
239
167
|
};
|
|
240
168
|
}
|
|
241
|
-
// Last, and never fatal.
|
|
242
169
|
const keyboard = await deps.raise();
|
|
243
170
|
return {
|
|
244
171
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textEntry.js","sourceRoot":"","sources":["../../src/core/textEntry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAA6C,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"textEntry.js","sourceRoot":"","sources":["../../src/core/textEntry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { LogBuffer, NetworkBuffer } from "./index.js";
|
|
2
2
|
export declare function resolveLogBuffer(device?: string): LogBuffer;
|
|
3
3
|
export declare function resolveNetworkBuffer(device?: string): NetworkBuffer;
|
|
4
|
-
/**
|
|
5
|
-
* Parse JPEG dimensions from a raw buffer by scanning for the SOF marker.
|
|
6
|
-
* Only needs the first ~2KB of the image to find dimensions.
|
|
7
|
-
*/
|
|
8
4
|
export declare function getJpegDimensions(buffer: Buffer): {
|
|
9
5
|
width: number;
|
|
10
6
|
height: number;
|
|
@@ -12,13 +8,5 @@ export declare function getJpegDimensions(buffer: Buffer): {
|
|
|
12
8
|
export declare const platformFallbackBanner: (prefer: string) => string;
|
|
13
9
|
export declare const platformUniqueBanner: (useCase: string) => string;
|
|
14
10
|
export declare const primaryInteractionBanner: () => string;
|
|
15
|
-
/**
|
|
16
|
-
* Estimate how many tokens an image will consume in Claude's vision encoder.
|
|
17
|
-
* Per Anthropic docs, Claude auto-resizes images to fit within:
|
|
18
|
-
* 1) 1568px on any side, AND
|
|
19
|
-
* 2) ~1.15 megapixels total (whichever is hit first)
|
|
20
|
-
* Then tokens ≈ (width * height) / 750 (capped at ~1,600 per image).
|
|
21
|
-
* We only decode the first ~2KB of the base64 string to read JPEG dimensions.
|
|
22
|
-
*/
|
|
23
11
|
export declare function estimateImageTokens(base64Data: string): number;
|
|
24
12
|
//# sourceMappingURL=toolHelpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolHelpers.d.ts","sourceRoot":"","sources":["../../src/core/toolHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,SAAS,EACT,aAAa,EAChB,MAAM,YAAY,CAAC;AA0CpB,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAY3D;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAqBnE;
|
|
1
|
+
{"version":3,"file":"toolHelpers.d.ts","sourceRoot":"","sources":["../../src/core/toolHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,SAAS,EACT,aAAa,EAChB,MAAM,YAAY,CAAC;AA0CpB,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAY3D;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAqBnE;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoB1F;AAOD,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,KAAG,MACwC,CAAC;AAEjG,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,KAAG,MACwB,CAAC;AAEhF,eAAO,MAAM,wBAAwB,QAAO,MACuD,CAAC;AAUpG,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA8B9D"}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { logBuffers, networkBuffers, getLogBuffer, getNetworkBuffer, getConnectedAppByDevice, LogBuffer, NetworkBuffer, } from "./index.js";
|
|
2
2
|
import { UserInputError } from "./errors.js";
|
|
3
|
-
/**
|
|
4
|
-
* Find a buffered device name matching `device` when no app is currently
|
|
5
|
-
* connected. Data outlives the connection now, so a read during the window
|
|
6
|
-
* between an app being killed and reconnecting must still resolve — otherwise
|
|
7
|
-
* the retained pre-restart entries are unreachable exactly when they matter.
|
|
8
|
-
*/
|
|
9
3
|
function bufferedDeviceName(device, keys) {
|
|
10
4
|
const needle = device.toLowerCase();
|
|
11
5
|
for (const key of keys) {
|
|
@@ -14,14 +8,6 @@ function bufferedDeviceName(device, keys) {
|
|
|
14
8
|
}
|
|
15
9
|
return undefined;
|
|
16
10
|
}
|
|
17
|
-
/**
|
|
18
|
-
* Resolve the buffer key for `device`.
|
|
19
|
-
*
|
|
20
|
-
* Prefers a live connection (authoritative, and handles ambiguity), but
|
|
21
|
-
* getConnectedAppByDevice throws when nothing is connected — so fall back to a
|
|
22
|
-
* buffered device name before giving up, and rethrow the original, richer
|
|
23
|
-
* error when there is no buffered data either.
|
|
24
|
-
*/
|
|
25
11
|
function resolveBufferKey(device, bufferKeys) {
|
|
26
12
|
try {
|
|
27
13
|
const app = getConnectedAppByDevice(device);
|
|
@@ -40,12 +26,10 @@ function resolveBufferKey(device, bufferKeys) {
|
|
|
40
26
|
return buffered;
|
|
41
27
|
throw new UserInputError(`No connected device matches "${device}"`);
|
|
42
28
|
}
|
|
43
|
-
// Helper: resolve log buffer for a device (or create a merged buffer from all devices)
|
|
44
29
|
export function resolveLogBuffer(device) {
|
|
45
30
|
if (device) {
|
|
46
31
|
return getLogBuffer(resolveBufferKey(device, logBuffers.keys()));
|
|
47
32
|
}
|
|
48
|
-
// Merge all logs into a temporary buffer for read operations
|
|
49
33
|
const merged = new LogBuffer(5000);
|
|
50
34
|
for (const buffer of logBuffers.values()) {
|
|
51
35
|
for (const entry of buffer.getAll()) {
|
|
@@ -54,17 +38,10 @@ export function resolveLogBuffer(device) {
|
|
|
54
38
|
}
|
|
55
39
|
return merged;
|
|
56
40
|
}
|
|
57
|
-
// Helper: resolve network buffer for a device (or create a merged buffer from all devices)
|
|
58
41
|
export function resolveNetworkBuffer(device) {
|
|
59
42
|
if (device) {
|
|
60
43
|
return getNetworkBuffer(resolveBufferKey(device, networkBuffers.keys()));
|
|
61
44
|
}
|
|
62
|
-
// Merge all network requests into a temporary buffer for read operations.
|
|
63
|
-
// Key by the request's own id so get(requestId) works — earlier this used
|
|
64
|
-
// Math.random() which made every direct lookup miss while listings still
|
|
65
|
-
// appeared correct (listings render req.requestId from the value).
|
|
66
|
-
// Multiple devices can share a request id; suffix with deviceName for
|
|
67
|
-
// collisions so we don't lose entries.
|
|
68
45
|
const merged = new NetworkBuffer(5000);
|
|
69
46
|
const seen = new Set();
|
|
70
47
|
for (const [deviceName, buffer] of networkBuffers.entries()) {
|
|
@@ -78,10 +55,6 @@ export function resolveNetworkBuffer(device) {
|
|
|
78
55
|
}
|
|
79
56
|
return merged;
|
|
80
57
|
}
|
|
81
|
-
/**
|
|
82
|
-
* Parse JPEG dimensions from a raw buffer by scanning for the SOF marker.
|
|
83
|
-
* Only needs the first ~2KB of the image to find dimensions.
|
|
84
|
-
*/
|
|
85
58
|
export function getJpegDimensions(buffer) {
|
|
86
59
|
if (buffer.length < 4 || buffer[0] !== 0xff || buffer[1] !== 0xd8)
|
|
87
60
|
return null;
|
|
@@ -90,51 +63,33 @@ export function getJpegDimensions(buffer) {
|
|
|
90
63
|
if (buffer[offset] !== 0xff)
|
|
91
64
|
return null;
|
|
92
65
|
const marker = buffer[offset + 1];
|
|
93
|
-
// SOF markers: C0-CF except C4 (DHT) and CC (DAC)
|
|
94
66
|
if (marker >= 0xc0 && marker <= 0xcf && marker !== 0xc4 && marker !== 0xcc) {
|
|
95
67
|
const height = buffer.readUInt16BE(offset + 5);
|
|
96
68
|
const width = buffer.readUInt16BE(offset + 7);
|
|
97
69
|
return { width, height };
|
|
98
70
|
}
|
|
99
|
-
// Skip segment (read its length)
|
|
100
71
|
const segLength = buffer.readUInt16BE(offset + 2);
|
|
101
72
|
offset += 2 + segLength;
|
|
102
73
|
}
|
|
103
74
|
return null;
|
|
104
75
|
}
|
|
105
|
-
// Banner helpers for platform-specific tool descriptions. Appended after the
|
|
106
|
-
// verbatim first sentence of every ios_*/android_* tool to steer agents toward
|
|
107
|
-
// cross-platform primaries (tap, get_screen_layout, etc) unless native-only
|
|
108
|
-
// behavior is required. See src/core/nativeOnlyHints.ts for the complementary
|
|
109
|
-
// runtime hint shown when Metro is absent.
|
|
110
76
|
export const platformFallbackBanner = (prefer) => `\n[PLATFORM FALLBACK — prefer ${prefer} unless you specifically need native-only behavior]`;
|
|
111
77
|
export const platformUniqueBanner = (useCase) => `\n[PLATFORM-SPECIFIC — no cross-platform equivalent; use when ${useCase}]`;
|
|
112
78
|
export const primaryInteractionBanner = () => `\n[PRIMARY INTERACTION TOOL — works on iOS and Android; prefer over ios_*/android_* siblings]`;
|
|
113
|
-
/**
|
|
114
|
-
* Estimate how many tokens an image will consume in Claude's vision encoder.
|
|
115
|
-
* Per Anthropic docs, Claude auto-resizes images to fit within:
|
|
116
|
-
* 1) 1568px on any side, AND
|
|
117
|
-
* 2) ~1.15 megapixels total (whichever is hit first)
|
|
118
|
-
* Then tokens ≈ (width * height) / 750 (capped at ~1,600 per image).
|
|
119
|
-
* We only decode the first ~2KB of the base64 string to read JPEG dimensions.
|
|
120
|
-
*/
|
|
121
79
|
export function estimateImageTokens(base64Data) {
|
|
122
80
|
try {
|
|
123
|
-
// Decode only the first ~2KB (2732 base64 chars ≈ 2048 bytes) to find JPEG header
|
|
124
81
|
const headerBase64 = base64Data.slice(0, 2732);
|
|
125
82
|
const buffer = Buffer.from(headerBase64, "base64");
|
|
126
83
|
const dims = getJpegDimensions(buffer);
|
|
127
84
|
if (!dims)
|
|
128
|
-
return Math.ceil(base64Data.length / 4);
|
|
85
|
+
return Math.ceil(base64Data.length / 4);
|
|
129
86
|
let { width, height } = dims;
|
|
130
|
-
// Step 1: Claude resizes to fit within 1568px on any side
|
|
131
87
|
const MAX_CLAUDE_DIM = 1568;
|
|
132
88
|
if (width > MAX_CLAUDE_DIM || height > MAX_CLAUDE_DIM) {
|
|
133
89
|
const scale = MAX_CLAUDE_DIM / Math.max(width, height);
|
|
134
90
|
width = Math.round(width * scale);
|
|
135
91
|
height = Math.round(height * scale);
|
|
136
92
|
}
|
|
137
|
-
// Step 2: Claude further resizes to fit within ~1.15 megapixels
|
|
138
93
|
const MAX_PIXELS = 1_150_000;
|
|
139
94
|
if (width * height > MAX_PIXELS) {
|
|
140
95
|
const scale = Math.sqrt(MAX_PIXELS / (width * height));
|
|
@@ -144,7 +99,7 @@ export function estimateImageTokens(base64Data) {
|
|
|
144
99
|
return Math.ceil((width * height) / 750);
|
|
145
100
|
}
|
|
146
101
|
catch {
|
|
147
|
-
return Math.ceil(base64Data.length / 4);
|
|
102
|
+
return Math.ceil(base64Data.length / 4);
|
|
148
103
|
}
|
|
149
104
|
}
|
|
150
105
|
//# sourceMappingURL=toolHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolHelpers.js","sourceRoot":"","sources":["../../src/core/toolHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,aAAa,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"toolHelpers.js","sourceRoot":"","sources":["../../src/core/toolHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,aAAa,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C,SAAS,kBAAkB,CAAC,MAAc,EAAE,IAAsB;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,GAAG,CAAC;IACvD,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAUD,SAAS,gBAAgB,CAAC,MAAc,EAAE,UAA4B;IAClE,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,GAAG,EAAE,CAAC;YACN,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC;QAC1E,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,KAAK,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,IAAI,cAAc,CAAC,gCAAgC,MAAM,GAAG,CAAC,CAAC;AACxE,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC5C,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAGD,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAChD,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAOD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC;YACxB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,GAAG,GAAG,GAAG,GAAG,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAMD,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC5C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAGlC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC7B,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAOD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAc,EAAU,EAAE,CAC7D,iCAAiC,MAAM,qDAAqD,CAAC;AAEjG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAU,EAAE,CAC5D,iEAAiE,OAAO,GAAG,CAAC;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAW,EAAE,CACjD,+FAA+F,CAAC;AAUpG,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IAClD,IAAI,CAAC;QAED,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEnD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAG7B,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,IAAI,KAAK,GAAG,cAAc,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACvD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;YAClC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QACxC,CAAC;QAGD,MAAM,UAAU,GAAG,SAAS,CAAC;QAC7B,IAAI,KAAK,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;YACvD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;YAClC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC"}
|
package/build/core/truncate.d.ts
CHANGED
|
@@ -6,19 +6,10 @@ export interface TruncateBudget {
|
|
|
6
6
|
export interface TruncateResult {
|
|
7
7
|
value: unknown;
|
|
8
8
|
truncated: boolean;
|
|
9
|
-
/** null when the value fit without any bounding. */
|
|
10
9
|
appliedBudget: TruncateBudget | null;
|
|
11
10
|
originalBytes: number;
|
|
12
11
|
returnedBytes: number;
|
|
13
12
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Bound `value` so its serialised form fits within `maxBytes`.
|
|
16
|
-
*
|
|
17
|
-
* A value that already fits is returned untouched — identity matters because
|
|
18
|
-
* most reads are tiny (Boardwise's median redux read is 70 characters) and must
|
|
19
|
-
* not be reshaped. Otherwise budgets are tried loosest-first so the caller
|
|
20
|
-
* keeps as much structure as the target allows.
|
|
21
|
-
*/
|
|
22
13
|
export declare function truncateToBudget(value: unknown, maxBytes: number, explicit?: Partial<TruncateBudget>, indent?: number): TruncateResult;
|
|
23
14
|
export declare const DEFAULT_MAX_BYTES = 25000;
|
|
24
15
|
export interface BudgetReport {
|
|
@@ -27,14 +18,6 @@ export interface BudgetReport {
|
|
|
27
18
|
returnedBytes: number;
|
|
28
19
|
appliedBudget: TruncateBudget | null;
|
|
29
20
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Bound an already-serialised tool result.
|
|
32
|
-
*
|
|
33
|
-
* Results reach us as strings: JSON for objects, a plain scalar rendering
|
|
34
|
-
* otherwise. Re-parse JSON so bounding is structural — markers then carry real
|
|
35
|
-
* array lengths and key counts, which is what lets a caller decide the next,
|
|
36
|
-
* narrower read. Non-JSON text has no structure to exploit, so it is clipped.
|
|
37
|
-
*/
|
|
38
21
|
export declare function applyResultBudget(text: string, maxBytes?: number, explicit?: Partial<TruncateBudget>): {
|
|
39
22
|
text: string;
|
|
40
23
|
budget: BudgetReport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/core/truncate.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/core/truncate.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IAEnB,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAoFD,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAClC,MAAM,GAAE,MAAU,GACnB,cAAc,CAqChB;AAED,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC;AAUD,wBAAgB,iBAAiB,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA0B,EACpC,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CA2CxC"}
|
package/build/core/truncate.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// Ordered loosest-to-tightest. The middle three are the budgets measured
|
|
2
|
-
// against astro-app's live 1,625,530-byte contentApi slice, which they reduced
|
|
3
|
-
// to 28,806 / 10,486 / 7,746 bytes respectively.
|
|
4
1
|
const BUDGET_LADDER = [
|
|
5
2
|
{ maxDepth: 8, maxArrayItems: 50, maxStringLength: 1000 },
|
|
6
3
|
{ maxDepth: 6, maxArrayItems: 20, maxStringLength: 400 },
|
|
@@ -10,21 +7,12 @@ const BUDGET_LADDER = [
|
|
|
10
7
|
{ maxDepth: 2, maxArrayItems: 2, maxStringLength: 40 },
|
|
11
8
|
{ maxDepth: 1, maxArrayItems: 1, maxStringLength: 20 }
|
|
12
9
|
];
|
|
13
|
-
/**
|
|
14
|
-
* Size of `value` as it will actually be rendered.
|
|
15
|
-
*
|
|
16
|
-
* `indent` must match the indentation the caller will serialise with —
|
|
17
|
-
* pretty-printing inflates output substantially, so measuring compact JSON and
|
|
18
|
-
* emitting indented JSON lets results exceed the budget they were bounded to.
|
|
19
|
-
*/
|
|
20
10
|
function byteLength(value, indent) {
|
|
21
11
|
try {
|
|
22
12
|
const json = JSON.stringify(value, null, indent);
|
|
23
13
|
return json === undefined ? 0 : json.length;
|
|
24
14
|
}
|
|
25
15
|
catch {
|
|
26
|
-
// Circular or otherwise unserialisable — treat as over any budget so
|
|
27
|
-
// the caller falls through to a bounded walk that handles cycles.
|
|
28
16
|
return Number.MAX_SAFE_INTEGER;
|
|
29
17
|
}
|
|
30
18
|
}
|
|
@@ -39,7 +27,6 @@ function bound(value, budget, depth, seen) {
|
|
|
39
27
|
return s.slice(0, budget.maxStringLength) + "…+" + (s.length - budget.maxStringLength);
|
|
40
28
|
}
|
|
41
29
|
if (type !== "object") {
|
|
42
|
-
// Functions and symbols are not JSON values; name them rather than dropping.
|
|
43
30
|
if (type === "function")
|
|
44
31
|
return "[Function]";
|
|
45
32
|
if (type === "symbol")
|
|
@@ -73,14 +60,6 @@ function bound(value, budget, depth, seen) {
|
|
|
73
60
|
seen.delete(obj);
|
|
74
61
|
return out;
|
|
75
62
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Bound `value` so its serialised form fits within `maxBytes`.
|
|
78
|
-
*
|
|
79
|
-
* A value that already fits is returned untouched — identity matters because
|
|
80
|
-
* most reads are tiny (Boardwise's median redux read is 70 characters) and must
|
|
81
|
-
* not be reshaped. Otherwise budgets are tried loosest-first so the caller
|
|
82
|
-
* keeps as much structure as the target allows.
|
|
83
|
-
*/
|
|
84
63
|
export function truncateToBudget(value, maxBytes, explicit, indent = 0) {
|
|
85
64
|
const originalBytes = byteLength(value, indent);
|
|
86
65
|
const hasExplicit = explicit !== undefined && Object.keys(explicit).length > 0;
|
|
@@ -117,14 +96,6 @@ export function truncateToBudget(value, maxBytes, explicit, indent = 0) {
|
|
|
117
96
|
};
|
|
118
97
|
}
|
|
119
98
|
export const DEFAULT_MAX_BYTES = 25000;
|
|
120
|
-
/**
|
|
121
|
-
* Bound an already-serialised tool result.
|
|
122
|
-
*
|
|
123
|
-
* Results reach us as strings: JSON for objects, a plain scalar rendering
|
|
124
|
-
* otherwise. Re-parse JSON so bounding is structural — markers then carry real
|
|
125
|
-
* array lengths and key counts, which is what lets a caller decide the next,
|
|
126
|
-
* narrower read. Non-JSON text has no structure to exploit, so it is clipped.
|
|
127
|
-
*/
|
|
128
99
|
export function applyResultBudget(text, maxBytes = DEFAULT_MAX_BYTES, explicit) {
|
|
129
100
|
const originalBytes = text.length;
|
|
130
101
|
const hasExplicit = explicit !== undefined && Object.keys(explicit).length > 0;
|
|
@@ -143,7 +114,6 @@ export function applyResultBudget(text, maxBytes = DEFAULT_MAX_BYTES, explicit)
|
|
|
143
114
|
isJson = false;
|
|
144
115
|
}
|
|
145
116
|
if (!isJson) {
|
|
146
|
-
// Reserve room for the marker so the result still honours maxBytes.
|
|
147
117
|
const keep = Math.max(0, maxBytes - 40);
|
|
148
118
|
const clipped = text.slice(0, keep) + "…+" + (originalBytes - keep);
|
|
149
119
|
return {
|
|
@@ -151,8 +121,6 @@ export function applyResultBudget(text, maxBytes = DEFAULT_MAX_BYTES, explicit)
|
|
|
151
121
|
budget: { truncated: true, originalBytes, returnedBytes: clipped.length, appliedBudget: null }
|
|
152
122
|
};
|
|
153
123
|
}
|
|
154
|
-
// Measure at the same indentation we render with, or the ladder converges
|
|
155
|
-
// on a size we never emit.
|
|
156
124
|
const RENDER_INDENT = 2;
|
|
157
125
|
const result = truncateToBudget(parsed, maxBytes, explicit, RENDER_INDENT);
|
|
158
126
|
const rendered = JSON.stringify(result.value, null, RENDER_INDENT) ?? "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/core/truncate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/core/truncate.ts"],"names":[],"mappings":"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"}
|
package/build/core/types.d.ts
CHANGED
|
@@ -63,12 +63,6 @@ export interface ExceptionDetails {
|
|
|
63
63
|
export interface PendingExecution {
|
|
64
64
|
resolve: (result: ExecutionResult) => void;
|
|
65
65
|
timeoutId: NodeJS.Timeout;
|
|
66
|
-
/**
|
|
67
|
-
* The socket this call went out on. Lets a close handler fail exactly the
|
|
68
|
-
* calls that died with that socket instead of leaving them parked until
|
|
69
|
-
* their own timeout fires. Optional: callers that manage their own short
|
|
70
|
-
* timeout (e.g. the 2s health check) may omit it.
|
|
71
|
-
*/
|
|
72
66
|
ws?: unknown;
|
|
73
67
|
}
|
|
74
68
|
export interface ExecutionResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/build/core/usageCache.js
CHANGED
|
@@ -16,8 +16,6 @@ export function readUsageCache(expectedInstallationId, filePath = USAGE_FILE) {
|
|
|
16
16
|
}
|
|
17
17
|
const raw = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
18
18
|
if (raw?.v !== 2 || typeof raw.sig !== "string" || !raw.signed) {
|
|
19
|
-
// Legacy v1 or unknown shape — treated as absent (self-heals to v2
|
|
20
|
-
// on the next successful validate).
|
|
21
19
|
state = "missing";
|
|
22
20
|
return null;
|
|
23
21
|
}
|
|
@@ -50,15 +48,6 @@ export function writeUsageCache(usage, verdictSig, installationId, filePath = US
|
|
|
50
48
|
resetsAt: usage.resetsAt ?? null,
|
|
51
49
|
verdictFreshUntil: usage.verdictFreshUntil ?? "",
|
|
52
50
|
};
|
|
53
|
-
// Self-verify before persisting: writeUsageCache re-derives `signed` from
|
|
54
|
-
// the client-side usage object with `?? true` / `?? null` normalization
|
|
55
|
-
// that must match the server's own normalization byte-for-byte, or the
|
|
56
|
-
// signature won't verify on the next read. If the server ever emits a
|
|
57
|
-
// value that normalizes differently here than it did there (e.g. an
|
|
58
|
-
// undefined capActive), don't persist a cache that will fail its own
|
|
59
|
-
// round-trip — that would poison the cache into permanent invalid_sig
|
|
60
|
-
// and silently disable offline enforcement. Skipping the write instead
|
|
61
|
-
// fails open-and-loud: the next read just reports "missing".
|
|
62
51
|
if (!verifyVerdictSig(signed, verdictSig)) {
|
|
63
52
|
return;
|
|
64
53
|
}
|
|
@@ -70,7 +59,6 @@ export function writeUsageCache(usage, verdictSig, installationId, filePath = US
|
|
|
70
59
|
writeFileSync(filePath, JSON.stringify(file, null, 2));
|
|
71
60
|
}
|
|
72
61
|
catch {
|
|
73
|
-
// Best-effort — cache write must never affect tool flow.
|
|
74
62
|
}
|
|
75
63
|
}
|
|
76
64
|
//# sourceMappingURL=usageCache.js.map
|