@midscene/shared 0.30.10 → 1.0.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.
Files changed (129) hide show
  1. package/dist/es/build/rspack-config.mjs +4 -0
  2. package/dist/es/constants/example-code.mjs +4 -4
  3. package/dist/es/env/constants.mjs +27 -82
  4. package/dist/es/env/global-config-manager.mjs +2 -3
  5. package/dist/es/env/helper.mjs +12 -17
  6. package/dist/es/env/init-debug.mjs +6 -6
  7. package/dist/es/env/model-config-manager.mjs +45 -65
  8. package/dist/es/env/parse-model-config.mjs +112 -0
  9. package/dist/es/env/types.mjs +70 -162
  10. package/dist/es/extractor/dom-util.mjs +10 -18
  11. package/dist/es/extractor/index.mjs +2 -3
  12. package/dist/es/extractor/locator.mjs +8 -15
  13. package/dist/es/extractor/tree.mjs +2 -5
  14. package/dist/es/extractor/util.mjs +4 -28
  15. package/dist/es/extractor/web-extractor.mjs +7 -14
  16. package/dist/es/index.mjs +2 -1
  17. package/dist/es/mcp/base-server.mjs +250 -0
  18. package/dist/es/mcp/base-tools.mjs +84 -0
  19. package/dist/es/mcp/index.mjs +5 -0
  20. package/dist/es/mcp/inject-report-html-plugin.mjs +53 -0
  21. package/dist/es/mcp/tool-generator.mjs +207 -0
  22. package/dist/es/mcp/types.mjs +3 -0
  23. package/dist/es/node/fs.mjs +2 -2
  24. package/dist/es/utils.mjs +2 -3
  25. package/dist/es/zod-schema-utils.mjs +54 -0
  26. package/dist/lib/baseDB.js +2 -2
  27. package/dist/lib/build/copy-static.js +4 -4
  28. package/dist/lib/build/rspack-config.js +38 -0
  29. package/dist/lib/common.js +4 -4
  30. package/dist/lib/constants/example-code.js +6 -6
  31. package/dist/lib/constants/index.js +13 -13
  32. package/dist/lib/env/basic.js +2 -2
  33. package/dist/lib/env/constants.js +32 -90
  34. package/dist/lib/env/global-config-manager.js +4 -5
  35. package/dist/lib/env/helper.js +13 -22
  36. package/dist/lib/env/index.js +24 -28
  37. package/dist/lib/env/init-debug.js +7 -7
  38. package/dist/lib/env/model-config-manager.js +47 -67
  39. package/dist/lib/env/parse-model-config.js +155 -0
  40. package/dist/lib/env/types.js +146 -379
  41. package/dist/lib/env/utils.js +4 -4
  42. package/dist/lib/extractor/constants.js +4 -4
  43. package/dist/lib/extractor/debug.js +1 -1
  44. package/dist/lib/extractor/dom-util.js +18 -26
  45. package/dist/lib/extractor/index.js +11 -21
  46. package/dist/lib/extractor/locator.js +10 -20
  47. package/dist/lib/extractor/tree.js +4 -7
  48. package/dist/lib/extractor/util.js +17 -50
  49. package/dist/lib/extractor/web-extractor.js +12 -19
  50. package/dist/lib/img/box-select.js +4 -4
  51. package/dist/lib/img/draw-box.js +2 -2
  52. package/dist/lib/img/get-jimp.js +16 -34
  53. package/dist/lib/img/get-photon.js +24 -47
  54. package/dist/lib/img/get-sharp.js +16 -34
  55. package/dist/lib/img/index.js +18 -18
  56. package/dist/lib/img/info.js +4 -4
  57. package/dist/lib/img/transform.js +10 -10
  58. package/dist/lib/index.js +8 -4
  59. package/dist/lib/logger.js +4 -4
  60. package/dist/lib/mcp/base-server.js +300 -0
  61. package/dist/lib/mcp/base-tools.js +118 -0
  62. package/dist/lib/mcp/index.js +86 -0
  63. package/dist/lib/mcp/inject-report-html-plugin.js +98 -0
  64. package/dist/lib/mcp/tool-generator.js +244 -0
  65. package/dist/lib/mcp/types.js +40 -0
  66. package/dist/lib/node/fs.js +6 -6
  67. package/dist/lib/node/index.js +6 -8
  68. package/dist/lib/polyfills/async-hooks.js +2 -2
  69. package/dist/lib/polyfills/index.js +6 -8
  70. package/dist/lib/types/index.js +2 -2
  71. package/dist/lib/us-keyboard-layout.js +2 -2
  72. package/dist/lib/utils.js +13 -14
  73. package/dist/lib/zod-schema-utils.js +97 -0
  74. package/dist/types/build/rspack-config.d.ts +8 -0
  75. package/dist/types/constants/example-code.d.ts +1 -1
  76. package/dist/types/env/constants.d.ts +5 -18
  77. package/dist/types/env/global-config-manager.d.ts +1 -2
  78. package/dist/types/env/helper.d.ts +2 -4
  79. package/dist/types/env/model-config-manager.d.ts +8 -7
  80. package/dist/types/env/parse-model-config.d.ts +28 -0
  81. package/dist/types/env/types.d.ts +152 -191
  82. package/dist/types/extractor/dom-util.d.ts +2 -15
  83. package/dist/types/extractor/index.d.ts +1 -2
  84. package/dist/types/extractor/locator.d.ts +0 -1
  85. package/dist/types/extractor/tree.d.ts +1 -4
  86. package/dist/types/extractor/util.d.ts +0 -3
  87. package/dist/types/index.d.ts +1 -0
  88. package/dist/types/mcp/base-server.d.ts +77 -0
  89. package/dist/types/mcp/base-tools.d.ts +55 -0
  90. package/dist/types/mcp/index.d.ts +5 -0
  91. package/dist/types/mcp/inject-report-html-plugin.d.ts +18 -0
  92. package/dist/types/mcp/tool-generator.d.ts +11 -0
  93. package/dist/types/mcp/types.d.ts +100 -0
  94. package/dist/types/types/index.d.ts +5 -2
  95. package/dist/types/zod-schema-utils.d.ts +23 -0
  96. package/package.json +19 -4
  97. package/src/build/rspack-config.ts +12 -0
  98. package/src/constants/example-code.ts +4 -4
  99. package/src/env/constants.ts +58 -203
  100. package/src/env/global-config-manager.ts +7 -7
  101. package/src/env/helper.ts +10 -31
  102. package/src/env/init-debug.ts +11 -6
  103. package/src/env/model-config-manager.ts +91 -87
  104. package/src/env/parse-model-config.ts +265 -0
  105. package/src/env/types.ts +212 -344
  106. package/src/extractor/dom-util.ts +15 -12
  107. package/src/extractor/index.ts +0 -3
  108. package/src/extractor/locator.ts +3 -12
  109. package/src/extractor/tree.ts +4 -4
  110. package/src/extractor/util.ts +0 -32
  111. package/src/index.ts +2 -0
  112. package/src/mcp/base-server.ts +435 -0
  113. package/src/mcp/base-tools.ts +196 -0
  114. package/src/mcp/index.ts +5 -0
  115. package/src/mcp/inject-report-html-plugin.ts +119 -0
  116. package/src/mcp/tool-generator.ts +330 -0
  117. package/src/mcp/types.ts +108 -0
  118. package/src/node/fs.ts +1 -1
  119. package/src/types/index.ts +8 -2
  120. package/src/utils.ts +1 -1
  121. package/src/zod-schema-utils.ts +133 -0
  122. package/dist/es/env/decide-model-config.mjs +0 -172
  123. package/dist/es/env/parse.mjs +0 -69
  124. package/dist/lib/env/decide-model-config.js +0 -212
  125. package/dist/lib/env/parse.js +0 -106
  126. package/dist/types/env/decide-model-config.d.ts +0 -14
  127. package/dist/types/env/parse.d.ts +0 -12
  128. package/src/env/decide-model-config.ts +0 -319
  129. package/src/env/parse.ts +0 -131
