claude-in-mobile 3.14.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/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 -204
- package/dist/ios/client.d.ts.map +0 -1
- package/dist/ios/client.js +0 -483
- package/dist/ios/client.js.map +0 -1
- package/dist/ios/go-ios/client.d.ts +0 -23
- package/dist/ios/go-ios/client.d.ts.map +0 -1
- package/dist/ios/go-ios/client.js +0 -51
- package/dist/ios/go-ios/client.js.map +0 -1
- package/dist/ios/go-ios/index.d.ts +0 -4
- package/dist/ios/go-ios/index.d.ts.map +0 -1
- package/dist/ios/go-ios/index.js +0 -3
- package/dist/ios/go-ios/index.js.map +0 -1
- package/dist/ios/go-ios/parsers.d.ts +0 -28
- package/dist/ios/go-ios/parsers.d.ts.map +0 -1
- package/dist/ios/go-ios/parsers.js +0 -71
- package/dist/ios/go-ios/parsers.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 -33
- package/dist/ios/wda/wda-client.d.ts.map +0 -1
- package/dist/ios/wda/wda-client.js +0 -250
- package/dist/ios/wda/wda-client.js.map +0 -1
- package/dist/ios/wda/wda-manager.d.ts +0 -34
- package/dist/ios/wda/wda-manager.d.ts.map +0 -1
- package/dist/ios/wda/wda-manager.js +0 -392
- 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
package/README.md
CHANGED
|
@@ -1,603 +1,90 @@
|
|
|
1
|
-
#
|
|
1
|
+
# claude-in-mobile 4.0.0-dev — modular / plugin edition
|
|
2
2
|
|
|
3
|
-
> **
|
|
4
|
-
>
|
|
5
|
-
>
|
|
6
|
-
>
|
|
7
|
-
> brew tap alexgladkov/claude-in-mobile
|
|
8
|
-
> brew install claude-in-mobile
|
|
9
|
-
> ```
|
|
3
|
+
> **Pre-release (`dev` tag).** The stable line is 3.x. This 4.0.0-dev artifact
|
|
4
|
+
> is an experiment: the base package is **slim** and each platform ships as a
|
|
5
|
+
> separate plugin you install on demand. Try it, break it, send feedback.
|
|
6
|
+
> `npm i -g claude-in-mobile` still gives you stable 3.x.
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
## What changed
|
|
12
9
|
|
|
13
|
-
|
|
10
|
+
In 3.x the single `claude-in-mobile` package bundled every platform
|
|
11
|
+
(Android, iOS, Web, Desktop, Aurora). In 4.0.0 the base is **slim** —
|
|
12
|
+
kernel + built-in tools + REPL only — and platforms are delivered as
|
|
13
|
+
separate packages, loaded **on demand**:
|
|
14
14
|
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Table of Contents
|
|
18
|
-
|
|
19
|
-
- [Quick Start](#quick-start)
|
|
20
|
-
- [Features at a Glance](#features-at-a-glance)
|
|
21
|
-
- [Quality Engineering](#quality-engineering)
|
|
22
|
-
- [Installation](#installation)
|
|
23
|
-
- [Homebrew (macOS)](#homebrew-macos)
|
|
24
|
-
- [One-liner (any client)](#one-liner-any-client)
|
|
25
|
-
- [Claude Code](#claude-code)
|
|
26
|
-
- [OpenCode](#opencode)
|
|
27
|
-
- [Other Agents (Pi, Qwen, Gemini, Codex, Cursor)](#other-agents)
|
|
28
|
-
- [From npm / source](#from-npm--source)
|
|
29
|
-
- [Windows](#windows)
|
|
30
|
-
- [Platform Guides](#platform-guides)
|
|
31
|
-
- [Android](#android)
|
|
32
|
-
- [iOS](#ios)
|
|
33
|
-
- [Desktop](#desktop)
|
|
34
|
-
- [Browser](#browser)
|
|
35
|
-
- [Aurora OS](#aurora-os)
|
|
36
|
-
- [Tools Reference](#tools-reference)
|
|
37
|
-
- [Core Meta-Tools](#core-meta-tools)
|
|
38
|
-
- [Optional Modules](#optional-modules)
|
|
39
|
-
- [Flow Tools](#flow-tools)
|
|
40
|
-
- [Native CLI](#native-cli)
|
|
41
|
-
- [Architecture](#architecture)
|
|
42
|
-
- [License](#license)
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## Quick Start
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# Install via Homebrew (macOS)
|
|
50
|
-
brew tap AlexGladkov/claude-in-mobile https://github.com/AlexGladkov/claude-in-mobile
|
|
51
|
-
brew install claude-in-mobile
|
|
52
|
-
|
|
53
|
-
# Verify dependencies
|
|
54
|
-
claude-in-mobile doctor
|
|
55
|
-
|
|
56
|
-
# Add to Claude Code
|
|
57
|
-
claude mcp add --scope user --transport stdio mobile -- npx claude-in-mobile@latest
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
Then talk to Claude naturally:
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
"Take a screenshot of the Android emulator"
|
|
64
|
-
"Tap on the Login button"
|
|
65
|
-
"Type hello in the search field"
|
|
66
|
-
"Switch to iOS simulator"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## Features at a Glance
|
|
72
|
-
|
|
73
|
-
| Feature | Description |
|
|
74
|
-
|---------|-------------|
|
|
75
|
-
| **Unified API** | Same 8 meta-tools work across Android, iOS, Desktop, Aurora, and Browser |
|
|
76
|
-
| **Token-optimized** | 8 meta-tools + 3 optional modules instead of 81 tools (~85% token reduction) |
|
|
77
|
-
| **Dynamic modules** | Browser, Desktop, Store load on demand — default tool list stays lean |
|
|
78
|
-
| **Smart screenshots** | Auto-compressed for optimal LLM processing |
|
|
79
|
-
| **Annotated screenshots** | Colored bounding boxes + numbered element labels |
|
|
80
|
-
| **Security hardened** | Shell injection protection, URL validation, path traversal blocking |
|
|
81
|
-
| **Structured errors** | Typed error codes with auto-recovery hints |
|
|
82
|
-
| **Multi-device parallel** | Run actions on multiple devices simultaneously |
|
|
83
|
-
| **Flow engine** | Batch, conditional loops, and fan-out flows |
|
|
84
|
-
| **Permission management** | Grant/revoke/reset app permissions (Android + iOS) |
|
|
85
|
-
| **Store publishing** | Google Play, Huawei AppGallery, RuStore |
|
|
86
|
-
| **Telemetry** | Per-tool call metrics via `system(action:'metrics')` |
|
|
87
|
-
| **Doctor command** | `claude-in-mobile doctor` — checks all dependencies at once |
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Quality Engineering
|
|
92
|
-
|
|
93
|
-
Advanced testing and monitoring built into Claude Mobile:
|
|
94
|
-
|
|
95
|
-
| Feature | What it does | How to use |
|
|
96
|
-
|---------|-------------|------------|
|
|
97
|
-
| **Accessibility Auditing** | WCAG 2.2 checks: missing labels, touch targets < 48px, focus order, duplicates | `accessibility(action:'audit')` |
|
|
98
|
-
| **Visual Regression** | Baseline screenshots + pixel-level diff detection | `visual(action:'baseline_save')`, `visual(action:'compare')` |
|
|
99
|
-
| **Test Recorder** | Record taps/swipes/input, replay without code | `recorder(action:'start')`, `recorder(action:'play')` |
|
|
100
|
-
| **Multi-Device Sync** | Barrier-based coordination for parallel testing | `sync(action:'create')`, `sync(action:'barrier')` |
|
|
101
|
-
| **App Autopilot** | Autonomous BFS/DFS exploration with self-healing locators | `autopilot(action:'explore')` |
|
|
102
|
-
| **Performance Monitor** | Real-time memory, CPU, FPS tracking with snapshots | `performance(action:'start')`, `performance(action:'snapshot')` |
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Installation
|
|
107
|
-
|
|
108
|
-
### Homebrew (macOS)
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
brew tap AlexGladkov/claude-in-mobile https://github.com/AlexGladkov/claude-in-mobile
|
|
112
|
-
brew install claude-in-mobile
|
|
113
15
|
```
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
claude-in-mobile
|
|
16
|
+
claude-in-mobile # slim base (no platforms)
|
|
17
|
+
@claude-in-mobile/plugin-android # Android (ADB)
|
|
18
|
+
@claude-in-mobile/plugin-ios # iOS (simctl + WebDriverAgent + go-ios)
|
|
19
|
+
@claude-in-mobile/plugin-web # Web (Chrome DevTools Protocol)
|
|
20
|
+
@claude-in-mobile/plugin-desktop # Desktop (Compose)
|
|
21
|
+
@claude-in-mobile/plugin-aurora # Aurora OS (audb)
|
|
22
|
+
@claude-in-mobile/plugin-all # meta: every platform at once
|
|
119
23
|
```
|
|
120
24
|
|
|
121
|
-
|
|
25
|
+
By default **no platforms are loaded** — you enable only what you need.
|
|
122
26
|
|
|
123
|
-
|
|
27
|
+
## Install
|
|
124
28
|
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
|
|
29
|
+
```sh
|
|
30
|
+
# 1. base (slim) — pre-release, needs the `dev` tag
|
|
31
|
+
npm i -g claude-in-mobile@dev
|
|
128
32
|
|
|
129
|
-
|
|
33
|
+
# 2. add the platform(s) you need
|
|
34
|
+
npm i -g @claude-in-mobile/plugin-ios@dev
|
|
35
|
+
claude-in-mobile install ios
|
|
130
36
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
npx add-mcp claude-in-mobile -a cursor -y
|
|
37
|
+
# …or everything at once
|
|
38
|
+
npm i -g @claude-in-mobile/plugin-all@dev
|
|
39
|
+
claude-in-mobile install all
|
|
135
40
|
```
|
|
136
41
|
|
|
137
|
-
|
|
42
|
+
`install` records the enabled set in `~/.claude-in-mobile/config.json`; the
|
|
43
|
+
MCP server loads exactly those platforms on its next start. Override per-run
|
|
44
|
+
with `CLAUDE_IN_MOBILE_PLATFORMS=ios,web` (csv / `all` / `none`).
|
|
138
45
|
|
|
139
|
-
|
|
140
|
-
# Project-local
|
|
141
|
-
claude mcp add --transport stdio mobile -- npx claude-in-mobile@latest
|
|
46
|
+
## CLI
|
|
142
47
|
|
|
143
|
-
|
|
144
|
-
claude
|
|
48
|
+
```sh
|
|
49
|
+
claude-in-mobile platforms # list enabled + available
|
|
50
|
+
claude-in-mobile install <p|all> # enable platform(s)
|
|
51
|
+
claude-in-mobile uninstall <p> # disable platform(s)
|
|
52
|
+
claude-in-mobile doctor [p...] # check external toolchains (adb/xcrun/…)
|
|
145
53
|
```
|
|
146
54
|
|
|
147
|
-
|
|
55
|
+
A platform tool invoked without its plugin installed returns an actionable
|
|
56
|
+
"Platform '<p>' is not installed — run `claude-in-mobile install <p>`" error.
|
|
148
57
|
|
|
149
|
-
|
|
150
|
-
claude plugin marketplace add AlexGladkov/claude-in-mobile
|
|
151
|
-
claude plugin install claude-in-mobile@claude-in-mobile
|
|
152
|
-
```
|
|
58
|
+
## External toolchains (per platform)
|
|
153
59
|
|
|
154
|
-
|
|
60
|
+
| Platform | Needs |
|
|
61
|
+
|----------|-------|
|
|
62
|
+
| android | `adb` (Android platform-tools) |
|
|
63
|
+
| ios | Xcode CLT (`xcrun`); physical devices also need `go-ios` (`npm i -g go-ios`) |
|
|
64
|
+
| web | Chrome/Chromium (launched on demand) |
|
|
65
|
+
| desktop | JDK (desktop companion) |
|
|
66
|
+
| aurora | Aurora Flutter SDK (`audb`) |
|
|
155
67
|
|
|
156
|
-
|
|
68
|
+
Run `claude-in-mobile doctor` to check them.
|
|
157
69
|
|
|
158
|
-
|
|
70
|
+
## MCP client config
|
|
159
71
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
# Choose local MCP → npx -y claude-in-mobile
|
|
163
|
-
```
|
|
72
|
+
Point your MCP client at the base binary as usual — platforms are resolved
|
|
73
|
+
from your enabled set, not from the client config:
|
|
164
74
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
```json
|
|
75
|
+
```jsonc
|
|
168
76
|
{
|
|
169
|
-
"
|
|
170
|
-
|
|
171
|
-
"mobile": {
|
|
172
|
-
"type": "local",
|
|
173
|
-
"command": ["npx", "-y", "claude-in-mobile"],
|
|
174
|
-
"enabled": true
|
|
175
|
-
}
|
|
77
|
+
"mcpServers": {
|
|
78
|
+
"mobile": { "command": "claude-in-mobile" }
|
|
176
79
|
}
|
|
177
80
|
}
|
|
178
81
|
```
|
|
179
82
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
claude-in-mobile setup opencode # project-local
|
|
184
|
-
claude-in-mobile setup opencode --global # user-wide
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Other Agents
|
|
188
|
-
|
|
189
|
-
Native CLI skill works with any agent that supports Agent Skills:
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
claude-in-mobile setup pi --global # Pi
|
|
193
|
-
claude-in-mobile setup qwen --global # Qwen Code
|
|
194
|
-
claude-in-mobile setup gemini --global # Gemini CLI
|
|
195
|
-
claude-in-mobile setup codex --global # Codex
|
|
196
|
-
claude-in-mobile setup cursor --global # Cursor
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Drop `--global` for project-local install. Restart the agent after setup.
|
|
200
|
-
|
|
201
|
-
<details>
|
|
202
|
-
<summary>MCP server config for Qwen / Gemini / Codex / Cursor</summary>
|
|
203
|
-
|
|
204
|
-
**Qwen Code** — `.qwen/settings.json` or `~/.qwen/settings.json`:
|
|
205
|
-
|
|
206
|
-
```json
|
|
207
|
-
{ "mcpServers": { "mobile": { "command": "npx", "args": ["-y", "claude-in-mobile"] } } }
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**Gemini CLI** — `.gemini/settings.json` or `~/.gemini/settings.json`:
|
|
211
|
-
|
|
212
|
-
```json
|
|
213
|
-
{ "mcpServers": { "mobile": { "command": "npx", "args": ["-y", "claude-in-mobile"] } } }
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**Codex**:
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
codex mcp add mobile -- npx -y claude-in-mobile
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**Cursor** — `.cursor/mcp.json`:
|
|
223
|
-
|
|
224
|
-
```json
|
|
225
|
-
{ "mcpServers": { "mobile": { "command": "npx", "args": ["-y", "claude-in-mobile"] } } }
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
</details>
|
|
229
|
-
|
|
230
|
-
### From npm / source
|
|
231
|
-
|
|
232
|
-
```bash
|
|
233
|
-
# npm (no install)
|
|
234
|
-
npx claude-in-mobile
|
|
235
|
-
|
|
236
|
-
# From source
|
|
237
|
-
git clone https://github.com/AlexGladkov/claude-in-mobile.git
|
|
238
|
-
cd claude-in-mobile
|
|
239
|
-
npm install
|
|
240
|
-
npm run build:all
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
Using a local build with any MCP client:
|
|
244
|
-
|
|
245
|
-
```json
|
|
246
|
-
{ "mcpServers": { "mobile": { "command": "node", "args": ["/path/to/claude-in-mobile/dist/index.js"] } } }
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
### Windows
|
|
250
|
-
|
|
251
|
-
```bash
|
|
252
|
-
claude mcp add --transport stdio mobile -- cmd /c npx claude-in-mobile@latest
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
|
|
257
|
-
## Platform Guides
|
|
258
|
-
|
|
259
|
-
### Android
|
|
260
|
-
|
|
261
|
-
**Requirements:**
|
|
262
|
-
- ADB installed (auto-discovered or set `ADB_PATH`)
|
|
263
|
-
- USB debugging enabled on device, or running emulator
|
|
264
|
-
|
|
265
|
-
**ADB discovery order:**
|
|
266
|
-
|
|
267
|
-
| Priority | Location |
|
|
268
|
-
|----------|----------|
|
|
269
|
-
| 1 | `ADB_PATH` env var |
|
|
270
|
-
| 2 | `$ANDROID_HOME/platform-tools/adb` |
|
|
271
|
-
| 3 | `$ANDROID_SDK_ROOT/platform-tools/adb` |
|
|
272
|
-
| 4 | OS default: `~/Library/Android/sdk` (macOS), `%LOCALAPPDATA%\Android\Sdk` (Windows), `~/Android/Sdk` (Linux) |
|
|
273
|
-
| 5 | `adb` from `PATH` |
|
|
274
|
-
|
|
275
|
-
If none found → `[ADB_NOT_INSTALLED]` error with probed paths.
|
|
276
|
-
|
|
277
|
-
**Examples:**
|
|
278
|
-
|
|
279
|
-
```
|
|
280
|
-
"Show connected devices"
|
|
281
|
-
"Take a screenshot on Android"
|
|
282
|
-
"Tap on Settings"
|
|
283
|
-
"Swipe down to scroll"
|
|
284
|
-
"Type 'hello' in the search field"
|
|
285
|
-
"Press the back button"
|
|
286
|
-
"Grant camera permission to com.example.app"
|
|
287
|
-
"Launch com.example.app"
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
**CLI:**
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
claude-in-mobile screenshot android
|
|
294
|
-
claude-in-mobile tap android 540 960
|
|
295
|
-
claude-in-mobile input android "hello world"
|
|
296
|
-
claude-in-mobile ui-dump android | grep "Login"
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
#### Coordinate space (raw `x`/`y` in tap / swipe / long_press)
|
|
300
|
-
|
|
301
|
-
When you call an input tool with raw `x`/`y` (or `x1`/`y1`/`x2`/`y2` for swipe), the values are interpreted in **the most recent screenshot's pixel space** and auto-scaled to device coordinates before dispatch. The scale comes from the last `screen_capture` call: e.g., capture at `preset='low'` (270×480) on a 1080×2400 device sets a 4× factor, so `tap(135, 240)` becomes `tap(540, 960)` on the device.
|
|
302
|
-
|
|
303
|
-
This is convenient for the common flow `screen_capture → reason about pixel → tap`, but has two gotchas worth knowing:
|
|
304
|
-
|
|
305
|
-
- **Coordinates from `ui_find` / `ui_tree` are device coordinates**, not screenshot coordinates. They come from `uiautomator` which always reports in device space. If the most recent screenshot was at a low preset, passing those device coords as raw `x`/`y` will over-scale them. Prefer `index`, `text`, or `resourceId` for ui-sourced taps to avoid the issue entirely.
|
|
306
|
-
- **No screenshot taken yet?** Then there's no scale stored, and raw `x`/`y` are passed through 1:1 as device coords.
|
|
307
|
-
|
|
308
|
-
The cleanest mental model: *raw coords match whatever pixel space you're looking at on screen* (your last screenshot). For everything else, use the resolver fields (`index`, `text`, `resourceId`, `label`).
|
|
309
|
-
|
|
310
|
-
---
|
|
311
|
-
|
|
312
|
-
### iOS
|
|
313
|
-
|
|
314
|
-
**Requirements:**
|
|
315
|
-
- macOS with Xcode
|
|
316
|
-
- iOS Simulator (no physical device support yet)
|
|
317
|
-
- WebDriverAgent for full UI inspection (optional but recommended)
|
|
318
|
-
|
|
319
|
-
**WebDriverAgent setup:**
|
|
320
|
-
|
|
321
|
-
```bash
|
|
322
|
-
# Automatic (via Appium)
|
|
323
|
-
npm install -g appium
|
|
324
|
-
appium driver install xcuitest
|
|
325
|
-
|
|
326
|
-
# Or set custom path
|
|
327
|
-
export WDA_PATH=/path/to/WebDriverAgent
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
On first use, WDA is auto-built (~2 min one-time), launched on simulator, and connected on port 8100+.
|
|
331
|
-
|
|
332
|
-
**What WDA enables:**
|
|
333
|
-
- `ui(action:'tree')` — full accessibility tree
|
|
334
|
-
- `ui(action:'find')` — element discovery by label/text
|
|
335
|
-
- `input(action:'tap', label:'...')` — element-based tapping
|
|
336
|
-
- Improved swipe and gesture simulation
|
|
337
|
-
|
|
338
|
-
**Troubleshooting:**
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
# Install Xcode CLI tools
|
|
342
|
-
xcode-select --install
|
|
343
|
-
|
|
344
|
-
# Accept license
|
|
345
|
-
sudo xcodebuild -license accept
|
|
346
|
-
|
|
347
|
-
# Check simulator is booted
|
|
348
|
-
xcrun simctl list | grep Booted
|
|
349
|
-
|
|
350
|
-
# Check port
|
|
351
|
-
lsof -i :8100
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
<details>
|
|
355
|
-
<summary>Manual WDA test</summary>
|
|
356
|
-
|
|
357
|
-
```bash
|
|
358
|
-
cd ~/.appium/node_modules/appium-xcuitest-driver/node_modules/appium-webdriveragent
|
|
359
|
-
xcodebuild test -project WebDriverAgent.xcodeproj \
|
|
360
|
-
-scheme WebDriverAgentRunner \
|
|
361
|
-
-destination 'platform=iOS Simulator,id=<DEVICE_UDID>'
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
</details>
|
|
365
|
-
|
|
366
|
-
**Examples:**
|
|
367
|
-
|
|
368
|
-
```
|
|
369
|
-
"Take a screenshot on iOS"
|
|
370
|
-
"Open Safari on iOS"
|
|
371
|
-
"Tap on the Login button"
|
|
372
|
-
"Type my email in the text field"
|
|
373
|
-
"Swipe left on the card"
|
|
374
|
-
"Reset all permissions for com.apple.Maps"
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
|
-
### Desktop
|
|
380
|
-
|
|
381
|
-
**Requirements:**
|
|
382
|
-
- macOS (Windows/Linux planned)
|
|
383
|
-
- Accessibility permissions: System Settings → Privacy & Security → Accessibility
|
|
384
|
-
- JDK 17+ (for building Desktop companion)
|
|
385
|
-
|
|
386
|
-
**Supported apps:** Any macOS application — SwiftUI, AppKit, Electron, Compose Desktop.
|
|
387
|
-
|
|
388
|
-
**Launch modes:**
|
|
389
|
-
|
|
390
|
-
| Mode | Example |
|
|
391
|
-
|------|---------|
|
|
392
|
-
| By `bundleId` | `desktop(action:'launch', bundleId:'com.apple.Calculator')` |
|
|
393
|
-
| By `.app` path | `desktop(action:'launch', appPath:'/Applications/Slack.app')` |
|
|
394
|
-
| Attach by PID | `desktop(action:'launch', pid:12345)` |
|
|
395
|
-
|
|
396
|
-
**Enable the module first:**
|
|
397
|
-
|
|
398
|
-
```
|
|
399
|
-
"Enable desktop module"
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
Or it auto-enables on first `desktop(...)` call.
|
|
403
|
-
|
|
404
|
-
**Examples:**
|
|
405
|
-
|
|
406
|
-
```
|
|
407
|
-
"Launch Calculator"
|
|
408
|
-
"Take a screenshot of the desktop app"
|
|
409
|
-
"Get window list"
|
|
410
|
-
"Resize window to 1280x720"
|
|
411
|
-
"Tap at 100, 200 on desktop"
|
|
412
|
-
"Get clipboard content"
|
|
413
|
-
"Get performance metrics"
|
|
414
|
-
"Stop the desktop app"
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
> Full API documentation: [docs/SPEC_DESKTOP.md](docs/SPEC_DESKTOP.md)
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
### Browser
|
|
422
|
-
|
|
423
|
-
**Requirements:**
|
|
424
|
-
- Chrome or Chromium installed (or set `CHROME_PATH`)
|
|
425
|
-
|
|
426
|
-
Browser automation via Chrome DevTools Protocol (CDP). The `browser` module loads on demand.
|
|
427
|
-
|
|
428
|
-
**Examples:**
|
|
429
|
-
|
|
430
|
-
```
|
|
431
|
-
"Open https://example.com in the browser"
|
|
432
|
-
"Click the Sign In button"
|
|
433
|
-
"Fill the email field with test@example.com"
|
|
434
|
-
"Take a browser screenshot"
|
|
435
|
-
"Execute JS: document.title"
|
|
436
|
-
"Wait for the loading spinner to disappear"
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
**Available actions:**
|
|
440
|
-
|
|
441
|
-
| Action | Description |
|
|
442
|
-
|--------|-------------|
|
|
443
|
-
| `open` | Open URL in new session |
|
|
444
|
-
| `navigate` | Go to URL in existing session |
|
|
445
|
-
| `click` | Click element by ref |
|
|
446
|
-
| `fill` | Type into input field |
|
|
447
|
-
| `fill_form` | Fill multiple fields at once |
|
|
448
|
-
| `press_key` | Keyboard input |
|
|
449
|
-
| `snapshot` | DOM snapshot with element refs |
|
|
450
|
-
| `screenshot` | Visual screenshot |
|
|
451
|
-
| `evaluate` | Run JavaScript |
|
|
452
|
-
| `wait_for_selector` | Wait for element to appear |
|
|
453
|
-
| `close` | Close session |
|
|
454
|
-
| `list_sessions` | Show active sessions |
|
|
455
|
-
| `clear_session` | Reset cookies/storage |
|
|
456
|
-
|
|
457
|
-
---
|
|
458
|
-
|
|
459
|
-
### Aurora OS
|
|
460
|
-
|
|
461
|
-
**Requirements:**
|
|
462
|
-
- `audb` CLI: `cargo install audb-client`
|
|
463
|
-
- SSH-enabled Aurora OS device
|
|
464
|
-
- Python on device for tap/swipe: `devel-su pkcon install python`
|
|
465
|
-
|
|
466
|
-
**Examples:**
|
|
467
|
-
|
|
468
|
-
```
|
|
469
|
-
"List Aurora devices"
|
|
470
|
-
"Take a screenshot on Aurora"
|
|
471
|
-
"Tap at 100, 200 on Aurora"
|
|
472
|
-
"Launch ru.example.app on Aurora"
|
|
473
|
-
"List installed apps on Aurora"
|
|
474
|
-
"Get logs from Aurora device"
|
|
475
|
-
"Push file.txt to /home/defaultuser/"
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
---
|
|
479
|
-
|
|
480
|
-
## Tools Reference
|
|
481
|
-
|
|
482
|
-
v3.8.0 provides **8 core meta-tools** + **3 optional modules**. Each meta-tool uses an `action` parameter.
|
|
483
|
-
|
|
484
|
-
### Core Meta-Tools
|
|
485
|
-
|
|
486
|
-
| Meta-Tool | Actions | Description |
|
|
487
|
-
|-----------|---------|-------------|
|
|
488
|
-
| `device` | `list`, `set`, `set_target`, `get_target`, `enable_module`, `disable_module`, `list_modules` | Device management, module control |
|
|
489
|
-
| `input` | `tap`, `double_tap`, `long_press`, `swipe`, `text`, `key` | Touch and keyboard input |
|
|
490
|
-
| `screen` | `capture`, `annotate` | Screenshots and visual annotation |
|
|
491
|
-
| `ui` | `tree`, `find`, `find_tap`, `tap_text`, `analyze`, `wait`, `assert_visible`, `assert_gone` | UI hierarchy, element interaction |
|
|
492
|
-
| `app` | `launch`, `stop`, `install`, `list` | App lifecycle |
|
|
493
|
-
| `system` | `activity`, `shell`, `wait`, `open_url`, `logs`, `clear_logs`, `info`, `webview`, `clipboard_*`, `permission_*`, `file_*`, `metrics`, `reset_metrics` | System ops, clipboard, permissions, files, telemetry |
|
|
494
|
-
| `flow_batch` | — | Execute multiple commands in one round-trip (max 50) |
|
|
495
|
-
| `flow_run` | — | Multi-step automation with conditionals and loops (max 20 steps) |
|
|
496
|
-
|
|
497
|
-
### Optional Modules
|
|
498
|
-
|
|
499
|
-
Load on demand via `device(action:'enable_module', module:'<name>')` or auto-enable on first call.
|
|
500
|
-
|
|
501
|
-
| Module | Actions | Description |
|
|
502
|
-
|--------|---------|-------------|
|
|
503
|
-
| `browser` | `open`, `close`, `list_sessions`, `navigate`, `click`, `fill`, `fill_form`, `press_key`, `snapshot`, `screenshot`, `evaluate`, `wait_for_selector`, `clear_session` | Chrome/Chromium via CDP |
|
|
504
|
-
| `desktop` | `launch`, `stop`, `windows`, `focus`, `resize`, `clipboard_get`, `clipboard_set`, `performance`, `monitors` | Any macOS app |
|
|
505
|
-
| `store` | `upload`, `set_notes`, `submit`, `get_releases`, `discard`, `promote`, `halt_rollout`, `get_versions` | Google Play, Huawei AppGallery, RuStore |
|
|
506
|
-
|
|
507
|
-
### Flow Tools
|
|
508
|
-
|
|
509
|
-
| Tool | Description |
|
|
510
|
-
|------|-------------|
|
|
511
|
-
| `flow_batch` | Sequential execution, one round-trip (max 50 commands) |
|
|
512
|
-
| `flow_run` | Multi-step flows with `if_not_found`, `repeat`, `on_error` (max 20 steps) |
|
|
513
|
-
| `flow_parallel` | Same action on multiple devices via `Promise.allSettled` (max 10) |
|
|
514
|
-
|
|
515
|
-
### Backward Compatibility
|
|
516
|
-
|
|
517
|
-
All v3.0/v3.1 tool names work as aliases: `tap` → `input(action:'tap')`, `screenshot` → `screen(action:'capture')`, `launch_app` → `app(action:'launch')`, etc.
|
|
518
|
-
|
|
519
|
-
---
|
|
520
|
-
|
|
521
|
-
## Native CLI
|
|
522
|
-
|
|
523
|
-
2 MB Rust binary. No Node.js, no dependencies.
|
|
524
|
-
|
|
525
|
-
### Install
|
|
526
|
-
|
|
527
|
-
```bash
|
|
528
|
-
brew tap AlexGladkov/claude-in-mobile
|
|
529
|
-
brew install claude-in-mobile
|
|
530
|
-
```
|
|
531
|
-
|
|
532
|
-
Or download from [Releases](https://github.com/AlexGladkov/claude-in-mobile/releases).
|
|
533
|
-
|
|
534
|
-
### Why use the CLI
|
|
535
|
-
|
|
536
|
-
| | CLI | MCP Server |
|
|
537
|
-
|---|---|---|
|
|
538
|
-
| **Install** | `brew install` or copy binary | `npx` / npm |
|
|
539
|
-
| **Dependencies** | None | Node.js |
|
|
540
|
-
| **Startup** | ~5ms | ~500ms |
|
|
541
|
-
| **Use from terminal** | Direct commands | Needs MCP client |
|
|
542
|
-
| **CI/CD** | Exit codes, stdout/stderr | Not designed for CI |
|
|
543
|
-
| **Token cost** | Skill loads on demand | Schema always present |
|
|
544
|
-
|
|
545
|
-
### Test script example
|
|
546
|
-
|
|
547
|
-
```bash
|
|
548
|
-
#!/bin/bash
|
|
549
|
-
claude-in-mobile launch android com.example.app
|
|
550
|
-
claude-in-mobile wait 2000
|
|
551
|
-
claude-in-mobile tap android 0 0 --text "Login"
|
|
552
|
-
claude-in-mobile input android "test@example.com"
|
|
553
|
-
claude-in-mobile screenshot android -o result.png
|
|
554
|
-
claude-in-mobile ui-dump android | grep "Welcome" && echo "PASS" || echo "FAIL"
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
### Store management (CLI)
|
|
558
|
-
|
|
559
|
-
```bash
|
|
560
|
-
claude-in-mobile store upload --package com.example.app --file app.aab
|
|
561
|
-
claude-in-mobile huawei upload --package com.example.app --file app.aab
|
|
562
|
-
claude-in-mobile rustore upload --package com.example.app --file app.apk
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
### Doctor
|
|
566
|
-
|
|
567
|
-
Check all dependencies at once:
|
|
568
|
-
|
|
569
|
-
```bash
|
|
570
|
-
claude-in-mobile doctor
|
|
571
|
-
```
|
|
572
|
-
|
|
573
|
-
Checks: ADB, ANDROID_HOME, Xcode, simctl, Appium, WDA, JDK, audb-client, Chrome. Color-coded output with fix suggestions.
|
|
574
|
-
|
|
575
|
-
---
|
|
576
|
-
|
|
577
|
-
## Architecture
|
|
578
|
-
|
|
579
|
-
```
|
|
580
|
-
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐
|
|
581
|
-
│ Claude Code │────▶│ │────▶│ Android (ADB) │
|
|
582
|
-
├─────────────┤ │ Claude Mobile │ ├─────────────────┤
|
|
583
|
-
│ OpenCode │────▶│ MCP Server │────▶│ iOS (simctl+WDA)│
|
|
584
|
-
├─────────────┤ │ │ ├─────────────────┤
|
|
585
|
-
│ Cursor │────▶│ 8 meta-tools │────▶│ Desktop (macOS) │
|
|
586
|
-
├─────────────┤ │ + 3 modules │ ├─────────────────┤
|
|
587
|
-
│ Qwen/Gemini │────▶│ │────▶│ Aurora (audb) │
|
|
588
|
-
├─────────────┤ │ Auto-detects │ ├─────────────────┤
|
|
589
|
-
│ Any MCP │────▶│ platform │────▶│ Browser (CDP) │
|
|
590
|
-
└─────────────┘ └──────────────────┘ └─────────────────┘
|
|
591
|
-
```
|
|
592
|
-
|
|
593
|
-
1. Client sends commands via MCP protocol (8 meta-tools + 3 optional modules)
|
|
594
|
-
2. Server routes to platform adapter (ADB, simctl+WDA, Desktop, audb, CDP)
|
|
595
|
-
3. Commands execute on device/app/browser
|
|
596
|
-
4. Results (screenshots, UI trees, metrics) return to client
|
|
597
|
-
5. Modules auto-enable on first call — no manual setup needed
|
|
598
|
-
|
|
599
|
-
---
|
|
600
|
-
|
|
601
|
-
## License
|
|
83
|
+
## Status / caveats (4.0.0-dev)
|
|
602
84
|
|
|
603
|
-
|
|
85
|
+
- Experimental pre-release; API and packaging may change before 4.0.0 final.
|
|
86
|
+
- All five platforms are physically split into separate packages; the base
|
|
87
|
+
bundle contains none of them.
|
|
88
|
+
- `claude-in-mobile-lite` is temporarily disabled (being migrated to the
|
|
89
|
+
plugin model).
|
|
90
|
+
- Stable production: **3.x** (`npm i -g claude-in-mobile`).
|
package/dist/a11y/types.d.ts
CHANGED
package/dist/a11y/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/a11y/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/a11y/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AACzE,MAAM,MAAM,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,iGAAiG;IACjG,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IAChD,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,iBAAiB,CAAC;CACnD;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B"}
|