@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,212 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- decideModelConfigFromEnv: ()=>decideModelConfigFromEnv,
28
- decideModelConfigFromIntentConfig: ()=>decideModelConfigFromIntentConfig,
29
- decideOpenaiSdkConfig: ()=>decideOpenaiSdkConfig
30
- });
31
- const external_constants_js_namespaceObject = require("./constants.js");
32
- const external_logger_js_namespaceObject = require("../logger.js");
33
- const external_utils_js_namespaceObject = require("../utils.js");
34
- const external_helper_js_namespaceObject = require("./helper.js");
35
- const external_init_debug_js_namespaceObject = require("./init-debug.js");
36
- const external_parse_js_namespaceObject = require("./parse.js");
37
- const KEYS_MAP = {
38
- VQA: external_constants_js_namespaceObject.VQA_MODEL_CONFIG_KEYS,
39
- grounding: external_constants_js_namespaceObject.GROUNDING_MODEL_CONFIG_KEYS,
40
- planning: external_constants_js_namespaceObject.PLANNING_MODEL_CONFIG_KEYS,
41
- default: external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS
42
- };
43
- const decideOpenaiSdkConfig = ({ keys, provider, valueAssert })=>{
44
- (0, external_init_debug_js_namespaceObject.initDebugConfig)();
45
- const debugLog = (0, external_logger_js_namespaceObject.getDebug)('ai:config');
46
- const socksProxy = provider[keys.socksProxy];
47
- const httpProxy = provider[keys.httpProxy];
48
- const vlMode = provider[keys.vlMode];
49
- debugLog('enter decideOpenaiSdkConfig with keys:', keys);
50
- if (provider[keys.openaiUseAzureDeprecated]) {
51
- debugLog(`provider has ${keys.openaiUseAzureDeprecated} with value${provider[keys.openaiUseAzureDeprecated]}`);
52
- const openaiBaseURL = provider[keys.openaiBaseURL];
53
- const openaiApiKey = provider[keys.openaiApiKey];
54
- const openaiExtraConfig = (0, external_helper_js_namespaceObject.parseJson)(keys.openaiExtraConfig, provider[keys.openaiExtraConfig]);
55
- valueAssert(openaiApiKey, keys.openaiApiKey, keys.openaiUseAzureDeprecated);
56
- return {
57
- socksProxy,
58
- httpProxy,
59
- vlModeRaw: vlMode,
60
- openaiUseAzureDeprecated: true,
61
- openaiApiKey,
62
- openaiBaseURL,
63
- openaiExtraConfig
64
- };
65
- }
66
- if (provider[keys.useAzureOpenai]) {
67
- debugLog(`provider has ${keys.useAzureOpenai} with value ${provider[keys.useAzureOpenai]}`);
68
- const azureOpenaiScope = provider[keys.azureOpenaiScope];
69
- const azureOpenaiKey = provider[keys.azureOpenaiKey];
70
- const azureOpenaiEndpoint = provider[keys.azureOpenaiEndpoint];
71
- const azureOpenaiDeployment = provider[keys.azureOpenaiDeployment];
72
- const azureOpenaiApiVersion = provider[keys.azureOpenaiApiVersion];
73
- const azureExtraConfig = (0, external_helper_js_namespaceObject.parseJson)(keys.azureExtraConfig, provider[keys.azureExtraConfig]);
74
- const openaiExtraConfig = (0, external_helper_js_namespaceObject.parseJson)(keys.openaiExtraConfig, provider[keys.openaiExtraConfig]);
75
- valueAssert(azureOpenaiKey, keys.azureOpenaiKey, keys.useAzureOpenai);
76
- return {
77
- socksProxy,
78
- httpProxy,
79
- vlModeRaw: vlMode,
80
- useAzureOpenai: true,
81
- azureOpenaiScope,
82
- azureOpenaiKey,
83
- azureOpenaiEndpoint,
84
- azureOpenaiDeployment,
85
- azureOpenaiApiVersion,
86
- azureExtraConfig,
87
- openaiExtraConfig
88
- };
89
- }
90
- if (provider[keys.useAnthropicSdk]) {
91
- debugLog(`provider has ${keys.useAnthropicSdk} with value ${provider[keys.useAnthropicSdk]}`);
92
- const anthropicApiKey = provider[keys.anthropicApiKey];
93
- valueAssert(anthropicApiKey, keys.anthropicApiKey, keys.useAnthropicSdk);
94
- return {
95
- socksProxy,
96
- httpProxy,
97
- useAnthropicSdk: true,
98
- anthropicApiKey
99
- };
100
- }
101
- {
102
- debugLog('provider has no specific model SDK declared');
103
- const openaiBaseURL = provider[keys.openaiBaseURL];
104
- const openaiApiKey = provider[keys.openaiApiKey];
105
- const openaiExtraConfig = (0, external_helper_js_namespaceObject.parseJson)(keys.openaiExtraConfig, provider[keys.openaiExtraConfig]);
106
- valueAssert(openaiApiKey, keys.openaiApiKey);
107
- return {
108
- socksProxy,
109
- httpProxy,
110
- vlModeRaw: vlMode,
111
- openaiBaseURL,
112
- openaiApiKey,
113
- openaiExtraConfig
114
- };
115
- }
116
- };
117
- const getModelDescription = (vlMode, uiTarsVersion)=>{
118
- if (vlMode) if (uiTarsVersion) return `UI-TARS=${uiTarsVersion}`;
119
- else return `${vlMode} mode`;
120
- return '';
121
- };
122
- const decideModelConfigFromIntentConfig = (intent, intentConfig)=>{
123
- const debugLog = (0, external_logger_js_namespaceObject.getDebug)('ai:config');
124
- debugLog('decideModelConfig base on agent.modelConfig()');
125
- const keysForFn = KEYS_MAP[intent];
126
- const candidateModelNameFromConfig = intentConfig[keysForFn.modelName];
127
- debugLog('Got modelName from modelConfigFn', candidateModelNameFromConfig);
128
- const chosenKeys = (()=>{
129
- if (candidateModelNameFromConfig) {
130
- debugLog('query modelConfig from fn by intent got corresponding modelName, will get other corresponding keys');
131
- return keysForFn;
132
- }
133
- debugLog('query modelConfig from fn by intent got no corresponding modelName, will get other keys by default');
134
- (0, external_utils_js_namespaceObject.assert)(intentConfig[external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS.modelName], `The return value of agent.modelConfig do not have a valid value with key ${external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS.modelName}.`);
135
- return external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS;
136
- })();
137
- const result = decideOpenaiSdkConfig({
138
- keys: chosenKeys,
139
- provider: intentConfig,
140
- valueAssert: (0, external_helper_js_namespaceObject.createAssert)(chosenKeys.modelName, 'modelConfig', candidateModelNameFromConfig)
141
- });
142
- const { vlMode, uiTarsVersion } = (0, external_parse_js_namespaceObject.parseVlModeAndUiTarsModelVersionFromRawValue)(result.vlModeRaw);
143
- const modelDescription = getModelDescription(vlMode, uiTarsVersion);
144
- const finalResult = {
145
- ...result,
146
- modelName: intentConfig[chosenKeys.modelName],
147
- vlMode,
148
- uiTarsModelVersion: uiTarsVersion,
149
- modelDescription,
150
- from: 'modelConfig',
151
- intent
152
- };
153
- debugLog(`decideModelConfig result by agent.modelConfig() with intent ${intent}:`, (0, external_helper_js_namespaceObject.maskConfig)(finalResult));
154
- return finalResult;
155
- };
156
- const decideModelConfigFromEnv = (intent, allEnvConfig)=>{
157
- (0, external_init_debug_js_namespaceObject.initDebugConfig)();
158
- const debugLog = (0, external_logger_js_namespaceObject.getDebug)('ai:config');
159
- const keysForEnv = 'default' === intent ? external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS_LEGACY : KEYS_MAP[intent];
160
- if ('default' !== intent && allEnvConfig[keysForEnv.modelName]) {
161
- const modelName = allEnvConfig[keysForEnv.modelName];
162
- debugLog(`Got intent ${intent} corresponding modelName ${modelName} by key ${keysForEnv.modelName} from globalConfig, will get other config by intent.`);
163
- const result = decideOpenaiSdkConfig({
164
- keys: keysForEnv,
165
- provider: allEnvConfig,
166
- valueAssert: (0, external_helper_js_namespaceObject.createAssert)(keysForEnv.modelName, 'process.env', modelName)
167
- });
168
- const { vlMode, uiTarsVersion } = (0, external_parse_js_namespaceObject.parseVlModeAndUiTarsModelVersionFromRawValue)(result.vlModeRaw);
169
- const modelDescription = getModelDescription(vlMode, uiTarsVersion);
170
- const finalResult = {
171
- ...result,
172
- modelName,
173
- vlMode,
174
- uiTarsModelVersion: uiTarsVersion,
175
- modelDescription,
176
- from: 'env',
177
- intent
178
- };
179
- debugLog(`decideModelConfig result by process.env with intent ${intent}:`, (0, external_helper_js_namespaceObject.maskConfig)(finalResult));
180
- return finalResult;
181
- }
182
- debugLog(`decideModelConfig as legacy logic with intent ${intent}.`);
183
- const result = decideOpenaiSdkConfig({
184
- keys: external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS_LEGACY,
185
- provider: allEnvConfig,
186
- valueAssert: (0, external_helper_js_namespaceObject.createAssert)(external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS_LEGACY.modelName, 'process.env')
187
- });
188
- const { vlMode, uiTarsVersion } = (0, external_parse_js_namespaceObject.parseVlModeAndUiTarsFromGlobalConfig)(allEnvConfig);
189
- const modelDescription = getModelDescription(vlMode, uiTarsVersion);
190
- const finalResult = {
191
- ...result,
192
- modelName: allEnvConfig[external_constants_js_namespaceObject.DEFAULT_MODEL_CONFIG_KEYS_LEGACY.modelName] || 'gpt-4o',
193
- vlMode,
194
- uiTarsModelVersion: uiTarsVersion,
195
- modelDescription,
196
- from: 'legacy-env',
197
- intent
198
- };
199
- debugLog(`decideModelConfig result by legacy logic with intent ${intent}:`, (0, external_helper_js_namespaceObject.maskConfig)(finalResult));
200
- return finalResult;
201
- };
202
- exports.decideModelConfigFromEnv = __webpack_exports__.decideModelConfigFromEnv;
203
- exports.decideModelConfigFromIntentConfig = __webpack_exports__.decideModelConfigFromIntentConfig;
204
- exports.decideOpenaiSdkConfig = __webpack_exports__.decideOpenaiSdkConfig;
205
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
206
- "decideModelConfigFromEnv",
207
- "decideModelConfigFromIntentConfig",
208
- "decideOpenaiSdkConfig"
209
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
210
- Object.defineProperty(exports, '__esModule', {
211
- value: true
212
- });
@@ -1,106 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- parseVlModeAndUiTarsFromGlobalConfig: ()=>parseVlModeAndUiTarsFromGlobalConfig,
28
- parseVlModeAndUiTarsModelVersionFromRawValue: ()=>parseVlModeAndUiTarsModelVersionFromRawValue
29
- });
30
- const external_types_js_namespaceObject = require("./types.js");
31
- const parseVlModeAndUiTarsModelVersionFromRawValue = (vlModeRaw)=>{
32
- if (!vlModeRaw) return {
33
- vlMode: void 0,
34
- uiTarsVersion: void 0
35
- };
36
- if (!external_types_js_namespaceObject.VL_MODE_RAW_VALID_VALUES.includes(vlModeRaw)) throw new Error(`the value ${vlModeRaw} is not a valid VL_MODE value, must be one of ${external_types_js_namespaceObject.VL_MODE_RAW_VALID_VALUES}`);
37
- const raw = vlModeRaw;
38
- if ('vlm-ui-tars' === raw) return {
39
- vlMode: 'vlm-ui-tars',
40
- uiTarsVersion: external_types_js_namespaceObject.UITarsModelVersion.V1_0
41
- };
42
- if ('vlm-ui-tars-doubao' === raw || 'vlm-ui-tars-doubao-1.5' === raw) return {
43
- vlMode: 'vlm-ui-tars',
44
- uiTarsVersion: external_types_js_namespaceObject.UITarsModelVersion.DOUBAO_1_5_20B
45
- };
46
- return {
47
- vlMode: raw,
48
- uiTarsVersion: void 0
49
- };
50
- };
51
- const parseVlModeAndUiTarsFromGlobalConfig = (provider)=>{
52
- const isDoubao = provider[external_types_js_namespaceObject.MIDSCENE_USE_DOUBAO_VISION];
53
- const isQwen = provider[external_types_js_namespaceObject.MIDSCENE_USE_QWEN_VL];
54
- const isQwen3 = provider[external_types_js_namespaceObject.MIDSCENE_USE_QWEN3_VL];
55
- const isUiTars = provider[external_types_js_namespaceObject.MIDSCENE_USE_VLM_UI_TARS];
56
- const isGemini = provider[external_types_js_namespaceObject.MIDSCENE_USE_GEMINI];
57
- const enabledModes = [
58
- isDoubao && external_types_js_namespaceObject.MIDSCENE_USE_DOUBAO_VISION,
59
- isQwen && external_types_js_namespaceObject.MIDSCENE_USE_QWEN_VL,
60
- isQwen3 && external_types_js_namespaceObject.MIDSCENE_USE_QWEN3_VL,
61
- isUiTars && external_types_js_namespaceObject.MIDSCENE_USE_VLM_UI_TARS,
62
- isGemini && external_types_js_namespaceObject.MIDSCENE_USE_GEMINI
63
- ].filter(Boolean);
64
- if (enabledModes.length > 1) throw new Error(`Only one vision mode can be enabled at a time. Currently enabled modes: ${enabledModes.join(', ')}. Please disable all but one mode.`);
65
- if (isQwen3) return {
66
- vlMode: 'qwen3-vl',
67
- uiTarsVersion: void 0
68
- };
69
- if (isQwen) return {
70
- vlMode: 'qwen-vl',
71
- uiTarsVersion: void 0
72
- };
73
- if (isDoubao) return {
74
- vlMode: 'doubao-vision',
75
- uiTarsVersion: void 0
76
- };
77
- if (isGemini) return {
78
- vlMode: 'gemini',
79
- uiTarsVersion: void 0
80
- };
81
- if (isUiTars) if ('1' === isUiTars) return {
82
- vlMode: 'vlm-ui-tars',
83
- uiTarsVersion: external_types_js_namespaceObject.UITarsModelVersion.V1_0
84
- };
85
- else if ('DOUBAO' === isUiTars || 'DOUBAO-1.5' === isUiTars) return {
86
- vlMode: 'vlm-ui-tars',
87
- uiTarsVersion: external_types_js_namespaceObject.UITarsModelVersion.DOUBAO_1_5_20B
88
- };
89
- else return {
90
- vlMode: 'vlm-ui-tars',
91
- uiTarsVersion: `${isUiTars}`
92
- };
93
- return {
94
- vlMode: void 0,
95
- uiTarsVersion: void 0
96
- };
97
- };
98
- exports.parseVlModeAndUiTarsFromGlobalConfig = __webpack_exports__.parseVlModeAndUiTarsFromGlobalConfig;
99
- exports.parseVlModeAndUiTarsModelVersionFromRawValue = __webpack_exports__.parseVlModeAndUiTarsModelVersionFromRawValue;
100
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
101
- "parseVlModeAndUiTarsFromGlobalConfig",
102
- "parseVlModeAndUiTarsModelVersionFromRawValue"
103
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
104
- Object.defineProperty(exports, '__esModule', {
105
- value: true
106
- });
@@ -1,14 +0,0 @@
1
- import type { IModelConfig, TIntent } from './types';
2
- import { DEFAULT_MODEL_CONFIG_KEYS, DEFAULT_MODEL_CONFIG_KEYS_LEGACY, GROUNDING_MODEL_CONFIG_KEYS, PLANNING_MODEL_CONFIG_KEYS, VQA_MODEL_CONFIG_KEYS } from './constants';
3
- type TModelConfigKeys = typeof VQA_MODEL_CONFIG_KEYS | typeof GROUNDING_MODEL_CONFIG_KEYS | typeof PLANNING_MODEL_CONFIG_KEYS | typeof DEFAULT_MODEL_CONFIG_KEYS | typeof DEFAULT_MODEL_CONFIG_KEYS_LEGACY;
4
- /**
5
- * Choose OpenAI SDK config, such as OpenAI, AzureOpenAI, AnthropicSDK, etc.
6
- */
7
- export declare const decideOpenaiSdkConfig: ({ keys, provider, valueAssert, }: {
8
- keys: TModelConfigKeys;
9
- provider: Record<string, string | undefined>;
10
- valueAssert: (value: string | undefined, key: string, modelVendorFlag?: string) => void;
11
- }) => Omit<IModelConfig, "modelName" | "from" | "vlMode" | "uiTarsVersion" | "modelDescription" | "intent">;
12
- export declare const decideModelConfigFromIntentConfig: (intent: TIntent, intentConfig: Record<string, string | undefined>) => IModelConfig;
13
- export declare const decideModelConfigFromEnv: (intent: TIntent, allEnvConfig: Record<string, string | undefined>) => IModelConfig;
14
- export {};
@@ -1,12 +0,0 @@
1
- import { type TVlModeTypes, UITarsModelVersion } from './types';
2
- export declare const parseVlModeAndUiTarsModelVersionFromRawValue: (vlModeRaw?: string) => {
3
- vlMode?: TVlModeTypes;
4
- uiTarsVersion?: UITarsModelVersion;
5
- };
6
- /**
7
- * legacy logic of how to detect vlMode from process.env without intent
8
- */
9
- export declare const parseVlModeAndUiTarsFromGlobalConfig: (provider: Record<string, string | undefined>) => {
10
- vlMode?: TVlModeTypes;
11
- uiTarsVersion?: UITarsModelVersion;
12
- };
@@ -1,319 +0,0 @@
1
- import type {
2
- IModelConfig,
3
- TIntent,
4
- TVlModeTypes,
5
- UITarsModelVersion,
6
- } from './types';
7
-
8
- import {
9
- DEFAULT_MODEL_CONFIG_KEYS,
10
- DEFAULT_MODEL_CONFIG_KEYS_LEGACY,
11
- GROUNDING_MODEL_CONFIG_KEYS,
12
- PLANNING_MODEL_CONFIG_KEYS,
13
- VQA_MODEL_CONFIG_KEYS,
14
- } from './constants';
15
-
16
- import { getDebug } from '../logger';
17
- import { assert } from '../utils';
18
- import { createAssert, maskConfig, parseJson } from './helper';
19
- import { initDebugConfig } from './init-debug';
20
- import {
21
- parseVlModeAndUiTarsFromGlobalConfig,
22
- parseVlModeAndUiTarsModelVersionFromRawValue,
23
- } from './parse';
24
-
25
- type TModelConfigKeys =
26
- | typeof VQA_MODEL_CONFIG_KEYS
27
- | typeof GROUNDING_MODEL_CONFIG_KEYS
28
- | typeof PLANNING_MODEL_CONFIG_KEYS
29
- | typeof DEFAULT_MODEL_CONFIG_KEYS
30
- | typeof DEFAULT_MODEL_CONFIG_KEYS_LEGACY;
31
-
32
- const KEYS_MAP: Record<TIntent, TModelConfigKeys> = {
33
- VQA: VQA_MODEL_CONFIG_KEYS,
34
- grounding: GROUNDING_MODEL_CONFIG_KEYS,
35
- planning: PLANNING_MODEL_CONFIG_KEYS,
36
- default: DEFAULT_MODEL_CONFIG_KEYS,
37
- } as const;
38
-
39
- /**
40
- * Choose OpenAI SDK config, such as OpenAI, AzureOpenAI, AnthropicSDK, etc.
41
- */
42
- export const decideOpenaiSdkConfig = ({
43
- keys,
44
- provider,
45
- valueAssert,
46
- }: {
47
- keys: TModelConfigKeys;
48
- provider: Record<string, string | undefined>;
49
- valueAssert: (
50
- value: string | undefined,
51
- key: string,
52
- modelVendorFlag?: string,
53
- ) => void;
54
- }): Omit<
55
- IModelConfig,
56
- | 'modelName'
57
- | 'from'
58
- | 'vlMode'
59
- | 'uiTarsVersion'
60
- | 'modelDescription'
61
- | 'intent'
62
- > => {
63
- initDebugConfig();
64
- const debugLog = getDebug('ai:config');
65
-
66
- const socksProxy = provider[keys.socksProxy];
67
- const httpProxy = provider[keys.httpProxy];
68
- const vlMode = provider[keys.vlMode];
69
-
70
- debugLog('enter decideOpenaiSdkConfig with keys:', keys);
71
- if (provider[keys.openaiUseAzureDeprecated]) {
72
- debugLog(
73
- `provider has ${keys.openaiUseAzureDeprecated} with value${provider[keys.openaiUseAzureDeprecated]}`,
74
- );
75
- const openaiBaseURL = provider[keys.openaiBaseURL];
76
- const openaiApiKey = provider[keys.openaiApiKey];
77
- const openaiExtraConfig = parseJson(
78
- keys.openaiExtraConfig,
79
- provider[keys.openaiExtraConfig],
80
- );
81
-
82
- valueAssert(openaiApiKey, keys.openaiApiKey, keys.openaiUseAzureDeprecated);
83
-
84
- return {
85
- socksProxy,
86
- httpProxy,
87
- vlModeRaw: vlMode,
88
- openaiUseAzureDeprecated: true,
89
- openaiApiKey,
90
- openaiBaseURL,
91
- openaiExtraConfig,
92
- };
93
- } else if (provider[keys.useAzureOpenai]) {
94
- debugLog(
95
- `provider has ${keys.useAzureOpenai} with value ${provider[keys.useAzureOpenai]}`,
96
- );
97
- const azureOpenaiScope = provider[keys.azureOpenaiScope];
98
-
99
- const azureOpenaiKey = provider[keys.azureOpenaiKey];
100
- const azureOpenaiEndpoint = provider[keys.azureOpenaiEndpoint];
101
- const azureOpenaiDeployment = provider[keys.azureOpenaiDeployment];
102
- const azureOpenaiApiVersion = provider[keys.azureOpenaiApiVersion];
103
-
104
- const azureExtraConfig = parseJson(
105
- keys.azureExtraConfig,
106
- provider[keys.azureExtraConfig],
107
- );
108
- const openaiExtraConfig = parseJson(
109
- keys.openaiExtraConfig,
110
- provider[keys.openaiExtraConfig],
111
- );
112
-
113
- valueAssert(azureOpenaiKey, keys.azureOpenaiKey, keys.useAzureOpenai);
114
-
115
- return {
116
- socksProxy,
117
- httpProxy,
118
- vlModeRaw: vlMode,
119
- useAzureOpenai: true,
120
- azureOpenaiScope,
121
- azureOpenaiKey,
122
- azureOpenaiEndpoint,
123
- azureOpenaiDeployment,
124
- azureOpenaiApiVersion,
125
- azureExtraConfig,
126
- openaiExtraConfig,
127
- };
128
- } else if (provider[keys.useAnthropicSdk]) {
129
- debugLog(
130
- `provider has ${keys.useAnthropicSdk} with value ${provider[keys.useAnthropicSdk]}`,
131
- );
132
- const anthropicApiKey = provider[keys.anthropicApiKey];
133
- valueAssert(anthropicApiKey, keys.anthropicApiKey, keys.useAnthropicSdk);
134
-
135
- return {
136
- socksProxy,
137
- httpProxy,
138
- useAnthropicSdk: true,
139
- anthropicApiKey,
140
- };
141
- } else {
142
- debugLog('provider has no specific model SDK declared');
143
- const openaiBaseURL = provider[keys.openaiBaseURL];
144
- const openaiApiKey = provider[keys.openaiApiKey];
145
- const openaiExtraConfig = parseJson(
146
- keys.openaiExtraConfig,
147
- provider[keys.openaiExtraConfig],
148
- );
149
-
150
- valueAssert(openaiApiKey, keys.openaiApiKey);
151
-
152
- return {
153
- socksProxy,
154
- httpProxy,
155
- vlModeRaw: vlMode,
156
- openaiBaseURL,
157
- openaiApiKey,
158
- openaiExtraConfig,
159
- };
160
- }
161
- };
162
-
163
- const getModelDescription = (
164
- vlMode: TVlModeTypes | undefined,
165
- uiTarsVersion: UITarsModelVersion | undefined,
166
- ) => {
167
- if (vlMode) {
168
- if (uiTarsVersion) {
169
- return `UI-TARS=${uiTarsVersion}`;
170
- } else {
171
- return `${vlMode} mode`;
172
- }
173
- }
174
- return '';
175
- };
176
-
177
- export const decideModelConfigFromIntentConfig = (
178
- intent: TIntent,
179
- intentConfig: Record<string, string | undefined>,
180
- ): IModelConfig => {
181
- const debugLog = getDebug('ai:config');
182
-
183
- debugLog('decideModelConfig base on agent.modelConfig()');
184
-
185
- const keysForFn = KEYS_MAP[intent];
186
-
187
- const candidateModelNameFromConfig = intentConfig[keysForFn.modelName];
188
-
189
- debugLog('Got modelName from modelConfigFn', candidateModelNameFromConfig);
190
-
191
- const chosenKeys = (() => {
192
- if (candidateModelNameFromConfig) {
193
- debugLog(
194
- 'query modelConfig from fn by intent got corresponding modelName, will get other corresponding keys',
195
- );
196
- return keysForFn;
197
- } else {
198
- debugLog(
199
- 'query modelConfig from fn by intent got no corresponding modelName, will get other keys by default',
200
- );
201
- assert(
202
- intentConfig[DEFAULT_MODEL_CONFIG_KEYS.modelName],
203
- `The return value of agent.modelConfig do not have a valid value with key ${DEFAULT_MODEL_CONFIG_KEYS.modelName}.`,
204
- );
205
- return DEFAULT_MODEL_CONFIG_KEYS;
206
- }
207
- })();
208
-
209
- const result = decideOpenaiSdkConfig({
210
- keys: chosenKeys,
211
- provider: intentConfig,
212
- valueAssert: createAssert(
213
- chosenKeys.modelName,
214
- 'modelConfig',
215
- candidateModelNameFromConfig,
216
- ),
217
- });
218
-
219
- const { vlMode, uiTarsVersion } =
220
- parseVlModeAndUiTarsModelVersionFromRawValue(result.vlModeRaw);
221
-
222
- const modelDescription = getModelDescription(vlMode, uiTarsVersion);
223
-
224
- const finalResult: IModelConfig = {
225
- ...result,
226
- modelName: intentConfig[chosenKeys.modelName]!,
227
- vlMode,
228
- uiTarsModelVersion: uiTarsVersion,
229
- modelDescription,
230
- from: 'modelConfig',
231
- intent,
232
- };
233
-
234
- debugLog(
235
- `decideModelConfig result by agent.modelConfig() with intent ${intent}:`,
236
- maskConfig(finalResult),
237
- );
238
- return finalResult;
239
- };
240
-
241
- export const decideModelConfigFromEnv = (
242
- intent: TIntent,
243
- allEnvConfig: Record<string, string | undefined>,
244
- ): IModelConfig => {
245
- initDebugConfig();
246
- const debugLog = getDebug('ai:config');
247
-
248
- const keysForEnv =
249
- intent === 'default' ? DEFAULT_MODEL_CONFIG_KEYS_LEGACY : KEYS_MAP[intent];
250
-
251
- if (intent !== 'default' && allEnvConfig[keysForEnv.modelName]) {
252
- const modelName = allEnvConfig[keysForEnv.modelName]!;
253
-
254
- debugLog(
255
- `Got intent ${intent} corresponding modelName ${modelName} by key ${keysForEnv.modelName} from globalConfig, will get other config by intent.`,
256
- );
257
-
258
- const result = decideOpenaiSdkConfig({
259
- keys: keysForEnv,
260
- provider: allEnvConfig,
261
- valueAssert: createAssert(keysForEnv.modelName, 'process.env', modelName),
262
- });
263
-
264
- const { vlMode, uiTarsVersion } =
265
- parseVlModeAndUiTarsModelVersionFromRawValue(result.vlModeRaw);
266
- const modelDescription = getModelDescription(vlMode, uiTarsVersion);
267
-
268
- const finalResult: IModelConfig = {
269
- ...result,
270
- modelName,
271
- vlMode,
272
- uiTarsModelVersion: uiTarsVersion,
273
- modelDescription,
274
- from: 'env',
275
- intent,
276
- };
277
-
278
- debugLog(
279
- `decideModelConfig result by process.env with intent ${intent}:`,
280
- maskConfig(finalResult),
281
- );
282
- return finalResult;
283
- }
284
-
285
- debugLog(`decideModelConfig as legacy logic with intent ${intent}.`);
286
-
287
- // TODO: when fallback to legacy logic, prefer to read MIDSCENE_OPENAI_API_KEY rather than OPENAI_API_KEY
288
- const result = decideOpenaiSdkConfig({
289
- keys: DEFAULT_MODEL_CONFIG_KEYS_LEGACY,
290
- provider: allEnvConfig,
291
- valueAssert: createAssert(
292
- DEFAULT_MODEL_CONFIG_KEYS_LEGACY.modelName,
293
- 'process.env',
294
- ),
295
- });
296
-
297
- const { vlMode, uiTarsVersion } =
298
- parseVlModeAndUiTarsFromGlobalConfig(allEnvConfig);
299
-
300
- const modelDescription = getModelDescription(vlMode, uiTarsVersion);
301
-
302
- const finalResult: IModelConfig = {
303
- ...result,
304
- // In the legacy logic, GPT-4o is the default model.
305
- modelName:
306
- allEnvConfig[DEFAULT_MODEL_CONFIG_KEYS_LEGACY.modelName] || 'gpt-4o',
307
- vlMode,
308
- uiTarsModelVersion: uiTarsVersion,
309
- modelDescription,
310
- from: 'legacy-env',
311
- intent,
312
- };
313
-
314
- debugLog(
315
- `decideModelConfig result by legacy logic with intent ${intent}:`,
316
- maskConfig(finalResult),
317
- );
318
- return finalResult;
319
- };