@@ -1,8 +1,7 @@
1
- const MIDSCENE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
1
+ const MIDSCENE_MODEL_INIT_CONFIG_JSON = 'MIDSCENE_MODEL_INIT_CONFIG_JSON';
2
2
  const MIDSCENE_MODEL_NAME = 'MIDSCENE_MODEL_NAME';
3
- const MIDSCENE_LANGSMITH_DEBUG = 'MIDSCENE_LANGSMITH_DEBUG';
4
- const MIDSCENE_DEBUG_AI_PROFILE = 'MIDSCENE_DEBUG_AI_PROFILE';
5
- const MIDSCENE_DEBUG_AI_RESPONSE = 'MIDSCENE_DEBUG_AI_RESPONSE';
3
+ const MIDSCENE_DEBUG_MODEL_PROFILE = 'MIDSCENE_DEBUG_MODEL_PROFILE';
4
+ const MIDSCENE_DEBUG_MODEL_RESPONSE = 'MIDSCENE_DEBUG_MODEL_RESPONSE';
6
5
  const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = 'MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG';
7
6
  const MIDSCENE_DEBUG_MODE = 'MIDSCENE_DEBUG_MODE';
8
7
  const MIDSCENE_MCP_USE_PUPPETEER_MODE = 'MIDSCENE_MCP_USE_PUPPETEER_MODE';
@@ -10,10 +9,19 @@ const MIDSCENE_MCP_CHROME_PATH = 'MIDSCENE_MCP_CHROME_PATH';
10
9
  const MIDSCENE_MCP_ANDROID_MODE = 'MIDSCENE_MCP_ANDROID_MODE';
11
10
  const DOCKER_CONTAINER = 'DOCKER_CONTAINER';
12
11
  const MIDSCENE_FORCE_DEEP_THINK = 'MIDSCENE_FORCE_DEEP_THINK';
13
- const MIDSCENE_OPENAI_SOCKS_PROXY = 'MIDSCENE_OPENAI_SOCKS_PROXY';
14
- const MIDSCENE_OPENAI_HTTP_PROXY = 'MIDSCENE_OPENAI_HTTP_PROXY';
12
+ const MIDSCENE_LANGSMITH_DEBUG = 'MIDSCENE_LANGSMITH_DEBUG';
13
+ const MIDSCENE_LANGFUSE_DEBUG = 'MIDSCENE_LANGFUSE_DEBUG';
14
+ const MIDSCENE_MODEL_SOCKS_PROXY = 'MIDSCENE_MODEL_SOCKS_PROXY';
15
+ const MIDSCENE_MODEL_HTTP_PROXY = 'MIDSCENE_MODEL_HTTP_PROXY';
16
+ const MIDSCENE_MODEL_API_KEY = 'MIDSCENE_MODEL_API_KEY';
17
+ const MIDSCENE_MODEL_BASE_URL = 'MIDSCENE_MODEL_BASE_URL';
18
+ const MIDSCENE_MODEL_MAX_TOKENS = 'MIDSCENE_MODEL_MAX_TOKENS';
19
+ const MIDSCENE_MODEL_TIMEOUT = 'MIDSCENE_MODEL_TIMEOUT';
15
20
  const OPENAI_API_KEY = 'OPENAI_API_KEY';
16
21
  const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
22
+ const MIDSCENE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
23
+ const MIDSCENE_OPENAI_HTTP_PROXY = 'MIDSCENE_OPENAI_HTTP_PROXY';
24
+ const MIDSCENE_OPENAI_SOCKS_PROXY = 'MIDSCENE_OPENAI_SOCKS_PROXY';
17
25
  const OPENAI_MAX_TOKENS = 'OPENAI_MAX_TOKENS';
18
26
  const MIDSCENE_ADB_PATH = 'MIDSCENE_ADB_PATH';
19
27
  const MIDSCENE_ADB_REMOTE_HOST = 'MIDSCENE_ADB_REMOTE_HOST';
@@ -29,103 +37,49 @@ const MIDSCENE_USE_DOUBAO_VISION = 'MIDSCENE_USE_DOUBAO_VISION';
29
37
  const MIDSCENE_USE_GEMINI = 'MIDSCENE_USE_GEMINI';
30
38
  const MIDSCENE_USE_VL_MODEL = 'MIDSCENE_USE_VL_MODEL';
31
39
  const MATCH_BY_POSITION = 'MATCH_BY_POSITION';
32
- const MIDSCENE_API_TYPE = 'MIDSCENE-API-TYPE';
33
40
  const MIDSCENE_REPORT_TAG_NAME = 'MIDSCENE_REPORT_TAG_NAME';
34
- const MIDSCENE_REPLANNING_CYCLE_LIMIT = 'MIDSCENE_REPLANNING_CYCLE_LIMIT';
35
41
  const MIDSCENE_PREFERRED_LANGUAGE = 'MIDSCENE_PREFERRED_LANGUAGE';
36
- const MIDSCENE_USE_AZURE_OPENAI = 'MIDSCENE_USE_AZURE_OPENAI';
37
- const MIDSCENE_AZURE_OPENAI_SCOPE = 'MIDSCENE_AZURE_OPENAI_SCOPE';
38
- const MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON';
39
42
  const MIDSCENE_CACHE_MAX_FILENAME_LENGTH = 'MIDSCENE_CACHE_MAX_FILENAME_LENGTH';
40
- const AZURE_OPENAI_ENDPOINT = 'AZURE_OPENAI_ENDPOINT';
41
- const AZURE_OPENAI_KEY = 'AZURE_OPENAI_KEY';
42
- const AZURE_OPENAI_API_VERSION = 'AZURE_OPENAI_API_VERSION';
43
- const AZURE_OPENAI_DEPLOYMENT = 'AZURE_OPENAI_DEPLOYMENT';
44
- const MIDSCENE_USE_ANTHROPIC_SDK = 'MIDSCENE_USE_ANTHROPIC_SDK';
45
- const ANTHROPIC_API_KEY = 'ANTHROPIC_API_KEY';
43
+ const MIDSCENE_REPLANNING_CYCLE_LIMIT = 'MIDSCENE_REPLANNING_CYCLE_LIMIT';
46
44
  const MIDSCENE_RUN_DIR = 'MIDSCENE_RUN_DIR';
