@xiuchang-midscene/shared 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 (382) hide show
  1. package/README.md +9 -0
  2. package/dist/es/baseDB.mjs +109 -0
  3. package/dist/es/baseDB.mjs.bak +109 -0
  4. package/dist/es/build/copy-static.mjs +31 -0
  5. package/dist/es/build/copy-static.mjs.bak +31 -0
  6. package/dist/es/build/rspack-config.mjs +4 -0
  7. package/dist/es/build/rspack-config.mjs.bak +4 -0
  8. package/dist/es/cli/cli-runner.mjs +140 -0
  9. package/dist/es/cli/cli-runner.mjs.bak +140 -0
  10. package/dist/es/cli/index.mjs +2 -0
  11. package/dist/es/cli/index.mjs.bak +2 -0
  12. package/dist/es/common.mjs +37 -0
  13. package/dist/es/common.mjs.bak +37 -0
  14. package/dist/es/constants/example-code.mjs +223 -0
  15. package/dist/es/constants/example-code.mjs.bak +223 -0
  16. package/dist/es/constants/index.mjs +23 -0
  17. package/dist/es/constants/index.mjs.bak +23 -0
  18. package/dist/es/env/basic.mjs +6 -0
  19. package/dist/es/env/basic.mjs.bak +6 -0
  20. package/dist/es/env/constants.mjs +70 -0
  21. package/dist/es/env/constants.mjs.bak +70 -0
  22. package/dist/es/env/global-config-manager.mjs +94 -0
  23. package/dist/es/env/global-config-manager.mjs.bak +94 -0
  24. package/dist/es/env/helper.mjs +43 -0
  25. package/dist/es/env/helper.mjs.bak +43 -0
  26. package/dist/es/env/index.mjs +5 -0
  27. package/dist/es/env/index.mjs.bak +5 -0
  28. package/dist/es/env/init-debug.mjs +18 -0
  29. package/dist/es/env/init-debug.mjs.bak +18 -0
  30. package/dist/es/env/model-config-manager.mjs +79 -0
  31. package/dist/es/env/model-config-manager.mjs.bak +79 -0
  32. package/dist/es/env/parse-model-config.mjs +132 -0
  33. package/dist/es/env/parse-model-config.mjs.bak +132 -0
  34. package/dist/es/env/types.mjs +220 -0
  35. package/dist/es/env/types.mjs.bak +220 -0
  36. package/dist/es/env/utils.mjs +26 -0
  37. package/dist/es/env/utils.mjs.bak +26 -0
  38. package/dist/es/extractor/constants.mjs +2 -0
  39. package/dist/es/extractor/constants.mjs.bak +2 -0
  40. package/dist/es/extractor/debug.mjs +6 -0
  41. package/dist/es/extractor/debug.mjs.bak +6 -0
  42. package/dist/es/extractor/dom-util.mjs +92 -0
  43. package/dist/es/extractor/dom-util.mjs.bak +92 -0
  44. package/dist/es/extractor/index.mjs +5 -0
  45. package/dist/es/extractor/index.mjs.bak +5 -0
  46. package/dist/es/extractor/locator.mjs +250 -0
  47. package/dist/es/extractor/locator.mjs.bak +250 -0
  48. package/dist/es/extractor/tree.mjs +78 -0
  49. package/dist/es/extractor/tree.mjs.bak +78 -0
  50. package/dist/es/extractor/util.mjs +245 -0
  51. package/dist/es/extractor/util.mjs.bak +245 -0
  52. package/dist/es/extractor/web-extractor.mjs +303 -0
  53. package/dist/es/extractor/web-extractor.mjs.bak +303 -0
  54. package/dist/es/img/box-select.mjs +824 -0
  55. package/dist/es/img/box-select.mjs.bak +824 -0
  56. package/dist/es/img/canvas-fallback.mjs +238 -0
  57. package/dist/es/img/canvas-fallback.mjs.bak +238 -0
  58. package/dist/es/img/get-photon.mjs +45 -0
  59. package/dist/es/img/get-photon.mjs.bak +45 -0
  60. package/dist/es/img/get-sharp.mjs +11 -0
  61. package/dist/es/img/get-sharp.mjs.bak +11 -0
  62. package/dist/es/img/index.mjs +4 -0
  63. package/dist/es/img/index.mjs.bak +4 -0
  64. package/dist/es/img/info.mjs +29 -0
  65. package/dist/es/img/info.mjs.bak +29 -0
  66. package/dist/es/img/transform.mjs +295 -0
  67. package/dist/es/img/transform.mjs.bak +295 -0
  68. package/dist/es/index.mjs +4 -0
  69. package/dist/es/index.mjs.bak +4 -0
  70. package/dist/es/logger.mjs +64 -0
  71. package/dist/es/logger.mjs.bak +64 -0
  72. package/dist/es/mcp/base-server.mjs +281 -0
  73. package/dist/es/mcp/base-server.mjs.bak +281 -0
  74. package/dist/es/mcp/base-tools.mjs +91 -0
  75. package/dist/es/mcp/base-tools.mjs.bak +91 -0
  76. package/dist/es/mcp/chrome-path.mjs +35 -0
  77. package/dist/es/mcp/chrome-path.mjs.bak +35 -0
  78. package/dist/es/mcp/index.mjs +7 -0
  79. package/dist/es/mcp/index.mjs.bak +7 -0
  80. package/dist/es/mcp/inject-report-html-plugin.mjs +53 -0
  81. package/dist/es/mcp/inject-report-html-plugin.mjs.bak +53 -0
  82. package/dist/es/mcp/launcher-helper.mjs +52 -0
  83. package/dist/es/mcp/launcher-helper.mjs.bak +52 -0
  84. package/dist/es/mcp/tool-generator.mjs +297 -0
  85. package/dist/es/mcp/tool-generator.mjs.bak +297 -0
  86. package/dist/es/mcp/types.mjs +3 -0
  87. package/dist/es/mcp/types.mjs.bak +3 -0
  88. package/dist/es/node/fs.mjs +44 -0
  89. package/dist/es/node/fs.mjs.bak +44 -0
  90. package/dist/es/node/index.mjs +2 -0
  91. package/dist/es/node/index.mjs.bak +2 -0
  92. package/dist/es/node/port.mjs +24 -0
  93. package/dist/es/node/port.mjs.bak +24 -0
  94. package/dist/es/oss/demo.mjs +30 -0
  95. package/dist/es/oss/demo.mjs.bak +30 -0
  96. package/dist/es/oss/index.mjs +90 -0
  97. package/dist/es/oss/index.mjs.bak +90 -0
  98. package/dist/es/polyfills/async-hooks.mjs +2 -0
  99. package/dist/es/polyfills/async-hooks.mjs.bak +2 -0
  100. package/dist/es/polyfills/index.mjs +1 -0
  101. package/dist/es/polyfills/index.mjs.bak +1 -0
  102. package/dist/es/types/index.mjs +3 -0
  103. package/dist/es/types/index.mjs.bak +3 -0
  104. package/dist/es/us-keyboard-layout.mjs +1414 -0
  105. package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
  106. package/dist/es/us-keyboard-layout.mjs.bak +1414 -0
  107. package/dist/es/utils.mjs +72 -0
  108. package/dist/es/utils.mjs.bak +72 -0
  109. package/dist/es/zod-schema-utils.mjs +54 -0
  110. package/dist/es/zod-schema-utils.mjs.bak +54 -0
  111. package/dist/lib/baseDB.js +149 -0
  112. package/dist/lib/baseDB.js.bak +149 -0
  113. package/dist/lib/build/copy-static.js +79 -0
  114. package/dist/lib/build/copy-static.js.bak +79 -0
  115. package/dist/lib/build/rspack-config.js +38 -0
  116. package/dist/lib/build/rspack-config.js.bak +38 -0
  117. package/dist/lib/cli/cli-runner.js +196 -0
  118. package/dist/lib/cli/cli-runner.js.bak +196 -0
  119. package/dist/lib/cli/index.js +48 -0
  120. package/dist/lib/cli/index.js.bak +48 -0
  121. package/dist/lib/common.js +93 -0
  122. package/dist/lib/common.js.bak +93 -0
  123. package/dist/lib/constants/example-code.js +260 -0
  124. package/dist/lib/constants/example-code.js.bak +260 -0
  125. package/dist/lib/constants/index.js +96 -0
  126. package/dist/lib/constants/index.js.bak +96 -0
  127. package/dist/lib/env/basic.js +40 -0
  128. package/dist/lib/env/basic.js.bak +40 -0
  129. package/dist/lib/env/constants.js +113 -0
  130. package/dist/lib/env/constants.js.bak +113 -0
  131. package/dist/lib/env/global-config-manager.js +128 -0
  132. package/dist/lib/env/global-config-manager.js.bak +128 -0
  133. package/dist/lib/env/helper.js +80 -0
  134. package/dist/lib/env/helper.js.bak +80 -0
  135. package/dist/lib/env/index.js +90 -0
  136. package/dist/lib/env/index.js.bak +90 -0
  137. package/dist/lib/env/init-debug.js +52 -0
  138. package/dist/lib/env/init-debug.js.bak +52 -0
  139. package/dist/lib/env/model-config-manager.js +113 -0
  140. package/dist/lib/env/model-config-manager.js.bak +113 -0
  141. package/dist/lib/env/parse-model-config.js +178 -0
  142. package/dist/lib/env/parse-model-config.js.bak +178 -0
  143. package/dist/lib/env/types.js +554 -0
  144. package/dist/lib/env/types.js.bak +554 -0
  145. package/dist/lib/env/utils.js +72 -0
  146. package/dist/lib/env/utils.js.bak +72 -0
  147. package/dist/lib/extractor/constants.js +42 -0
  148. package/dist/lib/extractor/constants.js.bak +42 -0
  149. package/dist/lib/extractor/debug.js +12 -0
  150. package/dist/lib/extractor/debug.js.bak +12 -0
  151. package/dist/lib/extractor/dom-util.js +153 -0
  152. package/dist/lib/extractor/dom-util.js.bak +153 -0
  153. package/dist/lib/extractor/index.js +81 -0
  154. package/dist/lib/extractor/index.js.bak +81 -0
  155. package/dist/lib/extractor/locator.js +296 -0
  156. package/dist/lib/extractor/locator.js.bak +296 -0
  157. package/dist/lib/extractor/tree.js +124 -0
  158. package/dist/lib/extractor/tree.js.bak +124 -0
  159. package/dist/lib/extractor/util.js +336 -0
  160. package/dist/lib/extractor/util.js.bak +336 -0
  161. package/dist/lib/extractor/web-extractor.js +349 -0
  162. package/dist/lib/extractor/web-extractor.js.bak +349 -0
  163. package/dist/lib/img/box-select.js +875 -0
  164. package/dist/lib/img/box-select.js.bak +875 -0
  165. package/dist/lib/img/canvas-fallback.js +305 -0
  166. package/dist/lib/img/canvas-fallback.js.bak +305 -0
  167. package/dist/lib/img/get-photon.js +82 -0
  168. package/dist/lib/img/get-photon.js.bak +82 -0
  169. package/dist/lib/img/get-sharp.js +45 -0
  170. package/dist/lib/img/get-sharp.js.bak +45 -0
  171. package/dist/lib/img/index.js +95 -0
  172. package/dist/lib/img/index.js.bak +95 -0
  173. package/dist/lib/img/info.js +83 -0
  174. package/dist/lib/img/info.js.bak +83 -0
  175. package/dist/lib/img/transform.js +387 -0
  176. package/dist/lib/img/transform.js.bak +387 -0
  177. package/dist/lib/index.js +47 -0
  178. package/dist/lib/index.js.bak +47 -0
  179. package/dist/lib/logger.js +114 -0
  180. package/dist/lib/logger.js.bak +114 -0
  181. package/dist/lib/mcp/base-server.js +331 -0
  182. package/dist/lib/mcp/base-server.js.bak +331 -0
  183. package/dist/lib/mcp/base-tools.js +125 -0
  184. package/dist/lib/mcp/base-tools.js.bak +125 -0
  185. package/dist/lib/mcp/chrome-path.js +72 -0
  186. package/dist/lib/mcp/chrome-path.js.bak +72 -0
  187. package/dist/lib/mcp/index.js +100 -0
  188. package/dist/lib/mcp/index.js.bak +100 -0
  189. package/dist/lib/mcp/inject-report-html-plugin.js +98 -0
  190. package/dist/lib/mcp/inject-report-html-plugin.js.bak +98 -0
  191. package/dist/lib/mcp/launcher-helper.js +86 -0
  192. package/dist/lib/mcp/launcher-helper.js.bak +86 -0
  193. package/dist/lib/mcp/tool-generator.js +334 -0
  194. package/dist/lib/mcp/tool-generator.js.bak +334 -0
  195. package/dist/lib/mcp/types.js +40 -0
  196. package/dist/lib/mcp/types.js.bak +40 -0
  197. package/dist/lib/node/fs.js +97 -0
  198. package/dist/lib/node/fs.js.bak +97 -0
  199. package/dist/lib/node/index.js +65 -0
  200. package/dist/lib/node/index.js.bak +65 -0
  201. package/dist/lib/node/port.js +61 -0
  202. package/dist/lib/node/port.js.bak +61 -0
  203. package/dist/lib/oss/demo.js +36 -0
  204. package/dist/lib/oss/demo.js.bak +36 -0
  205. package/dist/lib/oss/index.js +138 -0
  206. package/dist/lib/oss/index.js.bak +138 -0
  207. package/dist/lib/polyfills/async-hooks.js +36 -0
  208. package/dist/lib/polyfills/async-hooks.js.bak +36 -0
  209. package/dist/lib/polyfills/index.js +58 -0
  210. package/dist/lib/polyfills/index.js.bak +58 -0
  211. package/dist/lib/types/index.js +37 -0
  212. package/dist/lib/types/index.js.bak +37 -0
  213. package/dist/lib/us-keyboard-layout.js +1457 -0
  214. package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
  215. package/dist/lib/us-keyboard-layout.js.bak +1457 -0
  216. package/dist/lib/utils.js +148 -0
  217. package/dist/lib/utils.js.bak +148 -0
  218. package/dist/lib/zod-schema-utils.js +97 -0
  219. package/dist/lib/zod-schema-utils.js.bak +97 -0
  220. package/dist/types/baseDB.d.ts +25 -0
  221. package/dist/types/baseDB.d.ts.bak +25 -0
  222. package/dist/types/build/copy-static.d.ts +31 -0
  223. package/dist/types/build/copy-static.d.ts.bak +31 -0
  224. package/dist/types/build/rspack-config.d.ts +8 -0
  225. package/dist/types/build/rspack-config.d.ts.bak +8 -0
  226. package/dist/types/cli/cli-runner.d.ts +14 -0
  227. package/dist/types/cli/cli-runner.d.ts.bak +14 -0
  228. package/dist/types/cli/index.d.ts +2 -0
  229. package/dist/types/cli/index.d.ts.bak +2 -0
  230. package/dist/types/common.d.ts +12 -0
  231. package/dist/types/common.d.ts.bak +12 -0
  232. package/dist/types/constants/example-code.d.ts +2 -0
  233. package/dist/types/constants/example-code.d.ts.bak +2 -0
  234. package/dist/types/constants/index.d.ts +21 -0
  235. package/dist/types/constants/index.d.ts.bak +21 -0
  236. package/dist/types/env/basic.d.ts +6 -0
  237. package/dist/types/env/basic.d.ts.bak +6 -0
  238. package/dist/types/env/constants.d.ts +40 -0
  239. package/dist/types/env/constants.d.ts.bak +40 -0
  240. package/dist/types/env/global-config-manager.d.ts +32 -0
  241. package/dist/types/env/global-config-manager.d.ts.bak +32 -0
  242. package/dist/types/env/helper.d.ts +4 -0
  243. package/dist/types/env/helper.d.ts.bak +4 -0
  244. package/dist/types/env/index.d.ts +4 -0
  245. package/dist/types/env/index.d.ts.bak +4 -0
  246. package/dist/types/env/init-debug.d.ts +1 -0
  247. package/dist/types/env/init-debug.d.ts.bak +1 -0
  248. package/dist/types/env/model-config-manager.d.ts +25 -0
  249. package/dist/types/env/model-config-manager.d.ts.bak +25 -0
  250. package/dist/types/env/parse-model-config.d.ts +31 -0
  251. package/dist/types/env/parse-model-config.d.ts.bak +31 -0
  252. package/dist/types/env/types.d.ts +318 -0
  253. package/dist/types/env/types.d.ts.bak +318 -0
  254. package/dist/types/env/utils.d.ts +38 -0
  255. package/dist/types/env/utils.d.ts.bak +38 -0
  256. package/dist/types/extractor/constants.d.ts +1 -0
  257. package/dist/types/extractor/constants.d.ts.bak +1 -0
  258. package/dist/types/extractor/debug.d.ts +1 -0
  259. package/dist/types/extractor/debug.d.ts.bak +1 -0
  260. package/dist/types/extractor/dom-util.d.ts +56 -0
  261. package/dist/types/extractor/dom-util.d.ts.bak +56 -0
  262. package/dist/types/extractor/index.d.ts +32 -0
  263. package/dist/types/extractor/index.d.ts.bak +32 -0
  264. package/dist/types/extractor/locator.d.ts +9 -0
  265. package/dist/types/extractor/locator.d.ts.bak +9 -0
  266. package/dist/types/extractor/tree.d.ts +6 -0
  267. package/dist/types/extractor/tree.d.ts.bak +6 -0
  268. package/dist/types/extractor/util.d.ts +47 -0
  269. package/dist/types/extractor/util.d.ts.bak +47 -0
  270. package/dist/types/extractor/web-extractor.d.ts +19 -0
  271. package/dist/types/extractor/web-extractor.d.ts.bak +19 -0
  272. package/dist/types/img/box-select.d.ts +26 -0
  273. package/dist/types/img/box-select.d.ts.bak +26 -0
  274. package/dist/types/img/canvas-fallback.d.ts +105 -0
  275. package/dist/types/img/canvas-fallback.d.ts.bak +105 -0
  276. package/dist/types/img/get-photon.d.ts +19 -0
  277. package/dist/types/img/get-photon.d.ts.bak +19 -0
  278. package/dist/types/img/get-sharp.d.ts +3 -0
  279. package/dist/types/img/get-sharp.d.ts.bak +3 -0
  280. package/dist/types/img/index.d.ts +3 -0
  281. package/dist/types/img/index.d.ts.bak +3 -0
  282. package/dist/types/img/info.d.ts +29 -0
  283. package/dist/types/img/info.d.ts.bak +29 -0
  284. package/dist/types/img/transform.d.ts +107 -0
  285. package/dist/types/img/transform.d.ts.bak +107 -0
  286. package/dist/types/index.d.ts +4 -0
  287. package/dist/types/index.d.ts.bak +4 -0
  288. package/dist/types/logger.d.ts +5 -0
  289. package/dist/types/logger.d.ts.bak +5 -0
  290. package/dist/types/mcp/base-server.d.ts +93 -0
  291. package/dist/types/mcp/base-server.d.ts.bak +93 -0
  292. package/dist/types/mcp/base-tools.d.ts +79 -0
  293. package/dist/types/mcp/base-tools.d.ts.bak +79 -0
  294. package/dist/types/mcp/chrome-path.d.ts +2 -0
  295. package/dist/types/mcp/chrome-path.d.ts.bak +2 -0
  296. package/dist/types/mcp/index.d.ts +7 -0
  297. package/dist/types/mcp/index.d.ts.bak +7 -0
  298. package/dist/types/mcp/inject-report-html-plugin.d.ts +18 -0
  299. package/dist/types/mcp/inject-report-html-plugin.d.ts.bak +18 -0
  300. package/dist/types/mcp/launcher-helper.d.ts +94 -0
  301. package/dist/types/mcp/launcher-helper.d.ts.bak +94 -0
  302. package/dist/types/mcp/tool-generator.d.ts +10 -0
  303. package/dist/types/mcp/tool-generator.d.ts.bak +10 -0
  304. package/dist/types/mcp/types.d.ts +103 -0
  305. package/dist/types/mcp/types.d.ts.bak +103 -0
  306. package/dist/types/node/fs.d.ts +15 -0
  307. package/dist/types/node/fs.d.ts.bak +15 -0
  308. package/dist/types/node/index.d.ts +2 -0
  309. package/dist/types/node/index.d.ts.bak +2 -0
  310. package/dist/types/node/port.d.ts +8 -0
  311. package/dist/types/node/port.d.ts.bak +8 -0
  312. package/dist/types/oss/demo.d.ts +1 -0
  313. package/dist/types/oss/demo.d.ts.bak +1 -0
  314. package/dist/types/oss/index.d.ts +34 -0
  315. package/dist/types/oss/index.d.ts.bak +34 -0
  316. package/dist/types/polyfills/async-hooks.d.ts +6 -0
  317. package/dist/types/polyfills/async-hooks.d.ts.bak +6 -0
  318. package/dist/types/polyfills/index.d.ts +4 -0
  319. package/dist/types/polyfills/index.d.ts.bak +4 -0
  320. package/dist/types/types/index.d.ts +34 -0
  321. package/dist/types/types/index.d.ts.bak +34 -0
  322. package/dist/types/us-keyboard-layout.d.ts +32 -0
  323. package/dist/types/us-keyboard-layout.d.ts.bak +32 -0
  324. package/dist/types/utils.d.ts +34 -0
  325. package/dist/types/utils.d.ts.bak +34 -0
  326. package/dist/types/zod-schema-utils.d.ts +23 -0
  327. package/dist/types/zod-schema-utils.d.ts.bak +23 -0
  328. package/package.json +132 -0
  329. package/src/baseDB.ts +158 -0
  330. package/src/build/copy-static.ts +68 -0
  331. package/src/build/rspack-config.ts +12 -0
  332. package/src/cli/cli-runner.ts +224 -0
  333. package/src/cli/index.ts +8 -0
  334. package/src/common.ts +67 -0
  335. package/src/constants/example-code.ts +223 -0
  336. package/src/constants/index.ts +29 -0
  337. package/src/env/basic.ts +12 -0
  338. package/src/env/constants.ts +234 -0
  339. package/src/env/global-config-manager.ts +191 -0
  340. package/src/env/helper.ts +58 -0
  341. package/src/env/index.ts +4 -0
  342. package/src/env/init-debug.ts +34 -0
  343. package/src/env/model-config-manager.ts +149 -0
  344. package/src/env/parse-model-config.ts +294 -0
  345. package/src/env/types.ts +547 -0
  346. package/src/env/utils.ts +89 -0
  347. package/src/extractor/constants.ts +5 -0
  348. package/src/extractor/debug.ts +10 -0
  349. package/src/extractor/dom-util.ts +226 -0
  350. package/src/extractor/index.ts +48 -0
  351. package/src/extractor/locator.ts +469 -0
  352. package/src/extractor/tree.ts +179 -0
  353. package/src/extractor/util.ts +482 -0
  354. package/src/extractor/web-extractor.ts +481 -0
  355. package/src/img/box-select.ts +588 -0
  356. package/src/img/canvas-fallback.ts +393 -0
  357. package/src/img/get-photon.ts +108 -0
  358. package/src/img/get-sharp.ts +18 -0
  359. package/src/img/index.ts +26 -0
  360. package/src/img/info.ts +75 -0
  361. package/src/img/transform.ts +594 -0
  362. package/src/index.ts +8 -0
  363. package/src/logger.ts +96 -0
  364. package/src/mcp/base-server.ts +502 -0
  365. package/src/mcp/base-tools.ts +185 -0
  366. package/src/mcp/chrome-path.ts +48 -0
  367. package/src/mcp/index.ts +7 -0
  368. package/src/mcp/inject-report-html-plugin.ts +119 -0
  369. package/src/mcp/launcher-helper.ts +200 -0
  370. package/src/mcp/tool-generator.ts +429 -0
  371. package/src/mcp/types.ts +112 -0
  372. package/src/node/fs.ts +84 -0
  373. package/src/node/index.ts +2 -0
  374. package/src/node/port.ts +37 -0
  375. package/src/oss/demo.ts +61 -0
  376. package/src/oss/index.ts +187 -0
  377. package/src/polyfills/async-hooks.ts +6 -0
  378. package/src/polyfills/index.ts +4 -0
  379. package/src/types/index.ts +52 -0
  380. package/src/us-keyboard-layout.ts +723 -0
  381. package/src/utils.ts +149 -0
  382. package/src/zod-schema-utils.ts +133 -0
