@midscene/android 1.9.6-beta-20260615080106.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 +1 -55
- package/dist/es/index.mjs +1 -55
- package/dist/es/mcp-server.mjs +1 -55
- package/dist/lib/cli.js +1 -55
- package/dist/lib/index.js +0 -57
- package/dist/lib/mcp-server.js +1 -55
- package/dist/types/index.d.ts +0 -3
- package/package.json +4 -4
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,58 +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 isMultiDeviceFeatureError(error) {
|
|
591
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
592
|
-
return message.includes('more than one device/emulator');
|
|
593
|
-
}
|
|
594
|
-
async function resolveTransportId(client, device) {
|
|
595
|
-
if (device && 'transportId' in device) return device.transportId;
|
|
596
|
-
if (device && 'serial' in device) {
|
|
597
|
-
const devices = await client.getDevices();
|
|
598
|
-
return devices.find((info)=>info.serial === device.serial)?.transportId;
|
|
599
|
-
}
|
|
600
|
-
if (!device) {
|
|
601
|
-
const devices = await client.getDevices();
|
|
602
|
-
if (1 !== devices.length) return;
|
|
603
|
-
return devices[0]?.transportId;
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
async function getDeviceFeaturesByTransportId(client, transportId) {
|
|
607
|
-
const connection = await client.createConnection(adb_AdbServerClient.formatDeviceService({
|
|
608
|
-
transportId
|
|
609
|
-
}, 'features'));
|
|
610
|
-
try {
|
|
611
|
-
const featuresString = await connection.readString();
|
|
612
|
-
const features = featuresString ? featuresString.split(',') : [];
|
|
613
|
-
return {
|
|
614
|
-
transportId,
|
|
615
|
-
features
|
|
616
|
-
};
|
|
617
|
-
} finally{
|
|
618
|
-
await connection.dispose();
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
function installAdbServerClientFeaturesFallback(client) {
|
|
622
|
-
if (patchedClients.has(client)) return;
|
|
623
|
-
const getDeviceFeatures = client.getDeviceFeatures.bind(client);
|
|
624
|
-
client.getDeviceFeatures = async (device)=>{
|
|
625
|
-
try {
|
|
626
|
-
return await getDeviceFeatures(device);
|
|
627
|
-
} catch (error) {
|
|
628
|
-
if (!isMultiDeviceFeatureError(error)) throw error;
|
|
629
|
-
let transportId;
|
|
630
|
-
try {
|
|
631
|
-
transportId = await resolveTransportId(client, device);
|
|
632
|
-
} catch {
|
|
633
|
-
throw error;
|
|
634
|
-
}
|
|
635
|
-
if (void 0 === transportId) throw error;
|
|
636
|
-
return getDeviceFeaturesByTransportId(client, transportId);
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
patchedClients.add(client);
|
|
640
|
-
}
|
|
641
588
|
var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
|
|
642
589
|
function _define_property(obj, key, value) {
|
|
643
590
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
@@ -688,7 +635,6 @@ class ScrcpyDeviceAdapter {
|
|
|
688
635
|
host: '127.0.0.1',
|
|
689
636
|
port: 5037
|
|
690
637
|
}));
|
|
691
|
-
installAdbServerClientFeaturesFallback(adbClient);
|
|
692
638
|
const adb = new Adb(await adbClient.createTransport({
|
|
693
639
|
serial: this.deviceId
|
|
694
640
|
}));
|
|
@@ -2098,7 +2044,7 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
2098
2044
|
const tools = new AndroidMidsceneTools();
|
|
2099
2045
|
runToolsCLI(tools, 'midscene-android', {
|
|
2100
2046
|
stripPrefix: 'android_',
|
|
2101
|
-
version: "1.9.6
|
|
2047
|
+
version: "1.9.6",
|
|
2102
2048
|
extraCommands: createReportCliCommands()
|
|
2103
2049
|
}).catch((e)=>{
|
|
2104
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,58 +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 isMultiDeviceFeatureError(error) {
|
|
494
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
495
|
-
return message.includes('more than one device/emulator');
|
|
496
|
-
}
|
|
497
|
-
async function resolveTransportId(client, device) {
|
|
498
|
-
if (device && 'transportId' in device) return device.transportId;
|
|
499
|
-
if (device && 'serial' in device) {
|
|
500
|
-
const devices = await client.getDevices();
|
|
501
|
-
return devices.find((info)=>info.serial === device.serial)?.transportId;
|
|
502
|
-
}
|
|
503
|
-
if (!device) {
|
|
504
|
-
const devices = await client.getDevices();
|
|
505
|
-
if (1 !== devices.length) return;
|
|
506
|
-
return devices[0]?.transportId;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
async function getDeviceFeaturesByTransportId(client, transportId) {
|
|
510
|
-
const connection = await client.createConnection(adb_AdbServerClient.formatDeviceService({
|
|
511
|
-
transportId
|
|
512
|
-
}, 'features'));
|
|
513
|
-
try {
|
|
514
|
-
const featuresString = await connection.readString();
|
|
515
|
-
const features = featuresString ? featuresString.split(',') : [];
|
|
516
|
-
return {
|
|
517
|
-
transportId,
|
|
518
|
-
features
|
|
519
|
-
};
|
|
520
|
-
} finally{
|
|
521
|
-
await connection.dispose();
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
function installAdbServerClientFeaturesFallback(client) {
|
|
525
|
-
if (patchedClients.has(client)) return;
|
|
526
|
-
const getDeviceFeatures = client.getDeviceFeatures.bind(client);
|
|
527
|
-
client.getDeviceFeatures = async (device)=>{
|
|
528
|
-
try {
|
|
529
|
-
return await getDeviceFeatures(device);
|
|
530
|
-
} catch (error) {
|
|
531
|
-
if (!isMultiDeviceFeatureError(error)) throw error;
|
|
532
|
-
let transportId;
|
|
533
|
-
try {
|
|
534
|
-
transportId = await resolveTransportId(client, device);
|
|
535
|
-
} catch {
|
|
536
|
-
throw error;
|
|
537
|
-
}
|
|
538
|
-
if (void 0 === transportId) throw error;
|
|
539
|
-
return getDeviceFeaturesByTransportId(client, transportId);
|
|
540
|
-
}
|
|
541
|
-
};
|
|
542
|
-
patchedClients.add(client);
|
|
543
|
-
}
|
|
544
491
|
var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
|
|
545
492
|
function _define_property(obj, key, value) {
|
|
546
493
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
@@ -591,7 +538,6 @@ class ScrcpyDeviceAdapter {
|
|
|
591
538
|
host: '127.0.0.1',
|
|
592
539
|
port: 5037
|
|
593
540
|
}));
|
|
594
|
-
installAdbServerClientFeaturesFallback(adbClient);
|
|
595
541
|
const adb = new Adb(await adbClient.createTransport({
|
|
596
542
|
serial: this.deviceId
|
|
597
543
|
}));
|
|
@@ -2161,4 +2107,4 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
2161
2107
|
});
|
|
2162
2108
|
}
|
|
2163
2109
|
}
|
|
2164
|
-
export { AndroidAgent, AndroidDevice, AndroidMidsceneTools, ScrcpyDeviceAdapter, agentFromAdbDevice, getConnectedDevices, getConnectedDevicesWithDetails,
|
|
2110
|
+
export { AndroidAgent, AndroidDevice, AndroidMidsceneTools, ScrcpyDeviceAdapter, agentFromAdbDevice, getConnectedDevices, getConnectedDevicesWithDetails, overrideAIConfig };
|
package/dist/es/mcp-server.mjs
CHANGED
|
@@ -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,58 +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 isMultiDeviceFeatureError(error) {
|
|
591
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
592
|
-
return message.includes('more than one device/emulator');
|
|
593
|
-
}
|
|
594
|
-
async function resolveTransportId(client, device) {
|
|
595
|
-
if (device && 'transportId' in device) return device.transportId;
|
|
596
|
-
if (device && 'serial' in device) {
|
|
597
|
-
const devices = await client.getDevices();
|
|
598
|
-
return devices.find((info)=>info.serial === device.serial)?.transportId;
|
|
599
|
-
}
|
|
600
|
-
if (!device) {
|
|
601
|
-
const devices = await client.getDevices();
|
|
602
|
-
if (1 !== devices.length) return;
|
|
603
|
-
return devices[0]?.transportId;
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
async function getDeviceFeaturesByTransportId(client, transportId) {
|
|
607
|
-
const connection = await client.createConnection(adb_AdbServerClient.formatDeviceService({
|
|
608
|
-
transportId
|
|
609
|
-
}, 'features'));
|
|
610
|
-
try {
|
|
611
|
-
const featuresString = await connection.readString();
|
|
612
|
-
const features = featuresString ? featuresString.split(',') : [];
|
|
613
|
-
return {
|
|
614
|
-
transportId,
|
|
615
|
-
features
|
|
616
|
-
};
|
|
617
|
-
} finally{
|
|
618
|
-
await connection.dispose();
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
function installAdbServerClientFeaturesFallback(client) {
|
|
622
|
-
if (patchedClients.has(client)) return;
|
|
623
|
-
const getDeviceFeatures = client.getDeviceFeatures.bind(client);
|
|
624
|
-
client.getDeviceFeatures = async (device)=>{
|
|
625
|
-
try {
|
|
626
|
-
return await getDeviceFeatures(device);
|
|
627
|
-
} catch (error) {
|
|
628
|
-
if (!isMultiDeviceFeatureError(error)) throw error;
|
|
629
|
-
let transportId;
|
|
630
|
-
try {
|
|
631
|
-
transportId = await resolveTransportId(client, device);
|
|
632
|
-
} catch {
|
|
633
|
-
throw error;
|
|
634
|
-
}
|
|
635
|
-
if (void 0 === transportId) throw error;
|
|
636
|
-
return getDeviceFeaturesByTransportId(client, transportId);
|
|
637
|
-
}
|
|
638
|
-
};
|
|
639
|
-
patchedClients.add(client);
|
|
640
|
-
}
|
|
641
588
|
var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
|
|
642
589
|
function _define_property(obj, key, value) {
|
|
643
590
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
@@ -688,7 +635,6 @@ class ScrcpyDeviceAdapter {
|
|
|
688
635
|
host: '127.0.0.1',
|
|
689
636
|
port: 5037
|
|
690
637
|
}));
|
|
691
|
-
installAdbServerClientFeaturesFallback(adbClient);
|
|
692
638
|
const adb = new Adb(await adbClient.createTransport({
|
|
693
639
|
serial: this.deviceId
|
|
694
640
|
}));
|
|
@@ -2102,7 +2048,7 @@ class AndroidMCPServer extends BaseMCPServer {
|
|
|
2102
2048
|
constructor(toolsManager){
|
|
2103
2049
|
super({
|
|
2104
2050
|
name: '@midscene/android-mcp',
|
|
2105
|
-
version: "1.9.6
|
|
2051
|
+
version: "1.9.6",
|
|
2106
2052
|
description: 'Control the Android device using natural language commands'
|
|
2107
2053
|
}, toolsManager);
|
|
2108
2054
|
}
|
package/dist/lib/cli.js
CHANGED
|
@@ -600,59 +600,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
|
|
|
600
600
|
const env_namespaceObject = require("@midscene/shared/env");
|
|
601
601
|
const img_namespaceObject = require("@midscene/shared/img");
|
|
602
602
|
const external_appium_adb_namespaceObject = require("appium-adb");
|
|
603
|
-
const adb_namespaceObject = require("@yume-chan/adb");
|
|
604
|
-
const patchedClients = new WeakSet();
|
|
605
|
-
function isMultiDeviceFeatureError(error) {
|
|
606
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
607
|
-
return message.includes('more than one device/emulator');
|
|
608
|
-
}
|
|
609
|
-
async function resolveTransportId(client, device) {
|
|
610
|
-
if (device && 'transportId' in device) return device.transportId;
|
|
611
|
-
if (device && 'serial' in device) {
|
|
612
|
-
const devices = await client.getDevices();
|
|
613
|
-
return devices.find((info)=>info.serial === device.serial)?.transportId;
|
|
614
|
-
}
|
|
615
|
-
if (!device) {
|
|
616
|
-
const devices = await client.getDevices();
|
|
617
|
-
if (1 !== devices.length) return;
|
|
618
|
-
return devices[0]?.transportId;
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
async function getDeviceFeaturesByTransportId(client, transportId) {
|
|
622
|
-
const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
|
|
623
|
-
transportId
|
|
624
|
-
}, 'features'));
|
|
625
|
-
try {
|
|
626
|
-
const featuresString = await connection.readString();
|
|
627
|
-
const features = featuresString ? featuresString.split(',') : [];
|
|
628
|
-
return {
|
|
629
|
-
transportId,
|
|
630
|
-
features
|
|
631
|
-
};
|
|
632
|
-
} finally{
|
|
633
|
-
await connection.dispose();
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
function installAdbServerClientFeaturesFallback(client) {
|
|
637
|
-
if (patchedClients.has(client)) return;
|
|
638
|
-
const getDeviceFeatures = client.getDeviceFeatures.bind(client);
|
|
639
|
-
client.getDeviceFeatures = async (device)=>{
|
|
640
|
-
try {
|
|
641
|
-
return await getDeviceFeatures(device);
|
|
642
|
-
} catch (error) {
|
|
643
|
-
if (!isMultiDeviceFeatureError(error)) throw error;
|
|
644
|
-
let transportId;
|
|
645
|
-
try {
|
|
646
|
-
transportId = await resolveTransportId(client, device);
|
|
647
|
-
} catch {
|
|
648
|
-
throw error;
|
|
649
|
-
}
|
|
650
|
-
if (void 0 === transportId) throw error;
|
|
651
|
-
return getDeviceFeaturesByTransportId(client, transportId);
|
|
652
|
-
}
|
|
653
|
-
};
|
|
654
|
-
patchedClients.add(client);
|
|
655
|
-
}
|
|
656
603
|
var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
|
|
657
604
|
function _define_property(obj, key, value) {
|
|
658
605
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
@@ -703,7 +650,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
|
|
|
703
650
|
host: '127.0.0.1',
|
|
704
651
|
port: 5037
|
|
705
652
|
}));
|
|
706
|
-
installAdbServerClientFeaturesFallback(adbClient);
|
|
707
653
|
const adb = new Adb(await adbClient.createTransport({
|
|
708
654
|
serial: this.deviceId
|
|
709
655
|
}));
|
|
@@ -2113,7 +2059,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2113
2059
|
const tools = new AndroidMidsceneTools();
|
|
2114
2060
|
(0, cli_namespaceObject.runToolsCLI)(tools, 'midscene-android', {
|
|
2115
2061
|
stripPrefix: 'android_',
|
|
2116
|
-
version: "1.9.6
|
|
2062
|
+
version: "1.9.6",
|
|
2117
2063
|
extraCommands: (0, core_namespaceObject.createReportCliCommands)()
|
|
2118
2064
|
}).catch((e)=>{
|
|
2119
2065
|
process.exit((0, cli_namespaceObject.reportCLIError)(e));
|
package/dist/lib/index.js
CHANGED
|
@@ -465,7 +465,6 @@ var __webpack_exports__ = {};
|
|
|
465
465
|
AndroidMidsceneTools: ()=>AndroidMidsceneTools,
|
|
466
466
|
AndroidDevice: ()=>AndroidDevice,
|
|
467
467
|
overrideAIConfig: ()=>env_namespaceObject.overrideAIConfig,
|
|
468
|
-
installAdbServerClientFeaturesFallback: ()=>installAdbServerClientFeaturesFallback,
|
|
469
468
|
getConnectedDevices: ()=>getConnectedDevices
|
|
470
469
|
});
|
|
471
470
|
const external_node_assert_namespaceObject = require("node:assert");
|
|
@@ -523,59 +522,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
|
|
|
523
522
|
});
|
|
524
523
|
return getAdbShellStdoutOrThrow(command, output);
|
|
525
524
|
}
|
|
526
|
-
const adb_namespaceObject = require("@yume-chan/adb");
|
|
527
|
-
const patchedClients = new WeakSet();
|
|
528
|
-
function isMultiDeviceFeatureError(error) {
|
|
529
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
530
|
-
return message.includes('more than one device/emulator');
|
|
531
|
-
}
|
|
532
|
-
async function resolveTransportId(client, device) {
|
|
533
|
-
if (device && 'transportId' in device) return device.transportId;
|
|
534
|
-
if (device && 'serial' in device) {
|
|
535
|
-
const devices = await client.getDevices();
|
|
536
|
-
return devices.find((info)=>info.serial === device.serial)?.transportId;
|
|
537
|
-
}
|
|
538
|
-
if (!device) {
|
|
539
|
-
const devices = await client.getDevices();
|
|
540
|
-
if (1 !== devices.length) return;
|
|
541
|
-
return devices[0]?.transportId;
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
async function getDeviceFeaturesByTransportId(client, transportId) {
|
|
545
|
-
const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
|
|
546
|
-
transportId
|
|
547
|
-
}, 'features'));
|
|
548
|
-
try {
|
|
549
|
-
const featuresString = await connection.readString();
|
|
550
|
-
const features = featuresString ? featuresString.split(',') : [];
|
|
551
|
-
return {
|
|
552
|
-
transportId,
|
|
553
|
-
features
|
|
554
|
-
};
|
|
555
|
-
} finally{
|
|
556
|
-
await connection.dispose();
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
function installAdbServerClientFeaturesFallback(client) {
|
|
560
|
-
if (patchedClients.has(client)) return;
|
|
561
|
-
const getDeviceFeatures = client.getDeviceFeatures.bind(client);
|
|
562
|
-
client.getDeviceFeatures = async (device)=>{
|
|
563
|
-
try {
|
|
564
|
-
return await getDeviceFeatures(device);
|
|
565
|
-
} catch (error) {
|
|
566
|
-
if (!isMultiDeviceFeatureError(error)) throw error;
|
|
567
|
-
let transportId;
|
|
568
|
-
try {
|
|
569
|
-
transportId = await resolveTransportId(client, device);
|
|
570
|
-
} catch {
|
|
571
|
-
throw error;
|
|
572
|
-
}
|
|
573
|
-
if (void 0 === transportId) throw error;
|
|
574
|
-
return getDeviceFeaturesByTransportId(client, transportId);
|
|
575
|
-
}
|
|
576
|
-
};
|
|
577
|
-
patchedClients.add(client);
|
|
578
|
-
}
|
|
579
525
|
var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
|
|
580
526
|
function _define_property(obj, key, value) {
|
|
581
527
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
@@ -626,7 +572,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
|
|
|
626
572
|
host: '127.0.0.1',
|
|
627
573
|
port: 5037
|
|
628
574
|
}));
|
|
629
|
-
installAdbServerClientFeaturesFallback(adbClient);
|
|
630
575
|
const adb = new Adb(await adbClient.createTransport({
|
|
631
576
|
serial: this.deviceId
|
|
632
577
|
}));
|
|
@@ -2206,7 +2151,6 @@ exports.ScrcpyDeviceAdapter = __webpack_exports__.ScrcpyDeviceAdapter;
|
|
|
2206
2151
|
exports.agentFromAdbDevice = __webpack_exports__.agentFromAdbDevice;
|
|
2207
2152
|
exports.getConnectedDevices = __webpack_exports__.getConnectedDevices;
|
|
2208
2153
|
exports.getConnectedDevicesWithDetails = __webpack_exports__.getConnectedDevicesWithDetails;
|
|
2209
|
-
exports.installAdbServerClientFeaturesFallback = __webpack_exports__.installAdbServerClientFeaturesFallback;
|
|
2210
2154
|
exports.overrideAIConfig = __webpack_exports__.overrideAIConfig;
|
|
2211
2155
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
2212
2156
|
"AndroidAgent",
|
|
@@ -2216,7 +2160,6 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
2216
2160
|
"agentFromAdbDevice",
|
|
2217
2161
|
"getConnectedDevices",
|
|
2218
2162
|
"getConnectedDevicesWithDetails",
|
|
2219
|
-
"installAdbServerClientFeaturesFallback",
|
|
2220
2163
|
"overrideAIConfig"
|
|
2221
2164
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
2222
2165
|
Object.defineProperty(exports, '__esModule', {
|
package/dist/lib/mcp-server.js
CHANGED
|
@@ -615,59 +615,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
|
|
|
615
615
|
const env_namespaceObject = require("@midscene/shared/env");
|
|
616
616
|
const img_namespaceObject = require("@midscene/shared/img");
|
|
617
617
|
const external_appium_adb_namespaceObject = require("appium-adb");
|
|
618
|
-
const adb_namespaceObject = require("@yume-chan/adb");
|
|
619
|
-
const patchedClients = new WeakSet();
|
|
620
|
-
function isMultiDeviceFeatureError(error) {
|
|
621
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
622
|
-
return message.includes('more than one device/emulator');
|
|
623
|
-
}
|
|
624
|
-
async function resolveTransportId(client, device) {
|
|
625
|
-
if (device && 'transportId' in device) return device.transportId;
|
|
626
|
-
if (device && 'serial' in device) {
|
|
627
|
-
const devices = await client.getDevices();
|
|
628
|
-
return devices.find((info)=>info.serial === device.serial)?.transportId;
|
|
629
|
-
}
|
|
630
|
-
if (!device) {
|
|
631
|
-
const devices = await client.getDevices();
|
|
632
|
-
if (1 !== devices.length) return;
|
|
633
|
-
return devices[0]?.transportId;
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
async function getDeviceFeaturesByTransportId(client, transportId) {
|
|
637
|
-
const connection = await client.createConnection(adb_namespaceObject.AdbServerClient.formatDeviceService({
|
|
638
|
-
transportId
|
|
639
|
-
}, 'features'));
|
|
640
|
-
try {
|
|
641
|
-
const featuresString = await connection.readString();
|
|
642
|
-
const features = featuresString ? featuresString.split(',') : [];
|
|
643
|
-
return {
|
|
644
|
-
transportId,
|
|
645
|
-
features
|
|
646
|
-
};
|
|
647
|
-
} finally{
|
|
648
|
-
await connection.dispose();
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
function installAdbServerClientFeaturesFallback(client) {
|
|
652
|
-
if (patchedClients.has(client)) return;
|
|
653
|
-
const getDeviceFeatures = client.getDeviceFeatures.bind(client);
|
|
654
|
-
client.getDeviceFeatures = async (device)=>{
|
|
655
|
-
try {
|
|
656
|
-
return await getDeviceFeatures(device);
|
|
657
|
-
} catch (error) {
|
|
658
|
-
if (!isMultiDeviceFeatureError(error)) throw error;
|
|
659
|
-
let transportId;
|
|
660
|
-
try {
|
|
661
|
-
transportId = await resolveTransportId(client, device);
|
|
662
|
-
} catch {
|
|
663
|
-
throw error;
|
|
664
|
-
}
|
|
665
|
-
if (void 0 === transportId) throw error;
|
|
666
|
-
return getDeviceFeaturesByTransportId(client, transportId);
|
|
667
|
-
}
|
|
668
|
-
};
|
|
669
|
-
patchedClients.add(client);
|
|
670
|
-
}
|
|
671
618
|
var scrcpy_manager = __webpack_require__("./src/scrcpy-manager.ts");
|
|
672
619
|
function _define_property(obj, key, value) {
|
|
673
620
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
@@ -718,7 +665,6 @@ ${stdout ? truncateAdbShellStream(stdout, 'stdout') : EMPTY_ADB_SHELL_STDOUT}`;
|
|
|
718
665
|
host: '127.0.0.1',
|
|
719
666
|
port: 5037
|
|
720
667
|
}));
|
|
721
|
-
installAdbServerClientFeaturesFallback(adbClient);
|
|
722
668
|
const adb = new Adb(await adbClient.createTransport({
|
|
723
669
|
serial: this.deviceId
|
|
724
670
|
}));
|
|
@@ -2133,7 +2079,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2133
2079
|
constructor(toolsManager){
|
|
2134
2080
|
super({
|
|
2135
2081
|
name: '@midscene/android-mcp',
|
|
2136
|
-
version: "1.9.6
|
|
2082
|
+
version: "1.9.6",
|
|
2137
2083
|
description: 'Control the Android device using natural language commands'
|
|
2138
2084
|
}, toolsManager);
|
|
2139
2085
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import type { ActionParam } from '@midscene/core';
|
|
|
3
3
|
import type { ActionReturn } from '@midscene/core';
|
|
4
4
|
import { ADB } from 'appium-adb';
|
|
5
5
|
import type { Adb } from '@yume-chan/adb';
|
|
6
|
-
import { AdbServerClient } from '@yume-chan/adb';
|
|
7
6
|
import { Agent } from '@midscene/core/agent';
|
|
8
7
|
import { AgentOpt } from '@midscene/core/agent';
|
|
9
8
|
import { AndroidDeviceInputOpt } from '@midscene/core/device';
|
|
@@ -277,8 +276,6 @@ export declare function getConnectedDevices(): Promise<Device[]>;
|
|
|
277
276
|
|
|
278
277
|
export declare function getConnectedDevicesWithDetails(): Promise<AndroidConnectedDevice[]>;
|
|
279
278
|
|
|
280
|
-
export declare function installAdbServerClientFeaturesFallback(client: AdbServerClient): void;
|
|
281
|
-
|
|
282
279
|
export { overrideAIConfig }
|
|
283
280
|
|
|
284
281
|
declare interface ResolvedScrcpyConfig {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midscene/android",
|
|
3
|
-
"version": "1.9.6
|
|
3
|
+
"version": "1.9.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/web-infra-dev/midscene.git",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"@yume-chan/stream-extra": "2.1.0",
|
|
47
47
|
"appium-adb": "12.12.1",
|
|
48
48
|
"sharp": "^0.34.3",
|
|
49
|
-
"@midscene/
|
|
50
|
-
"@midscene/
|
|
49
|
+
"@midscene/core": "1.9.6",
|
|
50
|
+
"@midscene/shared": "1.9.6"
|
|
51
51
|
},
|
|
52
52
|
"optionalDependencies": {
|
|
53
53
|
"@ffmpeg-installer/ffmpeg": "^1.1.0"
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"undici": "^6.0.0",
|
|
62
62
|
"vitest": "3.0.5",
|
|
63
63
|
"zod": "^3.25.1",
|
|
64
|
-
"@midscene/playground": "1.9.6
|
|
64
|
+
"@midscene/playground": "1.9.6"
|
|
65
65
|
},
|
|
66
66
|
"license": "MIT",
|
|
67
67
|
"scripts": {
|