@sqaitech/shared 0.5.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 (169) hide show
  1. package/README.md +9 -0
  2. package/dist/es/baseDB.mjs +109 -0
  3. package/dist/es/build/copy-static.mjs +29 -0
  4. package/dist/es/common.mjs +37 -0
  5. package/dist/es/constants/example-code.mjs +202 -0
  6. package/dist/es/constants/index.mjs +24 -0
  7. package/dist/es/env/basic.mjs +6 -0
  8. package/dist/es/env/constants.mjs +97 -0
  9. package/dist/es/env/decide-model-config.mjs +172 -0
  10. package/dist/es/env/global-config-manager.mjs +91 -0
  11. package/dist/es/env/helper.mjs +48 -0
  12. package/dist/es/env/index.mjs +5 -0
  13. package/dist/es/env/init-debug.mjs +18 -0
  14. package/dist/es/env/model-config-manager.mjs +99 -0
  15. package/dist/es/env/parse.mjs +69 -0
  16. package/dist/es/env/types.mjs +253 -0
  17. package/dist/es/env/utils.mjs +18 -0
  18. package/dist/es/extractor/constants.mjs +2 -0
  19. package/dist/es/extractor/debug.mjs +6 -0
  20. package/dist/es/extractor/dom-util.mjs +92 -0
  21. package/dist/es/extractor/index.mjs +6 -0
  22. package/dist/es/extractor/locator.mjs +95 -0
  23. package/dist/es/extractor/tree.mjs +81 -0
  24. package/dist/es/extractor/util.mjs +244 -0
  25. package/dist/es/extractor/web-extractor.mjs +310 -0
  26. package/dist/es/img/box-select.mjs +184 -0
  27. package/dist/es/img/draw-box.mjs +42 -0
  28. package/dist/es/img/get-jimp.mjs +10 -0
  29. package/dist/es/img/get-photon.mjs +19 -0
  30. package/dist/es/img/get-sharp.mjs +11 -0
  31. package/dist/es/img/index.mjs +5 -0
  32. package/dist/es/img/info.mjs +32 -0
  33. package/dist/es/img/transform.mjs +192 -0
  34. package/dist/es/index.mjs +3 -0
  35. package/dist/es/logger.mjs +61 -0
  36. package/dist/es/node/fs.mjs +44 -0
  37. package/dist/es/node/index.mjs +1 -0
  38. package/dist/es/polyfills/async-hooks.mjs +2 -0
  39. package/dist/es/polyfills/index.mjs +1 -0
  40. package/dist/es/types/index.mjs +3 -0
  41. package/dist/es/us-keyboard-layout.mjs +1414 -0
  42. package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
  43. package/dist/es/utils.mjs +66 -0
  44. package/dist/lib/baseDB.js +149 -0
  45. package/dist/lib/build/copy-static.js +77 -0
  46. package/dist/lib/common.js +93 -0
  47. package/dist/lib/constants/example-code.js +239 -0
  48. package/dist/lib/constants/index.js +100 -0
  49. package/dist/lib/env/basic.js +40 -0
  50. package/dist/lib/env/constants.js +143 -0
  51. package/dist/lib/env/decide-model-config.js +212 -0
  52. package/dist/lib/env/global-config-manager.js +125 -0
  53. package/dist/lib/env/helper.js +89 -0
  54. package/dist/lib/env/index.js +94 -0
  55. package/dist/lib/env/init-debug.js +52 -0
  56. package/dist/lib/env/model-config-manager.js +133 -0
  57. package/dist/lib/env/parse.js +106 -0
  58. package/dist/lib/env/types.js +635 -0
  59. package/dist/lib/env/utils.js +61 -0
  60. package/dist/lib/extractor/constants.js +42 -0
  61. package/dist/lib/extractor/debug.js +12 -0
  62. package/dist/lib/extractor/dom-util.js +150 -0
  63. package/dist/lib/extractor/index.js +88 -0
  64. package/dist/lib/extractor/locator.js +141 -0
  65. package/dist/lib/extractor/tree.js +127 -0
  66. package/dist/lib/extractor/util.js +335 -0
  67. package/dist/lib/extractor/web-extractor.js +356 -0
  68. package/dist/lib/img/box-select.js +232 -0
  69. package/dist/lib/img/draw-box.js +89 -0
  70. package/dist/lib/img/get-jimp.js +72 -0
  71. package/dist/lib/img/get-photon.js +76 -0
  72. package/dist/lib/img/get-sharp.js +63 -0
  73. package/dist/lib/img/index.js +102 -0
  74. package/dist/lib/img/info.js +86 -0
  75. package/dist/lib/img/transform.js +279 -0
  76. package/dist/lib/index.js +43 -0
  77. package/dist/lib/logger.js +114 -0
  78. package/dist/lib/node/fs.js +97 -0
  79. package/dist/lib/node/index.js +60 -0
  80. package/dist/lib/polyfills/async-hooks.js +36 -0
  81. package/dist/lib/polyfills/index.js +60 -0
  82. package/dist/lib/types/index.js +37 -0
  83. package/dist/lib/us-keyboard-layout.js +1457 -0
  84. package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
  85. package/dist/lib/utils.js +136 -0
  86. package/dist/types/baseDB.d.ts +25 -0
  87. package/dist/types/build/copy-static.d.ts +31 -0
  88. package/dist/types/common.d.ts +12 -0
  89. package/dist/types/constants/example-code.d.ts +2 -0
  90. package/dist/types/constants/index.d.ts +22 -0
  91. package/dist/types/env/basic.d.ts +6 -0
  92. package/dist/types/env/constants.d.ts +40 -0
  93. package/dist/types/env/decide-model-config.d.ts +14 -0
  94. package/dist/types/env/global-config-manager.d.ts +32 -0
  95. package/dist/types/env/helper.d.ts +6 -0
  96. package/dist/types/env/index.d.ts +4 -0
  97. package/dist/types/env/init-debug.d.ts +1 -0
  98. package/dist/types/env/model-config-manager.d.ts +24 -0
  99. package/dist/types/env/parse.d.ts +12 -0
  100. package/dist/types/env/types.d.ts +294 -0
  101. package/dist/types/env/utils.d.ts +7 -0
  102. package/dist/types/extractor/constants.d.ts +1 -0
  103. package/dist/types/extractor/debug.d.ts +1 -0
  104. package/dist/types/extractor/dom-util.d.ts +26 -0
  105. package/dist/types/extractor/index.d.ts +33 -0
  106. package/dist/types/extractor/locator.d.ts +7 -0
  107. package/dist/types/extractor/tree.d.ts +9 -0
  108. package/dist/types/extractor/util.d.ts +43 -0
  109. package/dist/types/extractor/web-extractor.d.ts +19 -0
  110. package/dist/types/img/box-select.d.ts +25 -0
  111. package/dist/types/img/draw-box.d.ts +15 -0
  112. package/dist/types/img/get-jimp.d.ts +2 -0
  113. package/dist/types/img/get-photon.d.ts +8 -0
  114. package/dist/types/img/get-sharp.d.ts +3 -0
  115. package/dist/types/img/index.d.ts +4 -0
  116. package/dist/types/img/info.d.ts +29 -0
  117. package/dist/types/img/transform.d.ts +88 -0
  118. package/dist/types/index.d.ts +3 -0
  119. package/dist/types/logger.d.ts +4 -0
  120. package/dist/types/node/fs.d.ts +15 -0
  121. package/dist/types/node/index.d.ts +1 -0
  122. package/dist/types/polyfills/async-hooks.d.ts +6 -0
  123. package/dist/types/polyfills/index.d.ts +4 -0
  124. package/dist/types/types/index.d.ts +34 -0
  125. package/dist/types/us-keyboard-layout.d.ts +32 -0
  126. package/dist/types/utils.d.ts +22 -0
  127. package/package.json +106 -0
  128. package/src/baseDB.ts +158 -0
  129. package/src/build/copy-static.ts +62 -0
  130. package/src/common.ts +67 -0
  131. package/src/constants/example-code.ts +202 -0
  132. package/src/constants/index.ts +30 -0
  133. package/src/env/basic.ts +12 -0
  134. package/src/env/constants.ts +291 -0
  135. package/src/env/decide-model-config.ts +319 -0
  136. package/src/env/global-config-manager.ts +174 -0
  137. package/src/env/helper.ts +79 -0
  138. package/src/env/index.ts +4 -0
  139. package/src/env/init-debug.ts +29 -0
  140. package/src/env/model-config-manager.ts +145 -0
  141. package/src/env/parse.ts +131 -0
  142. package/src/env/types.ts +560 -0
  143. package/src/env/utils.ts +39 -0
  144. package/src/extractor/constants.ts +5 -0
  145. package/src/extractor/debug.ts +10 -0
  146. package/src/extractor/dom-util.ts +152 -0
  147. package/src/extractor/index.ts +50 -0
  148. package/src/extractor/locator.ts +179 -0
  149. package/src/extractor/tree.ts +179 -0
  150. package/src/extractor/util.ts +468 -0
  151. package/src/extractor/web-extractor.ts +481 -0
  152. package/src/img/box-select.ts +346 -0
  153. package/src/img/draw-box.ts +60 -0
  154. package/src/img/get-jimp.ts +12 -0
  155. package/src/img/get-photon.ts +48 -0
  156. package/src/img/get-sharp.ts +18 -0
  157. package/src/img/index.ts +24 -0
  158. package/src/img/info.ts +79 -0
  159. package/src/img/jimp.d.ts +4 -0
  160. package/src/img/transform.ts +396 -0
  161. package/src/index.ts +6 -0
  162. package/src/logger.ts +93 -0
  163. package/src/node/fs.ts +84 -0
  164. package/src/node/index.ts +1 -0
  165. package/src/polyfills/async-hooks.ts +6 -0
  166. package/src/polyfills/index.ts +4 -0
  167. package/src/types/index.ts +47 -0
  168. package/src/us-keyboard-layout.ts +723 -0
  169. package/src/utils.ts +127 -0