@@ -0,0 +1,547 @@
1
+ // config keys
2
+ export const MIDSCENE_MODEL_INIT_CONFIG_JSON =
3
+ 'MIDSCENE_MODEL_INIT_CONFIG_JSON';
4
+ export const MIDSCENE_MODEL_EXTRA_BODY_JSON = 'MIDSCENE_MODEL_EXTRA_BODY_JSON';
5
+ export const MIDSCENE_MODEL_NAME = 'MIDSCENE_MODEL_NAME';
6
+ export const MIDSCENE_DEBUG_MODEL_PROFILE = 'MIDSCENE_DEBUG_MODEL_PROFILE';
7
+ export const MIDSCENE_DEBUG_MODEL_RESPONSE = 'MIDSCENE_DEBUG_MODEL_RESPONSE';
8
+ export const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG =
9
+ 'MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG';
10
+ export const MIDSCENE_DEBUG_MODE = 'MIDSCENE_DEBUG_MODE';
11
+ export const MIDSCENE_MCP_USE_PUPPETEER_MODE =
12
+ 'MIDSCENE_MCP_USE_PUPPETEER_MODE';
13
+ export const MIDSCENE_MCP_CHROME_PATH = 'MIDSCENE_MCP_CHROME_PATH';
14
+ export const MIDSCENE_MCP_ANDROID_MODE = 'MIDSCENE_MCP_ANDROID_MODE';
15
+ export const DOCKER_CONTAINER = 'DOCKER_CONTAINER';
16
+
17
+ // Observability
18
+ export const MIDSCENE_LANGSMITH_DEBUG = 'MIDSCENE_LANGSMITH_DEBUG';
19
+ export const MIDSCENE_LANGFUSE_DEBUG = 'MIDSCENE_LANGFUSE_DEBUG';
20
+
21
+ export const MIDSCENE_MODEL_SOCKS_PROXY = 'MIDSCENE_MODEL_SOCKS_PROXY';
22
+ export const MIDSCENE_MODEL_HTTP_PROXY = 'MIDSCENE_MODEL_HTTP_PROXY';
23
+
24
+ // New primary names for public API
25
+ export const MIDSCENE_MODEL_API_KEY = 'MIDSCENE_MODEL_API_KEY';
26
+ export const MIDSCENE_MODEL_BASE_URL = 'MIDSCENE_MODEL_BASE_URL';
27
+ export const MIDSCENE_MODEL_MAX_TOKENS = 'MIDSCENE_MODEL_MAX_TOKENS';
28
+ export const MIDSCENE_MODEL_TIMEOUT = 'MIDSCENE_MODEL_TIMEOUT';
29
+ export const MIDSCENE_MODEL_TEMPERATURE = 'MIDSCENE_MODEL_TEMPERATURE';
30
+ export const MIDSCENE_MODEL_RETRY_COUNT = 'MIDSCENE_MODEL_RETRY_COUNT';
31
+ export const MIDSCENE_MODEL_RETRY_INTERVAL = 'MIDSCENE_MODEL_RETRY_INTERVAL';
32
+ export const MIDSCENE_MODEL_REASONING_EFFORT =
33
+ 'MIDSCENE_MODEL_REASONING_EFFORT';
34
+ export const MIDSCENE_MODEL_REASONING_ENABLED =
35
+ 'MIDSCENE_MODEL_REASONING_ENABLED';
36
+ export const MIDSCENE_MODEL_REASONING_BUDGET =
37
+ 'MIDSCENE_MODEL_REASONING_BUDGET';
38
+
39
+ /**
40
+ * @deprecated Use MIDSCENE_MODEL_API_KEY instead. This is kept for backward compatibility.
41
+ */
42
+ export const OPENAI_API_KEY = 'OPENAI_API_KEY';
43
+ /**
44
+ * @deprecated Use MIDSCENE_MODEL_BASE_URL instead. This is kept for backward compatibility.
45
+ */
46
+ export const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
47
+ /**
48
+ * @deprecated Use MIDSCENE_MODEL_INIT_CONFIG_JSON instead. This is kept for backward compatibility.
49
+ */
50
+ export const MIDSCENE_OPENAI_INIT_CONFIG_JSON =
51
+ 'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
52
+ /**
53
+ * @deprecated Use MIDSCENE_MODEL_HTTP_PROXY instead. This is kept for backward compatibility.
54
+ */
55
+ export const MIDSCENE_OPENAI_HTTP_PROXY = 'MIDSCENE_OPENAI_HTTP_PROXY';
56
+ /**
57
+ * @deprecated Use MIDSCENE_MODEL_SOCKS_PROXY instead. This is kept for backward compatibility.
58
+ */
59
+ export const MIDSCENE_OPENAI_SOCKS_PROXY = 'MIDSCENE_OPENAI_SOCKS_PROXY';
60
+ /**
61
+ * @deprecated Use MIDSCENE_MODEL_MAX_TOKENS instead. This is kept for backward compatibility.
62
+ */
63
+ export const OPENAI_MAX_TOKENS = 'OPENAI_MAX_TOKENS';
64
+
65
+ export const MIDSCENE_ADB_PATH = 'MIDSCENE_ADB_PATH';
66
+ export const MIDSCENE_ADB_REMOTE_HOST = 'MIDSCENE_ADB_REMOTE_HOST';
67
+ export const MIDSCENE_ADB_REMOTE_PORT = 'MIDSCENE_ADB_REMOTE_PORT';
68
+ export const MIDSCENE_ANDROID_IME_STRATEGY = 'MIDSCENE_ANDROID_IME_STRATEGY';
69
+
70
+ export const MIDSCENE_IOS_DEVICE_UDID = 'MIDSCENE_IOS_DEVICE_UDID';
71
+ export const MIDSCENE_IOS_SIMULATOR_UDID = 'MIDSCENE_IOS_SIMULATOR_UDID';
72
+
73
+ export const MIDSCENE_CACHE = 'MIDSCENE_CACHE';
74
+ export const MIDSCENE_USE_VLM_UI_TARS = 'MIDSCENE_USE_VLM_UI_TARS';
75
+ export const MIDSCENE_USE_QWEN_VL = 'MIDSCENE_USE_QWEN_VL';
76
+ export const MIDSCENE_USE_QWEN3_VL = 'MIDSCENE_USE_QWEN3_VL';
77
+ export const MIDSCENE_USE_DOUBAO_VISION = 'MIDSCENE_USE_DOUBAO_VISION';
78
+ export const MIDSCENE_USE_GEMINI = 'MIDSCENE_USE_GEMINI';
79
+ export const MIDSCENE_USE_VL_MODEL = 'MIDSCENE_USE_VL_MODEL';
80
+ export const MATCH_BY_POSITION = 'MATCH_BY_POSITION';
81
+ export const MIDSCENE_REPORT_TAG_NAME = 'MIDSCENE_REPORT_TAG_NAME';
82
+ export const MIDSCENE_REPORT_QUIET = 'MIDSCENE_REPORT_QUIET';
83
+
84
+ export const MIDSCENE_PREFERRED_LANGUAGE = 'MIDSCENE_PREFERRED_LANGUAGE';
85
+
86
+ export const MIDSCENE_CACHE_MAX_FILENAME_LENGTH =
87
+ 'MIDSCENE_CACHE_MAX_FILENAME_LENGTH';
88
+
89
+ export const MIDSCENE_REPLANNING_CYCLE_LIMIT =
90
+ 'MIDSCENE_REPLANNING_CYCLE_LIMIT';
91
+
92
+ export const MIDSCENE_RUN_DIR = 'MIDSCENE_RUN_DIR';
93
+
94
+ // OSS Report Upload
95
+ export const MIDSCENE_OSS_ENABLE = 'MIDSCENE_OSS_ENABLE';
96
+ export const MIDSCENE_OSS_TOKEN_URL = 'MIDSCENE_OSS_TOKEN_URL';
97
+ export const MIDSCENE_OSS_TOKEN_RESPONSE_PATH =
98
+ 'MIDSCENE_OSS_TOKEN_RESPONSE_PATH';
99
+ export const MIDSCENE_OSS_REGION = 'MIDSCENE_OSS_REGION';
100
+ export const MIDSCENE_OSS_BUCKET = 'MIDSCENE_OSS_BUCKET';
101
+ export const MIDSCENE_OSS_ENDPOINT = 'MIDSCENE_OSS_ENDPOINT';
102
+ export const MIDSCENE_OSS_PREFIX = 'MIDSCENE_OSS_PREFIX';
103
+ export const MIDSCENE_OSS_DOMAIN = 'MIDSCENE_OSS_DOMAIN';
104
+
105
+ // Report optimization
106
+ export const MIDSCENE_REPORT_JPEG_QUALITY = 'MIDSCENE_REPORT_JPEG_QUALITY';
107
+
108
+ // INSIGHT (unified VQA and Grounding)
109
+ export const MIDSCENE_INSIGHT_MODEL_NAME = 'MIDSCENE_INSIGHT_MODEL_NAME';
110
+ export const MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY =
111
+ 'MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY';
112
+ export const MIDSCENE_INSIGHT_MODEL_HTTP_PROXY =
113
+ 'MIDSCENE_INSIGHT_MODEL_HTTP_PROXY';
114
+ export const MIDSCENE_INSIGHT_MODEL_BASE_URL =
115
+ 'MIDSCENE_INSIGHT_MODEL_BASE_URL';
116
+ export const MIDSCENE_INSIGHT_MODEL_API_KEY = 'MIDSCENE_INSIGHT_MODEL_API_KEY';
117
+ export const MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON =
118
+ 'MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON';
119
+ export const MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON =
120
+ 'MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON';
121
+ export const MIDSCENE_INSIGHT_MODEL_TIMEOUT = 'MIDSCENE_INSIGHT_MODEL_TIMEOUT';
122
+ export const MIDSCENE_INSIGHT_MODEL_TEMPERATURE =
123
+ 'MIDSCENE_INSIGHT_MODEL_TEMPERATURE';
124
+ export const MIDSCENE_INSIGHT_MODEL_RETRY_COUNT =
125
+ 'MIDSCENE_INSIGHT_MODEL_RETRY_COUNT';
126
+ export const MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL =
127
+ 'MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL';
128
+ export const MIDSCENE_INSIGHT_MODEL_FAMILY = 'MIDSCENE_INSIGHT_MODEL_FAMILY';
129
+ export const MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT =
130
+ 'MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT';
131
+ export const MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED =
132
+ 'MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED';
133
+ export const MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET =
134
+ 'MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET';
135
+
136
+ // PLANNING
137
+ export const MIDSCENE_PLANNING_MODEL_NAME = 'MIDSCENE_PLANNING_MODEL_NAME';
138
+ export const MIDSCENE_PLANNING_MODEL_SOCKS_PROXY =
139
+ 'MIDSCENE_PLANNING_MODEL_SOCKS_PROXY';
140
+ export const MIDSCENE_PLANNING_MODEL_HTTP_PROXY =
141
+ 'MIDSCENE_PLANNING_MODEL_HTTP_PROXY';
142
+ export const MIDSCENE_PLANNING_MODEL_BASE_URL =
143
+ 'MIDSCENE_PLANNING_MODEL_BASE_URL';
144
+ export const MIDSCENE_PLANNING_MODEL_API_KEY =
145
+ 'MIDSCENE_PLANNING_MODEL_API_KEY';
146
+ export const MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON =
147
+ 'MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON';
148
+ export const MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON =
149
+ 'MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON';
150
+ export const MIDSCENE_PLANNING_MODEL_TIMEOUT =
151
+ 'MIDSCENE_PLANNING_MODEL_TIMEOUT';
152
+ export const MIDSCENE_PLANNING_MODEL_TEMPERATURE =
153
+ 'MIDSCENE_PLANNING_MODEL_TEMPERATURE';
154
+ export const MIDSCENE_PLANNING_MODEL_RETRY_COUNT =
155
+ 'MIDSCENE_PLANNING_MODEL_RETRY_COUNT';
156
+ export const MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL =
157
+ 'MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL';
158
+ export const MIDSCENE_PLANNING_MODEL_FAMILY = 'MIDSCENE_PLANNING_MODEL_FAMILY';
159
+ export const MIDSCENE_PLANNING_MODEL_REASONING_EFFORT =
160
+ 'MIDSCENE_PLANNING_MODEL_REASONING_EFFORT';
161
+ export const MIDSCENE_PLANNING_MODEL_REASONING_ENABLED =
162
+ 'MIDSCENE_PLANNING_MODEL_REASONING_ENABLED';
163
+ export const MIDSCENE_PLANNING_MODEL_REASONING_BUDGET =
164
+ 'MIDSCENE_PLANNING_MODEL_REASONING_BUDGET';
165
+ export const MIDSCENE_MODEL_FAMILY = 'MIDSCENE_MODEL_FAMILY';
166
+
167
+ /**
168
+ * env keys declared but unused
169
+ */
170
+ export const UNUSED_ENV_KEYS = [MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG];
171
+
172
+ /**
173
+ * env keys for debug or basic run
174
+ * can not be override by overrideAIConfig
175
+ */
176
+ export const BASIC_ENV_KEYS = [
177
+ MIDSCENE_DEBUG_MODE,
178
+ MIDSCENE_DEBUG_MODEL_PROFILE,
179
+ MIDSCENE_DEBUG_MODEL_RESPONSE,
180
+ MIDSCENE_RUN_DIR,
181
+ ] as const;
182
+
183
+ export const BOOLEAN_ENV_KEYS = [
184
+ MIDSCENE_CACHE,
185
+ MIDSCENE_MCP_USE_PUPPETEER_MODE,
186
+ MIDSCENE_MCP_ANDROID_MODE,
187
+ MIDSCENE_LANGSMITH_DEBUG,
188
+ MIDSCENE_LANGFUSE_DEBUG,
189
+ MIDSCENE_REPORT_QUIET,
190
+ ] as const;
191
+
192
+ export const NUMBER_ENV_KEYS = [
193
+ MIDSCENE_MODEL_MAX_TOKENS,
194
+ MIDSCENE_CACHE_MAX_FILENAME_LENGTH,
195
+ MIDSCENE_REPLANNING_CYCLE_LIMIT,
196
+ ] as const;
197
+
198
+ export const STRING_ENV_KEYS = [
199
+ MIDSCENE_MODEL_MAX_TOKENS,
200
+ OPENAI_MAX_TOKENS,
201
+ MIDSCENE_ADB_PATH,
202
+ MIDSCENE_ADB_REMOTE_HOST,
203
+ MIDSCENE_ADB_REMOTE_PORT,
204
+ MIDSCENE_ANDROID_IME_STRATEGY,
205
+ MIDSCENE_IOS_DEVICE_UDID,
206
+ MIDSCENE_IOS_SIMULATOR_UDID,
207
+ MIDSCENE_REPORT_TAG_NAME,
208
+ MIDSCENE_PREFERRED_LANGUAGE,
209
+ MATCH_BY_POSITION,
210
+ MIDSCENE_MCP_CHROME_PATH,
211
+ DOCKER_CONTAINER,
212
+ ] as const;
213
+
214
+ /**
215
+ * Non model related env keys, used for globally controlling the behavior of midscene
216
+ * Can not be override by agent.modelConfig but can be override by overrideAIConfig
217
+ * Can be access at any time
218
+ */
219
+ export const GLOBAL_ENV_KEYS = [
220
+ ...BOOLEAN_ENV_KEYS,
221
+ ...NUMBER_ENV_KEYS,
222
+ ...STRING_ENV_KEYS,
223
+ ] as const;
224
+
225
+ /**
226
+ * Model related eve keys, used for declare which model to use.
227
+ * Can be override by both agent.modelConfig and overrideAIConfig
228
+ * Can only be access after agent.constructor
229
+ */
230
+ export const MODEL_ENV_KEYS = [
231
+ // model default
232
+ MIDSCENE_MODEL_NAME,
233
+ MIDSCENE_MODEL_INIT_CONFIG_JSON,
234
+ MIDSCENE_MODEL_EXTRA_BODY_JSON,
235
+ MIDSCENE_MODEL_API_KEY,
236
+ MIDSCENE_MODEL_BASE_URL,
237
+ MIDSCENE_MODEL_SOCKS_PROXY,
238
+ MIDSCENE_MODEL_HTTP_PROXY,
239
+ MIDSCENE_MODEL_TIMEOUT,
240
+ MIDSCENE_MODEL_TEMPERATURE,
241
+ MIDSCENE_MODEL_RETRY_COUNT,
242
+ MIDSCENE_MODEL_RETRY_INTERVAL,
243
+ MIDSCENE_MODEL_REASONING_EFFORT,
244
+ MIDSCENE_MODEL_REASONING_ENABLED,
245
+ MIDSCENE_MODEL_REASONING_BUDGET,
246
+ MIDSCENE_USE_VLM_UI_TARS,
247
+ MIDSCENE_USE_QWEN_VL,
248
+ MIDSCENE_USE_QWEN3_VL,
249
+ MIDSCENE_USE_DOUBAO_VISION,
250
+ MIDSCENE_USE_GEMINI,
251
+ MIDSCENE_USE_VL_MODEL,
252
+ // model default legacy
253
+ OPENAI_API_KEY,
254
+ OPENAI_BASE_URL,
255
+ MIDSCENE_OPENAI_INIT_CONFIG_JSON,
256
+ MIDSCENE_OPENAI_HTTP_PROXY,
257
+ MIDSCENE_OPENAI_SOCKS_PROXY,
258
+ // INSIGHT (unified VQA and Grounding)
259
+ MIDSCENE_INSIGHT_MODEL_NAME,
260
+ MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY,
261
+ MIDSCENE_INSIGHT_MODEL_HTTP_PROXY,
262
+ MIDSCENE_INSIGHT_MODEL_BASE_URL,
263
+ MIDSCENE_INSIGHT_MODEL_API_KEY,
264
+ MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON,
265
+ MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON,
266
+ MIDSCENE_INSIGHT_MODEL_TIMEOUT,
267
+ MIDSCENE_INSIGHT_MODEL_TEMPERATURE,
268
+ MIDSCENE_INSIGHT_MODEL_RETRY_COUNT,
269
+ MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL,
270
+ MIDSCENE_INSIGHT_MODEL_FAMILY,
271
+ MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT,
272
+ MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED,
273
+ MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET,
274
+ // PLANNING
275
+ MIDSCENE_PLANNING_MODEL_NAME,
276
+ MIDSCENE_PLANNING_MODEL_SOCKS_PROXY,
277
+ MIDSCENE_PLANNING_MODEL_HTTP_PROXY,
278
+ MIDSCENE_PLANNING_MODEL_BASE_URL,
279
+ MIDSCENE_PLANNING_MODEL_API_KEY,
280
+ MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON,
281
+ MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON,
282
+ MIDSCENE_PLANNING_MODEL_TIMEOUT,
283
+ MIDSCENE_PLANNING_MODEL_TEMPERATURE,
284
+ MIDSCENE_PLANNING_MODEL_RETRY_COUNT,
285
+ MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL,
286
+ MIDSCENE_PLANNING_MODEL_FAMILY,
287
+ MIDSCENE_PLANNING_MODEL_REASONING_EFFORT,
288
+ MIDSCENE_PLANNING_MODEL_REASONING_ENABLED,
289
+ MIDSCENE_PLANNING_MODEL_REASONING_BUDGET,
290
+ MIDSCENE_MODEL_FAMILY,
291
+ ] as const;
292
+
293
+ export const ALL_ENV_KEYS = [
294
+ ...UNUSED_ENV_KEYS,
295
+ ...BASIC_ENV_KEYS,
296
+ ...GLOBAL_ENV_KEYS,
297
+ ...MODEL_ENV_KEYS,
298
+ ] as const;
299
+
300
+ export type TEnvKeys = (typeof ALL_ENV_KEYS)[number];
301
+ export type TGlobalConfig = Record<TEnvKeys, string | undefined>;
302
+
303
+ /**
304
+ * valid Model family types
305
+ */
306
+ export type TModelFamily =
307
+ | 'qwen2.5-vl'
308
+ | 'qwen3-vl'
309
+ | 'qwen3.5'
310
+ | 'doubao-vision'
311
+ | 'doubao-seed'
312
+ | 'gemini'
313
+ | 'vlm-ui-tars'
314
+ | 'vlm-ui-tars-doubao'
315
+ | 'vlm-ui-tars-doubao-1.5'
316
+ | 'glm-v'
317
+ | 'auto-glm'
318
+ | 'auto-glm-multilingual'
319
+ | 'gpt-5';
320
+
321
+ export const MODEL_FAMILY_VALUES: TModelFamily[] = [
322
+ 'doubao-vision',
323
+ 'doubao-seed',
324
+ 'gemini',
325
+ 'qwen2.5-vl',
326
+ 'qwen3-vl',
327
+ 'qwen3.5',
328
+ 'vlm-ui-tars',
329
+ 'vlm-ui-tars-doubao',
330
+ 'vlm-ui-tars-doubao-1.5',
331
+ 'glm-v',
332
+ 'auto-glm',
333
+ 'auto-glm-multilingual',
334
+ 'gpt-5',
335
+ ];
336
+
337
+ export interface IModelConfigForInsight {
338
+ // model name
339
+ [MIDSCENE_INSIGHT_MODEL_NAME]: string;
340
+ // proxy
341
+ [MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY]?: string;
342
+ [MIDSCENE_INSIGHT_MODEL_HTTP_PROXY]?: string;
343
+ // OpenAI
344
+ [MIDSCENE_INSIGHT_MODEL_BASE_URL]?: string;
345
+ [MIDSCENE_INSIGHT_MODEL_API_KEY]?: string;
346
+ [MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON]?: string;
347
+ [MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON]?: string;
348
+ // timeout
349
+ [MIDSCENE_INSIGHT_MODEL_TIMEOUT]?: string;
350
+ // temperature
351
+ [MIDSCENE_INSIGHT_MODEL_TEMPERATURE]?: string;
352
+ // model family
353
+ [MIDSCENE_INSIGHT_MODEL_FAMILY]?: TModelFamily;
354
+ }
355
+
356
+ export interface IModelConfigForPlanning {
357
+ // model name
358
+ [MIDSCENE_PLANNING_MODEL_NAME]: string;
359
+ // proxy
360
+ [MIDSCENE_PLANNING_MODEL_SOCKS_PROXY]?: string;
361
+ [MIDSCENE_PLANNING_MODEL_HTTP_PROXY]?: string;
362
+ // OpenAI
363
+ [MIDSCENE_PLANNING_MODEL_BASE_URL]?: string;
364
+ [MIDSCENE_PLANNING_MODEL_API_KEY]?: string;
365
+ [MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON]?: string;
366
+ [MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON]?: string;
367
+ // timeout
368
+ [MIDSCENE_PLANNING_MODEL_TIMEOUT]?: string;
369
+ // temperature
370
+ [MIDSCENE_PLANNING_MODEL_TEMPERATURE]?: string;
371
+ // model family
372
+ [MIDSCENE_PLANNING_MODEL_FAMILY]?: TModelFamily;
373
+ }
374
+
375
+ /**
376
+ * Model configuration for Planning intent.
377
+ *
378
+ * IMPORTANT: Planning MUST use a vision language model (VL mode).
379
+ * DOM-based planning is not supported.
380
+ *
381
+ * Required: MIDSCENE_MODEL_FAMILY must be set to one of 「TModelFamily」
382
+ */
383
+ export interface IModelConfigForDefault {
384
+ // model name
385
+ [MIDSCENE_MODEL_NAME]: string;
386
+ // proxy
387
+ [MIDSCENE_MODEL_SOCKS_PROXY]?: string;
388
+ [MIDSCENE_MODEL_HTTP_PROXY]?: string;
389
+ // OpenAI
390
+ [MIDSCENE_MODEL_BASE_URL]?: string;
391
+ [MIDSCENE_MODEL_API_KEY]?: string;
392
+ [MIDSCENE_MODEL_INIT_CONFIG_JSON]?: string;
393
+ [MIDSCENE_MODEL_EXTRA_BODY_JSON]?: string;
394
+ // extra
395
+ [MIDSCENE_MODEL_FAMILY]?: TModelFamily;
396
+ // temperature
397
+ [MIDSCENE_MODEL_TEMPERATURE]?: string;
398
+ // reasoning effort
399
+ [MIDSCENE_MODEL_REASONING_EFFORT]?: string;
400
+ // enable reasoning (boolean as string)
401
+ [MIDSCENE_MODEL_REASONING_ENABLED]?: string;
402
+ // reasoning budget (number as string)
403
+ [MIDSCENE_MODEL_REASONING_BUDGET]?: string;
404
+ }
405
+
406
+ export interface IModelConfigForDefaultLegacy {
407
+ // model name
408
+ [MIDSCENE_MODEL_NAME]: string;
409
+ // proxy
410
+ [MIDSCENE_OPENAI_SOCKS_PROXY]?: string;
411
+ [MIDSCENE_OPENAI_HTTP_PROXY]?: string;
412
+ // OpenAI
413
+ [OPENAI_BASE_URL]?: string;
414
+ [OPENAI_API_KEY]?: string;
415
+ [MIDSCENE_OPENAI_INIT_CONFIG_JSON]?: string;
416
+ }
417
+
418
+ /**
419
+ * - insight: Visual Question Answering and Visual Grounding (unified)
420
+ * - planning: planning
421
+ * - default: all except insight、planning
422
+ */
423
+ export type TIntent = 'insight' | 'planning' | 'default';
424
+
425
+ /**
426
+ * Env-style model configuration map supplied directly to the agent.
427
+ * Numbers are allowed so callers can pass numeric env values (e.g. limits) without casting.
428
+ */
429
+ export type TModelConfig = Record<string, string | number>;
430
+
431
+ export enum UITarsModelVersion {
432
+ V1_0 = '1.0',
433
+ V1_5 = '1.5',
434
+ DOUBAO_1_5_15B = 'doubao-1.5-15B',
435
+ DOUBAO_1_5_20B = 'doubao-1.5-20B',
436
+ }
437
+
438
+ /**
439
+ * Callback to create custom OpenAI client instance
440
+ * @param config - Resolved model configuration including apiKey, baseURL, modelName, intent, etc.
441
+ * @returns OpenAI client instance (can be wrapped with langsmith, langfuse, etc.)
442
+ *
443
+ * Note: Wrapper functions like langsmith's wrapOpenAI() return the same OpenAI instance
444
+ * with enhanced behavior, so the return type remains compatible with OpenAI.
445
+ *
446
+ * Note: The return type is `any` in the shared package to avoid requiring openai as a dependency.
447
+ * The actual implementation should return an OpenAI instance.
448
+ *
449
+ * @example
450
+ * ```typescript
451
+ * import OpenAI from 'openai';
452
+ * import { wrapOpenAI } from 'langsmith/wrappers';
453
+ *
454
+ * createOpenAIClient: async (openai, opts) => {
455
+ * // Wrap with langsmith for planning tasks
456
+ * if (opts.baseURL?.includes('planning')) {
457
+ * return wrapOpenAI(openai, { metadata: { task: 'planning' } });
458
+ * }
459
+ *
460
+ * return openai;
461
+ * }
462
+ * ```
463
+ */
464
+ export type CreateOpenAIClientFn = (
465
+ openAIInstance: any,
466
+ options: Record<string, unknown>,
467
+ ) => Promise<any>; // OpenAI instance, but typed as `any` to avoid dependency
468
+
469
+ export interface IModelConfig {
470
+ /**
471
+ * proxy
472
+ */
473
+ socksProxy?: string;
474
+ httpProxy?: string;
475
+ /**
476
+ * model
477
+ */
478
+ modelName: string;
479
+ /**
480
+ * OpenAI
481
+ */
482
+ openaiBaseURL?: string;
483
+ openaiApiKey?: string;
484
+ openaiExtraConfig?: Record<string, unknown>;
485
+ /**
486
+ * Extra body parameters merged into each chat completion request body.
487
+ * Unlike openaiExtraConfig (which configures the OpenAI client instance),
488
+ * this is spread directly into the completion.create() call body.
489
+ * Example: { "chat_template_kwargs": { "enable_thinking": true } }
490
+ */
491
+ extraBody?: Record<string, unknown>;
492
+ /**
493
+ * Timeout for API calls in milliseconds.
494
+ * If not set, uses OpenAI SDK default (10 minutes).
495
+ */
496
+ timeout?: number;
497
+ /**
498
+ * Temperature for model sampling.
499
+ */
500
+ temperature?: number;
501
+ /**
502
+ * Number of retries when AI call fails.
503
+ * Default is 1 (retry once after failure).
504
+ */
505
+ retryCount?: number;
506
+ /**
507
+ * Interval between retries in milliseconds.
508
+ * Default is 2000.
509
+ */
510
+ retryInterval?: number;
511
+ /**
512
+ * Reasoning effort level for the model.
513
+ * Passed through to model-family-specific parameters (e.g., reasoning_effort for doubao, reasoning.effort for gpt-5).
514
+ */
515
+ reasoningEffort?: string;
516
+ /**
517
+ * Enable/disable reasoning for the model.
518
+ * Passed through to model-family-specific parameters (e.g., enable_thinking for qwen, thinking.type for doubao/glm-v).
519
+ */
520
+ reasoningEnabled?: boolean;
521
+ /**
522
+ * Reasoning token budget for the model.
523
+ * Passed through to model-family-specific parameters (e.g., thinking_budget for qwen).
524
+ */
525
+ reasoningBudget?: number;
526
+ /**
527
+ * Model family - unified model configuration
528
+ * Maps directly to model families like 'qwen2.5-vl', 'qwen3-vl', 'doubao-vision', 'doubao-seed', etc.
529
+ */
530
+ modelFamily?: TModelFamily;
531
+ uiTarsModelVersion?: UITarsModelVersion;
532
+ modelDescription: string;
533
+ /**
534
+ * original intent from the config
535
+ */
536
+ intent: TIntent;
537
+ /**
538
+ * Custom OpenAI client factory function
539
+ *
540
+ * If provided, this function will be called to create OpenAI client instances
541
+ * for each AI call, allowing you to:
542
+ * - Wrap clients with observability tools (langsmith, langfuse)
543
+ * - Use custom OpenAI-compatible clients
544
+ * - Apply different configurations based on intent
545
+ */
546
+ createOpenAIClient?: CreateOpenAIClientFn;
547
+ }
@@ -0,0 +1,89 @@
1
+ import { GlobalConfigManager } from './global-config-manager';
2
+ import { ModelConfigManager } from './model-config-manager';
3
+ import {
4
+ type GLOBAL_ENV_KEYS,
5
+ MIDSCENE_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
+ /**
17
+ * Interface for devices that support getTimestamp method.
18
+ * This is a minimal interface to avoid circular dependencies with @midscene/core.
19
+ */
20
+ export interface DeviceWithTimestamp {
21
+ getTimestamp?: () => Promise<number>;
22
+ }
23
+
24
+ /**
25
+ * Get the current timestamp, optionally from the target device.
26
+ *
27
+ * When useDeviceTimestamp is enabled and a device with getTimestamp is provided,
28
+ * this function will return the device's time. Otherwise, it returns the system time.
29
+ *
30
+ * This is useful when:
31
+ * - Testing on devices with different time zones
32
+ * - Debugging time-sensitive features
33
+ * - The system clock and device clock are not synchronized
34
+ *
35
+ * @param device Optional device interface that supports getTimestamp
36
+ * @param useDeviceTimestamp Whether to use device timestamp (from agent config)
37
+ * @returns Timestamp in milliseconds
38
+ *
39
+ * @example
40
+ * // Without device - always returns system time
41
+ * const systemTime = await getCurrentTime();
42
+ *
43
+ * @example
44
+ * // With device and config enabled - returns device time
45
+ * const deviceTime = await getCurrentTime(androidDevice, true);
46
+ */
47
+ export async function getCurrentTime(
48
+ device?: DeviceWithTimestamp,
49
+ useDeviceTimestamp?: boolean,
50
+ ): Promise<number> {
51
+ if (useDeviceTimestamp && device?.getTimestamp) {
52
+ try {
53
+ return await device.getTimestamp();
54
+ } catch (error) {
55
+ // Fall back to system time if device time retrieval fails
56
+ console.warn(
57
+ `Failed to get device time, falling back to system time: ${error}`,
58
+ );
59
+ return Date.now();
60
+ }
61
+ }
62
+
63
+ return Date.now();
64
+ }
65
+
66
+ export const getPreferredLanguage = () => {
67
+ const prefer = globalConfigManager.getEnvConfigValue(
68
+ MIDSCENE_PREFERRED_LANGUAGE,
69
+ );
70
+ if (prefer) {
71
+ return prefer;
72
+ }
73
+
74
+ const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
75
+ const isChina = timeZone === 'Asia/Shanghai';
76
+ return isChina ? 'Chinese' : 'English';
77
+ };
78
+
79
+ export const overrideAIConfig = (
80
+ newConfig: Partial<
81
+ Record<
82
+ (typeof GLOBAL_ENV_KEYS)[number] | (typeof MODEL_ENV_KEYS)[number],
83
+ string
84
+ >
85
+ >,
86
+ extendMode = false, // true: merge with global config, false: override global config
87
+ ) => {
88
+ globalConfigManager.overrideAIConfig(newConfig, extendMode);
89
+ };
@@ -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();