@midscene/android 1.9.6-beta-20260615083255.0 → 1.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/es/cli.mjs CHANGED
@@ -14,7 +14,6 @@ import { getTmpFile, sleep } from "@midscene/core/utils";
14
14
  import { MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, globalConfigManager } from "@midscene/shared/env";
15
15
  import { createImgBase64ByFormat, validateScreenshotBuffer } from "@midscene/shared/img";
16
16
  import { ADB as external_appium_adb_ADB } from "appium-adb";
17
- import { AdbServerClient as adb_AdbServerClient } from "@yume-chan/adb";
18
17
  var __webpack_modules__ = {
19
18
  "./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
20
19
  __webpack_require__.d(__webpack_exports__, {
@@ -586,62 +585,6 @@ const defaultAppNameMapping = {
586
585
  var external_node_fs_ = __webpack_require__("node:fs");
587
586
  var external_node_module_ = __webpack_require__("node:module");
588
587
  var external_node_path_ = __webpack_require__("node:path");
589
- const patchedClients = new WeakSet();
590
- function getErrorMessage(error) {
591
- return error instanceof Error ? error.message : String(error);
592
- }
593
- function isMultiDeviceFeatureError(error) {
594
- return getErrorMessage(error).includes('more than one device/emulator');
595
- }
596
- async function resolveTransportId(client, device) {
597
- if (device && 'transportId' in device) return device.transportId;
598
- if (device && 'serial' in device) {
599
- const devices = await client.getDevices();
600
- return devices.find((info)=>info.serial === device.serial)?.transportId;
601
- }
602
- if (!device) {
603
- const devices = await client.getDevices();
604
- if (1 !== devices.length) return;
605
- return devices[0]?.transportId;
606
- }
607
- }
608
- async function getDeviceFeaturesByTransportId(client, transportId) {
609
- const connection = await client.createConnection(adb_AdbServerClient.formatDeviceService({
610
- transportId
611
- }, 'features'));
612
- try {
613
- const featuresString = await connection.readString();
614
- const features = featuresString ? featuresString.split(',') : [];
615
- return {
616
- transportId,
617
- features
618
- };
619
- } finally{
620
- await connection.dispose();
621
- }
622
- }
623
- function installAdbServerClientFeaturesFallback(client) {
624
- if (patchedClients.has(client)) return;
625
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
626
- client.getDeviceFeatures = async (device)=>{
627
- try {
628
- return await getDeviceFeatures(device);
629
- } catch (error) {
630
- if (!isMultiDeviceFeatureError(error)) throw error;
631
- let transportId;
632
- try {
633
- transportId = await resolveTransportId(client, device);
634
- } catch (resolveError) {
635
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
636
- cause: resolveError
637
- });
638
- }
639
- if (void 0 === transportId) throw error;
640
- return getDeviceFeaturesByTransportId(client, transportId);
641
- }
642
- };
643
- patchedClients.add(client);
644
- }
645
588
  var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
646
589
  function _define_property(obj, key, value) {
647
590
  if (key in obj) Object.defineProperty(obj, key, {
@@ -692,7 +635,6 @@ class ScrcpyDeviceAdapter {
692
635
  host: '127.0.0.1',
693
636
  port: 5037
694
637
  }));
695
- installAdbServerClientFeaturesFallback(adbClient);
696
638
  const adb = new Adb(await adbClient.createTransport({
697
639
  serial: this.deviceId
698
640
  }));
@@ -2102,7 +2044,7 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
2102
2044
  const tools = new AndroidMidsceneTools();
2103
2045
  runToolsCLI(tools, 'midscene-android', {
2104
2046
  stripPrefix: 'android_',
2105
- version: "1.9.6-beta-20260615083255.0",
2047
+ version: "1.9.6",
2106
2048
  extraCommands: createReportCliCommands()
2107
2049
  }).catch((e)=>{
2108
2050
  process.exit(reportCLIError(e));
package/dist/es/index.mjs CHANGED
@@ -11,7 +11,6 @@ import { MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT,
11
11
  import { createImgBase64ByFormat, validateScreenshotBuffer } from "@midscene/shared/img";
12
12
  import { mergeAndNormalizeAppNameMapping, normalizeForComparison, repeat } from "@midscene/shared/utils";
13
13
  import { ADB } from "appium-adb";
14
- import { AdbServerClient as adb_AdbServerClient } from "@yume-chan/adb";
15
14
  import { Agent } from "@midscene/core/agent";
16
15
  import { BaseMidsceneTools } from "@midscene/shared/mcp/base-tools";
17
16
  var __webpack_modules__ = {
@@ -489,62 +488,6 @@ async function runAdbShellStdoutOrThrow(adb, command, options = {}) {
489
488
  });
490
489
  return getAdbShellStdoutOrThrow(command, output);
491
490
  }
492
- const patchedClients = new WeakSet();
493
- function getErrorMessage(error) {
494
- return error instanceof Error ? error.message : String(error);
495
- }
496
- function isMultiDeviceFeatureError(error) {
497
- return getErrorMessage(error).includes('more than one device/emulator');
498
- }
499
- async function resolveTransportId(client, device) {
500
- if (device && 'transportId' in device) return device.transportId;
501
- if (device && 'serial' in device) {
502
- const devices = await client.getDevices();
503
- return devices.find((info)=>info.serial === device.serial)?.transportId;
504
- }
505
- if (!device) {
506
- const devices = await client.getDevices();
507
- if (1 !== devices.length) return;
508
- return devices[0]?.transportId;
509
- }
510
- }
511
- async function getDeviceFeaturesByTransportId(client, transportId) {
512
- const connection = await client.createConnection(adb_AdbServerClient.formatDeviceService({
513
- transportId
514
- }, 'features'));
515
- try {
516
- const featuresString = await connection.readString();
517
- const features = featuresString ? featuresString.split(',') : [];
518
- return {
519
- transportId,
520
- features
521
- };
522
- } finally{
523
- await connection.dispose();
524
- }
525
- }
526
- function installAdbServerClientFeaturesFallback(client) {
527
- if (patchedClients.has(client)) return;
528
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
529
- client.getDeviceFeatures = async (device)=>{
530
- try {
531
- return await getDeviceFeatures(device);
532
- } catch (error) {
533
- if (!isMultiDeviceFeatureError(error)) throw error;
534
- let transportId;
535
- try {
536
- transportId = await resolveTransportId(client, device);
537
- } catch (resolveError) {
538
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
539
- cause: resolveError
540
- });
541
- }
542
- if (void 0 === transportId) throw error;
543
- return getDeviceFeaturesByTransportId(client, transportId);
544
- }
545
- };
546
- patchedClients.add(client);
547
- }
548
491
  var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
549
492
  function _define_property(obj, key, value) {
550
493
  if (key in obj) Object.defineProperty(obj, key, {
@@ -595,7 +538,6 @@ class ScrcpyDeviceAdapter {
595
538
  host: '127.0.0.1',
596
539
  port: 5037
597
540
  }));
598
- installAdbServerClientFeaturesFallback(adbClient);
599
541
  const adb = new Adb(await adbClient.createTransport({
600
542
  serial: this.deviceId
601
543
  }));
@@ -13,7 +13,6 @@ import { getTmpFile, sleep } from "@midscene/core/utils";
13
13
  import { MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, globalConfigManager } from "@midscene/shared/env";
14
14
  import { createImgBase64ByFormat, validateScreenshotBuffer } from "@midscene/shared/img";
15
15
  import { ADB as external_appium_adb_ADB } from "appium-adb";
16
- import { AdbServerClient as adb_AdbServerClient } from "@yume-chan/adb";
17
16
  import { BaseMidsceneTools } from "@midscene/shared/mcp/base-tools";
18
17
  var __webpack_modules__ = {
19
18
  "./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
@@ -586,62 +585,6 @@ const defaultAppNameMapping = {
586
585
  var external_node_fs_ = __webpack_require__("node:fs");
587
586
  var external_node_module_ = __webpack_require__("node:module");
588
587
  var external_node_path_ = __webpack_require__("node:path");
589
- const patchedClients = new WeakSet();
590
- function getErrorMessage(error) {
591
- return error instanceof Error ? error.message : String(error);
592
- }
593
- function isMultiDeviceFeatureError(error) {
594
- return getErrorMessage(error).includes('more than one device/emulator');
595
- }
596
- async function resolveTransportId(client, device) {
597
- if (device && 'transportId' in device) return device.transportId;
598
- if (device && 'serial' in device) {
599
- const devices = await client.getDevices();
600
- return devices.find((info)=>info.serial === device.serial)?.transportId;
601
- }
602
- if (!device) {
603
- const devices = await client.getDevices();
604
- if (1 !== devices.length) return;
605
- return devices[0]?.transportId;
606
- }
607
- }
608
- async function getDeviceFeaturesByTransportId(client, transportId) {
609
- const connection = await client.createConnection(adb_AdbServerClient.formatDeviceService({
610
- transportId
611
- }, 'features'));
612
- try {
613
- const featuresString = await connection.readString();
614
- const features = featuresString ? featuresString.split(',') : [];
615
- return {
616
- transportId,
617
- features
618
- };
619
- } finally{
620
- await connection.dispose();
621
- }
622
- }
623
- function installAdbServerClientFeaturesFallback(client) {
624
- if (patchedClients.has(client)) return;
625
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
626
- client.getDeviceFeatures = async (device)=>{
627
- try {
628
- return await getDeviceFeatures(device);
629
- } catch (error) {
630
- if (!isMultiDeviceFeatureError(error)) throw error;
631
- let transportId;
632
- try {
633
- transportId = await resolveTransportId(client, device);
634
- } catch (resolveError) {
635
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
636
- cause: resolveError
637
- });
638
- }
639
- if (void 0 === transportId) throw error;
640
- return getDeviceFeaturesByTransportId(client, transportId);
641
- }
642
- };
643
- patchedClients.add(client);
644
- }
645
588
  var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
646
589
  function _define_property(obj, key, value) {
647
590
  if (key in obj) Object.defineProperty(obj, key, {
@@ -692,7 +635,6 @@ class ScrcpyDeviceAdapter {
692
635
  host: '127.0.0.1',
693
636
  port: 5037
694
637
  }));
695
- installAdbServerClientFeaturesFallback(adbClient);
696
638
  const adb = new Adb(await adbClient.createTransport({
697
639
  serial: this.deviceId
698
640
  }));
@@ -2106,7 +2048,7 @@ class AndroidMCPServer extends BaseMCPServer {
2106
2048
  constructor(toolsManager){
2107
2049
  super({
2108
2050
  name: '@midscene/android-mcp',
2109
- version: "1.9.6-beta-20260615083255.0",
2051
+ version: "1.9.6",
2110
2052
  description: 'Control the Android device using natural language commands'
2111
2053
  }, toolsManager);
2112
2054
  }
package/dist/lib/cli.js CHANGED
@@ -3,68 +3,6 @@ const __rslib_import_meta_url__ = /*#__PURE__*/ function() {
3
3
  return 'undefined' == typeof document ? new (require('url'.replace('', ''))).URL('file:' + __filename).href : document.currentScript && document.currentScript.src || new URL('main.js', document.baseURI).href;
4
4
  }();
5
5
  var __webpack_modules__ = {
6
- "./src/internal/adb-server-client-features-fallback.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
7
- __webpack_require__.d(__webpack_exports__, {
8
- installAdbServerClientFeaturesFallback: ()=>installAdbServerClientFeaturesFallback
9
- });
10
- const adb_namespaceObject = require("@yume-chan/adb");
11
- const patchedClients = new WeakSet();
12
- function getErrorMessage(error) {
13
- return error instanceof Error ? error.message : String(error);
14
- }
15
- function isMultiDeviceFeatureError(error) {
16
- return getErrorMessage(error).includes('more than one device/emulator');
17
- }
18
- async function resolveTransportId(client, device) {
19
- if (device && 'transportId' in device) return device.transportId;
20
- if (device && 'serial' in device) {
21
- const devices = await client.getDevices();
22
- return devices.find((info)=>info.serial === device.serial)?.transportId;
23
- }
24
- if (!device) {
25
- const devices = await client.getDevices();
26
- if (1 !== devices.length) return;
27
- return devices[0]?.transportId;
28
- }
29
- }
30
- async function getDeviceFeaturesByTransportId(client, transportId) {
31
- const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
32
- transportId
33
- }, 'features'));
34
- try {
35
- const featuresString = await connection.readString();
36
- const features = featuresString ? featuresString.split(',') : [];
37
- return {
38
- transportId,
39
- features
40
- };
41
- } finally{
42
- await connection.dispose();
43
- }
44
- }
45
- function installAdbServerClientFeaturesFallback(client) {
46
- if (patchedClients.has(client)) return;
47
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
48
- client.getDeviceFeatures = async (device)=>{
49
- try {
50
- return await getDeviceFeatures(device);
51
- } catch (error) {
52
- if (!isMultiDeviceFeatureError(error)) throw error;
53
- let transportId;
54
- try {
55
- transportId = await resolveTransportId(client, device);
56
- } catch (resolveError) {
57
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
58
- cause: resolveError
59
- });
60
- }
61
- if (void 0 === transportId) throw error;
62
- return getDeviceFeaturesByTransportId(client, transportId);
63
- }
64
- };
65
- patchedClients.add(client);
66
- }
67
- },
68
6
  "./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
69
7
  __webpack_require__.d(__webpack_exports__, {
70
8
  ScrcpyScreenshotManager: ()=>ScrcpyScreenshotManager,
@@ -662,7 +600,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
662
600
  const env_namespaceObject = require("@midscene/shared/env");
663
601
  const img_namespaceObject = require("@midscene/shared/img");
664
602
  const external_appium_adb_namespaceObject = require("appium-adb");
665
- var adb_server_client_features_fallback = __webpack_require__("./src/internal/adb-server-client-features-fallback.ts");
666
603
  var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
667
604
  function _define_property(obj, key, value) {
668
605
  if (key in obj) Object.defineProperty(obj, key, {
@@ -713,7 +650,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
713
650
  host: '127.0.0.1',
714
651
  port: 5037
715
652
  }));
716
- (0, adb_server_client_features_fallback.installAdbServerClientFeaturesFallback)(adbClient);
717
653
  const adb = new Adb(await adbClient.createTransport({
718
654
  serial: this.deviceId
719
655
  }));
@@ -2123,7 +2059,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
2123
2059
  const tools = new AndroidMidsceneTools();
2124
2060
  (0, cli_namespaceObject.runToolsCLI)(tools, 'midscene-android', {
2125
2061
  stripPrefix: 'android_',
2126
- version: "1.9.6-beta-20260615083255.0",
2062
+ version: "1.9.6",
2127
2063
  extraCommands: (0, core_namespaceObject.createReportCliCommands)()
2128
2064
  }).catch((e)=>{
2129
2065
  process.exit((0, cli_namespaceObject.reportCLIError)(e));
package/dist/lib/index.js CHANGED
@@ -3,68 +3,6 @@ const __rslib_import_meta_url__ = /*#__PURE__*/ function() {
3
3
  return 'undefined' == typeof document ? new (require('url'.replace('', ''))).URL('file:' + __filename).href : document.currentScript && document.currentScript.src || new URL('main.js', document.baseURI).href;
4
4
  }();
5
5
  var __webpack_modules__ = {
6
- "./src/internal/adb-server-client-features-fallback.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
7
- __webpack_require__.d(__webpack_exports__, {
8
- installAdbServerClientFeaturesFallback: ()=>installAdbServerClientFeaturesFallback
9
- });
10
- const adb_namespaceObject = require("@yume-chan/adb");
11
- const patchedClients = new WeakSet();
12
- function getErrorMessage(error) {
13
- return error instanceof Error ? error.message : String(error);
14
- }
15
- function isMultiDeviceFeatureError(error) {
16
- return getErrorMessage(error).includes('more than one device/emulator');
17
- }
18
- async function resolveTransportId(client, device) {
19
- if (device && 'transportId' in device) return device.transportId;
20
- if (device && 'serial' in device) {
21
- const devices = await client.getDevices();
22
- return devices.find((info)=>info.serial === device.serial)?.transportId;
23
- }
24
- if (!device) {
25
- const devices = await client.getDevices();
26
- if (1 !== devices.length) return;
27
- return devices[0]?.transportId;
28
- }
29
- }
30
- async function getDeviceFeaturesByTransportId(client, transportId) {
31
- const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
32
- transportId
33
- }, 'features'));
34
- try {
35
- const featuresString = await connection.readString();
36
- const features = featuresString ? featuresString.split(',') : [];
37
- return {
38
- transportId,
39
- features
40
- };
41
- } finally{
42
- await connection.dispose();
43
- }
44
- }
45
- function installAdbServerClientFeaturesFallback(client) {
46
- if (patchedClients.has(client)) return;
47
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
48
- client.getDeviceFeatures = async (device)=>{
49
- try {
50
- return await getDeviceFeatures(device);
51
- } catch (error) {
52
- if (!isMultiDeviceFeatureError(error)) throw error;
53
- let transportId;
54
- try {
55
- transportId = await resolveTransportId(client, device);
56
- } catch (resolveError) {
57
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
58
- cause: resolveError
59
- });
60
- }
61
- if (void 0 === transportId) throw error;
62
- return getDeviceFeaturesByTransportId(client, transportId);
63
- }
64
- };
65
- patchedClients.add(client);
66
- }
67
- },
68
6
  "./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
