claude-in-mobile 3.11.4 → 3.12.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/dist/adapters/platform-adapter.d.ts +8 -0
- package/dist/adapters/platform-adapter.d.ts.map +1 -1
- package/dist/adapters/platform-adapter.js +29 -0
- package/dist/adapters/platform-adapter.js.map +1 -1
- package/dist/adb/client.d.ts +7 -16
- package/dist/adb/client.d.ts.map +1 -1
- package/dist/adb/client.js +50 -274
- package/dist/adb/client.js.map +1 -1
- package/dist/adb/commands.d.ts +35 -0
- package/dist/adb/commands.d.ts.map +1 -0
- package/dist/adb/commands.js +35 -0
- package/dist/adb/commands.js.map +1 -0
- package/dist/adb/exec.d.ts +23 -0
- package/dist/adb/exec.d.ts.map +1 -0
- package/dist/adb/exec.js +98 -0
- package/dist/adb/exec.js.map +1 -0
- package/dist/adb/keycodes.d.ts +22 -0
- package/dist/adb/keycodes.d.ts.map +1 -0
- package/dist/adb/keycodes.js +69 -0
- package/dist/adb/keycodes.js.map +1 -0
- package/dist/adb/logcat.d.ts +23 -0
- package/dist/adb/logcat.d.ts.map +1 -0
- package/dist/adb/logcat.js +40 -0
- package/dist/adb/logcat.js.map +1 -0
- package/dist/adb/parsers.d.ts +60 -0
- package/dist/adb/parsers.d.ts.map +1 -0
- package/dist/adb/parsers.js +118 -0
- package/dist/adb/parsers.js.map +1 -0
- package/dist/adb/text-escape.d.ts +23 -0
- package/dist/adb/text-escape.d.ts.map +1 -0
- package/dist/adb/text-escape.js +41 -0
- package/dist/adb/text-escape.js.map +1 -0
- package/dist/adb/ui-parser/diff-engine.d.ts +12 -0
- package/dist/adb/ui-parser/diff-engine.d.ts.map +1 -0
- package/dist/adb/ui-parser/diff-engine.js +71 -0
- package/dist/adb/ui-parser/diff-engine.js.map +1 -0
- package/dist/adb/ui-parser/element-builder.d.ts +12 -0
- package/dist/adb/ui-parser/element-builder.d.ts.map +1 -0
- package/dist/adb/ui-parser/element-builder.js +12 -0
- package/dist/adb/ui-parser/element-builder.js.map +1 -0
- package/dist/adb/ui-parser/element-finders.d.ts +51 -0
- package/dist/adb/ui-parser/element-finders.d.ts.map +1 -0
- package/dist/adb/ui-parser/element-finders.js +132 -0
- package/dist/adb/ui-parser/element-finders.js.map +1 -0
- package/dist/adb/ui-parser/formatters/compact.d.ts +7 -0
- package/dist/adb/ui-parser/formatters/compact.d.ts.map +1 -0
- package/dist/adb/ui-parser/formatters/compact.js +43 -0
- package/dist/adb/ui-parser/formatters/compact.js.map +1 -0
- package/dist/adb/ui-parser/formatters/full.d.ts +18 -0
- package/dist/adb/ui-parser/formatters/full.d.ts.map +1 -0
- package/dist/adb/ui-parser/formatters/full.js +124 -0
- package/dist/adb/ui-parser/formatters/full.js.map +1 -0
- package/dist/adb/ui-parser/formatters/index.d.ts +12 -0
- package/dist/adb/ui-parser/formatters/index.d.ts.map +1 -0
- package/dist/adb/ui-parser/formatters/index.js +13 -0
- package/dist/adb/ui-parser/formatters/index.js.map +1 -0
- package/dist/adb/ui-parser/formatters/semantic.d.ts +4 -0
- package/dist/adb/ui-parser/formatters/semantic.d.ts.map +1 -0
- package/dist/adb/ui-parser/formatters/semantic.js +37 -0
- package/dist/adb/ui-parser/formatters/semantic.js.map +1 -0
- package/dist/adb/ui-parser/node-parser.d.ts +12 -0
- package/dist/adb/ui-parser/node-parser.d.ts.map +1 -0
- package/dist/adb/ui-parser/node-parser.js +140 -0
- package/dist/adb/ui-parser/node-parser.js.map +1 -0
- package/dist/adb/ui-parser/screen-analyzer.d.ts +27 -0
- package/dist/adb/ui-parser/screen-analyzer.d.ts.map +1 -0
- package/dist/adb/ui-parser/screen-analyzer.js +209 -0
- package/dist/adb/ui-parser/screen-analyzer.js.map +1 -0
- package/dist/adb/ui-parser/types.d.ts +99 -0
- package/dist/adb/ui-parser/types.d.ts.map +1 -0
- package/dist/adb/ui-parser/types.js +9 -0
- package/dist/adb/ui-parser/types.js.map +1 -0
- package/dist/adb/ui-parser.d.ts +12 -203
- package/dist/adb/ui-parser.d.ts.map +1 -1
- package/dist/adb/ui-parser.js +13 -786
- package/dist/adb/ui-parser.js.map +1 -1
- package/dist/adb/ui-scoring.d.ts +35 -0
- package/dist/adb/ui-scoring.d.ts.map +1 -0
- package/dist/adb/ui-scoring.js +61 -0
- package/dist/adb/ui-scoring.js.map +1 -0
- package/dist/adb/ui-tree-cache.d.ts +22 -0
- package/dist/adb/ui-tree-cache.d.ts.map +1 -0
- package/dist/adb/ui-tree-cache.js +33 -0
- package/dist/adb/ui-tree-cache.js.map +1 -0
- package/dist/browser/cdp-helpers.d.ts +17 -0
- package/dist/browser/cdp-helpers.d.ts.map +1 -0
- package/dist/browser/cdp-helpers.js +79 -0
- package/dist/browser/cdp-helpers.js.map +1 -0
- package/dist/browser/cdp-types.d.ts +1 -0
- package/dist/browser/cdp-types.d.ts.map +1 -1
- package/dist/browser/client.d.ts +0 -4
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/client.js +51 -201
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/index.d.ts +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/key-map.d.ts +16 -0
- package/dist/browser/key-map.d.ts.map +1 -0
- package/dist/browser/key-map.js +35 -0
- package/dist/browser/key-map.js.map +1 -0
- package/dist/browser/snapshot-builder.d.ts +4 -0
- package/dist/browser/snapshot-builder.d.ts.map +1 -0
- package/dist/browser/snapshot-builder.js +76 -0
- package/dist/browser/snapshot-builder.js.map +1 -0
- package/dist/browser/types.d.ts +1 -1
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/browser/types.js +8 -6
- package/dist/browser/types.js.map +1 -1
- package/dist/constants/timeouts.d.ts +49 -0
- package/dist/constants/timeouts.d.ts.map +1 -0
- package/dist/constants/timeouts.js +49 -0
- package/dist/constants/timeouts.js.map +1 -0
- package/dist/constants/truncation.d.ts +12 -0
- package/dist/constants/truncation.d.ts.map +1 -0
- package/dist/constants/truncation.js +12 -0
- package/dist/constants/truncation.js.map +1 -0
- package/dist/desktop/client.d.ts +13 -9
- package/dist/desktop/client.d.ts.map +1 -1
- package/dist/desktop/client.js +58 -325
- package/dist/desktop/client.js.map +1 -1
- package/dist/desktop/launch-options.d.ts +13 -0
- package/dist/desktop/launch-options.d.ts.map +1 -0
- package/dist/desktop/launch-options.js +54 -0
- package/dist/desktop/launch-options.js.map +1 -0
- package/dist/desktop/launchers.d.ts +52 -0
- package/dist/desktop/launchers.d.ts.map +1 -0
- package/dist/desktop/launchers.js +125 -0
- package/dist/desktop/launchers.js.map +1 -0
- package/dist/desktop/log-ring.d.ts +21 -0
- package/dist/desktop/log-ring.d.ts.map +1 -0
- package/dist/desktop/log-ring.js +45 -0
- package/dist/desktop/log-ring.js.map +1 -0
- package/dist/desktop/permission-allowlist.d.ts +47 -0
- package/dist/desktop/permission-allowlist.d.ts.map +1 -0
- package/dist/desktop/permission-allowlist.js +148 -0
- package/dist/desktop/permission-allowlist.js.map +1 -0
- package/dist/device/client-cache.d.ts +22 -0
- package/dist/device/client-cache.d.ts.map +1 -0
- package/dist/device/client-cache.js +50 -0
- package/dist/device/client-cache.js.map +1 -0
- package/dist/device/device-resolver.d.ts +51 -0
- package/dist/device/device-resolver.d.ts.map +1 -0
- package/dist/device/device-resolver.js +63 -0
- package/dist/device/device-resolver.js.map +1 -0
- package/dist/device/kernel-device-locator.d.ts +39 -0
- package/dist/device/kernel-device-locator.d.ts.map +1 -0
- package/dist/device/kernel-device-locator.js +29 -0
- package/dist/device/kernel-device-locator.js.map +1 -0
- package/dist/device/proxies/app-proxy.d.ts +17 -0
- package/dist/device/proxies/app-proxy.d.ts.map +1 -0
- package/dist/device/proxies/app-proxy.js +36 -0
- package/dist/device/proxies/app-proxy.js.map +1 -0
- package/dist/device/proxies/desktop-facade.d.ts +42 -0
- package/dist/device/proxies/desktop-facade.d.ts.map +1 -0
- package/dist/device/proxies/desktop-facade.js +105 -0
- package/dist/device/proxies/desktop-facade.js.map +1 -0
- package/dist/device/proxies/device-facade.d.ts +47 -0
- package/dist/device/proxies/device-facade.d.ts.map +1 -0
- package/dist/device/proxies/device-facade.js +94 -0
- package/dist/device/proxies/device-facade.js.map +1 -0
- package/dist/device/proxies/input-proxy.d.ts +22 -0
- package/dist/device/proxies/input-proxy.d.ts.map +1 -0
- package/dist/device/proxies/input-proxy.js +42 -0
- package/dist/device/proxies/input-proxy.js.map +1 -0
- package/dist/device/proxies/log-proxy.d.ts +24 -0
- package/dist/device/proxies/log-proxy.d.ts.map +1 -0
- package/dist/device/proxies/log-proxy.js +44 -0
- package/dist/device/proxies/log-proxy.js.map +1 -0
- package/dist/device/proxies/permission-proxy.d.ts +16 -0
- package/dist/device/proxies/permission-proxy.d.ts.map +1 -0
- package/dist/device/proxies/permission-proxy.js +38 -0
- package/dist/device/proxies/permission-proxy.js.map +1 -0
- package/dist/device/proxies/screen-proxy.d.ts +30 -0
- package/dist/device/proxies/screen-proxy.d.ts.map +1 -0
- package/dist/device/proxies/screen-proxy.js +39 -0
- package/dist/device/proxies/screen-proxy.js.map +1 -0
- package/dist/device-manager.d.ts +58 -69
- package/dist/device-manager.d.ts.map +1 -1
- package/dist/device-manager.js +126 -352
- package/dist/device-manager.js.map +1 -1
- package/dist/errors/a11y.d.ts +8 -0
- package/dist/errors/a11y.d.ts.map +1 -0
- package/dist/errors/a11y.js +12 -0
- package/dist/errors/a11y.js.map +1 -0
- package/dist/errors/adb.d.ts +9 -0
- package/dist/errors/adb.d.ts.map +1 -0
- package/dist/errors/adb.js +37 -0
- package/dist/errors/adb.js.map +1 -0
- package/dist/errors/autopilot.d.ts +14 -0
- package/dist/errors/autopilot.d.ts.map +1 -0
- package/dist/errors/autopilot.js +22 -0
- package/dist/errors/autopilot.js.map +1 -0
- package/dist/errors/base.d.ts +20 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +45 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/browser.d.ts +23 -0
- package/dist/errors/browser.d.ts.map +1 -0
- package/dist/errors/browser.js +37 -0
- package/dist/errors/browser.js.map +1 -0
- package/dist/errors/device.d.ts +17 -0
- package/dist/errors/device.d.ts.map +1 -0
- package/dist/errors/device.js +29 -0
- package/dist/errors/device.js.map +1 -0
- package/dist/errors/index.d.ts +20 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +20 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/ios.d.ts +12 -0
- package/dist/errors/ios.d.ts.map +1 -0
- package/dist/errors/ios.js +30 -0
- package/dist/errors/ios.js.map +1 -0
- package/dist/errors/perf.d.ts +11 -0
- package/dist/errors/perf.d.ts.map +1 -0
- package/dist/errors/perf.js +17 -0
- package/dist/errors/perf.js.map +1 -0
- package/dist/errors/protocol.d.ts +8 -0
- package/dist/errors/protocol.d.ts.map +1 -0
- package/dist/errors/protocol.js +12 -0
- package/dist/errors/protocol.js.map +1 -0
- package/dist/errors/recorder.d.ts +17 -0
- package/dist/errors/recorder.d.ts.map +1 -0
- package/dist/errors/recorder.js +27 -0
- package/dist/errors/recorder.js.map +1 -0
- package/dist/errors/sync.d.ts +14 -0
- package/dist/errors/sync.d.ts.map +1 -0
- package/dist/errors/sync.js +22 -0
- package/dist/errors/sync.js.map +1 -0
- package/dist/errors/visual.d.ts +14 -0
- package/dist/errors/visual.d.ts.map +1 -0
- package/dist/errors/visual.js +22 -0
- package/dist/errors/visual.js.map +1 -0
- package/dist/errors.d.ts +4 -143
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +4 -292
- package/dist/errors.js.map +1 -1
- package/dist/index.js +54 -398
- package/dist/index.js.map +1 -1
- package/dist/ios/client.d.ts +7 -34
- package/dist/ios/client.d.ts.map +1 -1
- package/dist/ios/client.js +31 -181
- package/dist/ios/client.js.map +1 -1
- package/dist/ios/keymap.d.ts +20 -0
- package/dist/ios/keymap.d.ts.map +1 -0
- package/dist/ios/keymap.js +33 -0
- package/dist/ios/keymap.js.map +1 -0
- package/dist/ios/simctl-commands.d.ts +35 -0
- package/dist/ios/simctl-commands.d.ts.map +1 -0
- package/dist/ios/simctl-commands.js +60 -0
- package/dist/ios/simctl-commands.js.map +1 -0
- package/dist/ios/simctl-exec.d.ts +19 -0
- package/dist/ios/simctl-exec.d.ts.map +1 -0
- package/dist/ios/simctl-exec.js +55 -0
- package/dist/ios/simctl-exec.js.map +1 -0
- package/dist/ios/simctl-parsers.d.ts +10 -0
- package/dist/ios/simctl-parsers.d.ts.map +1 -0
- package/dist/ios/simctl-parsers.js +29 -0
- package/dist/ios/simctl-parsers.js.map +1 -0
- package/dist/ios/types.d.ts +8 -0
- package/dist/ios/types.d.ts.map +1 -0
- package/dist/ios/types.js +2 -0
- package/dist/ios/types.js.map +1 -0
- package/dist/ios/wda-errors.d.ts +8 -0
- package/dist/ios/wda-errors.d.ts.map +1 -0
- package/dist/ios/wda-errors.js +13 -0
- package/dist/ios/wda-errors.js.map +1 -0
- package/dist/ios/wda-payloads.d.ts +32 -0
- package/dist/ios/wda-payloads.d.ts.map +1 -0
- package/dist/ios/wda-payloads.js +31 -0
- package/dist/ios/wda-payloads.js.map +1 -0
- package/dist/kernel/external-loader.d.ts +47 -0
- package/dist/kernel/external-loader.d.ts.map +1 -0
- package/dist/kernel/external-loader.js +158 -0
- package/dist/kernel/external-loader.js.map +1 -0
- package/dist/platform-types.d.ts +34 -0
- package/dist/platform-types.d.ts.map +1 -0
- package/dist/platform-types.js +22 -0
- package/dist/platform-types.js.map +1 -0
- package/dist/plugins/builtin-tools/index.d.ts +40 -0
- package/dist/plugins/builtin-tools/index.d.ts.map +1 -0
- package/dist/plugins/builtin-tools/index.js +98 -0
- package/dist/plugins/builtin-tools/index.js.map +1 -0
- package/dist/runtime/bootstrap.d.ts +10 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/bootstrap.js +21 -0
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/cli.d.ts +12 -0
- package/dist/runtime/cli.d.ts.map +1 -0
- package/dist/runtime/cli.js +67 -0
- package/dist/runtime/cli.js.map +1 -0
- package/dist/runtime/mcp-instructions.d.ts +4 -0
- package/dist/runtime/mcp-instructions.d.ts.map +1 -0
- package/dist/runtime/mcp-instructions.js +28 -0
- package/dist/runtime/mcp-instructions.js.map +1 -0
- package/dist/runtime/mcp-server.d.ts +24 -0
- package/dist/runtime/mcp-server.d.ts.map +1 -0
- package/dist/runtime/mcp-server.js +138 -0
- package/dist/runtime/mcp-server.js.map +1 -0
- package/dist/runtime/runtime-context.d.ts +26 -0
- package/dist/runtime/runtime-context.d.ts.map +1 -0
- package/dist/runtime/runtime-context.js +36 -0
- package/dist/runtime/runtime-context.js.map +1 -0
- package/dist/tools/accessibility-tools.d.ts.map +1 -1
- package/dist/tools/accessibility-tools.js +70 -133
- package/dist/tools/accessibility-tools.js.map +1 -1
- package/dist/tools/app-tools.d.ts.map +1 -1
- package/dist/tools/app-tools.js +70 -95
- package/dist/tools/app-tools.js.map +1 -1
- package/dist/tools/aurora-tools.d.ts.map +1 -1
- package/dist/tools/aurora-tools.js +32 -34
- package/dist/tools/aurora-tools.js.map +1 -1
- package/dist/tools/autopilot-tools.d.ts.map +1 -1
- package/dist/tools/autopilot-tools.js +114 -166
- package/dist/tools/autopilot-tools.js.map +1 -1
- package/dist/tools/browser-tools.d.ts.map +1 -1
- package/dist/tools/browser-tools.js +204 -247
- package/dist/tools/browser-tools.js.map +1 -1
- package/dist/tools/clipboard-tools.d.ts.map +1 -1
- package/dist/tools/clipboard-tools.js +51 -69
- package/dist/tools/clipboard-tools.js.map +1 -1
- package/dist/tools/common-schema.d.ts +23 -0
- package/dist/tools/common-schema.d.ts.map +1 -0
- package/dist/tools/common-schema.js +32 -0
- package/dist/tools/common-schema.js.map +1 -0
- package/dist/tools/context/shared-state-class.d.ts +23 -0
- package/dist/tools/context/shared-state-class.d.ts.map +1 -0
- package/dist/tools/context/shared-state-class.js +30 -0
- package/dist/tools/context/shared-state-class.js.map +1 -0
- package/dist/tools/context/shared-state.d.ts +4 -2
- package/dist/tools/context/shared-state.d.ts.map +1 -1
- package/dist/tools/context/shared-state.js +12 -21
- package/dist/tools/context/shared-state.js.map +1 -1
- package/dist/tools/define-tool.d.ts +29 -0
- package/dist/tools/define-tool.d.ts.map +1 -0
- package/dist/tools/define-tool.js +46 -0
- package/dist/tools/define-tool.js.map +1 -0
- package/dist/tools/desktop-tools.d.ts.map +1 -1
- package/dist/tools/desktop-tools.js +112 -154
- package/dist/tools/desktop-tools.js.map +1 -1
- package/dist/tools/device-tools.d.ts.map +1 -1
- package/dist/tools/device-tools.js +46 -78
- package/dist/tools/device-tools.js.map +1 -1
- package/dist/tools/flow/batch.d.ts +2 -0
- package/dist/tools/flow/batch.d.ts.map +1 -0
- package/dist/tools/flow/batch.js +126 -0
- package/dist/tools/flow/batch.js.map +1 -0
- package/dist/tools/flow/common.d.ts +105 -0
- package/dist/tools/flow/common.d.ts.map +1 -0
- package/dist/tools/flow/common.js +210 -0
- package/dist/tools/flow/common.js.map +1 -0
- package/dist/tools/flow/parallel.d.ts +2 -0
- package/dist/tools/flow/parallel.d.ts.map +1 -0
- package/dist/tools/flow/parallel.js +59 -0
- package/dist/tools/flow/parallel.js.map +1 -0
- package/dist/tools/flow/run.d.ts +2 -0
- package/dist/tools/flow/run.d.ts.map +1 -0
- package/dist/tools/flow/run.js +264 -0
- package/dist/tools/flow/run.js.map +1 -0
- package/dist/tools/flow-tools.d.ts.map +1 -1
- package/dist/tools/flow-tools.js +4 -650
- package/dist/tools/flow-tools.js.map +1 -1
- package/dist/tools/helpers/dispatch.d.ts +25 -0
- package/dist/tools/helpers/dispatch.d.ts.map +1 -0
- package/dist/tools/helpers/dispatch.js +20 -0
- package/dist/tools/helpers/dispatch.js.map +1 -0
- package/dist/tools/huawei-tools.d.ts.map +1 -1
- package/dist/tools/huawei-tools.js +41 -69
- package/dist/tools/huawei-tools.js.map +1 -1
- package/dist/tools/intent-tools.d.ts.map +1 -1
- package/dist/tools/intent-tools.js +170 -264
- package/dist/tools/intent-tools.js.map +1 -1
- package/dist/tools/interaction-tools.d.ts.map +1 -1
- package/dist/tools/interaction-tools.js +137 -176
- package/dist/tools/interaction-tools.js.map +1 -1
- package/dist/tools/meta/accessibility-meta.d.ts +1 -1
- package/dist/tools/meta/accessibility-meta.d.ts.map +1 -1
- package/dist/tools/meta/autopilot-meta.d.ts +1 -1
- package/dist/tools/meta/autopilot-meta.d.ts.map +1 -1
- package/dist/tools/meta/desktop-meta.d.ts +1 -1
- package/dist/tools/meta/desktop-meta.d.ts.map +1 -1
- package/dist/tools/meta/flow-meta.d.ts +1 -1
- package/dist/tools/meta/flow-meta.d.ts.map +1 -1
- package/dist/tools/meta/index.d.ts +67 -0
- package/dist/tools/meta/index.d.ts.map +1 -0
- package/dist/tools/meta/index.js +176 -0
- package/dist/tools/meta/index.js.map +1 -0
- package/dist/tools/meta/input-meta.d.ts +1 -1
- package/dist/tools/meta/input-meta.d.ts.map +1 -1
- package/dist/tools/meta/intent-meta.d.ts +1 -1
- package/dist/tools/meta/intent-meta.d.ts.map +1 -1
- package/dist/tools/meta/network-meta.d.ts +1 -1
- package/dist/tools/meta/network-meta.d.ts.map +1 -1
- package/dist/tools/meta/performance-meta.d.ts +1 -1
- package/dist/tools/meta/performance-meta.d.ts.map +1 -1
- package/dist/tools/meta/recorder-meta.d.ts +1 -1
- package/dist/tools/meta/recorder-meta.d.ts.map +1 -1
- package/dist/tools/meta/sandbox-meta.d.ts +1 -1
- package/dist/tools/meta/sandbox-meta.d.ts.map +1 -1
- package/dist/tools/meta/screen-meta.d.ts +1 -1
- package/dist/tools/meta/screen-meta.d.ts.map +1 -1
- package/dist/tools/meta/sensor-meta.d.ts +1 -1
- package/dist/tools/meta/sensor-meta.d.ts.map +1 -1
- package/dist/tools/meta/sync-meta.d.ts +1 -1
- package/dist/tools/meta/sync-meta.d.ts.map +1 -1
- package/dist/tools/meta/ui-meta.d.ts +1 -1
- package/dist/tools/meta/ui-meta.d.ts.map +1 -1
- package/dist/tools/meta/visual-meta.d.ts +1 -1
- package/dist/tools/meta/visual-meta.d.ts.map +1 -1
- package/dist/tools/network-tools.d.ts +0 -8
- package/dist/tools/network-tools.d.ts.map +1 -1
- package/dist/tools/network-tools.js +89 -184
- package/dist/tools/network-tools.js.map +1 -1
- package/dist/tools/performance/baseline.d.ts +2 -0
- package/dist/tools/performance/baseline.d.ts.map +1 -0
- package/dist/tools/performance/baseline.js +53 -0
- package/dist/tools/performance/baseline.js.map +1 -0
- package/dist/tools/performance/common.d.ts +47 -0
- package/dist/tools/performance/common.d.ts.map +1 -0
- package/dist/tools/performance/common.js +276 -0
- package/dist/tools/performance/common.js.map +1 -0
- package/dist/tools/performance/compare.d.ts +2 -0
- package/dist/tools/performance/compare.d.ts.map +1 -0
- package/dist/tools/performance/compare.js +58 -0
- package/dist/tools/performance/compare.js.map +1 -0
- package/dist/tools/performance/crashes.d.ts +2 -0
- package/dist/tools/performance/crashes.d.ts.map +1 -0
- package/dist/tools/performance/crashes.js +27 -0
- package/dist/tools/performance/crashes.js.map +1 -0
- package/dist/tools/performance/framestats.d.ts +2 -0
- package/dist/tools/performance/framestats.d.ts.map +1 -0
- package/dist/tools/performance/framestats.js +45 -0
- package/dist/tools/performance/framestats.js.map +1 -0
- package/dist/tools/performance/monitor.d.ts +2 -0
- package/dist/tools/performance/monitor.d.ts.map +1 -0
- package/dist/tools/performance/monitor.js +61 -0
- package/dist/tools/performance/monitor.js.map +1 -0
- package/dist/tools/performance/snapshot.d.ts +2 -0
- package/dist/tools/performance/snapshot.d.ts.map +1 -0
- package/dist/tools/performance/snapshot.js +26 -0
- package/dist/tools/performance/snapshot.js.map +1 -0
- package/dist/tools/performance-tools.d.ts.map +1 -1
- package/dist/tools/performance-tools.js +12 -578
- package/dist/tools/performance-tools.js.map +1 -1
- package/dist/tools/permission-tools.d.ts.map +1 -1
- package/dist/tools/permission-tools.js +44 -56
- package/dist/tools/permission-tools.js.map +1 -1
- package/dist/tools/recorder/capture.d.ts +6 -0
- package/dist/tools/recorder/capture.d.ts.map +1 -0
- package/dist/tools/recorder/capture.js +51 -0
- package/dist/tools/recorder/capture.js.map +1 -0
- package/dist/tools/recorder/index.d.ts +4 -0
- package/dist/tools/recorder/index.d.ts.map +1 -0
- package/dist/tools/recorder/index.js +4 -0
- package/dist/tools/recorder/index.js.map +1 -0
- package/dist/tools/recorder/playback.d.ts +26 -0
- package/dist/tools/recorder/playback.d.ts.map +1 -0
- package/dist/tools/recorder/playback.js +123 -0
- package/dist/tools/recorder/playback.js.map +1 -0
- package/dist/tools/recorder/redaction.d.ts +6 -0
- package/dist/tools/recorder/redaction.d.ts.map +1 -0
- package/dist/tools/recorder/redaction.js +58 -0
- package/dist/tools/recorder/redaction.js.map +1 -0
- package/dist/tools/recorder/tools.d.ts +3 -0
- package/dist/tools/recorder/tools.d.ts.map +1 -0
- package/dist/tools/recorder/tools.js +335 -0
- package/dist/tools/recorder/tools.js.map +1 -0
- package/dist/tools/recorder-state.d.ts +22 -0
- package/dist/tools/recorder-state.d.ts.map +1 -0
- package/dist/tools/recorder-state.js +18 -0
- package/dist/tools/recorder-state.js.map +1 -0
- package/dist/tools/recorder-tools.d.ts +3 -4
- package/dist/tools/recorder-tools.d.ts.map +1 -1
- package/dist/tools/recorder-tools.js +11 -597
- package/dist/tools/recorder-tools.js.map +1 -1
- package/dist/tools/registry-types.d.ts +15 -0
- package/dist/tools/registry-types.d.ts.map +1 -0
- package/dist/tools/registry-types.js +2 -0
- package/dist/tools/registry-types.js.map +1 -0
- package/dist/tools/registry.d.ts +11 -31
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +39 -219
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/rustore-tools.d.ts.map +1 -1
- package/dist/tools/rustore-tools.js +50 -86
- package/dist/tools/rustore-tools.js.map +1 -1
- package/dist/tools/sandbox/file-list.d.ts +2 -0
- package/dist/tools/sandbox/file-list.d.ts.map +1 -0
- package/dist/tools/sandbox/file-list.js +48 -0
- package/dist/tools/sandbox/file-list.js.map +1 -0
- package/dist/tools/sandbox/file-read.d.ts +2 -0
- package/dist/tools/sandbox/file-read.d.ts.map +1 -0
- package/dist/tools/sandbox/file-read.js +61 -0
- package/dist/tools/sandbox/file-read.js.map +1 -0
- package/dist/tools/sandbox/helpers.d.ts +22 -0
- package/dist/tools/sandbox/helpers.d.ts.map +1 -0
- package/dist/tools/sandbox/helpers.js +78 -0
- package/dist/tools/sandbox/helpers.js.map +1 -0
- package/dist/tools/sandbox/index.d.ts +7 -0
- package/dist/tools/sandbox/index.d.ts.map +1 -0
- package/dist/tools/sandbox/index.js +7 -0
- package/dist/tools/sandbox/index.js.map +1 -0
- package/dist/tools/sandbox/prefs-read.d.ts +2 -0
- package/dist/tools/sandbox/prefs-read.d.ts.map +1 -0
- package/dist/tools/sandbox/prefs-read.js +111 -0
- package/dist/tools/sandbox/prefs-read.js.map +1 -0
- package/dist/tools/sandbox/prefs-write.d.ts +2 -0
- package/dist/tools/sandbox/prefs-write.d.ts.map +1 -0
- package/dist/tools/sandbox/prefs-write.js +109 -0
- package/dist/tools/sandbox/prefs-write.js.map +1 -0
- package/dist/tools/sandbox/sqlite-query.d.ts +2 -0
- package/dist/tools/sandbox/sqlite-query.d.ts.map +1 -0
- package/dist/tools/sandbox/sqlite-query.js +75 -0
- package/dist/tools/sandbox/sqlite-query.js.map +1 -0
- package/dist/tools/sandbox/tools.d.ts +3 -0
- package/dist/tools/sandbox/tools.d.ts.map +1 -0
- package/dist/tools/sandbox/tools.js +13 -0
- package/dist/tools/sandbox/tools.js.map +1 -0
- package/dist/tools/sandbox-tools.d.ts +1 -2
- package/dist/tools/sandbox-tools.d.ts.map +1 -1
- package/dist/tools/sandbox-tools.js +3 -547
- package/dist/tools/sandbox-tools.js.map +1 -1
- package/dist/tools/screenshot-tools.d.ts.map +1 -1
- package/dist/tools/screenshot-tools.js +77 -100
- package/dist/tools/screenshot-tools.js.map +1 -1
- package/dist/tools/sensor/battery.d.ts +2 -0
- package/dist/tools/sensor/battery.d.ts.map +1 -0
- package/dist/tools/sensor/battery.js +75 -0
- package/dist/tools/sensor/battery.js.map +1 -0
- package/dist/tools/sensor/constants.d.ts +11 -0
- package/dist/tools/sensor/constants.d.ts.map +1 -0
- package/dist/tools/sensor/constants.js +24 -0
- package/dist/tools/sensor/constants.js.map +1 -0
- package/dist/tools/sensor/helpers.d.ts +7 -0
- package/dist/tools/sensor/helpers.d.ts.map +1 -0
- package/dist/tools/sensor/helpers.js +39 -0
- package/dist/tools/sensor/helpers.js.map +1 -0
- package/dist/tools/sensor/index.d.ts +7 -0
- package/dist/tools/sensor/index.d.ts.map +1 -0
- package/dist/tools/sensor/index.js +7 -0
- package/dist/tools/sensor/index.js.map +1 -0
- package/dist/tools/sensor/location.d.ts +2 -0
- package/dist/tools/sensor/location.d.ts.map +1 -0
- package/dist/tools/sensor/location.js +64 -0
- package/dist/tools/sensor/location.js.map +1 -0
- package/dist/tools/sensor/notifications-parser.d.ts +9 -0
- package/dist/tools/sensor/notifications-parser.d.ts.map +1 -0
- package/dist/tools/sensor/notifications-parser.js +53 -0
- package/dist/tools/sensor/notifications-parser.js.map +1 -0
- package/dist/tools/sensor/notifications.d.ts +2 -0
- package/dist/tools/sensor/notifications.d.ts.map +1 -0
- package/dist/tools/sensor/notifications.js +54 -0
- package/dist/tools/sensor/notifications.js.map +1 -0
- package/dist/tools/sensor/thermal.d.ts +2 -0
- package/dist/tools/sensor/thermal.d.ts.map +1 -0
- package/dist/tools/sensor/thermal.js +60 -0
- package/dist/tools/sensor/thermal.js.map +1 -0
- package/dist/tools/sensor/tools.d.ts +3 -0
- package/dist/tools/sensor/tools.d.ts.map +1 -0
- package/dist/tools/sensor/tools.js +11 -0
- package/dist/tools/sensor/tools.js.map +1 -0
- package/dist/tools/sensor-tools.d.ts +14 -2
- package/dist/tools/sensor-tools.d.ts.map +1 -1
- package/dist/tools/sensor-tools.js +11 -470
- package/dist/tools/sensor-tools.js.map +1 -1
- package/dist/tools/store-tools.d.ts.map +1 -1
- package/dist/tools/store-tools.js +78 -135
- package/dist/tools/store-tools.js.map +1 -1
- package/dist/tools/sync/assert-cross.d.ts +2 -0
- package/dist/tools/sync/assert-cross.d.ts.map +1 -0
- package/dist/tools/sync/assert-cross.js +99 -0
- package/dist/tools/sync/assert-cross.js.map +1 -0
- package/dist/tools/sync/common.d.ts +74 -0
- package/dist/tools/sync/common.d.ts.map +1 -0
- package/dist/tools/sync/common.js +286 -0
- package/dist/tools/sync/common.js.map +1 -0
- package/dist/tools/sync/create-group.d.ts +2 -0
- package/dist/tools/sync/create-group.d.ts.map +1 -0
- package/dist/tools/sync/create-group.js +52 -0
- package/dist/tools/sync/create-group.js.map +1 -0
- package/dist/tools/sync/destroy.d.ts +2 -0
- package/dist/tools/sync/destroy.d.ts.map +1 -0
- package/dist/tools/sync/destroy.js +20 -0
- package/dist/tools/sync/destroy.js.map +1 -0
- package/dist/tools/sync/list.d.ts +2 -0
- package/dist/tools/sync/list.d.ts.map +1 -0
- package/dist/tools/sync/list.js +22 -0
- package/dist/tools/sync/list.js.map +1 -0
- package/dist/tools/sync/run.d.ts +2 -0
- package/dist/tools/sync/run.d.ts.map +1 -0
- package/dist/tools/sync/run.js +44 -0
- package/dist/tools/sync/run.js.map +1 -0
- package/dist/tools/sync/status.d.ts +2 -0
- package/dist/tools/sync/status.d.ts.map +1 -0
- package/dist/tools/sync/status.js +33 -0
- package/dist/tools/sync/status.js.map +1 -0
- package/dist/tools/sync-tools.d.ts.map +1 -1
- package/dist/tools/sync-tools.js +13 -585
- package/dist/tools/sync-tools.js.map +1 -1
- package/dist/tools/system-tools.d.ts.map +1 -1
- package/dist/tools/system-tools.js +213 -282
- package/dist/tools/system-tools.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +50 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +224 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/ui/analyze.d.ts +2 -0
- package/dist/tools/ui/analyze.d.ts.map +1 -0
- package/dist/tools/ui/analyze.js +52 -0
- package/dist/tools/ui/analyze.js.map +1 -0
- package/dist/tools/ui/assert.d.ts +3 -0
- package/dist/tools/ui/assert.d.ts.map +1 -0
- package/dist/tools/ui/assert.js +61 -0
- package/dist/tools/ui/assert.js.map +1 -0
- package/dist/tools/ui/find.d.ts +4 -0
- package/dist/tools/ui/find.d.ts.map +1 -0
- package/dist/tools/ui/find.js +128 -0
- package/dist/tools/ui/find.js.map +1 -0
- package/dist/tools/ui/index.d.ts +6 -0
- package/dist/tools/ui/index.d.ts.map +1 -0
- package/dist/tools/ui/index.js +6 -0
- package/dist/tools/ui/index.js.map +1 -0
- package/dist/tools/ui/tree.d.ts +2 -0
- package/dist/tools/ui/tree.d.ts.map +1 -0
- package/dist/tools/ui/tree.js +60 -0
- package/dist/tools/ui/tree.js.map +1 -0
- package/dist/tools/ui/wait.d.ts +2 -0
- package/dist/tools/ui/wait.d.ts.map +1 -0
- package/dist/tools/ui/wait.js +56 -0
- package/dist/tools/ui/wait.js.map +1 -0
- package/dist/tools/ui-tools.d.ts +13 -0
- package/dist/tools/ui-tools.d.ts.map +1 -1
- package/dist/tools/ui-tools.js +22 -387
- package/dist/tools/ui-tools.js.map +1 -1
- package/dist/tools/visual-tools.d.ts.map +1 -1
- package/dist/tools/visual-tools.js +141 -193
- package/dist/tools/visual-tools.js.map +1 -1
- package/dist/utils/image/annotate.d.ts +9 -0
- package/dist/utils/image/annotate.d.ts.map +1 -0
- package/dist/utils/image/annotate.js +56 -0
- package/dist/utils/image/annotate.js.map +1 -0
- package/dist/utils/image/backend.d.ts +7 -0
- package/dist/utils/image/backend.d.ts.map +1 -0
- package/dist/utils/image/backend.js +25 -0
- package/dist/utils/image/backend.js.map +1 -0
- package/dist/utils/image/compare.d.ts +13 -0
- package/dist/utils/image/compare.d.ts.map +1 -0
- package/dist/utils/image/compare.js +72 -0
- package/dist/utils/image/compare.js.map +1 -0
- package/dist/utils/image/compress.d.ts +10 -0
- package/dist/utils/image/compress.d.ts.map +1 -0
- package/dist/utils/image/compress.js +132 -0
- package/dist/utils/image/compress.js.map +1 -0
- package/dist/utils/image/drawing.d.ts +19 -0
- package/dist/utils/image/drawing.d.ts.map +1 -0
- package/dist/utils/image/drawing.js +101 -0
- package/dist/utils/image/drawing.js.map +1 -0
- package/dist/utils/image/encode.d.ts +8 -0
- package/dist/utils/image/encode.d.ts.map +1 -0
- package/dist/utils/image/encode.js +10 -0
- package/dist/utils/image/encode.js.map +1 -0
- package/dist/utils/image/index.d.ts +10 -0
- package/dist/utils/image/index.d.ts.map +1 -0
- package/dist/utils/image/index.js +9 -0
- package/dist/utils/image/index.js.map +1 -0
- package/dist/utils/image/overlay.d.ts +10 -0
- package/dist/utils/image/overlay.d.ts.map +1 -0
- package/dist/utils/image/overlay.js +128 -0
- package/dist/utils/image/overlay.js.map +1 -0
- package/dist/utils/image/types.d.ts +62 -0
- package/dist/utils/image/types.d.ts.map +1 -0
- package/dist/utils/image/types.js +12 -0
- package/dist/utils/image/types.js.map +1 -0
- package/dist/utils/image.d.ts +16 -86
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +15 -527
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/parse-common-args.d.ts +14 -0
- package/dist/utils/parse-common-args.d.ts.map +1 -0
- package/dist/utils/parse-common-args.js +16 -0
- package/dist/utils/parse-common-args.js.map +1 -0
- package/dist/utils/run-tool-safely.d.ts +15 -0
- package/dist/utils/run-tool-safely.d.ts.map +1 -0
- package/dist/utils/run-tool-safely.js +31 -0
- package/dist/utils/run-tool-safely.js.map +1 -0
- package/dist/utils/sleep.d.ts +2 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +3 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/tool-result.d.ts +26 -0
- package/dist/utils/tool-result.d.ts.map +1 -0
- package/dist/utils/tool-result.js +26 -0
- package/dist/utils/tool-result.js.map +1 -0
- package/node_modules/@claude-in-mobile/plugin-api/dist/index.d.ts +1 -1
- package/node_modules/@claude-in-mobile/plugin-api/dist/index.d.ts.map +1 -1
- package/node_modules/@claude-in-mobile/plugin-api/dist/index.js +1 -0
- package/node_modules/@claude-in-mobile/plugin-api/dist/index.js.map +1 -1
- package/node_modules/@claude-in-mobile/plugin-api/package.json +1 -1
- package/package.json +13 -5
|
@@ -70,6 +70,14 @@ export declare function hasAppManagement(adapter: CorePlatformAdapter): adapter
|
|
|
70
70
|
export declare function hasPermissions(adapter: CorePlatformAdapter): adapter is CorePlatformAdapter & PermissionAdapter;
|
|
71
71
|
export declare function hasShell(adapter: CorePlatformAdapter): adapter is CorePlatformAdapter & ShellAdapter;
|
|
72
72
|
export declare function hasSyncScreenshot(adapter: CorePlatformAdapter): adapter is CorePlatformAdapter & SyncScreenshotAdapter;
|
|
73
|
+
export declare class CapabilityNotSupportedError extends Error {
|
|
74
|
+
readonly platform: Platform;
|
|
75
|
+
readonly capability: string;
|
|
76
|
+
constructor(platform: Platform, capability: string);
|
|
77
|
+
}
|
|
78
|
+
export declare function requireAppManagement(adapter: CorePlatformAdapter): CorePlatformAdapter & AppManagementAdapter;
|
|
79
|
+
export declare function requirePermissions(adapter: CorePlatformAdapter): CorePlatformAdapter & PermissionAdapter;
|
|
80
|
+
export declare function requireShell(adapter: CorePlatformAdapter): CorePlatformAdapter & ShellAdapter;
|
|
73
81
|
/**
|
|
74
82
|
* Legacy full interface -- the intersection of ALL capabilities.
|
|
75
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,4 +36,33 @@ export function hasShell(adapter) {
|
|
|
36
36
|
export function hasSyncScreenshot(adapter) {
|
|
37
37
|
return "screenshotRaw" in adapter;
|
|
38
38
|
}
|
|
39
|
+
// ============ Capability requirement helpers ============
|
|
40
|
+
export class CapabilityNotSupportedError extends Error {
|
|
41
|
+
platform;
|
|
42
|
+
capability;
|
|
43
|
+
constructor(platform, capability) {
|
|
44
|
+
super(`Capability '${capability}' is not supported on platform '${platform}'.`);
|
|
45
|
+
this.platform = platform;
|
|
46
|
+
this.capability = capability;
|
|
47
|
+
this.name = "CapabilityNotSupportedError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function requireAppManagement(adapter) {
|
|
51
|
+
if (!hasAppManagement(adapter)) {
|
|
52
|
+
throw new CapabilityNotSupportedError(adapter.platform, "AppManagement");
|
|
53
|
+
}
|
|
54
|
+
return adapter;
|
|
55
|
+
}
|
|
56
|
+
export function requirePermissions(adapter) {
|
|
57
|
+
if (!hasPermissions(adapter)) {
|
|
58
|
+
throw new CapabilityNotSupportedError(adapter.platform, "Permissions");
|
|
59
|
+
}
|
|
60
|
+
return adapter;
|
|
61
|
+
}
|
|
62
|
+
export function requireShell(adapter) {
|
|
63
|
+
if (!hasShell(adapter)) {
|
|
64
|
+
throw new CapabilityNotSupportedError(adapter.platform, "Shell");
|
|
65
|
+
}
|
|
66
|
+
return adapter;
|
|
67
|
+
}
|
|
39
68
|
//# sourceMappingURL=platform-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-adapter.js","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA4EH,wCAAwC;AAExC,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,CACL,WAAW,IAAI,OAAO;QACtB,SAAS,IAAI,OAAO;QACpB,YAAY,IAAI,OAAO,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA4B;IACzD,OAAO,CACL,iBAAiB,IAAI,OAAO;QAC5B,kBAAkB,IAAI,OAAO;QAC7B,kBAAkB,IAAI,OAAO,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAA4B;IACnD,OAAO,CACL,OAAO,IAAI,OAAO;QAClB,SAAS,IAAI,OAAO;QACpB,WAAW,IAAI,OAAO,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,OAAO,eAAe,IAAI,OAAO,CAAC;AACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"platform-adapter.js","sourceRoot":"","sources":["../../src/adapters/platform-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA4EH,wCAAwC;AAExC,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,CACL,WAAW,IAAI,OAAO;QACtB,SAAS,IAAI,OAAO;QACpB,YAAY,IAAI,OAAO,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA4B;IACzD,OAAO,CACL,iBAAiB,IAAI,OAAO;QAC5B,kBAAkB,IAAI,OAAO;QAC7B,kBAAkB,IAAI,OAAO,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAA4B;IACnD,OAAO,CACL,OAAO,IAAI,OAAO;QAClB,SAAS,IAAI,OAAO;QACpB,WAAW,IAAI,OAAO,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA4B;IAC5D,OAAO,eAAe,IAAI,OAAO,CAAC;AACpC,CAAC;AAED,2DAA2D;AAE3D,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACxB;IAAoC;IAAhE,YAA4B,QAAkB,EAAkB,UAAkB;QAChF,KAAK,CAAC,eAAe,UAAU,mCAAmC,QAAQ,IAAI,CAAC,CAAC;QADtD,aAAQ,GAAR,QAAQ,CAAU;QAAkB,eAAU,GAAV,UAAU,CAAQ;QAEhF,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAClC,OAA4B;IAE5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAA4B;IAE5B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAA4B;IAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/adb/client.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { type LogcatOptions } from "./logcat.js";
|
|
2
|
+
export { escapeAndroidInputText, splitArgs } from "./text-escape.js";
|
|
3
|
+
export { UiTreeCache } from "./ui-tree-cache.js";
|
|
4
|
+
export { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
|
|
5
|
+
export { EXEC_TIMEOUT_MS, EXEC_RAW_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
|
|
1
6
|
export interface Device {
|
|
2
7
|
id: string;
|
|
3
8
|
state: string;
|
|
@@ -5,12 +10,9 @@ export interface Device {
|
|
|
5
10
|
}
|
|
6
11
|
export declare class AdbClient {
|
|
7
12
|
private deviceId?;
|
|
8
|
-
private uiTreeCache;
|
|
9
|
-
private uiTreeCacheTTL;
|
|
13
|
+
private readonly uiTreeCache;
|
|
10
14
|
constructor(deviceId?: string);
|
|
11
15
|
private get deviceFlag();
|
|
12
|
-
/** Build device-flag argv slice for a specific deviceId override or fall back to instance default. */
|
|
13
|
-
private deviceArgs;
|
|
14
16
|
/**
|
|
15
17
|
* SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
|
|
16
18
|
* Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
|
|
@@ -118,11 +120,6 @@ export declare class AdbClient {
|
|
|
118
120
|
* so the next getUiHierarchy call fetches fresh data.
|
|
119
121
|
*/
|
|
120
122
|
invalidateUiTreeCache(): void;
|
|
121
|
-
/**
|
|
122
|
-
* Strip the "UI hierachy dumped to: /dev/tty" prefix that some devices
|
|
123
|
-
* prepend when dumping to stdout via /dev/tty.
|
|
124
|
-
*/
|
|
125
|
-
private stripDumpPrefix;
|
|
126
123
|
/**
|
|
127
124
|
* Get UI hierarchy XML (sync — blocks event loop)
|
|
128
125
|
*/
|
|
@@ -215,13 +212,7 @@ export declare class AdbClient {
|
|
|
215
212
|
* Get device logs (logcat)
|
|
216
213
|
* @param options - filter options
|
|
217
214
|
*/
|
|
218
|
-
getLogs(options?:
|
|
219
|
-
tag?: string;
|
|
220
|
-
level?: "V" | "D" | "I" | "W" | "E" | "F";
|
|
221
|
-
lines?: number;
|
|
222
|
-
since?: string;
|
|
223
|
-
package?: string;
|
|
224
|
-
}): string;
|
|
215
|
+
getLogs(options?: LogcatOptions): string;
|
|
225
216
|
/**
|
|
226
217
|
* Clear logcat buffer
|
|
227
218
|
*/
|
package/dist/adb/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
|
package/dist/adb/client.js
CHANGED
|
@@ -1,47 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { promisify } from "util";
|
|
3
|
-
import { classifyAdbError } from "../errors.js";
|
|
1
|
+
import { execFileSync } from "child_process";
|
|
4
2
|
import { resolveAdbPath } from "./resolver.js";
|
|
5
|
-
import { validatePackageName, validatePermission, validateDeviceId
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Escape user text for safe embedding inside a double-quoted `input text "..."` on the
|
|
19
|
-
* device shell. The OUTER context (host shell) never parses this string — it travels as a
|
|
20
|
-
* single argv slot to adb (see inputText/inputTextAsync). Escaping covers only device-side
|
|
21
|
-
* shell metacharacters within double quotes plus Android `input`'s `%s`-for-space quirk.
|
|
22
|
-
*/
|
|
23
|
-
function escapeAndroidInputText(text) {
|
|
24
|
-
return text
|
|
25
|
-
.replace(/[\n\r]/g, "")
|
|
26
|
-
.replace(/\\/g, "\\\\")
|
|
27
|
-
.replace(/"/g, '\\"')
|
|
28
|
-
.replace(/'/g, "\\'")
|
|
29
|
-
.replace(/`/g, "\\`")
|
|
30
|
-
.replace(/\$/g, "\\$")
|
|
31
|
-
.replace(/ /g, "%s")
|
|
32
|
-
.replace(/&/g, "\\&")
|
|
33
|
-
.replace(/\(/g, "\\(")
|
|
34
|
-
.replace(/\)/g, "\\)")
|
|
35
|
-
.replace(/</g, "\\<")
|
|
36
|
-
.replace(/>/g, "\\>")
|
|
37
|
-
.replace(/\|/g, "\\|")
|
|
38
|
-
.replace(/;/g, "\\;");
|
|
39
|
-
}
|
|
3
|
+
import { validatePackageName, validatePermission, validateDeviceId } from "../utils/sanitize.js";
|
|
4
|
+
import { EXEC_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
|
|
5
|
+
import { escapeAndroidInputText, splitArgs } from "./text-escape.js";
|
|
6
|
+
import { UiTreeCache } from "./ui-tree-cache.js";
|
|
7
|
+
import { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
|
|
8
|
+
import { parseDevicesOutput, parseScreenSize, parseCurrentActivityFromActivities, parseCurrentFocusFromWindows, parseFocusFromDumpsysWindow, parseClipboardBroadcast, parseLaunchActivity, stripDumpPrefix, splitActionAndUiXml, } from "./parsers.js";
|
|
9
|
+
import { buildLogcatArgs, filterLogsByPackage } from "./logcat.js";
|
|
10
|
+
// Re-export helpers so existing imports of `src/adb/client.js` keep working.
|
|
11
|
+
export { escapeAndroidInputText, splitArgs } from "./text-escape.js";
|
|
12
|
+
export { UiTreeCache } from "./ui-tree-cache.js";
|
|
13
|
+
export { ANDROID_KEYCODES, ANDROID_KEYCODES_FAST, resolveKeyCode } from "./keycodes.js";
|
|
14
|
+
export { EXEC_TIMEOUT_MS, EXEC_RAW_TIMEOUT_MS, execAdb, execAdbAsync, execAdbRaw, execAdbRawAsync, } from "./exec.js";
|
|
40
15
|
export class AdbClient {
|
|
41
16
|
deviceId;
|
|
42
17
|
// Turbo: UI tree TTL cache (active only when turbo=true is passed)
|
|
43
|
-
uiTreeCache =
|
|
44
|
-
uiTreeCacheTTL = 500; // ms
|
|
18
|
+
uiTreeCache = new UiTreeCache(500);
|
|
45
19
|
constructor(deviceId) {
|
|
46
20
|
if (deviceId) {
|
|
47
21
|
validateDeviceId(deviceId);
|
|
@@ -51,72 +25,19 @@ export class AdbClient {
|
|
|
51
25
|
get deviceFlag() {
|
|
52
26
|
return this.deviceId ? `-s ${this.deviceId}` : "";
|
|
53
27
|
}
|
|
54
|
-
/** Build device-flag argv slice for a specific deviceId override or fall back to instance default. */
|
|
55
|
-
deviceArgs(deviceIdOverride) {
|
|
56
|
-
const id = deviceIdOverride ?? this.deviceId;
|
|
57
|
-
return id ? ["-s", id] : [];
|
|
58
|
-
}
|
|
59
28
|
/**
|
|
60
29
|
* SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
|
|
61
30
|
* Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
|
|
62
31
|
* This structurally prevents host-side OS Command Injection (CWE-78) — see issue #40.
|
|
63
32
|
*/
|
|
64
33
|
execArgs(args, deviceIdOverride) {
|
|
65
|
-
|
|
66
|
-
const fullArgs = [...this.deviceArgs(deviceIdOverride), ...args];
|
|
67
|
-
try {
|
|
68
|
-
return execFileSync(adbBin, fullArgs, {
|
|
69
|
-
encoding: "utf-8",
|
|
70
|
-
timeout: EXEC_TIMEOUT_MS,
|
|
71
|
-
maxBuffer: 50 * 1024 * 1024,
|
|
72
|
-
}).trim();
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
const e = error;
|
|
76
|
-
const display = `adb ${fullArgs.join(" ")}`;
|
|
77
|
-
if (e.killed === true || e.signal === "SIGTERM") {
|
|
78
|
-
throw new Error(`ADB command timed out after ${EXEC_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
|
|
79
|
-
}
|
|
80
|
-
throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
|
|
81
|
-
}
|
|
34
|
+
return execAdb(args, deviceIdOverride ?? this.deviceId);
|
|
82
35
|
}
|
|
83
36
|
execArgsRaw(args, deviceIdOverride) {
|
|
84
|
-
|
|
85
|
-
const fullArgs = [...this.deviceArgs(deviceIdOverride), ...args];
|
|
86
|
-
try {
|
|
87
|
-
return execFileSync(adbBin, fullArgs, {
|
|
88
|
-
timeout: EXEC_RAW_TIMEOUT_MS,
|
|
89
|
-
maxBuffer: 50 * 1024 * 1024,
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
const e = error;
|
|
94
|
-
const display = `adb ${fullArgs.join(" ")}`;
|
|
95
|
-
if (e.killed === true || e.signal === "SIGTERM") {
|
|
96
|
-
throw new Error(`ADB command timed out after ${EXEC_RAW_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
|
|
97
|
-
}
|
|
98
|
-
throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
|
|
99
|
-
}
|
|
37
|
+
return execAdbRaw(args, deviceIdOverride ?? this.deviceId);
|
|
100
38
|
}
|
|
101
39
|
async execArgsAsync(args, deviceIdOverride) {
|
|
102
|
-
|
|
103
|
-
const fullArgs = [...this.deviceArgs(deviceIdOverride), ...args];
|
|
104
|
-
try {
|
|
105
|
-
const { stdout } = await execFileAsync(adbBin, fullArgs, {
|
|
106
|
-
timeout: EXEC_TIMEOUT_MS,
|
|
107
|
-
maxBuffer: 50 * 1024 * 1024,
|
|
108
|
-
encoding: "utf-8",
|
|
109
|
-
});
|
|
110
|
-
return stdout.trim();
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
const e = error;
|
|
114
|
-
const display = `adb ${fullArgs.join(" ")}`;
|
|
115
|
-
if (e.killed === true || e.signal === "SIGTERM") {
|
|
116
|
-
throw new Error(`ADB command timed out after ${EXEC_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
|
|
117
|
-
}
|
|
118
|
-
throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
|
|
119
|
-
}
|
|
40
|
+
return execAdbAsync(args, deviceIdOverride ?? this.deviceId);
|
|
120
41
|
}
|
|
121
42
|
/**
|
|
122
43
|
* Execute ADB command and return stdout as string.
|
|
@@ -143,24 +64,7 @@ export class AdbClient {
|
|
|
143
64
|
* Execute ADB command async and return raw bytes (for screenshots)
|
|
144
65
|
*/
|
|
145
66
|
async execRawAsync(command, deviceIdOverride) {
|
|
146
|
-
|
|
147
|
-
const fullArgs = [...this.deviceArgs(deviceIdOverride), ...splitArgs(command)];
|
|
148
|
-
try {
|
|
149
|
-
const { stdout } = await execFileAsync(adbBin, fullArgs, {
|
|
150
|
-
timeout: EXEC_RAW_TIMEOUT_MS,
|
|
151
|
-
maxBuffer: 50 * 1024 * 1024,
|
|
152
|
-
encoding: "buffer",
|
|
153
|
-
});
|
|
154
|
-
return stdout;
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
const e = error;
|
|
158
|
-
const display = `adb ${fullArgs.join(" ")}`;
|
|
159
|
-
if (e.killed === true || e.signal === "SIGTERM") {
|
|
160
|
-
throw new Error(`ADB command timed out after ${EXEC_RAW_TIMEOUT_MS}ms: ${display}. Device may be disconnected or screen locked.`);
|
|
161
|
-
}
|
|
162
|
-
throw classifyAdbError(e.stderr?.toString() ?? e.message ?? String(error), display);
|
|
163
|
-
}
|
|
67
|
+
return execAdbRawAsync(splitArgs(command), deviceIdOverride ?? this.deviceId);
|
|
164
68
|
}
|
|
165
69
|
/**
|
|
166
70
|
* Get list of connected devices
|
|
@@ -168,20 +72,7 @@ export class AdbClient {
|
|
|
168
72
|
getDevices() {
|
|
169
73
|
const adbBin = resolveAdbPath();
|
|
170
74
|
const output = execFileSync(adbBin, ["devices", "-l"], { encoding: "utf-8", timeout: EXEC_TIMEOUT_MS });
|
|
171
|
-
|
|
172
|
-
return lines
|
|
173
|
-
.filter(line => line.trim())
|
|
174
|
-
.map(line => {
|
|
175
|
-
const parts = line.split(/\s+/);
|
|
176
|
-
const id = parts[0];
|
|
177
|
-
const state = parts[1];
|
|
178
|
-
const modelMatch = line.match(/model:(\S+)/);
|
|
179
|
-
return {
|
|
180
|
-
id,
|
|
181
|
-
state,
|
|
182
|
-
model: modelMatch?.[1]
|
|
183
|
-
};
|
|
184
|
-
});
|
|
75
|
+
return parseDevicesOutput(output);
|
|
185
76
|
}
|
|
186
77
|
/**
|
|
187
78
|
* Set active device
|
|
@@ -261,8 +152,7 @@ export class AdbClient {
|
|
|
261
152
|
catch {
|
|
262
153
|
try {
|
|
263
154
|
const result = this.exec("shell am broadcast -a clipper.get");
|
|
264
|
-
|
|
265
|
-
return match?.[1] ?? "(clipboard not available)";
|
|
155
|
+
return parseClipboardBroadcast(result) ?? "(clipboard not available)";
|
|
266
156
|
}
|
|
267
157
|
catch {
|
|
268
158
|
return "(clipboard access not available — requires API 29+ or clipper app)";
|
|
@@ -286,10 +176,7 @@ export class AdbClient {
|
|
|
286
176
|
*/
|
|
287
177
|
swipeDirection(direction, distance = 800) {
|
|
288
178
|
// Get screen size
|
|
289
|
-
const
|
|
290
|
-
const match = sizeOutput.match(/(\d+)x(\d+)/);
|
|
291
|
-
const width = match ? parseInt(match[1]) : 1080;
|
|
292
|
-
const height = match ? parseInt(match[2]) : 1920;
|
|
179
|
+
const { width, height } = parseScreenSize(this.exec("shell wm size"));
|
|
293
180
|
const centerX = Math.floor(width / 2);
|
|
294
181
|
const centerY = Math.floor(height / 2);
|
|
295
182
|
const coords = {
|
|
@@ -316,47 +203,7 @@ export class AdbClient {
|
|
|
316
203
|
* Press key by name or keycode
|
|
317
204
|
*/
|
|
318
205
|
pressKey(key) {
|
|
319
|
-
const
|
|
320
|
-
"BACK": 4,
|
|
321
|
-
"HOME": 3,
|
|
322
|
-
"MENU": 82,
|
|
323
|
-
"ENTER": 66,
|
|
324
|
-
"TAB": 61,
|
|
325
|
-
"DELETE": 67,
|
|
326
|
-
"BACKSPACE": 67,
|
|
327
|
-
"POWER": 26,
|
|
328
|
-
"VOLUME_UP": 24,
|
|
329
|
-
"VOLUME_DOWN": 25,
|
|
330
|
-
"VOLUME_MUTE": 164,
|
|
331
|
-
"CAMERA": 27,
|
|
332
|
-
"APP_SWITCH": 187,
|
|
333
|
-
"DPAD_UP": 19,
|
|
334
|
-
"DPAD_DOWN": 20,
|
|
335
|
-
"DPAD_LEFT": 21,
|
|
336
|
-
"DPAD_RIGHT": 22,
|
|
337
|
-
"DPAD_CENTER": 23,
|
|
338
|
-
"SEARCH": 84,
|
|
339
|
-
"ESCAPE": 111,
|
|
340
|
-
"SPACE": 62,
|
|
341
|
-
"WAKEUP": 224,
|
|
342
|
-
"SLEEP": 223,
|
|
343
|
-
"BRIGHTNESS_UP": 221,
|
|
344
|
-
"BRIGHTNESS_DOWN": 220,
|
|
345
|
-
"MEDIA_PLAY_PAUSE": 85,
|
|
346
|
-
"MEDIA_NEXT": 87,
|
|
347
|
-
"MEDIA_PREVIOUS": 88,
|
|
348
|
-
"MEDIA_STOP": 86,
|
|
349
|
-
"MUTE": 91,
|
|
350
|
-
"NOTIFICATION": 83,
|
|
351
|
-
"SETTINGS": 176,
|
|
352
|
-
"COPY": 278,
|
|
353
|
-
"PASTE": 279,
|
|
354
|
-
"CUT": 277,
|
|
355
|
-
};
|
|
356
|
-
const keyCode = keyCodes[key.toUpperCase()] ?? parseInt(key);
|
|
357
|
-
if (isNaN(keyCode)) {
|
|
358
|
-
throw new Error(`Unknown key: ${key}`);
|
|
359
|
-
}
|
|
206
|
+
const keyCode = resolveKeyCode(key, ANDROID_KEYCODES);
|
|
360
207
|
this.exec(`shell input keyevent ${keyCode}`);
|
|
361
208
|
}
|
|
362
209
|
/**
|
|
@@ -365,54 +212,48 @@ export class AdbClient {
|
|
|
365
212
|
* so the next getUiHierarchy call fetches fresh data.
|
|
366
213
|
*/
|
|
367
214
|
invalidateUiTreeCache() {
|
|
368
|
-
this.uiTreeCache
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Strip the "UI hierachy dumped to: /dev/tty" prefix that some devices
|
|
372
|
-
* prepend when dumping to stdout via /dev/tty.
|
|
373
|
-
*/
|
|
374
|
-
stripDumpPrefix(raw) {
|
|
375
|
-
const idx = raw.indexOf("<?xml");
|
|
376
|
-
if (idx > 0)
|
|
377
|
-
return raw.slice(idx);
|
|
378
|
-
return raw;
|
|
215
|
+
this.uiTreeCache.invalidate();
|
|
379
216
|
}
|
|
380
217
|
/**
|
|
381
218
|
* Get UI hierarchy XML (sync — blocks event loop)
|
|
382
219
|
*/
|
|
383
220
|
getUiHierarchy(turbo) {
|
|
384
|
-
if (turbo
|
|
385
|
-
|
|
221
|
+
if (turbo) {
|
|
222
|
+
const cached = this.uiTreeCache.get();
|
|
223
|
+
if (cached !== null)
|
|
224
|
+
return cached;
|
|
386
225
|
}
|
|
387
226
|
let xml;
|
|
388
227
|
if (turbo) {
|
|
389
228
|
// Single ADB call: pipe XML directly to stdout
|
|
390
|
-
xml =
|
|
229
|
+
xml = stripDumpPrefix(this.exec("exec-out uiautomator dump /dev/tty"));
|
|
391
230
|
}
|
|
392
231
|
else {
|
|
393
232
|
this.exec("shell uiautomator dump /sdcard/ui.xml");
|
|
394
233
|
xml = this.exec("shell cat /sdcard/ui.xml");
|
|
395
234
|
}
|
|
396
|
-
this.uiTreeCache
|
|
235
|
+
this.uiTreeCache.set(xml);
|
|
397
236
|
return xml;
|
|
398
237
|
}
|
|
399
238
|
/**
|
|
400
239
|
* Get UI hierarchy XML async (non-blocking)
|
|
401
240
|
*/
|
|
402
241
|
async getUiHierarchyAsync(turbo) {
|
|
403
|
-
if (turbo
|
|
404
|
-
|
|
242
|
+
if (turbo) {
|
|
243
|
+
const cached = this.uiTreeCache.get();
|
|
244
|
+
if (cached !== null)
|
|
245
|
+
return cached;
|
|
405
246
|
}
|
|
406
247
|
let xml;
|
|
407
248
|
if (turbo) {
|
|
408
249
|
// Single ADB call: pipe XML directly to stdout
|
|
409
|
-
xml =
|
|
250
|
+
xml = stripDumpPrefix(await this.execAsync("exec-out uiautomator dump /dev/tty"));
|
|
410
251
|
}
|
|
411
252
|
else {
|
|
412
253
|
await this.execAsync("shell uiautomator dump /sdcard/ui.xml");
|
|
413
254
|
xml = await this.execAsync("shell cat /sdcard/ui.xml");
|
|
414
255
|
}
|
|
415
|
-
this.uiTreeCache
|
|
256
|
+
this.uiTreeCache.set(xml);
|
|
416
257
|
return xml;
|
|
417
258
|
}
|
|
418
259
|
/**
|
|
@@ -427,17 +268,7 @@ export class AdbClient {
|
|
|
427
268
|
async execWithUiDump(actionCommand, deviceIdOverride) {
|
|
428
269
|
const combined = `${actionCommand} && uiautomator dump /dev/tty`;
|
|
429
270
|
const raw = await this.execArgsAsync(["shell", "sh", "-c", combined], deviceIdOverride);
|
|
430
|
-
|
|
431
|
-
const xmlStart = raw.indexOf("<?xml");
|
|
432
|
-
const xmlStartAlt = raw.indexOf("<hierarchy");
|
|
433
|
-
const splitIdx = xmlStart >= 0 ? xmlStart : xmlStartAlt;
|
|
434
|
-
if (splitIdx < 0) {
|
|
435
|
-
// No XML found — dump may have failed, return action output only
|
|
436
|
-
return { actionOutput: raw.trim(), uiXml: "" };
|
|
437
|
-
}
|
|
438
|
-
const actionOutput = raw.substring(0, splitIdx).trim();
|
|
439
|
-
const uiXml = this.stripDumpPrefix(raw.substring(splitIdx));
|
|
440
|
-
return { actionOutput, uiXml };
|
|
271
|
+
return splitActionAndUiXml(raw);
|
|
441
272
|
}
|
|
442
273
|
/**
|
|
443
274
|
* Tap at coordinates (async, non-blocking — for turbo mode).
|
|
@@ -455,16 +286,7 @@ export class AdbClient {
|
|
|
455
286
|
* Press key (async, non-blocking — for turbo mode).
|
|
456
287
|
*/
|
|
457
288
|
async pressKeyAsync(key, deviceIdOverride) {
|
|
458
|
-
const
|
|
459
|
-
"BACK": 4, "HOME": 3, "MENU": 82, "ENTER": 66, "TAB": 61,
|
|
460
|
-
"DELETE": 67, "BACKSPACE": 67, "POWER": 26, "VOLUME_UP": 24,
|
|
461
|
-
"VOLUME_DOWN": 25, "ESCAPE": 111, "SPACE": 62, "DPAD_UP": 19,
|
|
462
|
-
"DPAD_DOWN": 20, "DPAD_LEFT": 21, "DPAD_RIGHT": 22,
|
|
463
|
-
};
|
|
464
|
-
const keyCode = keyCodes[key.toUpperCase()] ?? parseInt(key);
|
|
465
|
-
if (isNaN(keyCode)) {
|
|
466
|
-
throw new Error(`Unknown key: ${key}`);
|
|
467
|
-
}
|
|
289
|
+
const keyCode = resolveKeyCode(key, ANDROID_KEYCODES_FAST);
|
|
468
290
|
await this.execAsync(`shell input keyevent ${keyCode}`, deviceIdOverride);
|
|
469
291
|
}
|
|
470
292
|
/**
|
|
@@ -482,10 +304,10 @@ export class AdbClient {
|
|
|
482
304
|
// Try to get launch activity
|
|
483
305
|
try {
|
|
484
306
|
const output = this.exec(`shell cmd package resolve-activity --brief ${packageName}`);
|
|
485
|
-
const activity = output
|
|
307
|
+
const activity = parseLaunchActivity(output);
|
|
486
308
|
if (activity) {
|
|
487
|
-
this.exec(`shell am start -n ${activity
|
|
488
|
-
return `Launched ${activity
|
|
309
|
+
this.exec(`shell am start -n ${activity}`);
|
|
310
|
+
return `Launched ${activity}`;
|
|
489
311
|
}
|
|
490
312
|
}
|
|
491
313
|
catch {
|
|
@@ -549,41 +371,22 @@ export class AdbClient {
|
|
|
549
371
|
*/
|
|
550
372
|
getCurrentActivity() {
|
|
551
373
|
try {
|
|
552
|
-
// Get focused activity (works on most Android versions)
|
|
553
374
|
const output = this.exec("shell dumpsys activity activities");
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
/mResumedActivity[^}]*?(\S+\/\S+)/, // Generic
|
|
558
|
-
/resumedActivity[^}]*?(\S+\/\S+)/, // Some versions
|
|
559
|
-
/topResumedActivity[^}]*?(\S+\/\S+)/, // Android 12+
|
|
560
|
-
/mFocusedActivity[^}]*?(\S+\/\S+)/, // Older Android
|
|
561
|
-
/ResumedActivity[^}]*?(\S+\/\S+)/i, // Case-insensitive fallback
|
|
562
|
-
];
|
|
563
|
-
for (const pattern of patterns) {
|
|
564
|
-
const match = output.match(pattern);
|
|
565
|
-
if (match?.[1]) {
|
|
566
|
-
return match[1];
|
|
567
|
-
}
|
|
568
|
-
}
|
|
375
|
+
const resumed = parseCurrentActivityFromActivities(output);
|
|
376
|
+
if (resumed)
|
|
377
|
+
return resumed;
|
|
569
378
|
// Fallback: try getting current focus from window manager
|
|
570
379
|
const wmOutput = this.exec("shell dumpsys window windows");
|
|
571
|
-
const
|
|
572
|
-
if (
|
|
573
|
-
return
|
|
574
|
-
}
|
|
380
|
+
const focused = parseCurrentFocusFromWindows(wmOutput);
|
|
381
|
+
if (focused)
|
|
382
|
+
return focused;
|
|
575
383
|
return "unknown";
|
|
576
384
|
}
|
|
577
385
|
catch {
|
|
578
386
|
// Try alternative method — Node-side filter replaces device-side `| grep`.
|
|
579
387
|
try {
|
|
580
388
|
const output = this.execArgs(["shell", "dumpsys", "window"]);
|
|
581
|
-
|
|
582
|
-
.split("\n")
|
|
583
|
-
.filter(line => /mCurrentFocus|mFocusedApp/.test(line))
|
|
584
|
-
.join("\n");
|
|
585
|
-
const match = filtered.match(/(\S+\/\S+)/);
|
|
586
|
-
return match?.[1] ?? "unknown";
|
|
389
|
+
return parseFocusFromDumpsysWindow(output) ?? "unknown";
|
|
587
390
|
}
|
|
588
391
|
catch {
|
|
589
392
|
return "unknown (could not determine)";
|
|
@@ -594,12 +397,7 @@ export class AdbClient {
|
|
|
594
397
|
* Get screen size
|
|
595
398
|
*/
|
|
596
399
|
getScreenSize() {
|
|
597
|
-
|
|
598
|
-
const match = output.match(/(\d+)x(\d+)/);
|
|
599
|
-
return {
|
|
600
|
-
width: match ? parseInt(match[1]) : 1080,
|
|
601
|
-
height: match ? parseInt(match[2]) : 1920
|
|
602
|
-
};
|
|
400
|
+
return parseScreenSize(this.exec("shell wm size"));
|
|
603
401
|
}
|
|
604
402
|
/**
|
|
605
403
|
* Wait for device
|
|
@@ -618,31 +416,9 @@ export class AdbClient {
|
|
|
618
416
|
* @param options - filter options
|
|
619
417
|
*/
|
|
620
418
|
getLogs(options = {}) {
|
|
621
|
-
const args =
|
|
622
|
-
if (options.level) {
|
|
623
|
-
args.push(`*:${options.level}`);
|
|
624
|
-
}
|
|
625
|
-
if (options.tag) {
|
|
626
|
-
validateLogTag(options.tag);
|
|
627
|
-
args.push("-s", options.tag);
|
|
628
|
-
}
|
|
629
|
-
if (options.lines) {
|
|
630
|
-
args.push("-t", String(Math.trunc(options.lines)));
|
|
631
|
-
}
|
|
632
|
-
if (options.since) {
|
|
633
|
-
validateLogTimestamp(options.since);
|
|
634
|
-
args.push("-t", options.since);
|
|
635
|
-
}
|
|
419
|
+
const args = buildLogcatArgs(options);
|
|
636
420
|
const output = this.execArgs(args);
|
|
637
|
-
|
|
638
|
-
if (options.package) {
|
|
639
|
-
const lines = output.split("\n");
|
|
640
|
-
const filtered = lines.filter(line => line.includes(options.package) ||
|
|
641
|
-
line.match(/^\d+-\d+\s+\d+:\d+/) // Keep timestamp lines
|
|
642
|
-
);
|
|
643
|
-
return filtered.join("\n");
|
|
644
|
-
}
|
|
645
|
-
return output;
|
|
421
|
+
return options.package ? filterLogsByPackage(output, options.package) : output;
|
|
646
422
|
}
|
|
647
423
|
/**
|
|
648
424
|
* Clear logcat buffer
|