47
- const MIDSCENE_OPENAI_BASE_URL = 'MIDSCENE_OPENAI_BASE_URL';
48
- const MIDSCENE_OPENAI_API_KEY = 'MIDSCENE_OPENAI_API_KEY';
49
- const MIDSCENE_OPENAI_USE_AZURE = 'MIDSCENE_OPENAI_USE_AZURE';
50
- const MIDSCENE_AZURE_OPENAI_KEY = 'MIDSCENE_AZURE_OPENAI_KEY';
51
- const MIDSCENE_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_AZURE_OPENAI_ENDPOINT';
52
- const MIDSCENE_AZURE_OPENAI_API_VERSION = 'MIDSCENE_AZURE_OPENAI_API_VERSION';
53
- const MIDSCENE_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_AZURE_OPENAI_DEPLOYMENT';
54
- const MIDSCENE_ANTHROPIC_API_KEY = 'MIDSCENE_ANTHROPIC_API_KEY';
55
- const MIDSCENE_VL_MODE = 'MIDSCENE_VL_MODE';
56
- const MIDSCENE_VQA_MODEL_NAME = 'MIDSCENE_VQA_MODEL_NAME';
57
- const MIDSCENE_VQA_OPENAI_SOCKS_PROXY = 'MIDSCENE_VQA_OPENAI_SOCKS_PROXY';
58
- const MIDSCENE_VQA_OPENAI_HTTP_PROXY = 'MIDSCENE_VQA_OPENAI_HTTP_PROXY';
59
- const MIDSCENE_VQA_OPENAI_BASE_URL = 'MIDSCENE_VQA_OPENAI_BASE_URL';
60
- const MIDSCENE_VQA_OPENAI_API_KEY = 'MIDSCENE_VQA_OPENAI_API_KEY';
61
- const MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON';
62
- const MIDSCENE_VQA_OPENAI_USE_AZURE = 'MIDSCENE_VQA_OPENAI_USE_AZURE';
63
- const MIDSCENE_VQA_USE_AZURE_OPENAI = 'MIDSCENE_VQA_USE_AZURE_OPENAI';
64
- const MIDSCENE_VQA_AZURE_OPENAI_SCOPE = 'MIDSCENE_VQA_AZURE_OPENAI_SCOPE';
65
- const MIDSCENE_VQA_AZURE_OPENAI_KEY = 'MIDSCENE_VQA_AZURE_OPENAI_KEY';
66
- const MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT';
67
- const MIDSCENE_VQA_AZURE_OPENAI_API_VERSION = 'MIDSCENE_VQA_AZURE_OPENAI_API_VERSION';
68
- const MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT';
69
- const MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON';
70
- const MIDSCENE_VQA_USE_ANTHROPIC_SDK = 'MIDSCENE_VQA_USE_ANTHROPIC_SDK';
71
- const MIDSCENE_VQA_ANTHROPIC_API_KEY = 'MIDSCENE_VQA_ANTHROPIC_API_KEY';
72
- const MIDSCENE_VQA_VL_MODE = 'MIDSCENE_VQA_VL_MODE';
45
+ const MIDSCENE_INSIGHT_MODEL_NAME = 'MIDSCENE_INSIGHT_MODEL_NAME';
46
+ const MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY = 'MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY';
47
+ const MIDSCENE_INSIGHT_MODEL_HTTP_PROXY = 'MIDSCENE_INSIGHT_MODEL_HTTP_PROXY';
48
+ const MIDSCENE_INSIGHT_MODEL_BASE_URL = 'MIDSCENE_INSIGHT_MODEL_BASE_URL';
49
+ const MIDSCENE_INSIGHT_MODEL_API_KEY = 'MIDSCENE_INSIGHT_MODEL_API_KEY';
50
+ const MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON = 'MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON';
51
+ const MIDSCENE_INSIGHT_MODEL_TIMEOUT = 'MIDSCENE_INSIGHT_MODEL_TIMEOUT';
73
52
  const MIDSCENE_PLANNING_MODEL_NAME = 'MIDSCENE_PLANNING_MODEL_NAME';
74
- const MIDSCENE_PLANNING_OPENAI_SOCKS_PROXY = 'MIDSCENE_PLANNING_OPENAI_SOCKS_PROXY';
75
- const MIDSCENE_PLANNING_OPENAI_HTTP_PROXY = 'MIDSCENE_PLANNING_OPENAI_HTTP_PROXY';
76
- const MIDSCENE_PLANNING_OPENAI_BASE_URL = 'MIDSCENE_PLANNING_OPENAI_BASE_URL';
77
- const MIDSCENE_PLANNING_OPENAI_API_KEY = 'MIDSCENE_PLANNING_OPENAI_API_KEY';
78
- const MIDSCENE_PLANNING_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_PLANNING_OPENAI_INIT_CONFIG_JSON';
79
- const MIDSCENE_PLANNING_OPENAI_USE_AZURE = 'MIDSCENE_PLANNING_OPENAI_USE_AZURE';
80
- const MIDSCENE_PLANNING_USE_AZURE_OPENAI = 'MIDSCENE_PLANNING_USE_AZURE_OPENAI';
81
- const MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE = 'MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE';
82
- const MIDSCENE_PLANNING_AZURE_OPENAI_KEY = 'MIDSCENE_PLANNING_AZURE_OPENAI_KEY';
83
- const MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT';
84
- const MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION = 'MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION';
85
- const MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT';
86
- const MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON';
87
- const MIDSCENE_PLANNING_USE_ANTHROPIC_SDK = 'MIDSCENE_PLANNING_USE_ANTHROPIC_SDK';
88
- const MIDSCENE_PLANNING_ANTHROPIC_API_KEY = 'MIDSCENE_PLANNING_ANTHROPIC_API_KEY';
89
- const MIDSCENE_PLANNING_VL_MODE = 'MIDSCENE_PLANNING_VL_MODE';
90
- const MIDSCENE_GROUNDING_MODEL_NAME = 'MIDSCENE_GROUNDING_MODEL_NAME';
91
- const MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY = 'MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY';
92
- const MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY = 'MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY';
93
- const MIDSCENE_GROUNDING_OPENAI_BASE_URL = 'MIDSCENE_GROUNDING_OPENAI_BASE_URL';
94
- const MIDSCENE_GROUNDING_OPENAI_API_KEY = 'MIDSCENE_GROUNDING_OPENAI_API_KEY';
95
- const MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON';
96
- const MIDSCENE_GROUNDING_OPENAI_USE_AZURE = 'MIDSCENE_GROUNDING_OPENAI_USE_AZURE';
97
- const MIDSCENE_GROUNDING_USE_AZURE_OPENAI = 'MIDSCENE_GROUNDING_USE_AZURE_OPENAI';
98
- const MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE = 'MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE';
99
- const MIDSCENE_GROUNDING_AZURE_OPENAI_KEY = 'MIDSCENE_GROUNDING_AZURE_OPENAI_KEY';
100
- const MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT';
101
- const MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION = 'MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION';
102
- const MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT';
103
- const MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON';
104
- const MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK = 'MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK';
105
- const MIDSCENE_GROUNDING_ANTHROPIC_API_KEY = 'MIDSCENE_GROUNDING_ANTHROPIC_API_KEY';
106
- const MIDSCENE_GROUNDING_VL_MODE = 'MIDSCENE_GROUNDING_VL_MODE';
107
- const OPENAI_USE_AZURE = 'OPENAI_USE_AZURE';
53
+ const MIDSCENE_PLANNING_MODEL_SOCKS_PROXY = 'MIDSCENE_PLANNING_MODEL_SOCKS_PROXY';
54
+ const MIDSCENE_PLANNING_MODEL_HTTP_PROXY = 'MIDSCENE_PLANNING_MODEL_HTTP_PROXY';
55
+ const MIDSCENE_PLANNING_MODEL_BASE_URL = 'MIDSCENE_PLANNING_MODEL_BASE_URL';
56
+ const MIDSCENE_PLANNING_MODEL_API_KEY = 'MIDSCENE_PLANNING_MODEL_API_KEY';
57
+ const MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON = 'MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON';
58
+ const MIDSCENE_PLANNING_MODEL_TIMEOUT = 'MIDSCENE_PLANNING_MODEL_TIMEOUT';
59
+ const MIDSCENE_MODEL_FAMILY = 'MIDSCENE_MODEL_FAMILY';
108
60
  const UNUSED_ENV_KEYS = [
109
61
  MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG
110
62
  ];