69
7
  __webpack_require__.d(__webpack_exports__, {
70
8
  ScrcpyScreenshotManager: ()=>ScrcpyScreenshotManager,
@@ -584,7 +522,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
584
522
  });
585
523
  return getAdbShellStdoutOrThrow(command, output);
586
524
  }
587
- var adb_server_client_features_fallback = __webpack_require__("./src/internal/adb-server-client-features-fallback.ts");
588
525
  var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
589
526
  function _define_property(obj, key, value) {
590
527
  if (key in obj) Object.defineProperty(obj, key, {
@@ -635,7 +572,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
635
572
  host: '127.0.0.1',
636
573
  port: 5037
637
574
  }));
638
- (0, adb_server_client_features_fallback.installAdbServerClientFeaturesFallback)(adbClient);
639
575
  const adb = new Adb(await adbClient.createTransport({
640
576
  serial: this.deviceId
641
577
  }));
@@ -3,68 +3,6 @@ const __rslib_import_meta_url__ = /*#__PURE__*/ function() {
3
3
  return 'undefined' == typeof document ? new (require('url'.replace('', ''))).URL('file:' + __filename).href : document.currentScript && document.currentScript.src || new URL('main.js', document.baseURI).href;
4
4
  }();
5
5
  var __webpack_modules__ = {
6
- "./src/internal/adb-server-client-features-fallback.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
7
- __webpack_require__.d(__webpack_exports__, {
8
- installAdbServerClientFeaturesFallback: ()=>installAdbServerClientFeaturesFallback
9
- });
10
- const adb_namespaceObject = require("@yume-chan/adb");
11
- const patchedClients = new WeakSet();
12
- function getErrorMessage(error) {
13
- return error instanceof Error ? error.message : String(error);
14
- }
15
- function isMultiDeviceFeatureError(error) {
16
- return getErrorMessage(error).includes('more than one device/emulator');
17
- }
18
- async function resolveTransportId(client, device) {
19
- if (device && 'transportId' in device) return device.transportId;
20
- if (device && 'serial' in device) {
21
- const devices = await client.getDevices();
22
- return devices.find((info)=>info.serial === device.serial)?.transportId;
23
- }
24
- if (!device) {
25
- const devices = await client.getDevices();
26
- if (1 !== devices.length) return;
27
- return devices[0]?.transportId;
28
- }
29
- }
30
- async function getDeviceFeaturesByTransportId(client, transportId) {
31
- const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
32
- transportId
33
- }, 'features'));
34
- try {
35
- const featuresString = await connection.readString();
36
- const features = featuresString ? featuresString.split(',') : [];
37
- return {
38
- transportId,
39
- features
40
- };
41
- } finally{
42
- await connection.dispose();
43
- }
44
- }
45
- function installAdbServerClientFeaturesFallback(client) {
46
- if (patchedClients.has(client)) return;
47
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
48
- client.getDeviceFeatures = async (device)=>{
49
- try {
50
- return await getDeviceFeatures(device);
51
- } catch (error) {
52
- if (!isMultiDeviceFeatureError(error)) throw error;
53
- let transportId;
54
- try {
55
- transportId = await resolveTransportId(client, device);
56
- } catch (resolveError) {
57
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
58
- cause: resolveError
59
- });
60
- }
61
- if (void 0 === transportId) throw error;
62
- return getDeviceFeaturesByTransportId(client, transportId);
63
- }
64
- };
65
- patchedClients.add(client);
66
- }
67
- },
68
6
  "./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
