@xiuchang-midscene/android 2.0.0 → 2.0.2

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.
Files changed (24) hide show
  1. package/dist/es/cli.mjs +424 -22
  2. package/dist/es/index.mjs +420 -18
  3. package/dist/es/mcp-server.mjs +423 -21
  4. package/dist/lib/cli.js +426 -24
  5. package/dist/lib/index.js +420 -18
  6. package/dist/lib/mcp-server.js +425 -23
  7. package/dist/types/index.d.ts +42 -15
  8. package/dist/types/mcp-server.d.ts +45 -18
  9. package/package.json +5 -5
  10. package/src/app-knowledge/screenshots/fliggy/fliggy-qwen/.gitkeep +0 -0
  11. package/src/app-knowledge/screenshots/fliggy/flight-detail/.gitkeep +0 -0
  12. package/src/app-knowledge/screenshots/fliggy/flight-list/.gitkeep +0 -0
  13. package/src/app-knowledge/screenshots/fliggy/flight-order/.gitkeep +0 -0
  14. package/src/app-knowledge/screenshots/fliggy/home/home-page-annotated.jpg +0 -0
  15. package/src/app-knowledge/screenshots/fliggy/hotel-detail/.gitkeep +0 -0
  16. package/src/app-knowledge/screenshots/fliggy/hotel-list/.gitkeep +0 -0
  17. package/src/app-knowledge/screenshots/fliggy/hotel-order/.gitkeep +0 -0
  18. package/src/app-knowledge/screenshots/fliggy/search-default/search-default-annotated.jpg +0 -0
  19. package/src/app-knowledge/screenshots/fliggy/search-result/search-result-annotated.jpg +0 -0
  20. package/src/app-knowledge/screenshots/fliggy/search-result/search-result-giraffe-annotated.jpg +0 -0
  21. package/src/app-knowledge/screenshots/fliggy/search-result/search-result-quickfilter-annotated.jpg +0 -0
  22. package/src/app-knowledge/screenshots/fliggy/search-sug/search-sug-annotated.jpg +0 -0
  23. package/src/app-knowledge/screenshots/fliggy/ticket-detail/.gitkeep +0 -0
  24. package/src/app-knowledge/screenshots/fliggy/ticket-order/.gitkeep +0 -0
@@ -1,22 +1,22 @@
1
- import { AbstractInterface } from '@midscene/core/device';
2
- import type { ActionParam } from '@midscene/core';
3
- import type { ActionReturn } from '@midscene/core';
1
+ import { AbstractInterface } from '@xiuchang-midscene/core/device';
2
+ import type { ActionParam } from '@xiuchang-midscene/core';
3
+ import type { ActionReturn } from '@xiuchang-midscene/core';
4
4
  import { ADB } from 'appium-adb';
5
- import { Agent } from '@midscene/core/agent';
6
- import { AgentOpt } from '@midscene/core/agent';
7
- import { AndroidDeviceInputOpt } from '@midscene/core/device';
8
- import { AndroidDeviceOpt } from '@midscene/core/device';
9
- import { BaseMCPServer } from '@midscene/shared/mcp';
10
- import { BaseMidsceneTools } from '@midscene/shared/mcp';
11
- import { DeviceAction } from '@midscene/core';
12
- import type { ElementInfo } from '@midscene/shared/extractor';
13
- import { InterfaceType } from '@midscene/core';
14
- import { LaunchMCPServerOptions } from '@midscene/shared/mcp';
15
- import { LaunchMCPServerResult } from '@midscene/shared/mcp';
16
- import { Point } from '@midscene/core';
17
- import { Size } from '@midscene/core';
18
- import { Tool } from '@midscene/shared/mcp';
19
- import { ToolDefinition } from '@midscene/shared/mcp';
5
+ import { Agent } from '@xiuchang-midscene/core/agent';
6
+ import { AgentOpt } from '@xiuchang-midscene/core/agent';
7
+ import { AndroidDeviceInputOpt } from '@xiuchang-midscene/core/device';
8
+ import { AndroidDeviceOpt } from '@xiuchang-midscene/core/device';
9
+ import { BaseMCPServer } from '@xiuchang-midscene/shared/mcp';
10
+ import { BaseMidsceneTools } from '@xiuchang-midscene/shared/mcp';
11
+ import { DeviceAction } from '@xiuchang-midscene/core';
12
+ import type { ElementInfo } from '@xiuchang-midscene/shared/extractor';
13
+ import { InterfaceType } from '@xiuchang-midscene/core';
14
+ import { LaunchMCPServerOptions } from '@xiuchang-midscene/shared/mcp';
15
+ import { LaunchMCPServerResult } from '@xiuchang-midscene/shared/mcp';
16
+ import { Point } from '@xiuchang-midscene/core';
17
+ import { Size } from '@xiuchang-midscene/core';
18
+ import { Tool } from '@xiuchang-midscene/shared/mcp';
19
+ import { ToolDefinition } from '@xiuchang-midscene/shared/mcp';
20
20
 