111
63
  const BASIC_ENV_KEYS = [
112
64
  MIDSCENE_DEBUG_MODE,
113
- MIDSCENE_DEBUG_AI_PROFILE,
114
- MIDSCENE_DEBUG_AI_RESPONSE,
65
+ MIDSCENE_DEBUG_MODEL_PROFILE,
66
+ MIDSCENE_DEBUG_MODEL_RESPONSE,
115
67
  MIDSCENE_RUN_DIR
116
68
  ];
117
69
  const BOOLEAN_ENV_KEYS = [
118
70
  MIDSCENE_CACHE,
119
- MIDSCENE_LANGSMITH_DEBUG,
120
71
  MIDSCENE_FORCE_DEEP_THINK,
121
72
  MIDSCENE_MCP_USE_PUPPETEER_MODE,
122
- MIDSCENE_MCP_ANDROID_MODE
73
+ MIDSCENE_MCP_ANDROID_MODE,
74
+ MIDSCENE_LANGSMITH_DEBUG,
75
+ MIDSCENE_LANGFUSE_DEBUG
123
76
  ];
124
77
  const NUMBER_ENV_KEYS = [
125
78
  MIDSCENE_CACHE_MAX_FILENAME_LENGTH,
126
79
  MIDSCENE_REPLANNING_CYCLE_LIMIT
127
80
  ];