69
7
  __webpack_require__.d(__webpack_exports__, {
70
8
  ScrcpyScreenshotManager: ()=>ScrcpyScreenshotManager,
@@ -677,7 +615,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
677
615
  const env_namespaceObject = require("@midscene/shared/env");
678
616
  const img_namespaceObject = require("@midscene/shared/img");
679
617
  const external_appium_adb_namespaceObject = require("appium-adb");
680
- var adb_server_client_features_fallback = __webpack_require__("./src/internal/adb-server-client-features-fallback.ts");
681
618
  var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
682
619
  function _define_property(obj, key, value) {
683
620
  if (key in obj) Object.defineProperty(obj, key, {
@@ -728,7 +665,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
728
665
  host: '127.0.0.1',
729
666
  port: 5037
730
667
  }));
731
- (0, adb_server_client_features_fallback.installAdbServerClientFeaturesFallback)(adbClient);
732
668
  const adb = new Adb(await adbClient.createTransport({
733
669
  serial: this.deviceId
734
670
  }));
@@ -2143,7 +2079,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
2143
2079
  constructor(toolsManager){
2144
2080
  super({
2145
2081
  name: '@midscene/android-mcp',
2146
- version: "1.9.6-beta-20260615083255.0",
2082
+ version: "1.9.6",
2147
2083
  description: 'Control the Android device using natural language commands'
2148
2084
  }, toolsManager);
2149
2085
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midscene/android",
3
- "version": "1.9.6-beta-20260615083255.0",
3
+ "version": "1.9.6",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/web-infra-dev/midscene.git",
@@ -36,11 +36,6 @@
36
36
  "import": "./dist/es/mcp-server.mjs",
37
37
  "require": "./dist/lib/mcp-server.js"
38
38
  },
39
- "./internal/adb-server-client-features-fallback": {
40
- "types": "./dist/types/internal/adb-server-client-features-fallback.d.ts",
41
- "import": "./dist/es/internal/adb-server-client-features-fallback.mjs",
42
- "require": "./dist/lib/internal/adb-server-client-features-fallback.js"
43
- },
44
39
  "./package.json": "./package.json"
45
40
  },
46
41
  "dependencies": {
@@ -51,8 +46,8 @@
51
46
  "@yume-chan/stream-extra": "2.1.0",
52
47
  "appium-adb": "12.12.1",
53
48
  "sharp": "^0.34.3",
54
- "@midscene/core": "1.9.6-beta-20260615083255.0",
55
- "@midscene/shared": "1.9.6-beta-20260615083255.0"
49
+ "@midscene/core": "1.9.6",
50
+ "@midscene/shared": "1.9.6"
56
51
  },
57
52
  "optionalDependencies": {
58
53
  "@ffmpeg-installer/ffmpeg": "^1.1.0"
@@ -66,7 +61,7 @@
66
61
  "undici": "^6.0.0",
67
62
  "vitest": "3.0.5",
68
63
  "zod": "^3.25.1",
69
- "@midscene/playground": "1.9.6-beta-20260615083255.0"
64
+ "@midscene/playground": "1.9.6"
70
65
  },
71
66
  "license": "MIT",
72
67
  "scripts": {
@@ -1,58 +0,0 @@
1
- import { AdbServerClient } from "@yume-chan/adb";
2
- const patchedClients = new WeakSet();
3
- function getErrorMessage(error) {
4
- return error instanceof Error ? error.message : String(error);
5
- }
6
- function isMultiDeviceFeatureError(error) {
7
- return getErrorMessage(error).includes('more than one device/emulator');
8
- }
9
- async function resolveTransportId(client, device) {
10
- if (device && 'transportId' in device) return device.transportId;
11
- if (device && 'serial' in device) {
12
- const devices = await client.getDevices();
13
- return devices.find((info)=>info.serial === device.serial)?.transportId;
14
- }
15
- if (!device) {
16
- const devices = await client.getDevices();
17
- if (1 !== devices.length) return;
18
- return devices[0]?.transportId;
19
- }
20
- }
21
- async function getDeviceFeaturesByTransportId(client, transportId) {
22
- const connection = await client.createConnection(AdbServerClient.formatDeviceService({
23
- transportId
24
- }, 'features'));
25
- try {
26
- const featuresString = await connection.readString();
27
- const features = featuresString ? featuresString.split(',') : [];
28
- return {
29
- transportId,
30
- features
31
- };
32
- } finally{
33
- await connection.dispose();
34
- }
35
- }
36
- function installAdbServerClientFeaturesFallback(client) {
37
- if (patchedClients.has(client)) return;
38
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
39
- client.getDeviceFeatures = async (device)=>{
40
- try {
41
- return await getDeviceFeatures(device);
42
- } catch (error) {
43
- if (!isMultiDeviceFeatureError(error)) throw error;
44
- let transportId;
45
- try {
46
- transportId = await resolveTransportId(client, device);
47
- } catch (resolveError) {
48
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
49
- cause: resolveError
50
- });
51
- }
52
- if (void 0 === transportId) throw error;
53
- return getDeviceFeaturesByTransportId(client, transportId);
54
- }
55
- };
56
- patchedClients.add(client);
57
- }
58
- export { installAdbServerClientFeaturesFallback };
@@ -1,92 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- installAdbServerClientFeaturesFallback: ()=>installAdbServerClientFeaturesFallback
28
- });
29
- const adb_namespaceObject = require("@yume-chan/adb");
30
- const patchedClients = new WeakSet();
31
- function getErrorMessage(error) {
32
- return error instanceof Error ? error.message : String(error);
33
- }
34
- function isMultiDeviceFeatureError(error) {
35
- return getErrorMessage(error).includes('more than one device/emulator');
36
- }
37
- async function resolveTransportId(client, device) {
38
- if (device && 'transportId' in device) return device.transportId;
39
- if (device && 'serial' in device) {
40
- const devices = await client.getDevices();
41
- return devices.find((info)=>info.serial === device.serial)?.transportId;
42
- }
43
- if (!device) {
44
- const devices = await client.getDevices();
45
- if (1 !== devices.length) return;
46
- return devices[0]?.transportId;
47
- }
48
- }
49
- async function getDeviceFeaturesByTransportId(client, transportId) {
50
- const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
51
- transportId
52
- }, 'features'));
53
- try {
54
- const featuresString = await connection.readString();
55
- const features = featuresString ? featuresString.split(',') : [];
56
- return {
57
- transportId,
58
- features
59
- };
60
- } finally{
61
- await connection.dispose();
62
- }
63
- }
64
- function installAdbServerClientFeaturesFallback(client) {
65
- if (patchedClients.has(client)) return;
66
- const getDeviceFeatures = client.getDeviceFeatures.bind(client);
67
- client.getDeviceFeatures = async (device)=>{
68
- try {
69
- return await getDeviceFeatures(device);
70
- } catch (error) {
71
- if (!isMultiDeviceFeatureError(error)) throw error;
72
- let transportId;
73
- try {
74
- transportId = await resolveTransportId(client, device);
75
- } catch (resolveError) {
76
- throw new Error(`Failed to resolve transport ID for ADB features fallback after "${getErrorMessage(error)}": ${getErrorMessage(resolveError)}`, {
77
- cause: resolveError
78
- });
79
- }
80
- if (void 0 === transportId) throw error;
81
- return getDeviceFeaturesByTransportId(client, transportId);
82
- }
83
- };
84
- patchedClients.add(client);
85
- }
86
- exports.installAdbServerClientFeaturesFallback = __webpack_exports__.installAdbServerClientFeaturesFallback;
87
- for(var __rspack_i in __webpack_exports__)if (-1 === [
88
- "installAdbServerClientFeaturesFallback"
89
- ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
90
- Object.defineProperty(exports, '__esModule', {
91
- value: true
92
- });
@@ -1,9 +0,0 @@
1
- import { AdbServerClient } from '@yume-chan/adb';
2
-
3
- /**
4
- * @internal Work around ADB server feature requests that ignore serial selectors
5
- * before yume-chan/adb includes a transport-id qualified features request.
6
- */
7
- export declare function installAdbServerClientFeaturesFallback(client: AdbServerClient): void;
8
-
9
- export { }