@midscene/android 1.7.5-beta-20260421030751.0 → 1.7.5
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 +30 -9
- package/dist/es/index.mjs +27 -5
- package/dist/es/mcp-server.mjs +29 -6
- package/dist/lib/cli.js +30 -9
- package/dist/lib/index.js +28 -6
- package/dist/lib/mcp-server.js +29 -6
- package/dist/types/index.d.ts +5 -3
- package/dist/types/mcp-server.d.ts +5 -3
- package/package.json +4 -4
package/dist/es/cli.mjs
CHANGED
|
@@ -3,8 +3,8 @@ import * as __rspack_external_node_fs_5ea92f0c from "node:fs";
|
|
|
3
3
|
import * as __rspack_external_node_module_ab9f2194 from "node:module";
|
|
4
4
|
import * as __rspack_external_node_path_c5b9b54f from "node:path";
|
|
5
5
|
import { createReportCliCommands, getMidsceneLocationSchema, z } from "@midscene/core";
|
|
6
|
-
import {
|
|
7
|
-
import { BaseMidsceneTools } from "@midscene/shared/mcp";
|
|
6
|
+
import { reportCLIError, runToolsCLI } from "@midscene/shared/cli";
|
|
7
|
+
import { BaseMidsceneTools } from "@midscene/shared/mcp/base-tools";
|
|
8
8
|
import { Agent } from "@midscene/core/agent";
|
|
9
9
|
import { mergeAndNormalizeAppNameMapping, normalizeForComparison, repeat } from "@midscene/shared/utils";
|
|
10
10
|
import node_assert from "node:assert";
|
|
@@ -1929,6 +1929,16 @@ async function agentFromAdbDevice(deviceId, opts) {
|
|
|
1929
1929
|
await device.connect();
|
|
1930
1930
|
return new AndroidAgent(device, opts);
|
|
1931
1931
|
}
|
|
1932
|
+
function mcp_tools_define_property(obj, key, value) {
|
|
1933
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
1934
|
+
value: value,
|
|
1935
|
+
enumerable: true,
|
|
1936
|
+
configurable: true,
|
|
1937
|
+
writable: true
|
|
1938
|
+
});
|
|
1939
|
+
else obj[key] = value;
|
|
1940
|
+
return obj;
|
|
1941
|
+
}
|
|
1932
1942
|
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1933
1943
|
class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
1934
1944
|
createTemporaryDevice() {
|
|
@@ -1956,10 +1966,10 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
1956
1966
|
{
|
|
1957
1967
|
name: 'android_connect',
|
|
1958
1968
|
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
1959
|
-
schema:
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1969
|
+
schema: this.getAgentInitArgSchema(),
|
|
1970
|
+
cli: this.getAgentInitArgCliMetadata(),
|
|
1971
|
+
handler: async (args)=>{
|
|
1972
|
+
const deviceId = this.extractAgentInitParam(args);
|
|
1963
1973
|
const agent = await this.ensureAgent(deviceId);
|
|
1964
1974
|
const screenshot = await agent.page.screenshotBase64();
|
|
1965
1975
|
return {
|
|
@@ -1982,13 +1992,24 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
1982
1992
|
}
|
|
1983
1993
|
];
|
|
1984
1994
|
}
|
|
1995
|
+
constructor(...args){
|
|
1996
|
+
super(...args), mcp_tools_define_property(this, "initArgSpec", {
|
|
1997
|
+
namespace: 'android',
|
|
1998
|
+
shape: {
|
|
1999
|
+
deviceId: z.string().optional().describe('Android device ID (from adb devices)')
|
|
2000
|
+
},
|
|
2001
|
+
cli: {
|
|
2002
|
+
preferBareKeys: true
|
|
2003
|
+
},
|
|
2004
|
+
adapt: (extracted)=>extracted?.deviceId
|
|
2005
|
+
});
|
|
2006
|
+
}
|
|
1985
2007
|
}
|
|
1986
2008
|
const tools = new AndroidMidsceneTools();
|
|
1987
2009
|
runToolsCLI(tools, 'midscene-android', {
|
|
1988
2010
|
stripPrefix: 'android_',
|
|
1989
|
-
version: "1.7.5
|
|
2011
|
+
version: "1.7.5",
|
|
1990
2012
|
extraCommands: createReportCliCommands()
|
|
1991
2013
|
}).catch((e)=>{
|
|
1992
|
-
|
|
1993
|
-
process.exit(e instanceof CLIError ? e.exitCode : 1);
|
|
2014
|
+
process.exit(reportCLIError(e));
|
|
1994
2015
|
});
|
package/dist/es/index.mjs
CHANGED
|
@@ -12,7 +12,7 @@ import { createImgBase64ByFormat, isValidImageBuffer } from "@midscene/shared/im
|
|
|
12
12
|
import { mergeAndNormalizeAppNameMapping, normalizeForComparison, repeat } from "@midscene/shared/utils";
|
|
13
13
|
import { ADB } from "appium-adb";
|
|
14
14
|
import { Agent } from "@midscene/core/agent";
|
|
15
|
-
import { BaseMidsceneTools } from "@midscene/shared/mcp";
|
|
15
|
+
import { BaseMidsceneTools } from "@midscene/shared/mcp/base-tools";
|
|
16
16
|
var __webpack_modules__ = {
|
|
17
17
|
"./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
18
18
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -1995,6 +1995,16 @@ async function agentFromAdbDevice(deviceId, opts) {
|
|
|
1995
1995
|
await device.connect();
|
|
1996
1996
|
return new AndroidAgent(device, opts);
|
|
1997
1997
|
}
|
|
1998
|
+
function mcp_tools_define_property(obj, key, value) {
|
|
1999
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
2000
|
+
value: value,
|
|
2001
|
+
enumerable: true,
|
|
2002
|
+
configurable: true,
|
|
2003
|
+
writable: true
|
|
2004
|
+
});
|
|
2005
|
+
else obj[key] = value;
|
|
2006
|
+
return obj;
|
|
2007
|
+
}
|
|
1998
2008
|
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1999
2009
|
class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
2000
2010
|
createTemporaryDevice() {
|
|
@@ -2022,10 +2032,10 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
2022
2032
|
{
|
|
2023
2033
|
name: 'android_connect',
|
|
2024
2034
|
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
2025
|
-
schema:
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2035
|
+
schema: this.getAgentInitArgSchema(),
|
|
2036
|
+
cli: this.getAgentInitArgCliMetadata(),
|
|
2037
|
+
handler: async (args)=>{
|
|
2038
|
+
const deviceId = this.extractAgentInitParam(args);
|
|
2029
2039
|
const agent = await this.ensureAgent(deviceId);
|
|
2030
2040
|
const screenshot = await agent.page.screenshotBase64();
|
|
2031
2041
|
return {
|
|
@@ -2048,5 +2058,17 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
2048
2058
|
}
|
|
2049
2059
|
];
|
|
2050
2060
|
}
|
|
2061
|
+
constructor(...args){
|
|
2062
|
+
super(...args), mcp_tools_define_property(this, "initArgSpec", {
|
|
2063
|
+
namespace: 'android',
|
|
2064
|
+
shape: {
|
|
2065
|
+
deviceId: z.string().optional().describe('Android device ID (from adb devices)')
|
|
2066
|
+
},
|
|
2067
|
+
cli: {
|
|
2068
|
+
preferBareKeys: true
|
|
2069
|
+
},
|
|
2070
|
+
adapt: (extracted)=>extracted?.deviceId
|
|
2071
|
+
});
|
|
2072
|
+
}
|
|
2051
2073
|
}
|
|
2052
2074
|
export { AndroidAgent, AndroidDevice, AndroidMidsceneTools, ScrcpyDeviceAdapter, agentFromAdbDevice, getConnectedDevices, getConnectedDevicesWithDetails, overrideAIConfig };
|
package/dist/es/mcp-server.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import * as __rspack_external__midscene_shared_logger_b1dc2426 from "@midscene/s
|
|
|
2
2
|
import * as __rspack_external_node_fs_5ea92f0c from "node:fs";
|
|
3
3
|
import * as __rspack_external_node_module_ab9f2194 from "node:module";
|
|
4
4
|
import * as __rspack_external_node_path_c5b9b54f from "node:path";
|
|
5
|
-
import { BaseMCPServer,
|
|
5
|
+
import { BaseMCPServer, createMCPServerLauncher } from "@midscene/shared/mcp";
|
|
6
6
|
import { Agent } from "@midscene/core/agent";
|
|
7
7
|
import { mergeAndNormalizeAppNameMapping, normalizeForComparison, repeat } from "@midscene/shared/utils";
|
|
8
8
|
import node_assert from "node:assert";
|
|
@@ -13,6 +13,7 @@ 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, isValidImageBuffer } from "@midscene/shared/img";
|
|
15
15
|
import { ADB as external_appium_adb_ADB } from "appium-adb";
|
|
16
|
+
import { BaseMidsceneTools } from "@midscene/shared/mcp/base-tools";
|
|
16
17
|
var __webpack_modules__ = {
|
|
17
18
|
"./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
18
19
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -1928,6 +1929,16 @@ async function agentFromAdbDevice(deviceId, opts) {
|
|
|
1928
1929
|
await device.connect();
|
|
1929
1930
|
return new AndroidAgent(device, opts);
|
|
1930
1931
|
}
|
|
1932
|
+
function mcp_tools_define_property(obj, key, value) {
|
|
1933
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
1934
|
+
value: value,
|
|
1935
|
+
enumerable: true,
|
|
1936
|
+
configurable: true,
|
|
1937
|
+
writable: true
|
|
1938
|
+
});
|
|
1939
|
+
else obj[key] = value;
|
|
1940
|
+
return obj;
|
|
1941
|
+
}
|
|
1931
1942
|
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1932
1943
|
class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
1933
1944
|
createTemporaryDevice() {
|
|
@@ -1955,10 +1966,10 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
1955
1966
|
{
|
|
1956
1967
|
name: 'android_connect',
|
|
1957
1968
|
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
1958
|
-
schema:
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1969
|
+
schema: this.getAgentInitArgSchema(),
|
|
1970
|
+
cli: this.getAgentInitArgCliMetadata(),
|
|
1971
|
+
handler: async (args)=>{
|
|
1972
|
+
const deviceId = this.extractAgentInitParam(args);
|
|
1962
1973
|
const agent = await this.ensureAgent(deviceId);
|
|
1963
1974
|
const screenshot = await agent.page.screenshotBase64();
|
|
1964
1975
|
return {
|
|
@@ -1981,6 +1992,18 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
|
1981
1992
|
}
|
|
1982
1993
|
];
|
|
1983
1994
|
}
|
|
1995
|
+
constructor(...args){
|
|
1996
|
+
super(...args), mcp_tools_define_property(this, "initArgSpec", {
|
|
1997
|
+
namespace: 'android',
|
|
1998
|
+
shape: {
|
|
1999
|
+
deviceId: z.string().optional().describe('Android device ID (from adb devices)')
|
|
2000
|
+
},
|
|
2001
|
+
cli: {
|
|
2002
|
+
preferBareKeys: true
|
|
2003
|
+
},
|
|
2004
|
+
adapt: (extracted)=>extracted?.deviceId
|
|
2005
|
+
});
|
|
2006
|
+
}
|
|
1984
2007
|
}
|
|
1985
2008
|
class AndroidMCPServer extends BaseMCPServer {
|
|
1986
2009
|
createToolsManager() {
|
|
@@ -1989,7 +2012,7 @@ class AndroidMCPServer extends BaseMCPServer {
|
|
|
1989
2012
|
constructor(toolsManager){
|
|
1990
2013
|
super({
|
|
1991
2014
|
name: '@midscene/android-mcp',
|
|
1992
|
-
version: "1.7.5
|
|
2015
|
+
version: "1.7.5",
|
|
1993
2016
|
description: 'Control the Android device using natural language commands'
|
|
1994
2017
|
}, toolsManager);
|
|
1995
2018
|
}
|
package/dist/lib/cli.js
CHANGED
|
@@ -449,7 +449,7 @@ var __webpack_exports__ = {};
|
|
|
449
449
|
const core_namespaceObject = require("@midscene/core");
|
|
450
450
|
const cli_namespaceObject = require("@midscene/shared/cli");
|
|
451
451
|
var logger_ = __webpack_require__("@midscene/shared/logger");
|
|
452
|
-
const
|
|
452
|
+
const base_tools_namespaceObject = require("@midscene/shared/mcp/base-tools");
|
|
453
453
|
const agent_namespaceObject = require("@midscene/core/agent");
|
|
454
454
|
const utils_namespaceObject = require("@midscene/shared/utils");
|
|
455
455
|
const defaultAppNameMapping = {
|
|
@@ -1944,8 +1944,18 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1944
1944
|
await device.connect();
|
|
1945
1945
|
return new AndroidAgent(device, opts);
|
|
1946
1946
|
}
|
|
1947
|
+
function mcp_tools_define_property(obj, key, value) {
|
|
1948
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
1949
|
+
value: value,
|
|
1950
|
+
enumerable: true,
|
|
1951
|
+
configurable: true,
|
|
1952
|
+
writable: true
|
|
1953
|
+
});
|
|
1954
|
+
else obj[key] = value;
|
|
1955
|
+
return obj;
|
|
1956
|
+
}
|
|
1947
1957
|
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1948
|
-
class AndroidMidsceneTools extends
|
|
1958
|
+
class AndroidMidsceneTools extends base_tools_namespaceObject.BaseMidsceneTools {
|
|
1949
1959
|
createTemporaryDevice() {
|
|
1950
1960
|
return new AndroidDevice('temp-for-action-space', {});
|
|
1951
1961
|
}
|
|
@@ -1971,10 +1981,10 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1971
1981
|
{
|
|
1972
1982
|
name: 'android_connect',
|
|
1973
1983
|
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
1974
|
-
schema:
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1984
|
+
schema: this.getAgentInitArgSchema(),
|
|
1985
|
+
cli: this.getAgentInitArgCliMetadata(),
|
|
1986
|
+
handler: async (args)=>{
|
|
1987
|
+
const deviceId = this.extractAgentInitParam(args);
|
|
1978
1988
|
const agent = await this.ensureAgent(deviceId);
|
|
1979
1989
|
const screenshot = await agent.page.screenshotBase64();
|
|
1980
1990
|
return {
|
|
@@ -1997,15 +2007,26 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1997
2007
|
}
|
|
1998
2008
|
];
|
|
1999
2009
|
}
|
|
2010
|
+
constructor(...args){
|
|
2011
|
+
super(...args), mcp_tools_define_property(this, "initArgSpec", {
|
|
2012
|
+
namespace: 'android',
|
|
2013
|
+
shape: {
|
|
2014
|
+
deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
|
|
2015
|
+
},
|
|
2016
|
+
cli: {
|
|
2017
|
+
preferBareKeys: true
|
|
2018
|
+
},
|
|
2019
|
+
adapt: (extracted)=>extracted?.deviceId
|
|
2020
|
+
});
|
|
2021
|
+
}
|
|
2000
2022
|
}
|
|
2001
2023
|
const tools = new AndroidMidsceneTools();
|
|
2002
2024
|
(0, cli_namespaceObject.runToolsCLI)(tools, 'midscene-android', {
|
|
2003
2025
|
stripPrefix: 'android_',
|
|
2004
|
-
version: "1.7.5
|
|
2026
|
+
version: "1.7.5",
|
|
2005
2027
|
extraCommands: (0, core_namespaceObject.createReportCliCommands)()
|
|
2006
2028
|
}).catch((e)=>{
|
|
2007
|
-
|
|
2008
|
-
process.exit(e instanceof cli_namespaceObject.CLIError ? e.exitCode : 1);
|
|
2029
|
+
process.exit((0, cli_namespaceObject.reportCLIError)(e));
|
|
2009
2030
|
});
|
|
2010
2031
|
})();
|
|
2011
2032
|
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
package/dist/lib/index.js
CHANGED
|
@@ -2030,9 +2030,19 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2030
2030
|
await device.connect();
|
|
2031
2031
|
return new AndroidAgent(device, opts);
|
|
2032
2032
|
}
|
|
2033
|
-
const
|
|
2033
|
+
const base_tools_namespaceObject = require("@midscene/shared/mcp/base-tools");
|
|
2034
|
+
function mcp_tools_define_property(obj, key, value) {
|
|
2035
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
2036
|
+
value: value,
|
|
2037
|
+
enumerable: true,
|
|
2038
|
+
configurable: true,
|
|
2039
|
+
writable: true
|
|
2040
|
+
});
|
|
2041
|
+
else obj[key] = value;
|
|
2042
|
+
return obj;
|
|
2043
|
+
}
|
|
2034
2044
|
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
2035
|
-
class AndroidMidsceneTools extends
|
|
2045
|
+
class AndroidMidsceneTools extends base_tools_namespaceObject.BaseMidsceneTools {
|
|
2036
2046
|
createTemporaryDevice() {
|
|
2037
2047
|
return new AndroidDevice('temp-for-action-space', {});
|
|
2038
2048
|
}
|
|
@@ -2058,10 +2068,10 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2058
2068
|
{
|
|
2059
2069
|
name: 'android_connect',
|
|
2060
2070
|
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
2061
|
-
schema:
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2071
|
+
schema: this.getAgentInitArgSchema(),
|
|
2072
|
+
cli: this.getAgentInitArgCliMetadata(),
|
|
2073
|
+
handler: async (args)=>{
|
|
2074
|
+
const deviceId = this.extractAgentInitParam(args);
|
|
2065
2075
|
const agent = await this.ensureAgent(deviceId);
|
|
2066
2076
|
const screenshot = await agent.page.screenshotBase64();
|
|
2067
2077
|
return {
|
|
@@ -2084,6 +2094,18 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2084
2094
|
}
|
|
2085
2095
|
];
|
|
2086
2096
|
}
|
|
2097
|
+
constructor(...args){
|
|
2098
|
+
super(...args), mcp_tools_define_property(this, "initArgSpec", {
|
|
2099
|
+
namespace: 'android',
|
|
2100
|
+
shape: {
|
|
2101
|
+
deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
|
|
2102
|
+
},
|
|
2103
|
+
cli: {
|
|
2104
|
+
preferBareKeys: true
|
|
2105
|
+
},
|
|
2106
|
+
adapt: (extracted)=>extracted?.deviceId
|
|
2107
|
+
});
|
|
2108
|
+
}
|
|
2087
2109
|
}
|
|
2088
2110
|
})();
|
|
2089
2111
|
exports.AndroidAgent = __webpack_exports__.AndroidAgent;
|
package/dist/lib/mcp-server.js
CHANGED
|
@@ -1959,8 +1959,19 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1959
1959
|
await device.connect();
|
|
1960
1960
|
return new AndroidAgent(device, opts);
|
|
1961
1961
|
}
|
|
1962
|
+
const base_tools_namespaceObject = require("@midscene/shared/mcp/base-tools");
|
|
1963
|
+
function mcp_tools_define_property(obj, key, value) {
|
|
1964
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
1965
|
+
value: value,
|
|
1966
|
+
enumerable: true,
|
|
1967
|
+
configurable: true,
|
|
1968
|
+
writable: true
|
|
1969
|
+
});
|
|
1970
|
+
else obj[key] = value;
|
|
1971
|
+
return obj;
|
|
1972
|
+
}
|
|
1962
1973
|
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1963
|
-
class AndroidMidsceneTools extends
|
|
1974
|
+
class AndroidMidsceneTools extends base_tools_namespaceObject.BaseMidsceneTools {
|
|
1964
1975
|
createTemporaryDevice() {
|
|
1965
1976
|
return new AndroidDevice('temp-for-action-space', {});
|
|
1966
1977
|
}
|
|
@@ -1986,10 +1997,10 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1986
1997
|
{
|
|
1987
1998
|
name: 'android_connect',
|
|
1988
1999
|
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
1989
|
-
schema:
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
2000
|
+
schema: this.getAgentInitArgSchema(),
|
|
2001
|
+
cli: this.getAgentInitArgCliMetadata(),
|
|
2002
|
+
handler: async (args)=>{
|
|
2003
|
+
const deviceId = this.extractAgentInitParam(args);
|
|
1993
2004
|
const agent = await this.ensureAgent(deviceId);
|
|
1994
2005
|
const screenshot = await agent.page.screenshotBase64();
|
|
1995
2006
|
return {
|
|
@@ -2012,6 +2023,18 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2012
2023
|
}
|
|
2013
2024
|
];
|
|
2014
2025
|
}
|
|
2026
|
+
constructor(...args){
|
|
2027
|
+
super(...args), mcp_tools_define_property(this, "initArgSpec", {
|
|
2028
|
+
namespace: 'android',
|
|
2029
|
+
shape: {
|
|
2030
|
+
deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
|
|
2031
|
+
},
|
|
2032
|
+
cli: {
|
|
2033
|
+
preferBareKeys: true
|
|
2034
|
+
},
|
|
2035
|
+
adapt: (extracted)=>extracted?.deviceId
|
|
2036
|
+
});
|
|
2037
|
+
}
|
|
2015
2038
|
}
|
|
2016
2039
|
class AndroidMCPServer extends mcp_namespaceObject.BaseMCPServer {
|
|
2017
2040
|
createToolsManager() {
|
|
@@ -2020,7 +2043,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
2020
2043
|
constructor(toolsManager){
|
|
2021
2044
|
super({
|
|
2022
2045
|
name: '@midscene/android-mcp',
|
|
2023
|
-
version: "1.7.5
|
|
2046
|
+
version: "1.7.5",
|
|
2024
2047
|
description: 'Control the Android device using natural language commands'
|
|
2025
2048
|
}, toolsManager);
|
|
2026
2049
|
}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,15 +7,16 @@ import { Agent } from '@midscene/core/agent';
|
|
|
7
7
|
import { AgentOpt } from '@midscene/core/agent';
|
|
8
8
|
import { AndroidDeviceInputOpt } from '@midscene/core/device';
|
|
9
9
|
import { AndroidDeviceOpt } from '@midscene/core/device';
|
|
10
|
-
import { BaseMidsceneTools } from '@midscene/shared/mcp';
|
|
10
|
+
import { BaseMidsceneTools } from '@midscene/shared/mcp/base-tools';
|
|
11
11
|
import { Device } from 'appium-adb';
|
|
12
12
|
import { DeviceAction } from '@midscene/core';
|
|
13
13
|
import type { ElementInfo } from '@midscene/shared/extractor';
|
|
14
|
+
import { InitArgSpec } from '@midscene/shared/mcp/base-tools';
|
|
14
15
|
import { InterfaceType } from '@midscene/core';
|
|
15
16
|
import { overrideAIConfig } from '@midscene/shared/env';
|
|
16
17
|
import { Point } from '@midscene/core';
|
|
17
18
|
import { Size } from '@midscene/core';
|
|
18
|
-
import { ToolDefinition } from '@midscene/shared/mcp';
|
|
19
|
+
import type { ToolDefinition } from '@midscene/shared/mcp/types';
|
|
19
20
|
|
|
20
21
|
declare type ActionArgs<T extends DeviceAction> = [ActionParam<T>] extends [undefined] ? [] : [ActionParam<T>];
|
|
21
22
|
|
|
@@ -237,7 +238,8 @@ export declare class AndroidDevice implements AbstractInterface {
|
|
|
237
238
|
* Android-specific tools manager
|
|
238
239
|
* Extends BaseMidsceneTools to provide Android ADB device connection tools
|
|
239
240
|
*/
|
|
240
|
-
export declare class AndroidMidsceneTools extends BaseMidsceneTools<AndroidAgent> {
|
|
241
|
+
export declare class AndroidMidsceneTools extends BaseMidsceneTools<AndroidAgent, string> {
|
|
242
|
+
protected readonly initArgSpec: InitArgSpec<string>;
|
|
241
243
|
protected createTemporaryDevice(): AndroidDevice;
|
|
242
244
|
protected ensureAgent(deviceId?: string): Promise<AndroidAgent>;
|
|
243
245
|
/**
|
|
@@ -7,16 +7,17 @@ import { AgentOpt } from '@midscene/core/agent';
|
|
|
7
7
|
import { AndroidDeviceInputOpt } from '@midscene/core/device';
|
|
8
8
|
import { AndroidDeviceOpt } from '@midscene/core/device';
|
|
9
9
|
import { BaseMCPServer } from '@midscene/shared/mcp';
|
|
10
|
-
import { BaseMidsceneTools } from '@midscene/shared/mcp';
|
|
10
|
+
import { BaseMidsceneTools } from '@midscene/shared/mcp/base-tools';
|
|
11
11
|
import { DeviceAction } from '@midscene/core';
|
|
12
12
|
import type { ElementInfo } from '@midscene/shared/extractor';
|
|
13
|
+
import { InitArgSpec } from '@midscene/shared/mcp/base-tools';
|
|
13
14
|
import { InterfaceType } from '@midscene/core';
|
|
14
15
|
import { LaunchMCPServerOptions } from '@midscene/shared/mcp';
|
|
15
16
|
import { LaunchMCPServerResult } from '@midscene/shared/mcp';
|
|
16
17
|
import { Point } from '@midscene/core';
|
|
17
18
|
import { Size } from '@midscene/core';
|
|
18
19
|
import { Tool } from '@midscene/shared/mcp';
|
|
19
|
-
import { ToolDefinition } from '@midscene/shared/mcp';
|
|
20
|
+
import type { ToolDefinition } from '@midscene/shared/mcp/types';
|
|
20
21
|
|
|
21
22
|
declare type ActionArgs<T extends DeviceAction> = [ActionParam<T>] extends [undefined] ? [] : [ActionParam<T>];
|
|
22
23
|
|
|
@@ -238,7 +239,8 @@ export declare class AndroidMCPServer extends BaseMCPServer {
|
|
|
238
239
|
* Android-specific tools manager
|
|
239
240
|
* Extends BaseMidsceneTools to provide Android ADB device connection tools
|
|
240
241
|
*/
|
|
241
|
-
declare class AndroidMidsceneTools extends BaseMidsceneTools<AndroidAgent> {
|
|
242
|
+
declare class AndroidMidsceneTools extends BaseMidsceneTools<AndroidAgent, string> {
|
|
243
|
+
protected readonly initArgSpec: InitArgSpec<string>;
|
|
242
244
|
protected createTemporaryDevice(): AndroidDevice;
|
|
243
245
|
protected ensureAgent(deviceId?: string): Promise<AndroidAgent>;
|
|
244
246
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midscene/android",
|
|
3
|
-
"version": "1.7.5
|
|
3
|
+
"version": "1.7.5",
|
|
4
4
|
"description": "Android automation library for Midscene",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Android UI automation",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"@yume-chan/stream-extra": "2.1.0",
|
|
42
42
|
"appium-adb": "12.12.1",
|
|
43
43
|
"sharp": "^0.34.3",
|
|
44
|
-
"@midscene/core": "1.7.5
|
|
45
|
-
"@midscene/shared": "1.7.5
|
|
44
|
+
"@midscene/core": "1.7.5",
|
|
45
|
+
"@midscene/shared": "1.7.5"
|
|
46
46
|
},
|
|
47
47
|
"optionalDependencies": {
|
|
48
48
|
"@ffmpeg-installer/ffmpeg": "^1.1.0"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"undici": "^6.0.0",
|
|
57
57
|
"vitest": "3.0.5",
|
|
58
58
|
"zod": "^3.25.1",
|
|
59
|
-
"@midscene/playground": "1.7.5
|
|
59
|
+
"@midscene/playground": "1.7.5"
|
|
60
60
|
},
|
|
61
61
|
"license": "MIT",
|
|
62
62
|
"scripts": {
|