128
81
  const STRING_ENV_KEYS = [
82
+ MIDSCENE_MODEL_MAX_TOKENS,
129
83
  OPENAI_MAX_TOKENS,
130
84
  MIDSCENE_ADB_PATH,
131
85
  MIDSCENE_ADB_REMOTE_HOST,
@@ -146,87 +100,38 @@ const GLOBAL_ENV_KEYS = [
146
100
  ];
147
101
  const MODEL_ENV_KEYS = [
148
102
  MIDSCENE_MODEL_NAME,
149
- MIDSCENE_OPENAI_INIT_CONFIG_JSON,
150
- MIDSCENE_OPENAI_API_KEY,
151
- MIDSCENE_OPENAI_BASE_URL,
152
- MIDSCENE_OPENAI_USE_AZURE,
153
- MIDSCENE_OPENAI_SOCKS_PROXY,
154
- MIDSCENE_OPENAI_HTTP_PROXY,
155
- MIDSCENE_USE_AZURE_OPENAI,
156
- MIDSCENE_AZURE_OPENAI_SCOPE,
157
- MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON,
158
- MIDSCENE_USE_ANTHROPIC_SDK,
103
+ MIDSCENE_MODEL_INIT_CONFIG_JSON,
104
+ MIDSCENE_MODEL_API_KEY,
105
+ MIDSCENE_MODEL_BASE_URL,
106
+ MIDSCENE_MODEL_SOCKS_PROXY,
107
+ MIDSCENE_MODEL_HTTP_PROXY,
108
+ MIDSCENE_MODEL_TIMEOUT,
159
109
  MIDSCENE_USE_VLM_UI_TARS,
160
110
  MIDSCENE_USE_QWEN_VL,
161
111
  MIDSCENE_USE_QWEN3_VL,
162
112
  MIDSCENE_USE_DOUBAO_VISION,
163
113
  MIDSCENE_USE_GEMINI,
164
114
  MIDSCENE_USE_VL_MODEL,
165
- ANTHROPIC_API_KEY,
166
- MIDSCENE_AZURE_OPENAI_ENDPOINT,
167
- MIDSCENE_AZURE_OPENAI_KEY,
168
- MIDSCENE_AZURE_OPENAI_API_VERSION,
169
- MIDSCENE_AZURE_OPENAI_DEPLOYMENT,
170
- MIDSCENE_VL_MODE,
171
115
  OPENAI_API_KEY,
172
116
  OPENAI_BASE_URL,
173
- OPENAI_USE_AZURE,
174
- ANTHROPIC_API_KEY,
175
- AZURE_OPENAI_ENDPOINT,
176
- AZURE_OPENAI_KEY,
177
- AZURE_OPENAI_API_VERSION,
178
- AZURE_OPENAI_DEPLOYMENT,
179
- MIDSCENE_VQA_MODEL_NAME,
180
- MIDSCENE_VQA_OPENAI_SOCKS_PROXY,
181
- MIDSCENE_VQA_OPENAI_HTTP_PROXY,
182
- MIDSCENE_VQA_OPENAI_BASE_URL,
183
- MIDSCENE_VQA_OPENAI_API_KEY,
184
- MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON,
185
- MIDSCENE_VQA_OPENAI_USE_AZURE,
186
- MIDSCENE_VQA_USE_AZURE_OPENAI,
187
- MIDSCENE_VQA_AZURE_OPENAI_SCOPE,
188
- MIDSCENE_VQA_AZURE_OPENAI_KEY,
189
- MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT,
190
- MIDSCENE_VQA_AZURE_OPENAI_API_VERSION,
191
- MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT,
192
- MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON,
193
- MIDSCENE_VQA_USE_ANTHROPIC_SDK,
194
- MIDSCENE_VQA_ANTHROPIC_API_KEY,
195
- MIDSCENE_VQA_VL_MODE,
117
+ MIDSCENE_OPENAI_INIT_CONFIG_JSON,
118
+ MIDSCENE_OPENAI_HTTP_PROXY,
119
+ MIDSCENE_OPENAI_SOCKS_PROXY,
120
+ MIDSCENE_INSIGHT_MODEL_NAME,
121
+ MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY,
122
+ MIDSCENE_INSIGHT_MODEL_HTTP_PROXY,
123
+ MIDSCENE_INSIGHT_MODEL_BASE_URL,
124
+ MIDSCENE_INSIGHT_MODEL_API_KEY,
125
+ MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON,
126
+ MIDSCENE_INSIGHT_MODEL_TIMEOUT,
196
127
  MIDSCENE_PLANNING_MODEL_NAME,
197
- MIDSCENE_PLANNING_OPENAI_SOCKS_PROXY,
198
- MIDSCENE_PLANNING_OPENAI_HTTP_PROXY,
199
- MIDSCENE_PLANNING_OPENAI_BASE_URL,
200
- MIDSCENE_PLANNING_OPENAI_API_KEY,
201
- MIDSCENE_PLANNING_OPENAI_INIT_CONFIG_JSON,
202
- MIDSCENE_PLANNING_OPENAI_USE_AZURE,
203
- MIDSCENE_PLANNING_USE_AZURE_OPENAI,
204
- MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE,
205
- MIDSCENE_PLANNING_AZURE_OPENAI_KEY,
206
- MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT,
207
- MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION,
208
- MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT,
209
- MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON,
210
- MIDSCENE_PLANNING_USE_ANTHROPIC_SDK,
211
- MIDSCENE_PLANNING_ANTHROPIC_API_KEY,
212
- MIDSCENE_PLANNING_VL_MODE,
213
- MIDSCENE_GROUNDING_MODEL_NAME,
214
- MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY,
215
- MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY,
216
- MIDSCENE_GROUNDING_OPENAI_BASE_URL,
217
- MIDSCENE_GROUNDING_OPENAI_API_KEY,
218
- MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON,
219
- MIDSCENE_GROUNDING_OPENAI_USE_AZURE,
220
- MIDSCENE_GROUNDING_USE_AZURE_OPENAI,
221
- MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE,
222
- MIDSCENE_GROUNDING_AZURE_OPENAI_KEY,
223
- MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT,
224
- MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION,
225
- MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT,
226
- MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON,
227
- MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK,
228
- MIDSCENE_GROUNDING_ANTHROPIC_API_KEY,
229
- MIDSCENE_GROUNDING_VL_MODE
128
+ MIDSCENE_PLANNING_MODEL_SOCKS_PROXY,
129
+ MIDSCENE_PLANNING_MODEL_HTTP_PROXY,
130
+ MIDSCENE_PLANNING_MODEL_BASE_URL,
131
+ MIDSCENE_PLANNING_MODEL_API_KEY,
132
+ MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON,
133
+ MIDSCENE_PLANNING_MODEL_TIMEOUT,
134
+ MIDSCENE_MODEL_FAMILY
230
135
  ];
231
136
  const ALL_ENV_KEYS = [
232
137
  ...UNUSED_ENV_KEYS,
@@ -234,20 +139,23 @@ const ALL_ENV_KEYS = [
234
139
  ...GLOBAL_ENV_KEYS,
235
140
  ...MODEL_ENV_KEYS
236
141
  ];
237
- var types_UITarsModelVersion = /*#__PURE__*/ function(UITarsModelVersion) {
238
- UITarsModelVersion["V1_0"] = "1.0";
239
- UITarsModelVersion["V1_5"] = "1.5";
240
- UITarsModelVersion["DOUBAO_1_5_15B"] = "doubao-1.5-15B";
241
- UITarsModelVersion["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
242
- return UITarsModelVersion;
243
- }({});
244
142
  const VL_MODE_RAW_VALID_VALUES = [
245
143
  'doubao-vision',
246
144
  'gemini',
247
- 'qwen-vl',
145
+ 'qwen2.5-vl',
248
146
  'qwen3-vl',
249
147
  'vlm-ui-tars',
250
148
  'vlm-ui-tars-doubao',
251
149
  'vlm-ui-tars-doubao-1.5'
252
150
  ];
253
- export { ALL_ENV_KEYS, ANTHROPIC_API_KEY, AZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_KEY, BASIC_ENV_KEYS, BOOLEAN_ENV_KEYS, DOCKER_CONTAINER, GLOBAL_ENV_KEYS, MATCH_BY_POSITION, MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, MIDSCENE_ANTHROPIC_API_KEY, MIDSCENE_API_TYPE, MIDSCENE_AZURE_OPENAI_API_VERSION, MIDSCENE_AZURE_OPENAI_DEPLOYMENT, MIDSCENE_AZURE_OPENAI_ENDPOINT, MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_AZURE_OPENAI_KEY, MIDSCENE_AZURE_OPENAI_SCOPE, MIDSCENE_CACHE, MIDSCENE_CACHE_MAX_FILENAME_LENGTH, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_AI_PROFILE, MIDSCENE_DEBUG_AI_RESPONSE, MIDSCENE_DEBUG_MODE, MIDSCENE_FORCE_DEEP_THINK, MIDSCENE_GROUNDING_ANTHROPIC_API_KEY, MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION, MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT, MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT, MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_GROUNDING_AZURE_OPENAI_KEY, MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE, MIDSCENE_GROUNDING_MODEL_NAME, MIDSCENE_GROUNDING_OPENAI_API_KEY, MIDSCENE_GROUNDING_OPENAI_BASE_URL, MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY, MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON, MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY, MIDSCENE_GROUNDING_OPENAI_USE_AZURE, MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK, MIDSCENE_GROUNDING_USE_AZURE_OPENAI, MIDSCENE_GROUNDING_VL_MODE, MIDSCENE_IOS_DEVICE_UDID, MIDSCENE_IOS_SIMULATOR_UDID, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_ANDROID_MODE, MIDSCENE_MCP_CHROME_PATH, MIDSCENE_MCP_USE_PUPPETEER_MODE, MIDSCENE_MODEL_NAME, MIDSCENE_OPENAI_API_KEY, MIDSCENE_OPENAI_BASE_URL, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_OPENAI_USE_AZURE, MIDSCENE_PLANNING_ANTHROPIC_API_KEY, MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION, MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT, MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT, MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_PLANNING_AZURE_OPENAI_KEY, MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_OPENAI_API_KEY, MIDSCENE_PLANNING_OPENAI_BASE_URL, MIDSCENE_PLANNING_OPENAI_HTTP_PROXY, MIDSCENE_PLANNING_OPENAI_INIT_CONFIG_JSON, MIDSCENE_PLANNING_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_OPENAI_USE_AZURE, MIDSCENE_PLANNING_USE_ANTHROPIC_SDK, MIDSCENE_PLANNING_USE_AZURE_OPENAI, MIDSCENE_PLANNING_VL_MODE, MIDSCENE_PREFERRED_LANGUAGE, MIDSCENE_REPLANNING_CYCLE_LIMIT, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_ANTHROPIC_SDK, MIDSCENE_USE_AZURE_OPENAI, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN3_VL, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, MIDSCENE_VL_MODE, MIDSCENE_VQA_ANTHROPIC_API_KEY, MIDSCENE_VQA_AZURE_OPENAI_API_VERSION, MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT, MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT, MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_VQA_AZURE_OPENAI_KEY, MIDSCENE_VQA_AZURE_OPENAI_SCOPE, MIDSCENE_VQA_MODEL_NAME, MIDSCENE_VQA_OPENAI_API_KEY, MIDSCENE_VQA_OPENAI_BASE_URL, MIDSCENE_VQA_OPENAI_HTTP_PROXY, MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON, MIDSCENE_VQA_OPENAI_SOCKS_PROXY, MIDSCENE_VQA_OPENAI_USE_AZURE, MIDSCENE_VQA_USE_ANTHROPIC_SDK, MIDSCENE_VQA_USE_AZURE_OPENAI, MIDSCENE_VQA_VL_MODE, MODEL_ENV_KEYS, NUMBER_ENV_KEYS, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MAX_TOKENS, OPENAI_USE_AZURE, STRING_ENV_KEYS, types_UITarsModelVersion as UITarsModelVersion, UNUSED_ENV_KEYS, VL_MODE_RAW_VALID_VALUES };
151
+ const MODEL_FAMILY_VALUES = [
152
+ ...VL_MODE_RAW_VALID_VALUES
153
+ ];
154
+ var types_UITarsModelVersion = /*#__PURE__*/ function(UITarsModelVersion) {
155
+ UITarsModelVersion["V1_0"] = "1.0";
156
+ UITarsModelVersion["V1_5"] = "1.5";
157
+ UITarsModelVersion["DOUBAO_1_5_15B"] = "doubao-1.5-15B";
158
+ UITarsModelVersion["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
159
+ return UITarsModelVersion;
160
+ }({});
161
+ export { ALL_ENV_KEYS, BASIC_ENV_KEYS, BOOLEAN_ENV_KEYS, DOCKER_CONTAINER, GLOBAL_ENV_KEYS, MATCH_BY_POSITION, MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, MIDSCENE_CACHE, MIDSCENE_CACHE_MAX_FILENAME_LENGTH, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_MODE, MIDSCENE_DEBUG_MODEL_PROFILE, MIDSCENE_DEBUG_MODEL_RESPONSE, MIDSCENE_FORCE_DEEP_THINK, MIDSCENE_INSIGHT_MODEL_API_KEY, MIDSCENE_INSIGHT_MODEL_BASE_URL, MIDSCENE_INSIGHT_MODEL_HTTP_PROXY, MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON, MIDSCENE_INSIGHT_MODEL_NAME, MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY, MIDSCENE_INSIGHT_MODEL_TIMEOUT, MIDSCENE_IOS_DEVICE_UDID, MIDSCENE_IOS_SIMULATOR_UDID, MIDSCENE_LANGFUSE_DEBUG, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_ANDROID_MODE, MIDSCENE_MCP_CHROME_PATH, MIDSCENE_MCP_USE_PUPPETEER_MODE, MIDSCENE_MODEL_API_KEY, MIDSCENE_MODEL_BASE_URL, MIDSCENE_MODEL_FAMILY, MIDSCENE_MODEL_HTTP_PROXY, MIDSCENE_MODEL_INIT_CONFIG_JSON, MIDSCENE_MODEL_MAX_TOKENS, MIDSCENE_MODEL_NAME, MIDSCENE_MODEL_SOCKS_PROXY, MIDSCENE_MODEL_TIMEOUT, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_API_KEY, MIDSCENE_PLANNING_MODEL_BASE_URL, MIDSCENE_PLANNING_MODEL_HTTP_PROXY, MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_MODEL_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_TIMEOUT, MIDSCENE_PREFERRED_LANGUAGE, MIDSCENE_REPLANNING_CYCLE_LIMIT, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN3_VL, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, MODEL_ENV_KEYS, MODEL_FAMILY_VALUES, NUMBER_ENV_KEYS, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MAX_TOKENS, STRING_ENV_KEYS, types_UITarsModelVersion as UITarsModelVersion, UNUSED_ENV_KEYS, VL_MODE_RAW_VALID_VALUES };
@@ -1,5 +1,3 @@
1
- import { NodeType } from "../constants/index.mjs";
2
- import { generateHashId } from "../utils.mjs";
3
1
  function isFormElement(node) {
4
2
  return node instanceof HTMLElement && ('input' === node.tagName.toLowerCase() || 'textarea' === node.tagName.toLowerCase() || 'select' === node.tagName.toLowerCase() || 'option' === node.tagName.toLowerCase());
5
3
  }
@@ -33,12 +31,10 @@ function isNotContainerElement(node) {
33
31
  return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);
34
32
  }
35
33
  function isTextElement(node) {
36
- var _node_nodeName_toLowerCase, _node_nodeName;
37
34
  if (node instanceof Element) {
38
- var _node_childNodes;
39
- if ((null == node ? void 0 : null == (_node_childNodes = node.childNodes) ? void 0 : _node_childNodes.length) === 1 && (null == node ? void 0 : node.childNodes[0]) instanceof Text) return true;
35
+ if (node?.childNodes?.length === 1 && node?.childNodes[0] instanceof Text) return true;
40
36
  }
41
- return (null == (_node_nodeName = node.nodeName) ? void 0 : null == (_node_nodeName_toLowerCase = _node_nodeName.toLowerCase) ? void 0 : _node_nodeName_toLowerCase.call(_node_nodeName)) === '#text' && !isIconfont(node);
37
+ return node.nodeName?.toLowerCase?.() === '#text' && !isIconfont(node);
42
38
  }
43
39
  function isContainerElement(node) {
44
40
  if (!(node instanceof HTMLElement)) return false;
@@ -67,25 +63,21 @@ function includeBaseElement(node) {
67
63
  }
68
64
  return false;
69
65
  }
70
- function generateElementByPosition(position) {
66
+ function generateElementByPosition(position, description) {
67
+ const edgeSize = 8;
71
68
  const rect = {
72
- left: Math.max(position.x - 4, 0),
73
- top: Math.max(position.y - 4, 0),
74
- width: 8,
75
- height: 8
69
+ left: Math.round(Math.max(position.x - edgeSize / 2, 0)),
70
+ top: Math.round(Math.max(position.y - edgeSize / 2, 0)),
71
+ width: edgeSize,
72
+ height: edgeSize
76
73
  };
77
- const id = generateHashId(rect);
78
74
  const element = {
79
- id,
80
- attributes: {
81
- nodeType: NodeType.POSITION
82
- },
83
75
  rect,
84
- content: '',
85
76
  center: [
86
77
  position.x,
87
78
  position.y
88
- ]
79
+ ],
80
+ description: description || ''
89
81
  };
90
82
  return element;
91
83
  }
@@ -1,6 +1,5 @@
1
1
  import { descriptionOfTree, traverseTree, treeToList, trimAttributes, truncateText } from "./tree.mjs";
2
2
  import { extractTextWithPosition, extractTreeNode, extractTreeNodeAsString } from "./web-extractor.mjs";
3
- import { getNodeFromCacheList, setNodeHashCacheListOnWindow } from "./util.mjs";
4
- import { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsById, getXpathsByPoint } from "./locator.mjs";
3
+ import { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsByPoint } from "./locator.mjs";
5
4
  import { generateElementByPosition, isNotContainerElement } from "./dom-util.mjs";
6
- export { descriptionOfTree, generateElementByPosition, getElementInfoByXpath, getElementXpath, getNodeFromCacheList, getNodeInfoByXpath, getXpathsById, getXpathsByPoint, isNotContainerElement, setNodeHashCacheListOnWindow, traverseTree, treeToList, trimAttributes, truncateText, extractTreeNode as webExtractNodeTree, extractTreeNodeAsString as webExtractNodeTreeAsString, extractTextWithPosition as webExtractTextWithPosition };
5
+ export { descriptionOfTree, generateElementByPosition, getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsByPoint, isNotContainerElement, traverseTree, treeToList, trimAttributes, truncateText, extractTreeNode as webExtractNodeTree, extractTreeNodeAsString as webExtractNodeTreeAsString, extractTextWithPosition as webExtractTextWithPosition };
@@ -1,5 +1,5 @@
1
1
  import { isSvgElement } from "./dom-util.mjs";
2
- import { getNodeFromCacheList, getRect, isElementPartiallyInViewport } from "./util.mjs";
2
+ import { getRect, isElementPartiallyInViewport } from "./util.mjs";
3
3
  import { collectElementInfo } from "./web-extractor.mjs";
4
4
  const getElementXpathIndex = (element)=>{
5
5
  let index = 1;
@@ -15,11 +15,10 @@ const normalizeXpathText = (text)=>{
15
15
  return text.replace(/\s+/g, ' ').trim();
16
16
  };
17
17
  const buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement)=>{
18
- var _element_textContent;
19
18
  const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : '';
20
19
  const prefix = parentPath ? `${parentPath}/` : '/';
21
20
  const tagName = element.nodeName.toLowerCase();
22
- const textContent = null == (_element_textContent = element.textContent) ? void 0 : _element_textContent.trim();
21
+ const textContent = element.textContent?.trim();
23
22
  if (isOrderSensitive) {
24
23
  const index = getElementXpathIndex(element);
25
24
  return `${prefix}${tagName}[${index}]`;
@@ -32,9 +31,8 @@ const getElementXpath = (element, isOrderSensitive = false, isLeafElement = fals
32
31
  if (element.nodeType === Node.TEXT_NODE) {
33
32
  const parentNode = element.parentNode;
34
33
  if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {
35
- var _element_textContent;
36
34
  const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);
37
- const textContent = null == (_element_textContent = element.textContent) ? void 0 : _element_textContent.trim();
35
+ const textContent = element.textContent?.trim();
38
36
  if (textContent) return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;
39
37
  return `${parentXPath}/text()`;
40
38
  }
@@ -54,14 +52,6 @@ const getElementXpath = (element, isOrderSensitive = false, isLeafElement = fals
54
52
  }
55
53
  return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);
56
54
  };
57
- function getXpathsById(id) {
58
- const node = getNodeFromCacheList(id);
59
- if (!node) return null;
60
- const fullXPath = getElementXpath(node, false, true);
61
- return [
62
- fullXPath
63
- ];
64
- }
65
55
  function getXpathsByPoint(point, isOrderSensitive) {
66
56
  const element = document.elementFromPoint(point.left, point.top);
67
57
  if (!element) return null;
@@ -72,7 +62,10 @@ function getXpathsByPoint(point, isOrderSensitive) {
72
62
  }
73
63
  function getNodeInfoByXpath(xpath) {
74
64
  const xpathResult = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
75
- if (1 !== xpathResult.snapshotLength) return null;
65
+ if (1 !== xpathResult.snapshotLength) {
66
+ console.warn(`[midscene:warning] Received XPath "${xpath}" but it matched ${xpathResult.snapshotLength} elements. Discarding this result.`);
67
+ return null;
68
+ }
76
69
  const node = xpathResult.snapshotItem(0);
77
70
  return node;
78
71
  }
@@ -92,4 +85,4 @@ function getElementInfoByXpath(xpath) {
92
85
  top: 0
93
86
  }, true);
94
87
  }
95
- export { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsById, getXpathsByPoint };
88
+ export { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsByPoint };
@@ -30,19 +30,16 @@ function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = fals
30
30
  if (childContent) children += `\n${childContent}`;
31
31
  }
32
32
  if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly || visibleOnly && node.node.isVisible)) {
33
- var _node_node_attributes;
34
33
  emptyNode = false;
35
34
  let nodeTypeString;
36
- nodeTypeString = (null == (_node_node_attributes = node.node.attributes) ? void 0 : _node_node_attributes.htmlTagName) ? node.node.attributes.htmlTagName.replace(/[<>]/g, '') : node.node.attributes.nodeType.replace(/\sNode$/, '').toLowerCase();
37
- const markerId = node.node.indexId;
38
- const markerIdString = markerId ? `markerId="${markerId}"` : '';
35
+ nodeTypeString = node.node.attributes?.htmlTagName ? node.node.attributes.htmlTagName.replace(/[<>]/g, '') : node.node.attributes.nodeType.replace(/\sNode$/, '').toLowerCase();
39
36
  const rectAttribute = node.node.rect ? {
40
37
  left: node.node.rect.left,
41
38
  top: node.node.rect.top,
42
39
  width: node.node.rect.width,
43
40
  height: node.node.rect.height
44
41
  } : {};
45
- before = `<${nodeTypeString} id="${node.node.id}" ${markerIdString} ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;
42
+ before = `<${nodeTypeString} id="${node.node.id}" ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;
46
43
  const content = truncateText(node.node.content, truncateTextLength);
47
44
  contentWithIndent = content ? `\n${indentStr} ${content}` : '';
48
45
  after = `</${nodeTypeString}>`;
@@ -96,8 +96,8 @@ const isElementCovered = (el, rect, currentWindow)=>{
96
96
  const topElement = currentWindow.document.elementFromPoint(x, y);
97
97
  if (!topElement) return false;
98
98
  if (topElement === el) return false;
99
- if (null == el ? void 0 : el.contains(topElement)) return false;
100
- if (null == topElement ? void 0 : topElement.contains(el)) return false;
99
+ if (el?.contains(topElement)) return false;
100
+ if (topElement?.contains(el)) return false;
101
101
  const rectOfTopElement = getRect(topElement, 1, currentWindow);
102
102
  const overlapRect = overlappedRect(rect, rectOfTopElement);
103
103
  if (!overlapRect) return false;
@@ -135,7 +135,7 @@ function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {
135
135
  const isVisible = isElementPartiallyInViewport(rect, currentWindow, currentDocument);
136
136
  let parent = el;
137
137
  const parentUntilNonStatic = (currentNode)=>{
138
- let parent = null == currentNode ? void 0 : currentNode.parentElement;
138
+ let parent = currentNode?.parentElement;
139
139
  while(parent){
140
140
  const style = currentWindow.getComputedStyle(parent);
141
141
  if ('static' !== style.position) return parent;
@@ -199,32 +199,8 @@ function getNodeAttributes(node, currentWindow) {
199
199
  }
200
200
  function midsceneGenerateHash(node, content, rect) {
201
201
  const slicedHash = generateHashId(rect, content);
202
- if (node) {
203
- if (!window.midsceneNodeHashCacheList) setNodeHashCacheListOnWindow();
204
- setNodeToCacheList(node, slicedHash);
205
- }
206
202
  return slicedHash;
207
203
  }
208
- function setNodeHashCacheListOnWindow() {
209
- if ('undefined' != typeof window) window.midsceneNodeHashCacheList = [];
210
- }
211
- function setNodeToCacheList(node, id) {
212
- if ('undefined' != typeof window) {
213
- var _window_midsceneNodeHashCacheList;
214
- if (getNodeFromCacheList(id)) return;
215
- null == (_window_midsceneNodeHashCacheList = window.midsceneNodeHashCacheList) || _window_midsceneNodeHashCacheList.push({
216
- node,
217
- id
218
- });
219
- }
220
- }
221
- function getNodeFromCacheList(id) {
222
- if ('undefined' != typeof window) {
223
- var _window_midsceneNodeHashCacheList_find, _window_midsceneNodeHashCacheList;
224
- return null == (_window_midsceneNodeHashCacheList = window.midsceneNodeHashCacheList) ? void 0 : null == (_window_midsceneNodeHashCacheList_find = _window_midsceneNodeHashCacheList.find((item)=>item.id === id)) ? void 0 : _window_midsceneNodeHashCacheList_find.node;
225
- }
226
- return null;
227
- }
228
204
  function generateId(numberId) {
229
205
  return `${numberId}`;
230
206
  }
@@ -241,4 +217,4 @@ function getTopDocument() {
241
217
  const container = document.body || document;
242
218
  return container;
243
219
  }
244
- export { elementRect, generateId, getDebugMode, getNodeAttributes, getNodeFromCacheList, getPseudoElementContent, getRect, getTopDocument, hasOverflowY, isElementPartiallyInViewport, logger, midsceneGenerateHash, overlappedRect, setDebugMode, setExtractTextWithPositionOnWindow, setGenerateHashOnWindow, setMidsceneVisibleRectOnWindow, setNodeHashCacheListOnWindow, setNodeToCacheList, validTextNodeContent };
220
+ export { elementRect, generateId, getDebugMode, getNodeAttributes, getPseudoElementContent, getRect, getTopDocument, hasOverflowY, isElementPartiallyInViewport, logger, midsceneGenerateHash, overlappedRect, setDebugMode, setExtractTextWithPositionOnWindow, setGenerateHashOnWindow, setMidsceneVisibleRectOnWindow, validTextNodeContent };
@@ -5,15 +5,10 @@ import { elementRect, getNodeAttributes, getPseudoElementContent, getRect, getTo
5
5
  let indexId = 0;
6
6
  function tagNameOfNode(node) {
7
7
  let tagName = '';
8
- if (node instanceof HTMLElement) {
9
- var _node_tagName;
10
- tagName = null == (_node_tagName = node.tagName) ? void 0 : _node_tagName.toLowerCase();
11
- } else {
8
+ if (node instanceof HTMLElement) tagName = node.tagName?.toLowerCase();
9
+ else {
12
10
  const parentElement = node.parentElement;
13
- if (parentElement && parentElement instanceof HTMLElement) {
14
- var _parentElement_tagName;
15
- tagName = null == (_parentElement_tagName = parentElement.tagName) ? void 0 : _parentElement_tagName.toLowerCase();
16
- }
11
+ if (parentElement && parentElement instanceof HTMLElement) tagName = parentElement.tagName?.toLowerCase();
17
12
  }
18
13
  return tagName ? `<${tagName}>` : '';
19
14
  }
@@ -36,7 +31,7 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
36
31
  const tagName = node.tagName.toLowerCase();
37
32
  if ('select' === node.tagName.toLowerCase()) {
38
33
  const selectedOption = node.options[node.selectedIndex];
39
- valueContent = (null == selectedOption ? void 0 : selectedOption.textContent) || '';
34
+ valueContent = selectedOption?.textContent || '';
40
35
  }
41
36
  if (('input' === node.tagName.toLowerCase() || 'textarea' === node.tagName.toLowerCase()) && node.value) valueContent = node.value;
42
37
  const elementInfo = {
@@ -89,7 +84,6 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
89
84
  return elementInfo;
90
85
  }
91
86
  if (isImgElement(node)) {
92
- var _node_nodeName;
93
87
  const attributes = getNodeAttributes(node, currentWindow);
94
88
  const nodeHashId = midsceneGenerateHash(node, '', rect);
95
89
  const elementInfo = {
@@ -98,7 +92,7 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
98
92
  nodeHashId,
99
93
  attributes: {
100
94
  ...attributes,
101
- ...(null == (_node_nodeName = node.nodeName) ? void 0 : _node_nodeName.toLowerCase()) === 'svg' ? {
95
+ ...node.nodeName?.toLowerCase() === 'svg' ? {
102
96
  svgContent: 'true'
103
97
  } : {},
104
98
  nodeType: NodeType.IMG,
@@ -117,8 +111,7 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
117
111
  return elementInfo;
118
112
  }
119
113
  if (isTextElement(node)) {
120
- var _node_textContent;
121
- const text = null == (_node_textContent = node.textContent) ? void 0 : _node_textContent.trim().replace(/\n+/g, ' ');
114
+ const text = node.textContent?.trim().replace(/\n+/g, ' ');
122
115
  if (!text) return null;
123
116
  const attributes = getNodeAttributes(node, currentWindow);
124
117
  const attributeKeys = Object.keys(attributes);
@@ -234,7 +227,7 @@ function extractTreeNode(initNode, debugMode = false) {
234
227
  node: elementInfo,
235
228
  children: []
236
229
  };
237
- if ((null == elementInfo ? void 0 : elementInfo.nodeType) === NodeType.BUTTON || (null == elementInfo ? void 0 : elementInfo.nodeType) === NodeType.IMG || (null == elementInfo ? void 0 : elementInfo.nodeType) === NodeType.TEXT || (null == elementInfo ? void 0 : elementInfo.nodeType) === NodeType.FORM_ITEM || (null == elementInfo ? void 0 : elementInfo.nodeType) === NodeType.CONTAINER) return nodeInfo;
230
+ if (elementInfo?.nodeType === NodeType.BUTTON || elementInfo?.nodeType === NodeType.IMG || elementInfo?.nodeType === NodeType.TEXT || elementInfo?.nodeType === NodeType.FORM_ITEM || elementInfo?.nodeType === NodeType.CONTAINER) return nodeInfo;
238
231
  const rect = getRect(node, baseZoom, currentWindow);
239
232
  for(let i = 0; i < node.childNodes.length; i++){
240
233
  logger('will dfs', node.childNodes[i]);
package/dist/es/index.mjs CHANGED
@@ -1,3 +1,4 @@
1
1
  import { createCopyStaticPlugin, createPlaygroundCopyPlugin } from "./build/copy-static.mjs";
2
+ import { commonIgnoreWarnings } from "./build/rspack-config.mjs";
2
3
  const src = {};
3
- export { createCopyStaticPlugin, createPlaygroundCopyPlugin, src as default };
4
+ export { commonIgnoreWarnings, createCopyStaticPlugin, createPlaygroundCopyPlugin, src as default };