@midscene/android 1.5.3 → 1.5.4-beta-20260310030546.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/index.mjs +56 -1
- package/dist/lib/index.js +58 -0
- package/dist/types/index.d.ts +15 -0
- package/package.json +4 -4
package/dist/es/index.mjs
CHANGED
|
@@ -12,6 +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
16
|
var __webpack_modules__ = {
|
|
16
17
|
"./src/scrcpy-manager.ts" (__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
17
18
|
__webpack_require__.d(__webpack_exports__, {
|
|
@@ -1823,4 +1824,58 @@ async function agentFromAdbDevice(deviceId, opts) {
|
|
|
1823
1824
|
await device.connect();
|
|
1824
1825
|
return new AndroidAgent(device, opts);
|
|
1825
1826
|
}
|
|
1826
|
-
|
|
1827
|
+
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1828
|
+
class AndroidMidsceneTools extends BaseMidsceneTools {
|
|
1829
|
+
createTemporaryDevice() {
|
|
1830
|
+
return new AndroidDevice('temp-for-action-space', {});
|
|
1831
|
+
}
|
|
1832
|
+
async ensureAgent(deviceId) {
|
|
1833
|
+
if (this.agent && deviceId) {
|
|
1834
|
+
try {
|
|
1835
|
+
await this.agent.destroy?.();
|
|
1836
|
+
} catch (error) {
|
|
1837
|
+
debug('Failed to destroy agent during cleanup:', error);
|
|
1838
|
+
}
|
|
1839
|
+
this.agent = void 0;
|
|
1840
|
+
}
|
|
1841
|
+
if (this.agent) return this.agent;
|
|
1842
|
+
debug('Creating Android agent with deviceId:', deviceId || 'auto-detect');
|
|
1843
|
+
const agent = await agentFromAdbDevice(deviceId, {
|
|
1844
|
+
autoDismissKeyboard: false
|
|
1845
|
+
});
|
|
1846
|
+
this.agent = agent;
|
|
1847
|
+
return agent;
|
|
1848
|
+
}
|
|
1849
|
+
preparePlatformTools() {
|
|
1850
|
+
return [
|
|
1851
|
+
{
|
|
1852
|
+
name: 'android_connect',
|
|
1853
|
+
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
1854
|
+
schema: {
|
|
1855
|
+
deviceId: z.string().optional().describe('Android device ID (from adb devices)')
|
|
1856
|
+
},
|
|
1857
|
+
handler: async ({ deviceId })=>{
|
|
1858
|
+
const agent = await this.ensureAgent(deviceId);
|
|
1859
|
+
const screenshot = await agent.page.screenshotBase64();
|
|
1860
|
+
return {
|
|
1861
|
+
content: [
|
|
1862
|
+
{
|
|
1863
|
+
type: 'text',
|
|
1864
|
+
text: `Connected to Android device${deviceId ? `: ${deviceId}` : ' (auto-detected)'}`
|
|
1865
|
+
},
|
|
1866
|
+
...this.buildScreenshotContent(screenshot)
|
|
1867
|
+
],
|
|
1868
|
+
isError: false
|
|
1869
|
+
};
|
|
1870
|
+
}
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
name: 'android_disconnect',
|
|
1874
|
+
description: 'Disconnect from current Android device and release ADB resources',
|
|
1875
|
+
schema: {},
|
|
1876
|
+
handler: this.createDisconnectHandler('Android device')
|
|
1877
|
+
}
|
|
1878
|
+
];
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
export { AndroidAgent, AndroidDevice, AndroidMidsceneTools, ScrcpyDeviceAdapter, agentFromAdbDevice, getConnectedDevices, overrideAIConfig };
|
package/dist/lib/index.js
CHANGED
|
@@ -458,6 +458,7 @@ var __webpack_exports__ = {};
|
|
|
458
458
|
(()=>{
|
|
459
459
|
__webpack_require__.r(__webpack_exports__);
|
|
460
460
|
__webpack_require__.d(__webpack_exports__, {
|
|
461
|
+
AndroidMidsceneTools: ()=>AndroidMidsceneTools,
|
|
461
462
|
getConnectedDevices: ()=>getConnectedDevices,
|
|
462
463
|
overrideAIConfig: ()=>env_namespaceObject.overrideAIConfig,
|
|
463
464
|
AndroidAgent: ()=>AndroidAgent,
|
|
@@ -1857,9 +1858,65 @@ ${Object.keys(size).filter((key)=>size[key]).map((key)=>` ${key} size: ${size[k
|
|
|
1857
1858
|
await device.connect();
|
|
1858
1859
|
return new AndroidAgent(device, opts);
|
|
1859
1860
|
}
|
|
1861
|
+
const mcp_namespaceObject = require("@midscene/shared/mcp");
|
|
1862
|
+
const debug = (0, logger_.getDebug)('mcp:android-tools');
|
|
1863
|
+
class AndroidMidsceneTools extends mcp_namespaceObject.BaseMidsceneTools {
|
|
1864
|
+
createTemporaryDevice() {
|
|
1865
|
+
return new AndroidDevice('temp-for-action-space', {});
|
|
1866
|
+
}
|
|
1867
|
+
async ensureAgent(deviceId) {
|
|
1868
|
+
if (this.agent && deviceId) {
|
|
1869
|
+
try {
|
|
1870
|
+
await this.agent.destroy?.();
|
|
1871
|
+
} catch (error) {
|
|
1872
|
+
debug('Failed to destroy agent during cleanup:', error);
|
|
1873
|
+
}
|
|
1874
|
+
this.agent = void 0;
|
|
1875
|
+
}
|
|
1876
|
+
if (this.agent) return this.agent;
|
|
1877
|
+
debug('Creating Android agent with deviceId:', deviceId || 'auto-detect');
|
|
1878
|
+
const agent = await agentFromAdbDevice(deviceId, {
|
|
1879
|
+
autoDismissKeyboard: false
|
|
1880
|
+
});
|
|
1881
|
+
this.agent = agent;
|
|
1882
|
+
return agent;
|
|
1883
|
+
}
|
|
1884
|
+
preparePlatformTools() {
|
|
1885
|
+
return [
|
|
1886
|
+
{
|
|
1887
|
+
name: 'android_connect',
|
|
1888
|
+
description: 'Connect to Android device via ADB. If deviceId not provided, uses the first available device.',
|
|
1889
|
+
schema: {
|
|
1890
|
+
deviceId: core_namespaceObject.z.string().optional().describe('Android device ID (from adb devices)')
|
|
1891
|
+
},
|
|
1892
|
+
handler: async ({ deviceId })=>{
|
|
1893
|
+
const agent = await this.ensureAgent(deviceId);
|
|
1894
|
+
const screenshot = await agent.page.screenshotBase64();
|
|
1895
|
+
return {
|
|
1896
|
+
content: [
|
|
1897
|
+
{
|
|
1898
|
+
type: 'text',
|
|
1899
|
+
text: `Connected to Android device${deviceId ? `: ${deviceId}` : ' (auto-detected)'}`
|
|
1900
|
+
},
|
|
1901
|
+
...this.buildScreenshotContent(screenshot)
|
|
1902
|
+
],
|
|
1903
|
+
isError: false
|
|
1904
|
+
};
|
|
1905
|
+
}
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
name: 'android_disconnect',
|
|
1909
|
+
description: 'Disconnect from current Android device and release ADB resources',
|
|
1910
|
+
schema: {},
|
|
1911
|
+
handler: this.createDisconnectHandler('Android device')
|
|
1912
|
+
}
|
|
1913
|
+
];
|
|
1914
|
+
}
|
|
1915
|
+
}
|
|
1860
1916
|
})();
|
|
1861
1917
|
exports.AndroidAgent = __webpack_exports__.AndroidAgent;
|
|
1862
1918
|
exports.AndroidDevice = __webpack_exports__.AndroidDevice;
|
|
1919
|
+
exports.AndroidMidsceneTools = __webpack_exports__.AndroidMidsceneTools;
|
|
1863
1920
|
exports.ScrcpyDeviceAdapter = __webpack_exports__.ScrcpyDeviceAdapter;
|
|
1864
1921
|
exports.agentFromAdbDevice = __webpack_exports__.agentFromAdbDevice;
|
|
1865
1922
|
exports.getConnectedDevices = __webpack_exports__.getConnectedDevices;
|
|
@@ -1867,6 +1924,7 @@ exports.overrideAIConfig = __webpack_exports__.overrideAIConfig;
|
|
|
1867
1924
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
1868
1925
|
"AndroidAgent",
|
|
1869
1926
|
"AndroidDevice",
|
|
1927
|
+
"AndroidMidsceneTools",
|
|
1870
1928
|
"ScrcpyDeviceAdapter",
|
|
1871
1929
|
"agentFromAdbDevice",
|
|
1872
1930
|
"getConnectedDevices",
|
package/dist/types/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ 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
11
|
import { Device } from 'appium-adb';
|
|
11
12
|
import { DeviceAction } from '@midscene/core';
|
|
12
13
|
import type { ElementInfo } from '@midscene/shared/extractor';
|
|
@@ -14,6 +15,7 @@ import { InterfaceType } from '@midscene/core';
|
|
|
14
15
|
import { overrideAIConfig } from '@midscene/shared/env';
|
|
15
16
|
import { Point } from '@midscene/core';
|
|
16
17
|
import { Size } from '@midscene/core';
|
|
18
|
+
import { ToolDefinition } from '@midscene/shared/mcp';
|
|
17
19
|
|
|
18
20
|
declare type ActionArgs<T extends DeviceAction> = [ActionParam<T>] extends [undefined] ? [] : [ActionParam<T>];
|
|
19
21
|
|
|
@@ -212,6 +214,19 @@ export declare class AndroidDevice implements AbstractInterface {
|
|
|
212
214
|
hideKeyboard(options?: AndroidDeviceInputOpt, timeoutMs?: number): Promise<boolean>;
|
|
213
215
|
}
|
|
214
216
|
|
|
217
|
+
/**
|
|
218
|
+
* Android-specific tools manager
|
|
219
|
+
* Extends BaseMidsceneTools to provide Android ADB device connection tools
|
|
220
|
+
*/
|
|
221
|
+
export declare class AndroidMidsceneTools extends BaseMidsceneTools<AndroidAgent> {
|
|
222
|
+
protected createTemporaryDevice(): AndroidDevice;
|
|
223
|
+
protected ensureAgent(deviceId?: string): Promise<AndroidAgent>;
|
|
224
|
+
/**
|
|
225
|
+
* Provide Android-specific platform tools
|
|
226
|
+
*/
|
|
227
|
+
protected preparePlatformTools(): ToolDefinition[];
|
|
228
|
+
}
|
|
229
|
+
|
|
215
230
|
declare type DeviceActionAndroidBackButton = DeviceAction<undefined, void>;
|
|
216
231
|
|
|
217
232
|
declare type DeviceActionAndroidHomeButton = DeviceAction<undefined, void>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@midscene/android",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.4-beta-20260310030546.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": "^1.0.0",
|
|
42
42
|
"appium-adb": "12.12.1",
|
|
43
43
|
"sharp": "^0.34.3",
|
|
44
|
-
"@midscene/core": "1.5.
|
|
45
|
-
"@midscene/shared": "1.5.
|
|
44
|
+
"@midscene/core": "1.5.4-beta-20260310030546.0",
|
|
45
|
+
"@midscene/shared": "1.5.4-beta-20260310030546.0"
|
|
46
46
|
},
|
|
47
47
|
"optionalDependencies": {
|
|
48
48
|
"@ffmpeg-installer/ffmpeg": "^1.1.0"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"tsx": "^4.19.2",
|
|
57
57
|
"vitest": "3.0.5",
|
|
58
58
|
"zod": "3.24.3",
|
|
59
|
-
"@midscene/playground": "1.5.
|
|
59
|
+
"@midscene/playground": "1.5.4-beta-20260310030546.0"
|
|
60
60
|
},
|
|
61
61
|
"license": "MIT",
|
|
62
62
|
"scripts": {
|