@@ -0,0 +1,560 @@
1
+ // config keys
2
+ export const SQAI_OPENAI_INIT_CONFIG_JSON =
3
+ 'SQAI_OPENAI_INIT_CONFIG_JSON';
4
+ export const SQAI_MODEL_NAME = 'SQAI_MODEL_NAME';
5
+ export const SQAI_LANGSMITH_DEBUG = 'SQAI_LANGSMITH_DEBUG';
6
+ export const SQAI_DEBUG_AI_PROFILE = 'SQAI_DEBUG_AI_PROFILE';
7
+ export const SQAI_DEBUG_AI_RESPONSE = 'SQAI_DEBUG_AI_RESPONSE';
8
+ export const SQAI_DANGEROUSLY_PRINT_ALL_CONFIG =
9
+ 'SQAI_DANGEROUSLY_PRINT_ALL_CONFIG';
10
+ export const SQAI_DEBUG_MODE = 'SQAI_DEBUG_MODE';
11
+ export const SQAI_MCP_USE_PUPPETEER_MODE =
12
+ 'SQAI_MCP_USE_PUPPETEER_MODE';
13
+ export const SQAI_MCP_CHROME_PATH = 'SQAI_MCP_CHROME_PATH';
14
+ export const SQAI_MCP_ANDROID_MODE = 'SQAI_MCP_ANDROID_MODE';
15
+ export const DOCKER_CONTAINER = 'DOCKER_CONTAINER';
16
+ export const SQAI_FORCE_DEEP_THINK = 'SQAI_FORCE_DEEP_THINK';
17
+
18
+ export const SQAI_OPENAI_SOCKS_PROXY = 'SQAI_OPENAI_SOCKS_PROXY';
19
+ export const SQAI_OPENAI_HTTP_PROXY = 'SQAI_OPENAI_HTTP_PROXY';
20
+ export const OPENAI_API_KEY = 'OPENAI_API_KEY';
21
+ export const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
22
+ export const OPENAI_MAX_TOKENS = 'OPENAI_MAX_TOKENS';
23
+
24
+ export const SQAI_ADB_PATH = 'SQAI_ADB_PATH';
25
+ export const SQAI_ADB_REMOTE_HOST = 'SQAI_ADB_REMOTE_HOST';
26
+ export const SQAI_ADB_REMOTE_PORT = 'SQAI_ADB_REMOTE_PORT';
27
+ export const SQAI_ANDROID_IME_STRATEGY = 'SQAI_ANDROID_IME_STRATEGY';
28
+
29
+ export const SQAI_IOS_DEVICE_UDID = 'SQAI_IOS_DEVICE_UDID';
30
+ export const SQAI_IOS_SIMULATOR_UDID = 'SQAI_IOS_SIMULATOR_UDID';
31
+
32
+ export const SQAI_CACHE = 'SQAI_CACHE';
33
+ export const SQAI_USE_VLM_UI_TARS = 'SQAI_USE_VLM_UI_TARS';
34
+ export const SQAI_USE_QWEN_VL = 'SQAI_USE_QWEN_VL';
35
+ export const SQAI_USE_QWEN3_VL = 'SQAI_USE_QWEN3_VL';
36
+ export const SQAI_USE_DOUBAO_VISION = 'SQAI_USE_DOUBAO_VISION';
37
+ export const SQAI_USE_GEMINI = 'SQAI_USE_GEMINI';
38
+ export const SQAI_USE_VL_MODEL = 'SQAI_USE_VL_MODEL';
39
+ export const MATCH_BY_POSITION = 'MATCH_BY_POSITION';
40
+ export const SQAI_API_TYPE = 'SQAI-API-TYPE';
41
+ export const SQAI_REPORT_TAG_NAME = 'SQAI_REPORT_TAG_NAME';
42
+
43
+ export const SQAI_REPLANNING_CYCLE_LIMIT =
44
+ 'SQAI_REPLANNING_CYCLE_LIMIT';
45
+
46
+ export const SQAI_PREFERRED_LANGUAGE = 'SQAI_PREFERRED_LANGUAGE';
47
+
48
+ export const SQAI_USE_AZURE_OPENAI = 'SQAI_USE_AZURE_OPENAI';
49
+ export const SQAI_AZURE_OPENAI_SCOPE = 'SQAI_AZURE_OPENAI_SCOPE';
50
+ export const SQAI_AZURE_OPENAI_INIT_CONFIG_JSON =
51
+ 'SQAI_AZURE_OPENAI_INIT_CONFIG_JSON';
52
+
53
+ export const SQAI_CACHE_MAX_FILENAME_LENGTH =
54
+ 'SQAI_CACHE_MAX_FILENAME_LENGTH';
55
+
56
+ export const AZURE_OPENAI_ENDPOINT = 'AZURE_OPENAI_ENDPOINT';
57
+ export const AZURE_OPENAI_KEY = 'AZURE_OPENAI_KEY';
58
+ export const AZURE_OPENAI_API_VERSION = 'AZURE_OPENAI_API_VERSION';
59
+ export const AZURE_OPENAI_DEPLOYMENT = 'AZURE_OPENAI_DEPLOYMENT';
60
+
61
+ export const SQAI_USE_ANTHROPIC_SDK = 'SQAI_USE_ANTHROPIC_SDK';
62
+ export const ANTHROPIC_API_KEY = 'ANTHROPIC_API_KEY';
63
+
64
+ export const SQAI_RUN_DIR = 'SQAI_RUN_DIR';
65
+
66
+ // default new
67
+ export const SQAI_OPENAI_BASE_URL = 'SQAI_OPENAI_BASE_URL';
68
+ export const SQAI_OPENAI_API_KEY = 'SQAI_OPENAI_API_KEY';
69
+ export const SQAI_OPENAI_USE_AZURE = 'SQAI_OPENAI_USE_AZURE';
70
+ export const SQAI_AZURE_OPENAI_KEY = 'SQAI_AZURE_OPENAI_KEY';
71
+ export const SQAI_AZURE_OPENAI_ENDPOINT = 'SQAI_AZURE_OPENAI_ENDPOINT';
72
+ export const SQAI_AZURE_OPENAI_API_VERSION =
73
+ 'SQAI_AZURE_OPENAI_API_VERSION';
74
+ export const SQAI_AZURE_OPENAI_DEPLOYMENT =
75
+ 'SQAI_AZURE_OPENAI_DEPLOYMENT';
76
+ export const SQAI_ANTHROPIC_API_KEY = 'SQAI_ANTHROPIC_API_KEY';
77
+ export const SQAI_VL_MODE = 'SQAI_VL_MODE';
78
+
79
+ // VQA
80
+ export const SQAI_VQA_MODEL_NAME = 'SQAI_VQA_MODEL_NAME';
81
+ export const SQAI_VQA_OPENAI_SOCKS_PROXY =
82
+ 'SQAI_VQA_OPENAI_SOCKS_PROXY';
83
+ export const SQAI_VQA_OPENAI_HTTP_PROXY = 'SQAI_VQA_OPENAI_HTTP_PROXY';
84
+ export const SQAI_VQA_OPENAI_BASE_URL = 'SQAI_VQA_OPENAI_BASE_URL';
85
+ export const SQAI_VQA_OPENAI_API_KEY = 'SQAI_VQA_OPENAI_API_KEY';
86
+ export const SQAI_VQA_OPENAI_INIT_CONFIG_JSON =
87
+ 'SQAI_VQA_OPENAI_INIT_CONFIG_JSON';
88
+ export const SQAI_VQA_OPENAI_USE_AZURE = 'SQAI_VQA_OPENAI_USE_AZURE';
89
+ export const SQAI_VQA_USE_AZURE_OPENAI = 'SQAI_VQA_USE_AZURE_OPENAI';
90
+ export const SQAI_VQA_AZURE_OPENAI_SCOPE =
91
+ 'SQAI_VQA_AZURE_OPENAI_SCOPE';
92
+ export const SQAI_VQA_AZURE_OPENAI_KEY = 'SQAI_VQA_AZURE_OPENAI_KEY';
93
+ export const SQAI_VQA_AZURE_OPENAI_ENDPOINT =
94
+ 'SQAI_VQA_AZURE_OPENAI_ENDPOINT';
95
+ export const SQAI_VQA_AZURE_OPENAI_API_VERSION =
96
+ 'SQAI_VQA_AZURE_OPENAI_API_VERSION';
97
+ export const SQAI_VQA_AZURE_OPENAI_DEPLOYMENT =
98
+ 'SQAI_VQA_AZURE_OPENAI_DEPLOYMENT';
99
+ export const SQAI_VQA_AZURE_OPENAI_INIT_CONFIG_JSON =
100
+ 'SQAI_VQA_AZURE_OPENAI_INIT_CONFIG_JSON';
101
+ export const SQAI_VQA_USE_ANTHROPIC_SDK = 'SQAI_VQA_USE_ANTHROPIC_SDK';
102
+ export const SQAI_VQA_ANTHROPIC_API_KEY = 'SQAI_VQA_ANTHROPIC_API_KEY';
103
+ export const SQAI_VQA_VL_MODE = 'SQAI_VQA_VL_MODE';
104
+
105
+ // PLANNING
106
+ export const SQAI_PLANNING_MODEL_NAME = 'SQAI_PLANNING_MODEL_NAME';
107
+ export const SQAI_PLANNING_OPENAI_SOCKS_PROXY =
108
+ 'SQAI_PLANNING_OPENAI_SOCKS_PROXY';
109
+ export const SQAI_PLANNING_OPENAI_HTTP_PROXY =
110
+ 'SQAI_PLANNING_OPENAI_HTTP_PROXY';
111
+ export const SQAI_PLANNING_OPENAI_BASE_URL =
112
+ 'SQAI_PLANNING_OPENAI_BASE_URL';
113
+ export const SQAI_PLANNING_OPENAI_API_KEY =
114
+ 'SQAI_PLANNING_OPENAI_API_KEY';
115
+ export const SQAI_PLANNING_OPENAI_INIT_CONFIG_JSON =
116
+ 'SQAI_PLANNING_OPENAI_INIT_CONFIG_JSON';
117
+ export const SQAI_PLANNING_OPENAI_USE_AZURE =
118
+ 'SQAI_PLANNING_OPENAI_USE_AZURE';
119
+ export const SQAI_PLANNING_USE_AZURE_OPENAI =
120
+ 'SQAI_PLANNING_USE_AZURE_OPENAI';
121
+ export const SQAI_PLANNING_AZURE_OPENAI_SCOPE =
122
+ 'SQAI_PLANNING_AZURE_OPENAI_SCOPE';
123
+ export const SQAI_PLANNING_AZURE_OPENAI_KEY =
124
+ 'SQAI_PLANNING_AZURE_OPENAI_KEY';
125
+ export const SQAI_PLANNING_AZURE_OPENAI_ENDPOINT =
126
+ 'SQAI_PLANNING_AZURE_OPENAI_ENDPOINT';
127
+ export const SQAI_PLANNING_AZURE_OPENAI_API_VERSION =
128
+ 'SQAI_PLANNING_AZURE_OPENAI_API_VERSION';
129
+ export const SQAI_PLANNING_AZURE_OPENAI_DEPLOYMENT =
130
+ 'SQAI_PLANNING_AZURE_OPENAI_DEPLOYMENT';
131
+ export const SQAI_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON =
132
+ 'SQAI_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON';
133
+ export const SQAI_PLANNING_USE_ANTHROPIC_SDK =
134
+ 'SQAI_PLANNING_USE_ANTHROPIC_SDK';
135
+ export const SQAI_PLANNING_ANTHROPIC_API_KEY =
136
+ 'SQAI_PLANNING_ANTHROPIC_API_KEY';
137
+ export const SQAI_PLANNING_VL_MODE = 'SQAI_PLANNING_VL_MODE';
138
+
139
+ // GROUNDING
140
+ export const SQAI_GROUNDING_MODEL_NAME = 'SQAI_GROUNDING_MODEL_NAME';
141
+ export const SQAI_GROUNDING_OPENAI_SOCKS_PROXY =
142
+ 'SQAI_GROUNDING_OPENAI_SOCKS_PROXY';
143
+ export const SQAI_GROUNDING_OPENAI_HTTP_PROXY =
144
+ 'SQAI_GROUNDING_OPENAI_HTTP_PROXY';
145
+ export const SQAI_GROUNDING_OPENAI_BASE_URL =
146
+ 'SQAI_GROUNDING_OPENAI_BASE_URL';
147
+ export const SQAI_GROUNDING_OPENAI_API_KEY =
148
+ 'SQAI_GROUNDING_OPENAI_API_KEY';
149
+ export const SQAI_GROUNDING_OPENAI_INIT_CONFIG_JSON =
150
+ 'SQAI_GROUNDING_OPENAI_INIT_CONFIG_JSON';
151
+ export const SQAI_GROUNDING_OPENAI_USE_AZURE =
152
+ 'SQAI_GROUNDING_OPENAI_USE_AZURE';
153
+ export const SQAI_GROUNDING_USE_AZURE_OPENAI =
154
+ 'SQAI_GROUNDING_USE_AZURE_OPENAI';
155
+ export const SQAI_GROUNDING_AZURE_OPENAI_SCOPE =
156
+ 'SQAI_GROUNDING_AZURE_OPENAI_SCOPE';
157
+ export const SQAI_GROUNDING_AZURE_OPENAI_KEY =
158
+ 'SQAI_GROUNDING_AZURE_OPENAI_KEY';
159
+ export const SQAI_GROUNDING_AZURE_OPENAI_ENDPOINT =
160
+ 'SQAI_GROUNDING_AZURE_OPENAI_ENDPOINT';
161
+ export const SQAI_GROUNDING_AZURE_OPENAI_API_VERSION =
162
+ 'SQAI_GROUNDING_AZURE_OPENAI_API_VERSION';
163
+ export const SQAI_GROUNDING_AZURE_OPENAI_DEPLOYMENT =
164
+ 'SQAI_GROUNDING_AZURE_OPENAI_DEPLOYMENT';
165
+ export const SQAI_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON =
166
+ 'SQAI_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON';
167
+ export const SQAI_GROUNDING_USE_ANTHROPIC_SDK =
168
+ 'SQAI_GROUNDING_USE_ANTHROPIC_SDK';
169
+ export const SQAI_GROUNDING_ANTHROPIC_API_KEY =
170
+ 'SQAI_GROUNDING_ANTHROPIC_API_KEY';
171
+ export const SQAI_GROUNDING_VL_MODE = 'SQAI_GROUNDING_VL_MODE';
172
+
173
+ // @deprecated
174
+ export const OPENAI_USE_AZURE = 'OPENAI_USE_AZURE';
175
+
176
+ /**
177
+ * env keys declared but unused
178
+ */
179
+ export const UNUSED_ENV_KEYS = [SQAI_DANGEROUSLY_PRINT_ALL_CONFIG];
180
+
181
+ /**
182
+ * env keys for debug or basic run
183
+ * can not be override by overrideAIConfig
184
+ */
185
+ export const BASIC_ENV_KEYS = [
186
+ SQAI_DEBUG_MODE,
187
+ SQAI_DEBUG_AI_PROFILE,
188
+ SQAI_DEBUG_AI_RESPONSE,
189
+ SQAI_RUN_DIR,
190
+ ] as const;
191
+
192
+ export const BOOLEAN_ENV_KEYS = [
193
+ SQAI_CACHE,
194
+ SQAI_LANGSMITH_DEBUG,
195
+ SQAI_FORCE_DEEP_THINK,
196
+ SQAI_MCP_USE_PUPPETEER_MODE,
197
+ SQAI_MCP_ANDROID_MODE,
198
+ ] as const;
199
+
200
+ export const NUMBER_ENV_KEYS = [
201
+ SQAI_CACHE_MAX_FILENAME_LENGTH,
202
+ SQAI_REPLANNING_CYCLE_LIMIT,
203
+ ] as const;
204
+
205
+ export const STRING_ENV_KEYS = [
206
+ OPENAI_MAX_TOKENS,
207
+ SQAI_ADB_PATH,
208
+ SQAI_ADB_REMOTE_HOST,
209
+ SQAI_ADB_REMOTE_PORT,
210
+ SQAI_ANDROID_IME_STRATEGY,
211
+ SQAI_IOS_DEVICE_UDID,
212
+ SQAI_IOS_SIMULATOR_UDID,
213
+ SQAI_REPORT_TAG_NAME,
214
+ SQAI_PREFERRED_LANGUAGE,
215
+ MATCH_BY_POSITION,
216
+ SQAI_MCP_CHROME_PATH,
217
+ DOCKER_CONTAINER,
218
+ ] as const;
219
+
220
+ /**
221
+ * Non model related env keys, used for globally controlling the behavior of midscene
222
+ * Can not be override by agent.modelConfig but can be override by overrideAIConfig
223
+ * Can be access at any time
224
+ */
225
+ export const GLOBAL_ENV_KEYS = [
226
+ ...BOOLEAN_ENV_KEYS,
227
+ ...NUMBER_ENV_KEYS,
228
+ ...STRING_ENV_KEYS,
229
+ ] as const;
230
+
231
+ /**
232
+ * Model related eve keys, used for declare which model to use.
233
+ * Can be override by both agent.modelConfig and overrideAIConfig
234
+ * Can only be access after agent.constructor
235
+ */
236
+ export const MODEL_ENV_KEYS = [
237
+ // model default
238
+ SQAI_MODEL_NAME,
239
+ SQAI_OPENAI_INIT_CONFIG_JSON,
240
+ SQAI_OPENAI_API_KEY,
241
+ SQAI_OPENAI_BASE_URL,
242
+ SQAI_OPENAI_USE_AZURE,
243
+ SQAI_OPENAI_SOCKS_PROXY,
244
+ SQAI_OPENAI_HTTP_PROXY,
245
+ SQAI_USE_AZURE_OPENAI,
246
+ SQAI_AZURE_OPENAI_SCOPE,
247
+ SQAI_AZURE_OPENAI_INIT_CONFIG_JSON,
248
+ SQAI_USE_ANTHROPIC_SDK,
249
+ SQAI_USE_VLM_UI_TARS,
250
+ SQAI_USE_QWEN_VL,
251
+ SQAI_USE_QWEN3_VL,
252
+ SQAI_USE_DOUBAO_VISION,
253
+ SQAI_USE_GEMINI,
254
+ SQAI_USE_VL_MODEL,
255
+ ANTHROPIC_API_KEY,
256
+ SQAI_AZURE_OPENAI_ENDPOINT,
257
+ SQAI_AZURE_OPENAI_KEY,
258
+ SQAI_AZURE_OPENAI_API_VERSION,
259
+ SQAI_AZURE_OPENAI_DEPLOYMENT,
260
+ SQAI_VL_MODE,
261
+ // model default legacy
262
+ OPENAI_API_KEY,
263
+ OPENAI_BASE_URL,
264
+ OPENAI_USE_AZURE,
265
+ ANTHROPIC_API_KEY,
266
+ AZURE_OPENAI_ENDPOINT,
267
+ AZURE_OPENAI_KEY,
268
+ AZURE_OPENAI_API_VERSION,
269
+ AZURE_OPENAI_DEPLOYMENT,
270
+ // VQA
271
+ SQAI_VQA_MODEL_NAME,
272
+ SQAI_VQA_OPENAI_SOCKS_PROXY,
273
+ SQAI_VQA_OPENAI_HTTP_PROXY,
274
+ SQAI_VQA_OPENAI_BASE_URL,
275
+ SQAI_VQA_OPENAI_API_KEY,
276
+ SQAI_VQA_OPENAI_INIT_CONFIG_JSON,
277
+ SQAI_VQA_OPENAI_USE_AZURE,
278
+ SQAI_VQA_USE_AZURE_OPENAI,
279
+ SQAI_VQA_AZURE_OPENAI_SCOPE,
280
+ SQAI_VQA_AZURE_OPENAI_KEY,
281
+ SQAI_VQA_AZURE_OPENAI_ENDPOINT,
282
+ SQAI_VQA_AZURE_OPENAI_API_VERSION,
283
+ SQAI_VQA_AZURE_OPENAI_DEPLOYMENT,
284
+ SQAI_VQA_AZURE_OPENAI_INIT_CONFIG_JSON,
285
+ SQAI_VQA_USE_ANTHROPIC_SDK,
286
+ SQAI_VQA_ANTHROPIC_API_KEY,
287
+ SQAI_VQA_VL_MODE,
288
+ // PLANNING
289
+ SQAI_PLANNING_MODEL_NAME,
290
+ SQAI_PLANNING_OPENAI_SOCKS_PROXY,
291
+ SQAI_PLANNING_OPENAI_HTTP_PROXY,
292
+ SQAI_PLANNING_OPENAI_BASE_URL,
293
+ SQAI_PLANNING_OPENAI_API_KEY,
294
+ SQAI_PLANNING_OPENAI_INIT_CONFIG_JSON,
295
+ SQAI_PLANNING_OPENAI_USE_AZURE,
296
+ SQAI_PLANNING_USE_AZURE_OPENAI,
297
+ SQAI_PLANNING_AZURE_OPENAI_SCOPE,
298
+ SQAI_PLANNING_AZURE_OPENAI_KEY,
299
+ SQAI_PLANNING_AZURE_OPENAI_ENDPOINT,
300
+ SQAI_PLANNING_AZURE_OPENAI_API_VERSION,
301
+ SQAI_PLANNING_AZURE_OPENAI_DEPLOYMENT,
302
+ SQAI_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON,
303
+ SQAI_PLANNING_USE_ANTHROPIC_SDK,
304
+ SQAI_PLANNING_ANTHROPIC_API_KEY,
305
+ SQAI_PLANNING_VL_MODE,
306
+ // GROUNDING
307
+ SQAI_GROUNDING_MODEL_NAME,
308
+ SQAI_GROUNDING_OPENAI_SOCKS_PROXY,
309
+ SQAI_GROUNDING_OPENAI_HTTP_PROXY,
310
+ SQAI_GROUNDING_OPENAI_BASE_URL,
311
+ SQAI_GROUNDING_OPENAI_API_KEY,
312
+ SQAI_GROUNDING_OPENAI_INIT_CONFIG_JSON,
313
+ SQAI_GROUNDING_OPENAI_USE_AZURE,
314
+ SQAI_GROUNDING_USE_AZURE_OPENAI,
315
+ SQAI_GROUNDING_AZURE_OPENAI_SCOPE,
316
+ SQAI_GROUNDING_AZURE_OPENAI_KEY,
317
+ SQAI_GROUNDING_AZURE_OPENAI_ENDPOINT,
318
+ SQAI_GROUNDING_AZURE_OPENAI_API_VERSION,
319
+ SQAI_GROUNDING_AZURE_OPENAI_DEPLOYMENT,
320
+ SQAI_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON,
321
+ SQAI_GROUNDING_USE_ANTHROPIC_SDK,
322
+ SQAI_GROUNDING_ANTHROPIC_API_KEY,
323
+ SQAI_GROUNDING_VL_MODE,
324
+ ] as const;
325
+
326
+ export const ALL_ENV_KEYS = [
327
+ ...UNUSED_ENV_KEYS,
328
+ ...BASIC_ENV_KEYS,
329
+ ...GLOBAL_ENV_KEYS,
330
+ ...MODEL_ENV_KEYS,
331
+ ] as const;
332
+
333
+ export type TEnvKeys = (typeof ALL_ENV_KEYS)[number];
334
+ export type TGlobalConfig = Record<TEnvKeys, string | undefined>;
335
+
336
+ export type TVlModeValues =
337
+ | 'qwen-vl'
338
+ | 'qwen3-vl'
339
+ | 'doubao-vision'
340
+ | 'gemini'
341
+ | 'vlm-ui-tars'
342
+ | 'vlm-ui-tars-doubao'
343
+ | 'vlm-ui-tars-doubao-1.5';
344
+
345
+ export type TVlModeTypes =
346
+ | 'qwen-vl'
347
+ | 'qwen3-vl'
348
+ | 'doubao-vision'
349
+ | 'gemini'
350
+ | 'vlm-ui-tars';
351
+
352
+ export interface IModelConfigForVQA {
353
+ // model name
354
+ [SQAI_VQA_MODEL_NAME]: string;
355
+ // proxy
356
+ [SQAI_VQA_OPENAI_SOCKS_PROXY]?: string;
357
+ [SQAI_VQA_OPENAI_HTTP_PROXY]?: string;
358
+ // OpenAI
359
+ [SQAI_VQA_OPENAI_BASE_URL]?: string;
360
+ [SQAI_VQA_OPENAI_API_KEY]?: string;
361
+ [SQAI_VQA_OPENAI_INIT_CONFIG_JSON]?: string;
362
+ // Azure
363
+ [SQAI_VQA_OPENAI_USE_AZURE]?: string;
364
+ [SQAI_VQA_USE_AZURE_OPENAI]?: string;
365
+ [SQAI_VQA_AZURE_OPENAI_SCOPE]?: string;
366
+ [SQAI_VQA_AZURE_OPENAI_KEY]?: string;
367
+ [SQAI_VQA_AZURE_OPENAI_ENDPOINT]?: string;
368
+ [SQAI_VQA_AZURE_OPENAI_API_VERSION]?: string;
369
+ [SQAI_VQA_AZURE_OPENAI_DEPLOYMENT]?: string;
370
+ [SQAI_VQA_AZURE_OPENAI_INIT_CONFIG_JSON]?: string;
371
+ // Anthropic
372
+ [SQAI_VQA_USE_ANTHROPIC_SDK]?: string;
373
+ [SQAI_VQA_ANTHROPIC_API_KEY]?: string;
374
+ // extra
375
+ [SQAI_VQA_VL_MODE]?: TVlModeValues;
376
+ }
377
+
378
+ export interface IModelConfigForPlanning {
379
+ // model name
380
+ [SQAI_PLANNING_MODEL_NAME]: string;
381
+ // proxy
382
+ [SQAI_PLANNING_OPENAI_SOCKS_PROXY]?: string;
383
+ [SQAI_PLANNING_OPENAI_HTTP_PROXY]?: string;
384
+ // OpenAI
385
+ [SQAI_PLANNING_OPENAI_BASE_URL]?: string;
386
+ [SQAI_PLANNING_OPENAI_API_KEY]?: string;
387
+ [SQAI_PLANNING_OPENAI_INIT_CONFIG_JSON]?: string;
388
+ // Azure
389
+ [SQAI_PLANNING_OPENAI_USE_AZURE]?: string;
390
+ [SQAI_PLANNING_USE_AZURE_OPENAI]?: string;
391
+ [SQAI_PLANNING_AZURE_OPENAI_SCOPE]?: string;
392
+ [SQAI_PLANNING_AZURE_OPENAI_KEY]?: string;
393
+ [SQAI_PLANNING_AZURE_OPENAI_ENDPOINT]?: string;
394
+ [SQAI_PLANNING_AZURE_OPENAI_API_VERSION]?: string;
395
+ [SQAI_PLANNING_AZURE_OPENAI_DEPLOYMENT]?: string;
396
+ [SQAI_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON]?: string;
397
+ // Anthropic
398
+ [SQAI_PLANNING_USE_ANTHROPIC_SDK]?: string;
399
+ [SQAI_PLANNING_ANTHROPIC_API_KEY]?: string;
400
+ // extra
401
+ [SQAI_PLANNING_VL_MODE]?: TVlModeValues;
402
+ }
403
+
404
+ export interface IModeConfigForGrounding {
405
+ // model name
406
+ [SQAI_GROUNDING_MODEL_NAME]: string;
407
+ // proxy
408
+ [SQAI_GROUNDING_OPENAI_SOCKS_PROXY]?: string;
409
+ [SQAI_GROUNDING_OPENAI_HTTP_PROXY]?: string;
410
+ // OpenAI
411
+ [SQAI_GROUNDING_OPENAI_BASE_URL]?: string;
412
+ [SQAI_GROUNDING_OPENAI_API_KEY]?: string;
413
+ [SQAI_GROUNDING_OPENAI_INIT_CONFIG_JSON]?: string;
414
+ // Azure
415
+ [SQAI_GROUNDING_OPENAI_USE_AZURE]?: string;
416
+ [SQAI_GROUNDING_USE_AZURE_OPENAI]?: string;
417
+ [SQAI_GROUNDING_AZURE_OPENAI_SCOPE]?: string;
418
+ [SQAI_GROUNDING_AZURE_OPENAI_KEY]?: string;
419
+ [SQAI_GROUNDING_AZURE_OPENAI_ENDPOINT]?: string;
420
+ [SQAI_GROUNDING_AZURE_OPENAI_API_VERSION]?: string;
421
+ [SQAI_GROUNDING_AZURE_OPENAI_DEPLOYMENT]?: string;
422
+ [SQAI_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON]?: string;
423
+ // Anthropic
424
+ [SQAI_GROUNDING_USE_ANTHROPIC_SDK]?: string;
425
+ [SQAI_GROUNDING_ANTHROPIC_API_KEY]?: string;
426
+ // extra
427
+ [SQAI_GROUNDING_VL_MODE]?: TVlModeValues;
428
+ }
429
+
430
+ export interface IModelConfigForDefault {
431
+ // model name
432
+ [SQAI_MODEL_NAME]: string;
433
+ // proxy
434
+ [SQAI_OPENAI_SOCKS_PROXY]?: string;
435
+ [SQAI_OPENAI_HTTP_PROXY]?: string;
436
+ // OpenAI
437
+ [SQAI_OPENAI_BASE_URL]?: string;
438
+ [SQAI_OPENAI_API_KEY]?: string;
439
+ [SQAI_OPENAI_INIT_CONFIG_JSON]?: string;
440
+ // Azure
441
+ [SQAI_OPENAI_USE_AZURE]?: string;
442
+ [SQAI_USE_AZURE_OPENAI]?: string;
443
+ [SQAI_AZURE_OPENAI_SCOPE]?: string;
444
+ [SQAI_AZURE_OPENAI_KEY]?: string;
445
+ [SQAI_AZURE_OPENAI_ENDPOINT]?: string;
446
+ [SQAI_AZURE_OPENAI_API_VERSION]?: string;
447
+ [SQAI_AZURE_OPENAI_DEPLOYMENT]?: string;
448
+ [SQAI_AZURE_OPENAI_INIT_CONFIG_JSON]?: string;
449
+ // Anthropic
450
+ [SQAI_USE_ANTHROPIC_SDK]?: string;
451
+ [SQAI_ANTHROPIC_API_KEY]?: string;
452
+ // extra
453
+ [SQAI_VL_MODE]?: TVlModeValues;
454
+ }
455
+
456
+ export interface IModelConfigForDefaultLegacy {
457
+ // model name
458
+ [SQAI_MODEL_NAME]: string;
459
+ // proxy
460
+ [SQAI_OPENAI_SOCKS_PROXY]?: string;
461
+ [SQAI_OPENAI_HTTP_PROXY]?: string;
462
+ // OpenAI
463
+ [OPENAI_BASE_URL]?: string;
464
+ [OPENAI_API_KEY]?: string;
465
+ [SQAI_OPENAI_INIT_CONFIG_JSON]?: string;
466
+ // Azure
467
+ [OPENAI_USE_AZURE]?: string;
468
+ [SQAI_USE_AZURE_OPENAI]?: string;
469
+ [SQAI_AZURE_OPENAI_SCOPE]?: string;
470
+ [AZURE_OPENAI_KEY]?: string;
471
+ [AZURE_OPENAI_ENDPOINT]?: string;
472
+ [AZURE_OPENAI_API_VERSION]?: string;
473
+ [AZURE_OPENAI_DEPLOYMENT]?: string;
474
+ [SQAI_AZURE_OPENAI_INIT_CONFIG_JSON]?: string;
475
+ // Anthropic
476
+ [SQAI_USE_ANTHROPIC_SDK]?: string;
477
+ [ANTHROPIC_API_KEY]?: string;
478
+ // extra
479
+ [SQAI_VL_MODE]?: TVlModeValues;
480
+ }
481
+
482
+ /**
483
+ * - VQA: Visual Question Answering
484
+ * - grounding:short for Visual Grounding
485
+ * - planning: planning
486
+ * - default: all except VQA、grounding、planning
487
+ */
488
+ export type TIntent = 'VQA' | 'planning' | 'grounding' | 'default';
489
+
490
+ export type TModelConfigFn = (options: {
491
+ intent: TIntent;
492
+ }) =>
493
+ | IModelConfigForVQA
494
+ | IModelConfigForPlanning
495
+ | IModeConfigForGrounding
496
+ | IModelConfigForDefault;
497
+
498
+ export enum UITarsModelVersion {
499
+ V1_0 = '1.0',
500
+ V1_5 = '1.5',
501
+ DOUBAO_1_5_15B = 'doubao-1.5-15B',
502
+ DOUBAO_1_5_20B = 'doubao-1.5-20B',
503
+ }
504
+
505
+ export const VL_MODE_RAW_VALID_VALUES: TVlModeValues[] = [
506
+ 'doubao-vision',
507
+ 'gemini',
508
+ 'qwen-vl',
509
+ 'qwen3-vl',
510
+ 'vlm-ui-tars',
511
+ 'vlm-ui-tars-doubao',
512
+ 'vlm-ui-tars-doubao-1.5',
513
+ ];
514
+
515
+ export interface IModelConfig {
516
+ /**
517
+ * proxy
518
+ */
519
+ socksProxy?: string;
520
+ httpProxy?: string;
521
+ /**
522
+ * model
523
+ */
524
+ modelName: string;
525
+ /**
526
+ * OpenAI
527
+ */
528
+ openaiBaseURL?: string;
529
+ openaiApiKey?: string;
530
+ openaiExtraConfig?: Record<string, unknown>;
531
+ /**
532
+ * Azure
533
+ */
534
+ openaiUseAzureDeprecated?: boolean;
535
+ useAzureOpenai?: boolean;
536
+ azureOpenaiScope?: string;
537
+ azureOpenaiKey?: string;
538
+ azureOpenaiEndpoint?: string;
539
+ azureOpenaiApiVersion?: string;
540
+ azureOpenaiDeployment?: string;
541
+ azureExtraConfig?: Record<string, unknown>;
542
+ /**
543
+ * Anthropic
544
+ */
545
+ useAnthropicSdk?: boolean;
546
+ anthropicApiKey?: string;
547
+ /**
548
+ * - vlModeRaw: exists only in non-legacy logic. value can be 'doubao-vision', 'gemini', 'qwen-vl', 'vlm-ui-tars', 'vlm-ui-tars-doubao', 'vlm-ui-tars-doubao-1.5'
549
+ * - vlMode: based on the results of the vlModoRaw classification,value can be 'doubao-vision', 'gemini', 'qwen-vl', 'vlm-ui-tars'
550
+ */
551
+ vlModeRaw?: string;
552
+ vlMode?: TVlModeTypes;
553
+ uiTarsModelVersion?: UITarsModelVersion;
554
+ modelDescription: string;
555
+ /**
556
+ * for debug
557
+ */
558
+ intent: TIntent;
559
+ from: 'modelConfig' | 'env' | 'legacy-env';
560
+ }
@@ -0,0 +1,39 @@
1
+ import { GlobalConfigManager } from './global-config-manager';
2
+ import { ModelConfigManager } from './model-config-manager';
3
+ import {
4
+ type GLOBAL_ENV_KEYS,
5
+ SQAI_PREFERRED_LANGUAGE,
6
+ type MODEL_ENV_KEYS,
7
+ } from './types';
8
+
9
+ export const globalModelConfigManager = new ModelConfigManager();
10
+
11
+ export const globalConfigManager = new GlobalConfigManager();
12
+
13
+ globalConfigManager.registerModelConfigManager(globalModelConfigManager);
14
+ globalModelConfigManager.registerGlobalConfigManager(globalConfigManager);
15
+
16
+ export const getPreferredLanguage = () => {
17
+ const prefer = globalConfigManager.getEnvConfigValue(
18
+ SQAI_PREFERRED_LANGUAGE,
19
+ );
20
+ if (prefer) {
21
+ return prefer;
22
+ }
23
+
24
+ const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
25
+ const isChina = timeZone === 'Asia/Shanghai';
26
+ return isChina ? 'Chinese' : 'English';
27
+ };
28
+
29
+ export const overrideAIConfig = (
30
+ newConfig: Partial<
31
+ Record<
32
+ (typeof GLOBAL_ENV_KEYS)[number] | (typeof MODEL_ENV_KEYS)[number],
33
+ string
34
+ >
35
+ >,
36
+ extendMode = false, // true: merge with global config, false: override global config
37
+ ) => {
38
+ globalConfigManager.overrideAIConfig(newConfig, extendMode);
39
+ };
@@ -0,0 +1,5 @@
1
+ export {
2
+ NodeType,
3
+ TEXT_MAX_SIZE,
4
+ TEXT_SIZE_THRESHOLD,
5
+ } from '../constants/index';
@@ -0,0 +1,10 @@
1
+ import { webExtractTextWithPosition } from '.';
2
+ import {
3
+ setExtractTextWithPositionOnWindow,
4
+ setMidsceneVisibleRectOnWindow,
5
+ } from './util';
6
+
7
+ console.log(webExtractTextWithPosition(document.body, true));
8
+ console.log(JSON.stringify(webExtractTextWithPosition(document.body, true)));
9
+ setExtractTextWithPositionOnWindow();
10
+ setMidsceneVisibleRectOnWindow();