21
21
  declare type ActionArgs<T extends DeviceAction> = [ActionParam<T>] extends [undefined] ? [] : [ActionParam<T>];
22
22
 
@@ -37,6 +37,10 @@ declare class AndroidAgent extends Agent<AndroidDevice> {
37
37
  * User-provided app name to package name mapping
38
38
  */
39
39
  private appNameMapping;
40
+ /**
41
+ * Cache the last loaded knowledge package name to avoid redundant setAIActContext calls
42
+ */
43
+ private lastKnowledgePackageName;
40
44
  constructor(device: AndroidDevice, opts?: AndroidAgentOpt);
41
45
  /**
42
46
  * Launch an Android app or URL
@@ -48,6 +52,29 @@ declare class AndroidAgent extends Agent<AndroidDevice> {
48
52
  * @param command - ADB shell command to execute
49
53
  */
50
54
  runAdbShell(command: string): Promise<string>;
55
+ /**
56
+ * Load app-specific business knowledge for the given package name.
57
+ * If knowledge is found, it will be injected via setAIActContext so that
58
+ * all AI methods (aiAct, aiAssert, aiQuery, aiBoolean, etc.) can use it.
59
+ * Also sets up screenshot knowledge provider for planning-time injection.
60
+ * Skips if the same package knowledge is already loaded.
61
+ * @param packageName - The Android package name (e.g. "com.taobao.trip")
62
+ */
63
+ loadAppKnowledge(packageName: string): void;
64
+ /**
65
+ * Resolve annotated reference screenshots for a given page to base64 data URLs.
66
+ * @param pageId - The page identifier
67
+ * @param packageName - The Android package name
68
+ * @returns Array of base64 image data objects, empty if no screenshots found
69
+ */
70
+ private resolveReferenceScreenshots;
71
+ /**
72
+ * Detect the foreground Android app and automatically load its business knowledge.
73
+ * Uses ADB to get the currently resumed activity and extract the package name,
74
+ * then calls loadAppKnowledge() with the detected package name.
75
+ * This is safe to call repeatedly — loadAppKnowledge() skips if already loaded.
76
+ */
77
+ detectAndLoadAppKnowledge(): Promise<void>;
51
78
  private createActionWrapper;
52
79
  }
53
80
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiuchang-midscene/android",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "Android automation library for Midscene",
5
5
  "keywords": [
6
6
  "Android UI automation",
@@ -18,6 +18,7 @@
18
18
  "files": [
19
19
  "bin",
20
20
  "dist",
21
+ "src/app-knowledge/screenshots",
21
22
  "README.md"
22
23
  ],
23
24
  "exports": {
@@ -41,8 +42,8 @@
41
42
  "@yume-chan/stream-extra": "2.1.0",
42
43
  "appium-adb": "12.12.1",
43
44
  "sharp": "^0.34.3",
44
- "@midscene/core": "1.6.0",
45
- "@midscene/shared": "1.6.0"
45
+ "@xiuchang-midscene/shared": "^2.0.2",
46
+ "@xiuchang-midscene/core": "^2.0.2"
46
47
  },
47
48
  "optionalDependencies": {
48
49
  "@ffmpeg-installer/ffmpeg": "^1.1.0"
@@ -55,8 +56,7 @@
55
56
  "typescript": "^5.8.3",
56
57
  "tsx": "^4.19.2",
57
58
  "vitest": "3.0.5",
58
- "zod": "3.24.3",
59
- "@midscene/playground": "1.6.0"
59
+ "zod": "3.24.3"
60
60
  },
61
61
  "license": "MIT",
62
62
  "scripts": {