claude-in-mobile 3.13.0 → 4.0.0-dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -574
- package/dist/a11y/types.d.ts +1 -1
- package/dist/a11y/types.d.ts.map +1 -1
- package/dist/adapters/contracts.d.ts +66 -0
- package/dist/adapters/contracts.d.ts.map +1 -0
- package/dist/adapters/contracts.js +15 -0
- package/dist/adapters/contracts.js.map +1 -0
- package/dist/adapters/index.d.ts +0 -5
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/autopilot/explorer.js +1 -1
- package/dist/autopilot/explorer.js.map +1 -1
- package/dist/autopilot/healer.d.ts +1 -1
- package/dist/autopilot/healer.d.ts.map +1 -1
- package/dist/autopilot/screen-fingerprint.d.ts +1 -1
- package/dist/autopilot/screen-fingerprint.d.ts.map +1 -1
- package/dist/autopilot/types.d.ts +1 -1
- package/dist/autopilot/types.d.ts.map +1 -1
- package/dist/device/client-cache.d.ts +1 -1
- package/dist/device/client-cache.d.ts.map +1 -1
- package/dist/device/client-cache.js +4 -24
- package/dist/device/client-cache.js.map +1 -1
- package/dist/device/proxies/desktop-facade.d.ts +5 -8
- package/dist/device/proxies/desktop-facade.d.ts.map +1 -1
- package/dist/device/proxies/desktop-facade.js +12 -14
- package/dist/device/proxies/desktop-facade.js.map +1 -1
- package/dist/device-manager.d.ts +16 -16
- package/dist/device-manager.d.ts.map +1 -1
- package/dist/device-manager.js +23 -17
- package/dist/device-manager.js.map +1 -1
- package/dist/index.js +21 -6
- package/dist/index.js.map +1 -1
- package/dist/perf/collector.d.ts +5 -5
- package/dist/perf/collector.d.ts.map +1 -1
- package/dist/perf/collector.js.map +1 -1
- package/dist/plugins/repl/client.d.ts +15 -1
- package/dist/plugins/repl/client.d.ts.map +1 -1
- package/dist/plugins/repl/client.js +65 -8
- package/dist/plugins/repl/client.js.map +1 -1
- package/dist/plugins/repl/index.d.ts +2 -0
- package/dist/plugins/repl/index.d.ts.map +1 -1
- package/dist/plugins/repl/index.js +22 -3
- package/dist/plugins/repl/index.js.map +1 -1
- package/dist/plugins/repl/types.d.ts +6 -0
- package/dist/plugins/repl/types.d.ts.map +1 -1
- package/dist/runtime/bootstrap.d.ts +7 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -1
- package/dist/runtime/bootstrap.js +87 -15
- package/dist/runtime/bootstrap.js.map +1 -1
- package/dist/runtime/cli.d.ts.map +1 -1
- package/dist/runtime/cli.js +14 -0
- package/dist/runtime/cli.js.map +1 -1
- package/dist/runtime/platform-cli.d.ts +24 -0
- package/dist/runtime/platform-cli.d.ts.map +1 -0
- package/dist/runtime/platform-cli.js +116 -0
- package/dist/runtime/platform-cli.js.map +1 -0
- package/dist/runtime/platform-config.d.ts +21 -0
- package/dist/runtime/platform-config.d.ts.map +1 -0
- package/dist/runtime/platform-config.js +71 -0
- package/dist/runtime/platform-config.js.map +1 -0
- package/dist/tools/browser-tools.js.map +1 -1
- package/dist/tools/clipboard-tools.js +1 -1
- package/dist/tools/clipboard-tools.js.map +1 -1
- package/dist/tools/context/hints.d.ts +1 -1
- package/dist/tools/context/hints.d.ts.map +1 -1
- package/dist/tools/context/hints.js +1 -1
- package/dist/tools/context/hints.js.map +1 -1
- package/dist/tools/context/ios-helpers.d.ts +1 -1
- package/dist/tools/context/ios-helpers.d.ts.map +1 -1
- package/dist/tools/context/shared-state-class.d.ts +1 -1
- package/dist/tools/context/shared-state-class.d.ts.map +1 -1
- package/dist/tools/context/shared-state.d.ts +1 -1
- package/dist/tools/context/shared-state.d.ts.map +1 -1
- package/dist/tools/context.d.ts +2 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +17 -9
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/desktop-tools.d.ts.map +1 -1
- package/dist/tools/desktop-tools.js.map +1 -1
- package/dist/tools/flow/common.js +1 -1
- package/dist/tools/flow/common.js.map +1 -1
- package/dist/tools/flow/run.js +1 -1
- package/dist/tools/flow/run.js.map +1 -1
- package/dist/tools/helpers/get-elements.d.ts +1 -1
- package/dist/tools/helpers/get-elements.d.ts.map +1 -1
- package/dist/tools/helpers/get-elements.js +1 -1
- package/dist/tools/helpers/get-elements.js.map +1 -1
- package/dist/tools/helpers/resolve-element.js +1 -1
- package/dist/tools/helpers/resolve-element.js.map +1 -1
- package/dist/tools/screenshot-tools.js +1 -1
- package/dist/tools/screenshot-tools.js.map +1 -1
- package/dist/tools/ui/analyze.js +1 -1
- package/dist/tools/ui/analyze.js.map +1 -1
- package/dist/tools/ui/assert.js +1 -1
- package/dist/tools/ui/assert.js.map +1 -1
- package/dist/tools/ui/find.js +1 -1
- package/dist/tools/ui/find.js.map +1 -1
- package/dist/tools/ui/tree.js +1 -1
- package/dist/tools/ui/tree.js.map +1 -1
- package/dist/tools/ui/wait.js +1 -1
- package/dist/tools/ui/wait.js.map +1 -1
- package/dist/ui-tree/ui-parser/diff-engine.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/diff-engine.js.map +1 -0
- package/dist/ui-tree/ui-parser/element-builder.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/element-builder.js.map +1 -0
- package/dist/ui-tree/ui-parser/element-finders.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/element-finders.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/compact.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/compact.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/full.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/full.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/index.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/index.js.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/semantic.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/formatters/semantic.js.map +1 -0
- package/dist/ui-tree/ui-parser/node-parser.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/node-parser.js.map +1 -0
- package/dist/ui-tree/ui-parser/screen-analyzer.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/screen-analyzer.js.map +1 -0
- package/dist/ui-tree/ui-parser/types.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser/types.js.map +1 -0
- package/dist/ui-tree/ui-parser.d.ts.map +1 -0
- package/dist/ui-tree/ui-parser.js.map +1 -0
- package/dist/ui-tree/ui-scoring.d.ts.map +1 -0
- package/dist/ui-tree/ui-scoring.js.map +1 -0
- package/dist/ui-tree/ui-tree-cache.d.ts.map +1 -0
- package/dist/ui-tree/ui-tree-cache.js.map +1 -0
- package/dist/utils/image/annotate.d.ts +1 -1
- package/dist/utils/image/annotate.d.ts.map +1 -1
- package/package.json +11 -6
- package/dist/adapters/android-adapter.d.ts +0 -64
- package/dist/adapters/android-adapter.d.ts.map +0 -1
- package/dist/adapters/android-adapter.js +0 -164
- package/dist/adapters/android-adapter.js.map +0 -1
- package/dist/adapters/aurora-adapter.d.ts +0 -56
- package/dist/adapters/aurora-adapter.d.ts.map +0 -1
- package/dist/adapters/aurora-adapter.js +0 -118
- package/dist/adapters/aurora-adapter.js.map +0 -1
- package/dist/adapters/browser-adapter.d.ts +0 -51
- package/dist/adapters/browser-adapter.d.ts.map +0 -1
- package/dist/adapters/browser-adapter.js +0 -223
- package/dist/adapters/browser-adapter.js.map +0 -1
- package/dist/adapters/desktop-adapter.d.ts +0 -64
- package/dist/adapters/desktop-adapter.d.ts.map +0 -1
- package/dist/adapters/desktop-adapter.js +0 -202
- package/dist/adapters/desktop-adapter.js.map +0 -1
- package/dist/adapters/ios-adapter.d.ts +0 -60
- package/dist/adapters/ios-adapter.d.ts.map +0 -1
- package/dist/adapters/ios-adapter.js +0 -146
- package/dist/adapters/ios-adapter.js.map +0 -1
- package/dist/adb/client.d.ts +0 -238
- package/dist/adb/client.d.ts.map +0 -1
- package/dist/adb/client.js +0 -462
- package/dist/adb/client.js.map +0 -1
- package/dist/adb/exec.d.ts +0 -23
- package/dist/adb/exec.d.ts.map +0 -1
- package/dist/adb/exec.js +0 -98
- package/dist/adb/exec.js.map +0 -1
- package/dist/adb/index.d.ts +0 -5
- package/dist/adb/index.d.ts.map +0 -1
- package/dist/adb/index.js +0 -3
- package/dist/adb/index.js.map +0 -1
- package/dist/adb/keycodes.d.ts +0 -22
- package/dist/adb/keycodes.d.ts.map +0 -1
- package/dist/adb/keycodes.js +0 -69
- package/dist/adb/keycodes.js.map +0 -1
- package/dist/adb/logcat.d.ts +0 -23
- package/dist/adb/logcat.d.ts.map +0 -1
- package/dist/adb/logcat.js +0 -40
- package/dist/adb/logcat.js.map +0 -1
- package/dist/adb/parsers.d.ts +0 -60
- package/dist/adb/parsers.d.ts.map +0 -1
- package/dist/adb/parsers.js +0 -118
- package/dist/adb/parsers.js.map +0 -1
- package/dist/adb/resolver.d.ts +0 -24
- package/dist/adb/resolver.d.ts.map +0 -1
- package/dist/adb/resolver.js +0 -130
- package/dist/adb/resolver.js.map +0 -1
- package/dist/adb/text-escape.d.ts +0 -23
- package/dist/adb/text-escape.d.ts.map +0 -1
- package/dist/adb/text-escape.js +0 -41
- package/dist/adb/text-escape.js.map +0 -1
- package/dist/adb/ui-parser/diff-engine.d.ts.map +0 -1
- package/dist/adb/ui-parser/diff-engine.js.map +0 -1
- package/dist/adb/ui-parser/element-builder.d.ts.map +0 -1
- package/dist/adb/ui-parser/element-builder.js.map +0 -1
- package/dist/adb/ui-parser/element-finders.d.ts.map +0 -1
- package/dist/adb/ui-parser/element-finders.js.map +0 -1
- package/dist/adb/ui-parser/formatters/compact.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/compact.js.map +0 -1
- package/dist/adb/ui-parser/formatters/full.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/full.js.map +0 -1
- package/dist/adb/ui-parser/formatters/index.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/index.js.map +0 -1
- package/dist/adb/ui-parser/formatters/semantic.d.ts.map +0 -1
- package/dist/adb/ui-parser/formatters/semantic.js.map +0 -1
- package/dist/adb/ui-parser/node-parser.d.ts.map +0 -1
- package/dist/adb/ui-parser/node-parser.js.map +0 -1
- package/dist/adb/ui-parser/screen-analyzer.d.ts.map +0 -1
- package/dist/adb/ui-parser/screen-analyzer.js.map +0 -1
- package/dist/adb/ui-parser/types.d.ts.map +0 -1
- package/dist/adb/ui-parser/types.js.map +0 -1
- package/dist/adb/ui-parser.d.ts.map +0 -1
- package/dist/adb/ui-parser.js.map +0 -1
- package/dist/adb/ui-scoring.d.ts.map +0 -1
- package/dist/adb/ui-scoring.js.map +0 -1
- package/dist/adb/ui-tree-cache.d.ts.map +0 -1
- package/dist/adb/ui-tree-cache.js.map +0 -1
- package/dist/adb/webview.d.ts +0 -59
- package/dist/adb/webview.d.ts.map +0 -1
- package/dist/adb/webview.js +0 -169
- package/dist/adb/webview.js.map +0 -1
- package/dist/aurora/client.d.ts +0 -180
- package/dist/aurora/client.d.ts.map +0 -1
- package/dist/aurora/client.js +0 -324
- package/dist/aurora/client.js.map +0 -1
- package/dist/aurora/index.d.ts +0 -2
- package/dist/aurora/index.d.ts.map +0 -1
- package/dist/aurora/index.js +0 -2
- package/dist/aurora/index.js.map +0 -1
- package/dist/browser/cdp-helpers.d.ts +0 -17
- package/dist/browser/cdp-helpers.d.ts.map +0 -1
- package/dist/browser/cdp-helpers.js +0 -79
- package/dist/browser/cdp-helpers.js.map +0 -1
- package/dist/browser/cdp-types.d.ts +0 -167
- package/dist/browser/cdp-types.d.ts.map +0 -1
- package/dist/browser/cdp-types.js +0 -9
- package/dist/browser/cdp-types.js.map +0 -1
- package/dist/browser/client.d.ts +0 -29
- package/dist/browser/client.d.ts.map +0 -1
- package/dist/browser/client.js +0 -391
- package/dist/browser/client.js.map +0 -1
- package/dist/browser/index.d.ts +0 -5
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js +0 -4
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/key-map.d.ts +0 -16
- package/dist/browser/key-map.d.ts.map +0 -1
- package/dist/browser/key-map.js +0 -35
- package/dist/browser/key-map.js.map +0 -1
- package/dist/browser/session-manager.d.ts +0 -21
- package/dist/browser/session-manager.d.ts.map +0 -1
- package/dist/browser/session-manager.js +0 -109
- package/dist/browser/session-manager.js.map +0 -1
- package/dist/browser/snapshot-builder.d.ts +0 -4
- package/dist/browser/snapshot-builder.d.ts.map +0 -1
- package/dist/browser/snapshot-builder.js +0 -76
- package/dist/browser/snapshot-builder.js.map +0 -1
- package/dist/browser/types.d.ts +0 -75
- package/dist/browser/types.d.ts.map +0 -1
- package/dist/browser/types.js +0 -11
- package/dist/browser/types.js.map +0 -1
- package/dist/desktop/client.d.ts +0 -196
- package/dist/desktop/client.d.ts.map +0 -1
- package/dist/desktop/client.js +0 -540
- package/dist/desktop/client.js.map +0 -1
- package/dist/desktop/gradle.d.ts +0 -45
- package/dist/desktop/gradle.d.ts.map +0 -1
- package/dist/desktop/gradle.js +0 -234
- package/dist/desktop/gradle.js.map +0 -1
- package/dist/desktop/index.d.ts +0 -7
- package/dist/desktop/index.d.ts.map +0 -1
- package/dist/desktop/index.js +0 -7
- package/dist/desktop/index.js.map +0 -1
- package/dist/desktop/launch-options.d.ts +0 -13
- package/dist/desktop/launch-options.d.ts.map +0 -1
- package/dist/desktop/launch-options.js +0 -54
- package/dist/desktop/launch-options.js.map +0 -1
- package/dist/desktop/launchers.d.ts +0 -52
- package/dist/desktop/launchers.d.ts.map +0 -1
- package/dist/desktop/launchers.js +0 -125
- package/dist/desktop/launchers.js.map +0 -1
- package/dist/desktop/log-ring.d.ts +0 -21
- package/dist/desktop/log-ring.d.ts.map +0 -1
- package/dist/desktop/log-ring.js +0 -45
- package/dist/desktop/log-ring.js.map +0 -1
- package/dist/desktop/permission-allowlist.d.ts +0 -47
- package/dist/desktop/permission-allowlist.d.ts.map +0 -1
- package/dist/desktop/permission-allowlist.js +0 -148
- package/dist/desktop/permission-allowlist.js.map +0 -1
- package/dist/desktop/types.d.ts +0 -177
- package/dist/desktop/types.d.ts.map +0 -1
- package/dist/desktop/types.js +0 -5
- package/dist/desktop/types.js.map +0 -1
- package/dist/ios/client.d.ts +0 -194
- package/dist/ios/client.d.ts.map +0 -1
- package/dist/ios/client.js +0 -457
- package/dist/ios/client.js.map +0 -1
- package/dist/ios/index.d.ts +0 -2
- package/dist/ios/index.d.ts.map +0 -1
- package/dist/ios/index.js +0 -2
- package/dist/ios/index.js.map +0 -1
- package/dist/ios/keymap.d.ts +0 -20
- package/dist/ios/keymap.d.ts.map +0 -1
- package/dist/ios/keymap.js +0 -33
- package/dist/ios/keymap.js.map +0 -1
- package/dist/ios/simctl-commands.d.ts +0 -35
- package/dist/ios/simctl-commands.d.ts.map +0 -1
- package/dist/ios/simctl-commands.js +0 -60
- package/dist/ios/simctl-commands.js.map +0 -1
- package/dist/ios/simctl-exec.d.ts +0 -19
- package/dist/ios/simctl-exec.d.ts.map +0 -1
- package/dist/ios/simctl-exec.js +0 -55
- package/dist/ios/simctl-exec.js.map +0 -1
- package/dist/ios/simctl-parsers.d.ts +0 -10
- package/dist/ios/simctl-parsers.d.ts.map +0 -1
- package/dist/ios/simctl-parsers.js +0 -29
- package/dist/ios/simctl-parsers.js.map +0 -1
- package/dist/ios/types.d.ts +0 -8
- package/dist/ios/types.d.ts.map +0 -1
- package/dist/ios/types.js +0 -2
- package/dist/ios/types.js.map +0 -1
- package/dist/ios/wda/index.d.ts +0 -4
- package/dist/ios/wda/index.d.ts.map +0 -1
- package/dist/ios/wda/index.js +0 -4
- package/dist/ios/wda/index.js.map +0 -1
- package/dist/ios/wda/wda-client.d.ts +0 -27
- package/dist/ios/wda/wda-client.d.ts.map +0 -1
- package/dist/ios/wda/wda-client.js +0 -237
- package/dist/ios/wda/wda-client.js.map +0 -1
- package/dist/ios/wda/wda-manager.d.ts +0 -18
- package/dist/ios/wda/wda-manager.d.ts.map +0 -1
- package/dist/ios/wda/wda-manager.js +0 -238
- package/dist/ios/wda/wda-manager.js.map +0 -1
- package/dist/ios/wda/wda-types.d.ts +0 -39
- package/dist/ios/wda/wda-types.d.ts.map +0 -1
- package/dist/ios/wda/wda-types.js +0 -2
- package/dist/ios/wda/wda-types.js.map +0 -1
- package/dist/ios/wda-errors.d.ts +0 -8
- package/dist/ios/wda-errors.d.ts.map +0 -1
- package/dist/ios/wda-errors.js +0 -13
- package/dist/ios/wda-errors.js.map +0 -1
- package/dist/ios/wda-payloads.d.ts +0 -32
- package/dist/ios/wda-payloads.d.ts.map +0 -1
- package/dist/ios/wda-payloads.js +0 -31
- package/dist/ios/wda-payloads.js.map +0 -1
- package/dist/plugins/android/index.d.ts +0 -23
- package/dist/plugins/android/index.d.ts.map +0 -1
- package/dist/plugins/android/index.js +0 -45
- package/dist/plugins/android/index.js.map +0 -1
- package/dist/plugins/aurora/index.d.ts +0 -17
- package/dist/plugins/aurora/index.d.ts.map +0 -1
- package/dist/plugins/aurora/index.js +0 -27
- package/dist/plugins/aurora/index.js.map +0 -1
- package/dist/plugins/desktop/index.d.ts +0 -18
- package/dist/plugins/desktop/index.d.ts.map +0 -1
- package/dist/plugins/desktop/index.js +0 -28
- package/dist/plugins/desktop/index.js.map +0 -1
- package/dist/plugins/ios/index.d.ts +0 -17
- package/dist/plugins/ios/index.d.ts.map +0 -1
- package/dist/plugins/ios/index.js +0 -36
- package/dist/plugins/ios/index.js.map +0 -1
- package/dist/plugins/web/index.d.ts +0 -17
- package/dist/plugins/web/index.d.ts.map +0 -1
- package/dist/plugins/web/index.js +0 -27
- package/dist/plugins/web/index.js.map +0 -1
- /package/dist/{adb → ui-tree}/ui-parser/diff-engine.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/diff-engine.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-builder.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-builder.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-finders.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/element-finders.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/compact.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/full.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/full.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/index.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/index.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/formatters/semantic.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/node-parser.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/node-parser.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/screen-analyzer.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/types.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser/types.js +0 -0
- /package/dist/{adb → ui-tree}/ui-parser.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-parser.js +0 -0
- /package/dist/{adb → ui-tree}/ui-scoring.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-scoring.js +0 -0
- /package/dist/{adb → ui-tree}/ui-tree-cache.d.ts +0 -0
- /package/dist/{adb → ui-tree}/ui-tree-cache.js +0 -0
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DesktopAdapter -- wraps DesktopClient.
|
|
3
|
-
*
|
|
4
|
-
* Implements:
|
|
5
|
-
* - CorePlatformAdapter (universal)
|
|
6
|
-
* - AppManagementAdapter (launchApp / stopApp / installApp)
|
|
7
|
-
* - ShellAdapter (shell / logs)
|
|
8
|
-
*
|
|
9
|
-
* Does NOT implement PermissionAdapter or SyncScreenshotAdapter
|
|
10
|
-
* because desktop has no concept of runtime permissions or sync screenshots.
|
|
11
|
-
*/
|
|
12
|
-
import { DesktopClient } from "../desktop/client.js";
|
|
13
|
-
export class DesktopAdapter {
|
|
14
|
-
platform = "desktop";
|
|
15
|
-
client;
|
|
16
|
-
constructor(client) {
|
|
17
|
-
this.client = client ?? new DesktopClient();
|
|
18
|
-
}
|
|
19
|
-
/** Raw client access -- needed by tools that call getDesktopClient(). */
|
|
20
|
-
getClient() {
|
|
21
|
-
return this.client;
|
|
22
|
-
}
|
|
23
|
-
// ============ Device management ============
|
|
24
|
-
listDevices() {
|
|
25
|
-
if (!this.client.isRunning()) {
|
|
26
|
-
return [];
|
|
27
|
-
}
|
|
28
|
-
const state = this.client.getState();
|
|
29
|
-
return [
|
|
30
|
-
{
|
|
31
|
-
id: "desktop",
|
|
32
|
-
name: "Desktop App",
|
|
33
|
-
platform: "desktop",
|
|
34
|
-
state: state.status,
|
|
35
|
-
isSimulator: false,
|
|
36
|
-
},
|
|
37
|
-
];
|
|
38
|
-
}
|
|
39
|
-
selectDevice(_deviceId) {
|
|
40
|
-
// Desktop has no notion of device selection -- it's always "desktop".
|
|
41
|
-
// No-op; the important thing is that activeTarget is set in DeviceManager.
|
|
42
|
-
}
|
|
43
|
-
getSelectedDeviceId() {
|
|
44
|
-
return this.client.isRunning() ? "desktop" : undefined;
|
|
45
|
-
}
|
|
46
|
-
autoDetectDevice() {
|
|
47
|
-
if (!this.client.isRunning())
|
|
48
|
-
return undefined;
|
|
49
|
-
const state = this.client.getState();
|
|
50
|
-
return {
|
|
51
|
-
id: "desktop",
|
|
52
|
-
name: "Desktop App",
|
|
53
|
-
platform: "desktop",
|
|
54
|
-
state: state.status,
|
|
55
|
-
isSimulator: false,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
// ============ Desktop-specific lifecycle ============
|
|
59
|
-
isRunning() {
|
|
60
|
-
return this.client.isRunning();
|
|
61
|
-
}
|
|
62
|
-
getState() {
|
|
63
|
-
return this.client.getState();
|
|
64
|
-
}
|
|
65
|
-
async launch(options) {
|
|
66
|
-
await this.client.launch(options);
|
|
67
|
-
}
|
|
68
|
-
async stop() {
|
|
69
|
-
await this.client.stop();
|
|
70
|
-
}
|
|
71
|
-
// ============ Core actions ============
|
|
72
|
-
ensureRunning() {
|
|
73
|
-
if (!this.client.isRunning()) {
|
|
74
|
-
throw new Error("Desktop app is not running. Use desktop(action:'launch') first.");
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
async tap(x, y, targetPid) {
|
|
78
|
-
this.ensureRunning();
|
|
79
|
-
await this.client.tap(x, y, targetPid);
|
|
80
|
-
}
|
|
81
|
-
async doubleTap(x, y, intervalMs = 100) {
|
|
82
|
-
this.ensureRunning();
|
|
83
|
-
await this.client.tap(x, y);
|
|
84
|
-
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
85
|
-
await this.client.tap(x, y);
|
|
86
|
-
}
|
|
87
|
-
async longPress(x, y, durationMs = 1000) {
|
|
88
|
-
this.ensureRunning();
|
|
89
|
-
await this.client.longPress(x, y, durationMs);
|
|
90
|
-
}
|
|
91
|
-
async swipe(x1, y1, x2, y2, durationMs = 300) {
|
|
92
|
-
this.ensureRunning();
|
|
93
|
-
await this.client.swipe(x1, y1, x2, y2, durationMs);
|
|
94
|
-
}
|
|
95
|
-
async swipeDirection(direction) {
|
|
96
|
-
this.ensureRunning();
|
|
97
|
-
await this.client.swipeDirection(direction);
|
|
98
|
-
}
|
|
99
|
-
async inputText(text, targetPid) {
|
|
100
|
-
this.ensureRunning();
|
|
101
|
-
await this.client.inputText(text, targetPid);
|
|
102
|
-
}
|
|
103
|
-
async pressKey(key, targetPid) {
|
|
104
|
-
this.ensureRunning();
|
|
105
|
-
await this.client.pressKey(key, undefined, targetPid);
|
|
106
|
-
}
|
|
107
|
-
// ============ Screenshot ============
|
|
108
|
-
/**
|
|
109
|
-
* Resolve the main window ID for the target process.
|
|
110
|
-
* Returns undefined if no targetPid or no matching window found.
|
|
111
|
-
*/
|
|
112
|
-
async resolveTargetWindowId() {
|
|
113
|
-
const pid = this.client.targetPid;
|
|
114
|
-
if (!pid)
|
|
115
|
-
return undefined;
|
|
116
|
-
try {
|
|
117
|
-
const info = await this.client.getWindowInfo();
|
|
118
|
-
// Prefer focused window of target process, fall back to first window
|
|
119
|
-
const targetWindows = info.windows.filter((w) => w.processId === pid);
|
|
120
|
-
const focused = targetWindows.find((w) => w.focused);
|
|
121
|
-
return (focused ?? targetWindows[0])?.id;
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
return undefined;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
async screenshotAsync(_compress = true, options) {
|
|
128
|
-
this.ensureRunning();
|
|
129
|
-
const windowId = await this.resolveTargetWindowId();
|
|
130
|
-
const result = await this.client.screenshotWithMeta({
|
|
131
|
-
windowId,
|
|
132
|
-
monitorIndex: options?.monitorIndex,
|
|
133
|
-
});
|
|
134
|
-
return { data: result.base64, mimeType: result.mimeType };
|
|
135
|
-
}
|
|
136
|
-
async getScreenshotBufferAsync() {
|
|
137
|
-
this.ensureRunning();
|
|
138
|
-
const windowId = await this.resolveTargetWindowId();
|
|
139
|
-
const result = await this.client.screenshotWithMeta({ windowId });
|
|
140
|
-
return Buffer.from(result.base64, "base64");
|
|
141
|
-
}
|
|
142
|
-
// ============ UI ============
|
|
143
|
-
async getUiHierarchy() {
|
|
144
|
-
this.ensureRunning();
|
|
145
|
-
const hierarchy = await this.client.getUiHierarchy();
|
|
146
|
-
return formatDesktopHierarchy(hierarchy);
|
|
147
|
-
}
|
|
148
|
-
// ============ App management (AppManagementAdapter) ============
|
|
149
|
-
async launchApp(packageName) {
|
|
150
|
-
return this.client.launchApp(packageName);
|
|
151
|
-
}
|
|
152
|
-
stopApp(packageName) {
|
|
153
|
-
this.client.stopApp(packageName);
|
|
154
|
-
}
|
|
155
|
-
installApp(_path) {
|
|
156
|
-
return "Desktop platform doesn't support app installation";
|
|
157
|
-
}
|
|
158
|
-
// ============ Shell / Logs (ShellAdapter) ============
|
|
159
|
-
shell(command) {
|
|
160
|
-
return this.client.shell(command);
|
|
161
|
-
}
|
|
162
|
-
getLogs(options = {}) {
|
|
163
|
-
const logs = this.client.getLogs({
|
|
164
|
-
limit: options.lines ?? 100,
|
|
165
|
-
});
|
|
166
|
-
return logs.map((l) => `[${l.type}] ${l.message}`).join("\n");
|
|
167
|
-
}
|
|
168
|
-
clearLogs() {
|
|
169
|
-
this.client.clearLogs();
|
|
170
|
-
return "Desktop logs cleared";
|
|
171
|
-
}
|
|
172
|
-
// ============ System info ============
|
|
173
|
-
async getSystemInfo() {
|
|
174
|
-
this.ensureRunning();
|
|
175
|
-
const metrics = await this.client.getPerformanceMetrics();
|
|
176
|
-
return `=== Desktop Performance ===\nMemory: ${metrics.memoryUsageMb} MB${metrics.cpuPercent ? `\nCPU: ${metrics.cpuPercent}%` : ""}`;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// ============ Helpers (moved from old device-manager.ts) ============
|
|
180
|
-
/**
|
|
181
|
-
* Format desktop UI hierarchy as text
|
|
182
|
-
*/
|
|
183
|
-
function formatDesktopHierarchy(hierarchy) {
|
|
184
|
-
const lines = [];
|
|
185
|
-
lines.push(`Scale Factor: ${hierarchy.scaleFactor}`);
|
|
186
|
-
lines.push(`\n=== Windows (${hierarchy.windows.length}) ===`);
|
|
187
|
-
for (const win of hierarchy.windows) {
|
|
188
|
-
const focused = win.focused ? " [FOCUSED]" : "";
|
|
189
|
-
lines.push(` ${win.title}${focused} (${win.bounds.width}x${win.bounds.height})`);
|
|
190
|
-
}
|
|
191
|
-
lines.push(`\n=== UI Elements (${hierarchy.elements.length}) ===`);
|
|
192
|
-
for (const el of hierarchy.elements) {
|
|
193
|
-
const text = el.text ? `"${el.text}"` : "";
|
|
194
|
-
const role = el.role || el.className;
|
|
195
|
-
const clickable = el.clickable ? " [clickable]" : "";
|
|
196
|
-
const focused = el.focused ? " [focused]" : "";
|
|
197
|
-
lines.push(`[${el.index}] ${role} ${text}${clickable}${focused} ` +
|
|
198
|
-
`(${el.centerX}, ${el.centerY}) [${el.bounds.x},${el.bounds.y},${el.bounds.width},${el.bounds.height}]`);
|
|
199
|
-
}
|
|
200
|
-
return lines.join("\n");
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=desktop-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"desktop-adapter.js","sourceRoot":"","sources":["../../src/adapters/desktop-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IosAdapter -- wraps IosClient.
|
|
3
|
-
*
|
|
4
|
-
* Implements all capability interfaces:
|
|
5
|
-
* - CorePlatformAdapter
|
|
6
|
-
* - AppManagementAdapter
|
|
7
|
-
* - PermissionAdapter
|
|
8
|
-
* - ShellAdapter
|
|
9
|
-
* - SyncScreenshotAdapter
|
|
10
|
-
*/
|
|
11
|
-
import type { CorePlatformAdapter, AppManagementAdapter, PermissionAdapter, ShellAdapter, SyncScreenshotAdapter } from "./platform-adapter.js";
|
|
12
|
-
import type { Device } from "../device-manager.js";
|
|
13
|
-
import { IosClient } from "../ios/client.js";
|
|
14
|
-
import { type CompressOptions } from "../utils/image.js";
|
|
15
|
-
export declare class IosAdapter implements CorePlatformAdapter, AppManagementAdapter, PermissionAdapter, ShellAdapter, SyncScreenshotAdapter {
|
|
16
|
-
readonly platform: "ios";
|
|
17
|
-
private client;
|
|
18
|
-
private _selectedDeviceId;
|
|
19
|
-
constructor(client?: IosClient);
|
|
20
|
-
/** Raw client access -- needed by tools that call getIosClient(). */
|
|
21
|
-
getClient(deviceId?: string): IosClient;
|
|
22
|
-
/** Return a client targeting deviceId without mutating global state. */
|
|
23
|
-
private clientFor;
|
|
24
|
-
listDevices(): Device[];
|
|
25
|
-
selectDevice(deviceId: string): void;
|
|
26
|
-
getSelectedDeviceId(): string | undefined;
|
|
27
|
-
autoDetectDevice(): Device | undefined;
|
|
28
|
-
tap(x: number, y: number, _targetPid?: number, deviceId?: string): Promise<void>;
|
|
29
|
-
doubleTap(x: number, y: number, intervalMs?: number, deviceId?: string): Promise<void>;
|
|
30
|
-
longPress(x: number, y: number, durationMs?: number, deviceId?: string): Promise<void>;
|
|
31
|
-
swipe(x1: number, y1: number, x2: number, y2: number, durationMs?: number, deviceId?: string): Promise<void>;
|
|
32
|
-
swipeDirection(direction: "up" | "down" | "left" | "right", deviceId?: string): Promise<void>;
|
|
33
|
-
inputText(text: string, _targetPid?: number, deviceId?: string): Promise<void>;
|
|
34
|
-
pressKey(key: string): Promise<void>;
|
|
35
|
-
screenshotAsync(compress?: boolean, options?: CompressOptions & {
|
|
36
|
-
monitorIndex?: number;
|
|
37
|
-
}, deviceId?: string): Promise<{
|
|
38
|
-
data: string;
|
|
39
|
-
mimeType: string;
|
|
40
|
-
}>;
|
|
41
|
-
getScreenshotBufferAsync(deviceId?: string): Promise<Buffer>;
|
|
42
|
-
screenshotRaw(): string;
|
|
43
|
-
getUiHierarchy(deviceId?: string): Promise<string>;
|
|
44
|
-
launchApp(bundleId: string, deviceId?: string): string;
|
|
45
|
-
stopApp(bundleId: string, deviceId?: string): void;
|
|
46
|
-
installApp(path: string): string;
|
|
47
|
-
grantPermission(bundleId: string, service: string): string;
|
|
48
|
-
revokePermission(bundleId: string, service: string): string;
|
|
49
|
-
resetPermissions(bundleId: string): string;
|
|
50
|
-
shell(command: string): string;
|
|
51
|
-
getLogs(options?: {
|
|
52
|
-
level?: string;
|
|
53
|
-
tag?: string;
|
|
54
|
-
lines?: number;
|
|
55
|
-
package?: string;
|
|
56
|
-
}): string;
|
|
57
|
-
clearLogs(): string;
|
|
58
|
-
getSystemInfo(): Promise<string>;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=ios-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ios-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/ios-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IosAdapter -- wraps IosClient.
|
|
3
|
-
*
|
|
4
|
-
* Implements all capability interfaces:
|
|
5
|
-
* - CorePlatformAdapter
|
|
6
|
-
* - AppManagementAdapter
|
|
7
|
-
* - PermissionAdapter
|
|
8
|
-
* - ShellAdapter
|
|
9
|
-
* - SyncScreenshotAdapter
|
|
10
|
-
*/
|
|
11
|
-
import { IosClient } from "../ios/client.js";
|
|
12
|
-
import { MobileError } from "../errors.js";
|
|
13
|
-
import { compressScreenshot } from "../utils/image.js";
|
|
14
|
-
export class IosAdapter {
|
|
15
|
-
platform = "ios";
|
|
16
|
-
client;
|
|
17
|
-
_selectedDeviceId;
|
|
18
|
-
constructor(client) {
|
|
19
|
-
this.client = client ?? new IosClient();
|
|
20
|
-
this._selectedDeviceId = this.client.getDeviceId();
|
|
21
|
-
}
|
|
22
|
-
/** Raw client access -- needed by tools that call getIosClient(). */
|
|
23
|
-
getClient(deviceId) {
|
|
24
|
-
return this.clientFor(deviceId);
|
|
25
|
-
}
|
|
26
|
-
/** Return a client targeting deviceId without mutating global state. */
|
|
27
|
-
clientFor(deviceId) {
|
|
28
|
-
if (!deviceId || deviceId === this._selectedDeviceId)
|
|
29
|
-
return this.client;
|
|
30
|
-
return new IosClient(deviceId);
|
|
31
|
-
}
|
|
32
|
-
// ============ Device management ============
|
|
33
|
-
listDevices() {
|
|
34
|
-
try {
|
|
35
|
-
const raw = this.client.getDevices();
|
|
36
|
-
return raw.map((d) => ({
|
|
37
|
-
id: d.id,
|
|
38
|
-
name: d.name,
|
|
39
|
-
platform: "ios",
|
|
40
|
-
state: d.state,
|
|
41
|
-
isSimulator: d.isSimulator,
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
if (e instanceof MobileError && e.code === "SIMCTL_NOT_INSTALLED")
|
|
46
|
-
throw e;
|
|
47
|
-
return [];
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
selectDevice(deviceId) {
|
|
51
|
-
this._selectedDeviceId = deviceId;
|
|
52
|
-
this.client.setDevice(deviceId);
|
|
53
|
-
}
|
|
54
|
-
getSelectedDeviceId() {
|
|
55
|
-
return this._selectedDeviceId;
|
|
56
|
-
}
|
|
57
|
-
autoDetectDevice() {
|
|
58
|
-
const devices = this.listDevices();
|
|
59
|
-
return devices.find((d) => d.state === "device" || d.state === "booted" || d.state === "connected");
|
|
60
|
-
}
|
|
61
|
-
// ============ Core actions ============
|
|
62
|
-
async tap(x, y, _targetPid, deviceId) {
|
|
63
|
-
await this.clientFor(deviceId).tap(x, y, deviceId);
|
|
64
|
-
}
|
|
65
|
-
async doubleTap(x, y, intervalMs = 100, deviceId) {
|
|
66
|
-
const c = this.clientFor(deviceId);
|
|
67
|
-
await c.tap(x, y, deviceId);
|
|
68
|
-
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
69
|
-
await c.tap(x, y, deviceId);
|
|
70
|
-
}
|
|
71
|
-
async longPress(x, y, durationMs = 1000, deviceId) {
|
|
72
|
-
await this.clientFor(deviceId).longPress(x, y, durationMs, deviceId);
|
|
73
|
-
}
|
|
74
|
-
async swipe(x1, y1, x2, y2, durationMs = 300, deviceId) {
|
|
75
|
-
await this.clientFor(deviceId).swipe(x1, y1, x2, y2, durationMs, deviceId);
|
|
76
|
-
}
|
|
77
|
-
async swipeDirection(direction, deviceId) {
|
|
78
|
-
await this.clientFor(deviceId).swipeDirection(direction);
|
|
79
|
-
}
|
|
80
|
-
async inputText(text, _targetPid, deviceId) {
|
|
81
|
-
await this.clientFor(deviceId).inputText(text, deviceId);
|
|
82
|
-
}
|
|
83
|
-
async pressKey(key) {
|
|
84
|
-
await this.client.pressKey(key);
|
|
85
|
-
}
|
|
86
|
-
// ============ Screenshot ============
|
|
87
|
-
async screenshotAsync(compress = true, options, deviceId) {
|
|
88
|
-
const buffer = this.clientFor(deviceId).screenshotRaw(deviceId);
|
|
89
|
-
if (compress) {
|
|
90
|
-
return compressScreenshot(buffer, options);
|
|
91
|
-
}
|
|
92
|
-
return { data: buffer.toString("base64"), mimeType: "image/png" };
|
|
93
|
-
}
|
|
94
|
-
async getScreenshotBufferAsync(deviceId) {
|
|
95
|
-
return this.clientFor(deviceId).screenshotRaw(deviceId);
|
|
96
|
-
}
|
|
97
|
-
screenshotRaw() {
|
|
98
|
-
return this.client.screenshot();
|
|
99
|
-
}
|
|
100
|
-
// ============ UI ============
|
|
101
|
-
async getUiHierarchy(deviceId) {
|
|
102
|
-
return this.clientFor(deviceId).getUiHierarchy(deviceId);
|
|
103
|
-
}
|
|
104
|
-
// ============ App management (AppManagementAdapter) ============
|
|
105
|
-
launchApp(bundleId, deviceId) {
|
|
106
|
-
return this.clientFor(deviceId).launchApp(bundleId, deviceId);
|
|
107
|
-
}
|
|
108
|
-
stopApp(bundleId, deviceId) {
|
|
109
|
-
this.clientFor(deviceId).stopApp(bundleId, deviceId);
|
|
110
|
-
}
|
|
111
|
-
installApp(path) {
|
|
112
|
-
return this.client.installApp(path);
|
|
113
|
-
}
|
|
114
|
-
// ============ Permissions (PermissionAdapter) ============
|
|
115
|
-
grantPermission(bundleId, service) {
|
|
116
|
-
this.client.grantPermission(bundleId, service);
|
|
117
|
-
return `Granted ${service} to ${bundleId}`;
|
|
118
|
-
}
|
|
119
|
-
revokePermission(bundleId, service) {
|
|
120
|
-
this.client.revokePermission(bundleId, service);
|
|
121
|
-
return `Revoked ${service} from ${bundleId}`;
|
|
122
|
-
}
|
|
123
|
-
resetPermissions(bundleId) {
|
|
124
|
-
this.client.resetPermissions(bundleId);
|
|
125
|
-
return `Reset permissions for ${bundleId}`;
|
|
126
|
-
}
|
|
127
|
-
// ============ Shell / Logs (ShellAdapter) ============
|
|
128
|
-
shell(command) {
|
|
129
|
-
return this.client.shell(command);
|
|
130
|
-
}
|
|
131
|
-
getLogs(options = {}) {
|
|
132
|
-
return this.client.getLogs({
|
|
133
|
-
level: options.level,
|
|
134
|
-
lines: options.lines,
|
|
135
|
-
predicate: options.package ? `subsystem == "${options.package}"` : undefined,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
clearLogs() {
|
|
139
|
-
return this.client.clearLogs();
|
|
140
|
-
}
|
|
141
|
-
// ============ System info ============
|
|
142
|
-
async getSystemInfo() {
|
|
143
|
-
return "System info is only available for Android and Aurora devices.";
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=ios-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ios-adapter.js","sourceRoot":"","sources":["../../src/adapters/ios-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAwB,MAAM,mBAAmB,CAAC;AAE7E,MAAM,OAAO,UAAU;IAGZ,QAAQ,GAAG,KAAc,CAAC;IAC3B,MAAM,CAAY;IAClB,iBAAiB,CAAqB;IAE9C,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IACrD,CAAC;IAED,qEAAqE;IACrE,SAAS,CAAC,QAAiB;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,wEAAwE;IAChE,SAAS,CAAC,QAAiB;QACjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACzE,OAAO,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,8CAA8C;IAE9C,WAAW;QACT,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACrC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,KAAc;gBACxB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB;gBAAE,MAAM,CAAC,CAAC;YAC3E,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,gBAAgB;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,OAAO,OAAO,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,CAC/E,CAAC;IACJ,CAAC;IAED,yCAAyC;IAEzC,KAAK,CAAC,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,UAAmB,EAAE,QAAiB;QACpE,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,aAAqB,GAAG,EAAE,QAAiB;QAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,aAAqB,IAAI,EAAE,QAAiB;QAChF,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,KAAK,CACT,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,aAAqB,GAAG,EACxB,QAAiB;QAEjB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAA2C,EAAE,QAAiB;QACjF,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,UAAmB,EAAE,QAAiB;QAClE,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAW;QACxB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,uCAAuC;IAEvC,KAAK,CAAC,eAAe,CACnB,WAAoB,IAAI,EACxB,OAAqD,EACrD,QAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,QAAiB;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED,+BAA+B;IAE/B,KAAK,CAAC,cAAc,CAAC,QAAiB;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,kEAAkE;IAElE,SAAS,CAAC,QAAgB,EAAE,QAAiB;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,QAAgB,EAAE,QAAiB;QACzC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,4DAA4D;IAE5D,eAAe,CAAC,QAAgB,EAAE,OAAe;QAC/C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,WAAW,OAAO,OAAO,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,QAAgB,EAAE,OAAe;QAChD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,WAAW,OAAO,SAAS,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,yBAAyB,QAAQ,EAAE,CAAC;IAC7C,CAAC;IAED,wDAAwD;IAExD,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,UAKJ,EAAE;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAqE;YACpF,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,wCAAwC;IAExC,KAAK,CAAC,aAAa;QACjB,OAAO,+DAA+D,CAAC;IACzE,CAAC;CACF"}
|
package/dist/adb/client.d.ts
DELETED
|
@@ -1,238 +0,0 @@
|
|
|
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";
|
|
6
|
-
export interface Device {
|
|
7
|
-
id: string;
|
|
8
|
-
state: string;
|
|
9
|
-
model?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare class AdbClient {
|
|
12
|
-
private deviceId?;
|
|
13
|
-
private readonly uiTreeCache;
|
|
14
|
-
constructor(deviceId?: string);
|
|
15
|
-
private get deviceFlag();
|
|
16
|
-
/**
|
|
17
|
-
* SECURITY: All adb invocations route through this argv-form path (execFileSync — no /bin/sh -c).
|
|
18
|
-
* Shell metacharacters in `args` are passed as literal argv slots, not parsed by the host shell.
|
|
19
|
-
* This structurally prevents host-side OS Command Injection (CWE-78) — see issue #40.
|
|
20
|
-
*/
|
|
21
|
-
private execArgs;
|
|
22
|
-
private execArgsRaw;
|
|
23
|
-
private execArgsAsync;
|
|
24
|
-
/**
|
|
25
|
-
* Execute ADB command and return stdout as string.
|
|
26
|
-
* SECURITY: Command is whitespace-split into argv tokens — shell metachars in the input
|
|
27
|
-
* are NOT interpreted (no /bin/sh -c). For commands needing spaces inside an argument
|
|
28
|
-
* (e.g. text input with spaces), use the new argv-form via internal helpers.
|
|
29
|
-
*/
|
|
30
|
-
exec(command: string, deviceIdOverride?: string): string;
|
|
31
|
-
/**
|
|
32
|
-
* Execute ADB command and return raw bytes (for screenshots)
|
|
33
|
-
*/
|
|
34
|
-
execRaw(command: string, deviceIdOverride?: string): Buffer;
|
|
35
|
-
/**
|
|
36
|
-
* Execute ADB command async (non-blocking)
|
|
37
|
-
*/
|
|
38
|
-
execAsync(command: string, deviceIdOverride?: string): Promise<string>;
|
|
39
|
-
/**
|
|
40
|
-
* Execute ADB command async and return raw bytes (for screenshots)
|
|
41
|
-
*/
|
|
42
|
-
execRawAsync(command: string, deviceIdOverride?: string): Promise<Buffer>;
|
|
43
|
-
/**
|
|
44
|
-
* Get list of connected devices
|
|
45
|
-
*/
|
|
46
|
-
getDevices(): Device[];
|
|
47
|
-
/**
|
|
48
|
-
* Set active device
|
|
49
|
-
*/
|
|
50
|
-
setDevice(deviceId: string): void;
|
|
51
|
-
/**
|
|
52
|
-
* Get currently configured device ID
|
|
53
|
-
*/
|
|
54
|
-
getDeviceId(): string | undefined;
|
|
55
|
-
/**
|
|
56
|
-
* Take screenshot and return raw PNG buffer
|
|
57
|
-
*/
|
|
58
|
-
screenshotRaw(): Buffer;
|
|
59
|
-
/**
|
|
60
|
-
* Take screenshot async (non-blocking)
|
|
61
|
-
*/
|
|
62
|
-
screenshotRawAsync(): Promise<Buffer>;
|
|
63
|
-
/**
|
|
64
|
-
* Take screenshot and return as base64 PNG (legacy)
|
|
65
|
-
*/
|
|
66
|
-
screenshot(): string;
|
|
67
|
-
/**
|
|
68
|
-
* Tap at coordinates
|
|
69
|
-
*/
|
|
70
|
-
tap(x: number, y: number): void;
|
|
71
|
-
/**
|
|
72
|
-
* Double tap at coordinates.
|
|
73
|
-
* Device-side composition via single sh -c argv slot — host shell never parses the metachars.
|
|
74
|
-
* Inputs are validated numerics; user-controlled strings never reach this code path.
|
|
75
|
-
*/
|
|
76
|
-
doubleTap(x: number, y: number, intervalMs?: number): void;
|
|
77
|
-
/**
|
|
78
|
-
* Select all text in focused input
|
|
79
|
-
*/
|
|
80
|
-
selectAll(): void;
|
|
81
|
-
/**
|
|
82
|
-
* Copy to clipboard
|
|
83
|
-
*/
|
|
84
|
-
copyToClipboard(): void;
|
|
85
|
-
/**
|
|
86
|
-
* Paste from clipboard
|
|
87
|
-
*/
|
|
88
|
-
pasteFromClipboard(): void;
|
|
89
|
-
/**
|
|
90
|
-
* Get clipboard text
|
|
91
|
-
*/
|
|
92
|
-
getClipboardText(): string;
|
|
93
|
-
/**
|
|
94
|
-
* Long press at coordinates
|
|
95
|
-
*/
|
|
96
|
-
longPress(x: number, y: number, durationMs?: number): void;
|
|
97
|
-
/**
|
|
98
|
-
* Swipe gesture
|
|
99
|
-
*/
|
|
100
|
-
swipe(x1: number, y1: number, x2: number, y2: number, durationMs?: number): void;
|
|
101
|
-
/**
|
|
102
|
-
* Swipe in direction (uses screen center)
|
|
103
|
-
*/
|
|
104
|
-
swipeDirection(direction: "up" | "down" | "left" | "right", distance?: number): void;
|
|
105
|
-
/**
|
|
106
|
-
* Input text.
|
|
107
|
-
* The full `shell input text "<escaped>"` string passes as a SINGLE argv slot to adb,
|
|
108
|
-
* so the host shell never parses it (host-side CWE-78 closed). adb ships the string
|
|
109
|
-
* verbatim to the device shell, which parses the double-quoted form safely thanks to
|
|
110
|
-
* the per-character escape below.
|
|
111
|
-
*/
|
|
112
|
-
inputText(text: string): void;
|
|
113
|
-
/**
|
|
114
|
-
* Press key by name or keycode
|
|
115
|
-
*/
|
|
116
|
-
pressKey(key: string): void;
|
|
117
|
-
/**
|
|
118
|
-
* Invalidate the turbo UI tree cache.
|
|
119
|
-
* Call after actions that mutate the screen (tap, swipe, input, etc.)
|
|
120
|
-
* so the next getUiHierarchy call fetches fresh data.
|
|
121
|
-
*/
|
|
122
|
-
invalidateUiTreeCache(): void;
|
|
123
|
-
/**
|
|
124
|
-
* Get UI hierarchy XML (sync — blocks event loop)
|
|
125
|
-
*/
|
|
126
|
-
getUiHierarchy(turbo?: boolean): string;
|
|
127
|
-
/**
|
|
128
|
-
* Get UI hierarchy XML async (non-blocking)
|
|
129
|
-
*/
|
|
130
|
-
getUiHierarchyAsync(turbo?: boolean): Promise<string>;
|
|
131
|
-
/**
|
|
132
|
-
* Execute an action + uiautomator dump in a single adb shell invocation (turbo only).
|
|
133
|
-
* Reduces two process spawns to one, saving ~150-300ms per step.
|
|
134
|
-
* Returns { actionOutput: string; uiXml: string }.
|
|
135
|
-
*
|
|
136
|
-
* SECURITY: Device-side composition via single sh -c argv slot — host shell never parses
|
|
137
|
-
* the metachars. `actionCommand` originates from internal turbo helpers (tap/swipe/press),
|
|
138
|
-
* which validate numeric inputs; user-controlled strings do not reach this path.
|
|
139
|
-
*/
|
|
140
|
-
execWithUiDump(actionCommand: string, deviceIdOverride?: string): Promise<{
|
|
141
|
-
actionOutput: string;
|
|
142
|
-
uiXml: string;
|
|
143
|
-
}>;
|
|
144
|
-
/**
|
|
145
|
-
* Tap at coordinates (async, non-blocking — for turbo mode).
|
|
146
|
-
*/
|
|
147
|
-
tapAsync(x: number, y: number, deviceIdOverride?: string): Promise<void>;
|
|
148
|
-
/**
|
|
149
|
-
* Swipe gesture (async, non-blocking — for turbo mode).
|
|
150
|
-
*/
|
|
151
|
-
swipeAsync(x1: number, y1: number, x2: number, y2: number, durationMs?: number, deviceIdOverride?: string): Promise<void>;
|
|
152
|
-
/**
|
|
153
|
-
* Press key (async, non-blocking — for turbo mode).
|
|
154
|
-
*/
|
|
155
|
-
pressKeyAsync(key: string, deviceIdOverride?: string): Promise<void>;
|
|
156
|
-
/**
|
|
157
|
-
* Input text (async, non-blocking — for turbo mode).
|
|
158
|
-
*/
|
|
159
|
-
inputTextAsync(text: string, deviceIdOverride?: string): Promise<void>;
|
|
160
|
-
/**
|
|
161
|
-
* Launch app by package name
|
|
162
|
-
*/
|
|
163
|
-
launchApp(packageName: string): string;
|
|
164
|
-
/**
|
|
165
|
-
* Stop app
|
|
166
|
-
*/
|
|
167
|
-
stopApp(packageName: string): void;
|
|
168
|
-
/**
|
|
169
|
-
* Clear app data
|
|
170
|
-
*/
|
|
171
|
-
clearAppData(packageName: string): void;
|
|
172
|
-
/**
|
|
173
|
-
* Grant runtime permission to app
|
|
174
|
-
*/
|
|
175
|
-
grantPermission(packageName: string, permission: string): void;
|
|
176
|
-
/**
|
|
177
|
-
* Revoke runtime permission from app
|
|
178
|
-
*/
|
|
179
|
-
revokePermission(packageName: string, permission: string): void;
|
|
180
|
-
/**
|
|
181
|
-
* Reset all permissions for app (clears app data)
|
|
182
|
-
*/
|
|
183
|
-
resetPermissions(packageName: string): void;
|
|
184
|
-
/**
|
|
185
|
-
* Install APK
|
|
186
|
-
*/
|
|
187
|
-
installApk(apkPath: string): string;
|
|
188
|
-
/**
|
|
189
|
-
* Uninstall app
|
|
190
|
-
*/
|
|
191
|
-
uninstallApp(packageName: string): string;
|
|
192
|
-
/**
|
|
193
|
-
* Get current activity
|
|
194
|
-
*/
|
|
195
|
-
getCurrentActivity(): string;
|
|
196
|
-
/**
|
|
197
|
-
* Get screen size
|
|
198
|
-
*/
|
|
199
|
-
getScreenSize(): {
|
|
200
|
-
width: number;
|
|
201
|
-
height: number;
|
|
202
|
-
};
|
|
203
|
-
/**
|
|
204
|
-
* Wait for device
|
|
205
|
-
*/
|
|
206
|
-
waitForDevice(): void;
|
|
207
|
-
/**
|
|
208
|
-
* Execute shell command
|
|
209
|
-
*/
|
|
210
|
-
shell(command: string): string;
|
|
211
|
-
/**
|
|
212
|
-
* Get device logs (logcat)
|
|
213
|
-
* @param options - filter options
|
|
214
|
-
*/
|
|
215
|
-
getLogs(options?: LogcatOptions): string;
|
|
216
|
-
/**
|
|
217
|
-
* Clear logcat buffer
|
|
218
|
-
*/
|
|
219
|
-
clearLogs(): void;
|
|
220
|
-
/**
|
|
221
|
-
* Get network stats (first 100 lines).
|
|
222
|
-
* Node-side filter replaces device-side `| head -100` so we can use argv-form (no shell pipe).
|
|
223
|
-
*/
|
|
224
|
-
getNetworkStats(): string;
|
|
225
|
-
/**
|
|
226
|
-
* Get battery info
|
|
227
|
-
*/
|
|
228
|
-
getBatteryInfo(): string;
|
|
229
|
-
/**
|
|
230
|
-
* Get memory info
|
|
231
|
-
*/
|
|
232
|
-
getMemoryInfo(packageName?: string): string;
|
|
233
|
-
/**
|
|
234
|
-
* Get CPU info (first 20 lines).
|
|
235
|
-
*/
|
|
236
|
-
getCpuInfo(): string;
|
|
237
|
-
}
|
|
238
|
-
//# sourceMappingURL=client.d.ts.map
|