@midscene/android 1.7.5-beta-20260420031652.0 → 1.7.5-beta-20260420031920.0

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
@@ -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
- deviceId: z.string().optional().describe('Android device ID (from adb devices)')
1961
- },
1962
- handler: async ({ deviceId })=>{
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,11 +1992,23 @@ 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-beta-20260420031652.0",
2011
+ version: "1.7.5-beta-20260420031920.0",
1990
2012
  extraCommands: createReportCliCommands()
1991
2013
  }).catch((e)=>{
1992
2014
  if (!(e instanceof CLIError)) console.error(e);
package/dist/es/index.mjs CHANGED
@@ -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
- deviceId: z.string().optional().describe('Android device ID (from adb devices)')
2027
- },
2028
- handler: async ({ deviceId })=>{
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 };
@@ -1928,6 +1928,16 @@ async function agentFromAdbDevice(deviceId, opts) {
1928
1928
  await device.connect();
1929
1929
  return new AndroidAgent(device, opts);
1930
1930
  }
1931
+ function mcp_tools_define_property(obj, key, value) {
1932
+ if (key in obj) Object.defineProperty(obj, key, {
1933
+ value: value,
1934
+ enumerable: true,
1935
+ configurable: true,
1936
+ writable: true
1937
+ });
1938
+ else obj[key] = value;
1939
+ return obj;
1940
+ }
1931
1941
  const debug = (0, logger_.getDebug)('mcp:android-tools');
1932
1942
  class AndroidMidsceneTools extends BaseMidsceneTools {
1933
1943
  createTemporaryDevice() {
@@ -1955,10 +1965,10 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
1955
1965
  {
1956
1966
  name: 'android_connect',
1957
1967
  description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
1958
- schema: {
1959
- deviceId: z.string().optional().describe('Android device ID (from adb devices)')
1960
- },
1961
- handler: async ({ deviceId })=>{
1968
+ schema: this.getAgentInitArgSchema(),
1969
+ cli: this.getAgentInitArgCliMetadata(),
1970
+ handler: async (args)=>{
1971
+ const deviceId = this.extractAgentInitParam(args);
1962
1972
  const agent = await this.ensureAgent(deviceId);
1963
1973
  const screenshot = await agent.page.screenshotBase64();
1964
1974
  return {
@@ -1981,6 +1991,18 @@ class AndroidMidsceneTools extends BaseMidsceneTools {
1981
1991
  }
1982
1992
  ];
1983
1993
  }
1994
+ constructor(...args){
1995
+ super(...args), mcp_tools_define_property(this, "initArgSpec", {
1996
+ namespace: 'android',
1997
+ shape: {
1998
+ deviceId: z.string().optional().describe('Android device ID (from adb devices)')
1999
+ },
2000
+ cli: {
2001
+ preferBareKeys: true
2002
+ },
2003
+ adapt: (extracted)=>extracted?.deviceId
2004
+ });
2005
+ }
1984
2006
  }
1985
2007
  class AndroidMCPServer extends BaseMCPServer {
1986
2008
  createToolsManager() {
@@ -1989,7 +2011,7 @@ class AndroidMCPServer extends BaseMCPServer {
1989
2011
  constructor(toolsManager){
1990
2012
  super({
1991
2013
  name: '@midscene/android-mcp',
1992
- version: "1.7.5-beta-20260420031652.0",
2014
+ version: "1.7.5-beta-20260420031920.0",
1993
2015
  description: 'Control the Android device using natural language commands'
1994
2016
  }, toolsManager);
1995
2017
  }
package/dist/lib/cli.js CHANGED
@@ -1944,6 +1944,16 @@ ${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
1958
  class AndroidMidsceneTools extends mcp_namespaceObject.BaseMidsceneTools {
1949
1959
  createTemporaryDevice() {
@@ -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
- deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
1976
- },
1977
- handler: async ({ deviceId })=>{
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,11 +2007,23 @@ ${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-beta-20260420031652.0",
2026
+ version: "1.7.5-beta-20260420031920.0",
2005
2027
  extraCommands: (0, core_namespaceObject.createReportCliCommands)()
2006
2028
  }).catch((e)=>{
2007
2029
  if (!(e instanceof cli_namespaceObject.CLIError)) console.error(e);
package/dist/lib/index.js CHANGED
@@ -2031,6 +2031,16 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
2031
2031
  return new AndroidAgent(device, opts);
2032
2032
  }
2033
2033
  const mcp_namespaceObject = require("@midscene/shared/mcp");
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
2045
  class AndroidMidsceneTools extends mcp_namespaceObject.BaseMidsceneTools {
2036
2046
  createTemporaryDevice() {
@@ -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
- deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
2063
- },
2064
- handler: async ({ deviceId })=>{
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;
@@ -1959,6 +1959,16 @@ ${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
+ function mcp_tools_define_property(obj, key, value) {
1963
+ if (key in obj) Object.defineProperty(obj, key, {
1964
+ value: value,
1965
+ enumerable: true,
1966
+ configurable: true,
1967
+ writable: true
1968
+ });
1969
+ else obj[key] = value;
1970
+ return obj;
1971
+ }
1962
1972
  const debug = (0, logger_.getDebug)('mcp:android-tools');
1963
1973
  class AndroidMidsceneTools extends mcp_namespaceObject.BaseMidsceneTools {
1964
1974
  createTemporaryDevice() {
@@ -1986,10 +1996,10 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
1986
1996
  {
1987
1997
  name: 'android_connect',
1988
1998
  description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
1989
- schema: {
1990
- deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
1991
- },
1992
- handler: async ({ deviceId })=>{
1999
+ schema: this.getAgentInitArgSchema(),
2000
+ cli: this.getAgentInitArgCliMetadata(),
2001
+ handler: async (args)=>{
2002
+ const deviceId = this.extractAgentInitParam(args);
1993
2003
  const agent = await this.ensureAgent(deviceId);
1994
2004
  const screenshot = await agent.page.screenshotBase64();
1995
2005
  return {
@@ -2012,6 +2022,18 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
2012
2022
  }
2013
2023
  ];
2014
2024
  }
2025
+ constructor(...args){
2026
+ super(...args), mcp_tools_define_property(this, "initArgSpec", {
2027
+ namespace: 'android',
2028
+ shape: {
2029
+ deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
2030
+ },
2031
+ cli: {
2032
+ preferBareKeys: true
2033
+ },
2034
+ adapt: (extracted)=>extracted?.deviceId
2035
+ });
2036
+ }
2015
2037
  }
2016
2038
  class AndroidMCPServer extends mcp_namespaceObject.BaseMCPServer {
2017
2039
  createToolsManager() {
@@ -2020,7 +2042,7 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
2020
2042
  constructor(toolsManager){
2021
2043
  super({
2022
2044
  name: '@midscene/android-mcp',
2023
- version: "1.7.5-beta-20260420031652.0",
2045
+ version: "1.7.5-beta-20260420031920.0",
2024
2046
  description: 'Control the Android device using natural language commands'
2025
2047
  }, toolsManager);
2026
2048
  }
@@ -11,6 +11,7 @@ import { BaseMidsceneTools } from '@midscene/shared/mcp';
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';
14
15
  import { InterfaceType } from '@midscene/core';
15
16
  import { overrideAIConfig } from '@midscene/shared/env';
16
17
  import { Point } from '@midscene/core';
@@ -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
  /**
@@ -10,6 +10,7 @@ import { BaseMCPServer } from '@midscene/shared/mcp';
10
10
  import { BaseMidsceneTools } from '@midscene/shared/mcp';
11
11
  import { DeviceAction } from '@midscene/core';
12
12
  import type { ElementInfo } from '@midscene/shared/extractor';
13
+ import { InitArgSpec } from '@midscene/shared/mcp';
13
14
  import { InterfaceType } from '@midscene/core';
14
15
  import { LaunchMCPServerOptions } from '@midscene/shared/mcp';
15
16
  import { LaunchMCPServerResult } from '@midscene/shared/mcp';
@@ -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-beta-20260420031652.0",
3
+ "version": "1.7.5-beta-20260420031920.0",
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-beta-20260420031652.0",
45
- "@midscene/shared": "1.7.5-beta-20260420031652.0"
44
+ "@midscene/core": "1.7.5-beta-20260420031920.0",
45
+ "@midscene/shared": "1.7.5-beta-20260420031920.0"
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-beta-20260420031652.0"
59
+ "@midscene/playground": "1.7.5-beta-20260420031920.0"
60
60
  },
61
61
  "license": "MIT",
62
62
  "scripts": {