@aiscene/shared 1.6.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 (212) hide show
  1. package/README.md +9 -0
  2. package/dist/es/baseDB.mjs +109 -0
  3. package/dist/es/build/copy-static.mjs +31 -0
  4. package/dist/es/build/rspack-config.mjs +4 -0
  5. package/dist/es/cli/cli-runner.mjs +140 -0
  6. package/dist/es/cli/index.mjs +2 -0
  7. package/dist/es/common.mjs +37 -0
  8. package/dist/es/constants/example-code.mjs +223 -0
  9. package/dist/es/constants/index.mjs +23 -0
  10. package/dist/es/env/basic.mjs +6 -0
  11. package/dist/es/env/constants.mjs +70 -0
  12. package/dist/es/env/global-config-manager.mjs +94 -0
  13. package/dist/es/env/helper.mjs +43 -0
  14. package/dist/es/env/index.mjs +5 -0
  15. package/dist/es/env/init-debug.mjs +18 -0
  16. package/dist/es/env/model-config-manager.mjs +79 -0
  17. package/dist/es/env/parse-model-config.mjs +132 -0
  18. package/dist/es/env/types.mjs +211 -0
  19. package/dist/es/env/utils.mjs +26 -0
  20. package/dist/es/extractor/constants.mjs +2 -0
  21. package/dist/es/extractor/debug.mjs +6 -0
  22. package/dist/es/extractor/dom-util.mjs +92 -0
  23. package/dist/es/extractor/index.mjs +5 -0
  24. package/dist/es/extractor/locator.mjs +250 -0
  25. package/dist/es/extractor/tree.mjs +78 -0
  26. package/dist/es/extractor/util.mjs +245 -0
  27. package/dist/es/extractor/web-extractor.mjs +303 -0
  28. package/dist/es/img/box-select.mjs +824 -0
  29. package/dist/es/img/canvas-fallback.mjs +238 -0
  30. package/dist/es/img/get-photon.mjs +45 -0
  31. package/dist/es/img/get-sharp.mjs +11 -0
  32. package/dist/es/img/index.mjs +4 -0
  33. package/dist/es/img/info.mjs +29 -0
  34. package/dist/es/img/transform.mjs +275 -0
  35. package/dist/es/index.mjs +4 -0
  36. package/dist/es/logger.mjs +70 -0
  37. package/dist/es/mcp/base-server.mjs +281 -0
  38. package/dist/es/mcp/base-tools.mjs +91 -0
  39. package/dist/es/mcp/chrome-path.mjs +35 -0
  40. package/dist/es/mcp/index.mjs +7 -0
  41. package/dist/es/mcp/inject-report-html-plugin.mjs +53 -0
  42. package/dist/es/mcp/launcher-helper.mjs +52 -0
  43. package/dist/es/mcp/tool-generator.mjs +297 -0
  44. package/dist/es/mcp/types.mjs +3 -0
  45. package/dist/es/node/fs.mjs +44 -0
  46. package/dist/es/node/index.mjs +2 -0
  47. package/dist/es/node/port.mjs +24 -0
  48. package/dist/es/polyfills/async-hooks.mjs +2 -0
  49. package/dist/es/polyfills/index.mjs +1 -0
  50. package/dist/es/types/index.mjs +3 -0
  51. package/dist/es/us-keyboard-layout.mjs +1414 -0
  52. package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
  53. package/dist/es/utils.mjs +77 -0
  54. package/dist/es/zod-schema-utils.mjs +54 -0
  55. package/dist/lib/baseDB.js +149 -0
  56. package/dist/lib/build/copy-static.js +79 -0
  57. package/dist/lib/build/rspack-config.js +38 -0
  58. package/dist/lib/cli/cli-runner.js +196 -0
  59. package/dist/lib/cli/index.js +48 -0
  60. package/dist/lib/common.js +93 -0
  61. package/dist/lib/constants/example-code.js +260 -0
  62. package/dist/lib/constants/index.js +96 -0
  63. package/dist/lib/env/basic.js +40 -0
  64. package/dist/lib/env/constants.js +113 -0
  65. package/dist/lib/env/global-config-manager.js +128 -0
  66. package/dist/lib/env/helper.js +80 -0
  67. package/dist/lib/env/index.js +90 -0
  68. package/dist/lib/env/init-debug.js +52 -0
  69. package/dist/lib/env/model-config-manager.js +113 -0
  70. package/dist/lib/env/parse-model-config.js +178 -0
  71. package/dist/lib/env/types.js +518 -0
  72. package/dist/lib/env/utils.js +72 -0
  73. package/dist/lib/extractor/constants.js +42 -0
  74. package/dist/lib/extractor/debug.js +12 -0
  75. package/dist/lib/extractor/dom-util.js +153 -0
  76. package/dist/lib/extractor/index.js +81 -0
  77. package/dist/lib/extractor/locator.js +296 -0
  78. package/dist/lib/extractor/tree.js +124 -0
  79. package/dist/lib/extractor/util.js +336 -0
  80. package/dist/lib/extractor/web-extractor.js +349 -0
  81. package/dist/lib/img/box-select.js +875 -0
  82. package/dist/lib/img/canvas-fallback.js +305 -0
  83. package/dist/lib/img/get-photon.js +82 -0
  84. package/dist/lib/img/get-sharp.js +45 -0
  85. package/dist/lib/img/index.js +92 -0
  86. package/dist/lib/img/info.js +83 -0
  87. package/dist/lib/img/transform.js +364 -0
  88. package/dist/lib/index.js +47 -0
  89. package/dist/lib/logger.js +123 -0
  90. package/dist/lib/mcp/base-server.js +331 -0
  91. package/dist/lib/mcp/base-tools.js +125 -0
  92. package/dist/lib/mcp/chrome-path.js +72 -0
  93. package/dist/lib/mcp/index.js +100 -0
  94. package/dist/lib/mcp/inject-report-html-plugin.js +98 -0
  95. package/dist/lib/mcp/launcher-helper.js +86 -0
  96. package/dist/lib/mcp/tool-generator.js +334 -0
  97. package/dist/lib/mcp/types.js +40 -0
  98. package/dist/lib/node/fs.js +97 -0
  99. package/dist/lib/node/index.js +65 -0
  100. package/dist/lib/node/port.js +61 -0
  101. package/dist/lib/polyfills/async-hooks.js +36 -0
  102. package/dist/lib/polyfills/index.js +58 -0
  103. package/dist/lib/types/index.js +37 -0
  104. package/dist/lib/us-keyboard-layout.js +1457 -0
  105. package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
  106. package/dist/lib/utils.js +156 -0
  107. package/dist/lib/zod-schema-utils.js +97 -0
  108. package/dist/types/baseDB.d.ts +25 -0
  109. package/dist/types/build/copy-static.d.ts +31 -0
  110. package/dist/types/build/rspack-config.d.ts +8 -0
  111. package/dist/types/cli/cli-runner.d.ts +14 -0
  112. package/dist/types/cli/index.d.ts +2 -0
  113. package/dist/types/common.d.ts +12 -0
  114. package/dist/types/constants/example-code.d.ts +2 -0
  115. package/dist/types/constants/index.d.ts +21 -0
  116. package/dist/types/env/basic.d.ts +6 -0
  117. package/dist/types/env/constants.d.ts +40 -0
  118. package/dist/types/env/global-config-manager.d.ts +32 -0
  119. package/dist/types/env/helper.d.ts +4 -0
  120. package/dist/types/env/index.d.ts +4 -0
  121. package/dist/types/env/init-debug.d.ts +1 -0
  122. package/dist/types/env/model-config-manager.d.ts +25 -0
  123. package/dist/types/env/parse-model-config.d.ts +31 -0
  124. package/dist/types/env/types.d.ts +309 -0
  125. package/dist/types/env/utils.d.ts +38 -0
  126. package/dist/types/extractor/constants.d.ts +1 -0
  127. package/dist/types/extractor/debug.d.ts +1 -0
  128. package/dist/types/extractor/dom-util.d.ts +56 -0
  129. package/dist/types/extractor/index.d.ts +32 -0
  130. package/dist/types/extractor/locator.d.ts +9 -0
  131. package/dist/types/extractor/tree.d.ts +6 -0
  132. package/dist/types/extractor/util.d.ts +47 -0
  133. package/dist/types/extractor/web-extractor.d.ts +19 -0
  134. package/dist/types/img/box-select.d.ts +26 -0
  135. package/dist/types/img/canvas-fallback.d.ts +105 -0
  136. package/dist/types/img/get-photon.d.ts +19 -0
  137. package/dist/types/img/get-sharp.d.ts +3 -0
  138. package/dist/types/img/index.d.ts +3 -0
  139. package/dist/types/img/info.d.ts +29 -0
  140. package/dist/types/img/transform.d.ts +98 -0
  141. package/dist/types/index.d.ts +4 -0
  142. package/dist/types/logger.d.ts +6 -0
  143. package/dist/types/mcp/base-server.d.ts +93 -0
  144. package/dist/types/mcp/base-tools.d.ts +79 -0
  145. package/dist/types/mcp/chrome-path.d.ts +2 -0
  146. package/dist/types/mcp/index.d.ts +7 -0
  147. package/dist/types/mcp/inject-report-html-plugin.d.ts +18 -0
  148. package/dist/types/mcp/launcher-helper.d.ts +94 -0
  149. package/dist/types/mcp/tool-generator.d.ts +10 -0
  150. package/dist/types/mcp/types.d.ts +103 -0
  151. package/dist/types/node/fs.d.ts +15 -0
  152. package/dist/types/node/index.d.ts +2 -0
  153. package/dist/types/node/port.d.ts +8 -0
  154. package/dist/types/polyfills/async-hooks.d.ts +6 -0
  155. package/dist/types/polyfills/index.d.ts +4 -0
  156. package/dist/types/types/index.d.ts +34 -0
  157. package/dist/types/us-keyboard-layout.d.ts +32 -0
  158. package/dist/types/utils.d.ts +37 -0
  159. package/dist/types/zod-schema-utils.d.ts +23 -0
  160. package/package.json +121 -0
  161. package/src/baseDB.ts +158 -0
  162. package/src/build/copy-static.ts +68 -0
  163. package/src/build/rspack-config.ts +12 -0
  164. package/src/cli/cli-runner.ts +224 -0
  165. package/src/cli/index.ts +8 -0
  166. package/src/common.ts +67 -0
  167. package/src/constants/example-code.ts +223 -0
  168. package/src/constants/index.ts +29 -0
  169. package/src/env/basic.ts +12 -0
  170. package/src/env/constants.ts +234 -0
  171. package/src/env/global-config-manager.ts +191 -0
  172. package/src/env/helper.ts +58 -0
  173. package/src/env/index.ts +4 -0
  174. package/src/env/init-debug.ts +34 -0
  175. package/src/env/model-config-manager.ts +149 -0
  176. package/src/env/parse-model-config.ts +294 -0
  177. package/src/env/types.ts +533 -0
  178. package/src/env/utils.ts +89 -0
  179. package/src/extractor/constants.ts +5 -0
  180. package/src/extractor/debug.ts +10 -0
  181. package/src/extractor/dom-util.ts +226 -0
  182. package/src/extractor/index.ts +48 -0
  183. package/src/extractor/locator.ts +469 -0
  184. package/src/extractor/tree.ts +179 -0
  185. package/src/extractor/util.ts +482 -0
  186. package/src/extractor/web-extractor.ts +481 -0
  187. package/src/img/box-select.ts +588 -0
  188. package/src/img/canvas-fallback.ts +393 -0
  189. package/src/img/get-photon.ts +108 -0
  190. package/src/img/get-sharp.ts +18 -0
  191. package/src/img/index.ts +25 -0
  192. package/src/img/info.ts +75 -0
  193. package/src/img/transform.ts +553 -0
  194. package/src/index.ts +8 -0
  195. package/src/logger.ts +107 -0
  196. package/src/mcp/base-server.ts +502 -0
  197. package/src/mcp/base-tools.ts +185 -0
  198. package/src/mcp/chrome-path.ts +48 -0
  199. package/src/mcp/index.ts +7 -0
  200. package/src/mcp/inject-report-html-plugin.ts +119 -0
  201. package/src/mcp/launcher-helper.ts +200 -0
  202. package/src/mcp/tool-generator.ts +429 -0
  203. package/src/mcp/types.ts +112 -0
  204. package/src/node/fs.ts +84 -0
  205. package/src/node/index.ts +2 -0
  206. package/src/node/port.ts +37 -0
  207. package/src/polyfills/async-hooks.ts +6 -0
  208. package/src/polyfills/index.ts +4 -0
  209. package/src/types/index.ts +52 -0
  210. package/src/us-keyboard-layout.ts +723 -0
  211. package/src/utils.ts +166 -0
  212. package/src/zod-schema-utils.ts +133 -0
@@ -0,0 +1,294 @@
1
+ import {
2
+ DEFAULT_MODEL_CONFIG_KEYS,
3
+ type DEFAULT_MODEL_CONFIG_KEYS_LEGACY,
4
+ INSIGHT_MODEL_CONFIG_KEYS,
5
+ PLANNING_MODEL_CONFIG_KEYS,
6
+ } from './constants';
7
+ import {
8
+ type IModelConfig,
9
+ MIDSCENE_MODEL_FAMILY,
10
+ MIDSCENE_OPENAI_HTTP_PROXY,
11
+ MIDSCENE_OPENAI_INIT_CONFIG_JSON,
12
+ MIDSCENE_OPENAI_SOCKS_PROXY,
13
+ MIDSCENE_USE_DOUBAO_VISION,
14
+ MIDSCENE_USE_GEMINI,
15
+ MIDSCENE_USE_QWEN3_VL,
16
+ MIDSCENE_USE_QWEN_VL,
17
+ MIDSCENE_USE_VLM_UI_TARS,
18
+ MODEL_FAMILY_VALUES,
19
+ OPENAI_API_KEY,
20
+ OPENAI_BASE_URL,
21
+ type TIntent,
22
+ type TModelFamily,
23
+ UITarsModelVersion,
24
+ } from './types';
25
+
26
+ import { getDebug } from '../logger';
27
+ import { assert } from '../utils';
28
+ import { maskConfig, parseJson } from './helper';
29
+ import { initDebugConfig } from './init-debug';
30
+
31
+ type TModelConfigKeys =
32
+ | typeof INSIGHT_MODEL_CONFIG_KEYS
33
+ | typeof PLANNING_MODEL_CONFIG_KEYS
34
+ | typeof DEFAULT_MODEL_CONFIG_KEYS
35
+ | typeof DEFAULT_MODEL_CONFIG_KEYS_LEGACY;
36
+
37
+ const KEYS_MAP: Record<TIntent, TModelConfigKeys> = {
38
+ insight: INSIGHT_MODEL_CONFIG_KEYS,
39
+ planning: PLANNING_MODEL_CONFIG_KEYS,
40
+ default: DEFAULT_MODEL_CONFIG_KEYS,
41
+ } as const;
42
+
43
+ /**
44
+ * Get UI-TARS model version from model family
45
+ * @param modelFamily - The model family value
46
+ * @returns UITarsModelVersion if the model family is a UI-TARS variant, undefined otherwise
47
+ */
48
+ export const getUITarsModelVersion = (
49
+ modelFamily?: TModelFamily,
50
+ ): UITarsModelVersion | undefined => {
51
+ // UI-TARS variants with version handling
52
+ if (modelFamily === 'vlm-ui-tars') {
53
+ return UITarsModelVersion.V1_0;
54
+ }
55
+
56
+ if (
57
+ modelFamily === 'vlm-ui-tars-doubao' ||
58
+ modelFamily === 'vlm-ui-tars-doubao-1.5'
59
+ ) {
60
+ return UITarsModelVersion.DOUBAO_1_5_20B;
61
+ }
62
+
63
+ return undefined;
64
+ };
65
+
66
+ /**
67
+ * Validate model family value
68
+ * @param modelFamily - The model family value to validate
69
+ * @throws Error if the model family is invalid
70
+ */
71
+ export const validateModelFamily = (modelFamily?: TModelFamily): void => {
72
+ if (modelFamily && !MODEL_FAMILY_VALUES.includes(modelFamily as any)) {
73
+ throw new Error(`Invalid MIDSCENE_MODEL_FAMILY value: ${modelFamily}`);
74
+ }
75
+ };
76
+
77
+ /**
78
+ * Convert legacy environment variables to model family
79
+ * @param provider - Environment variable provider (e.g., process.env)
80
+ * @returns The corresponding model family value, or undefined if no legacy config is found
81
+ */
82
+ export const legacyConfigToModelFamily = (
83
+ provider: Record<string, string | undefined>,
84
+ ): TModelFamily | undefined => {
85
+ const isDoubao = provider[MIDSCENE_USE_DOUBAO_VISION];
86
+ const isQwen = provider[MIDSCENE_USE_QWEN_VL];
87
+ const isQwen3 = provider[MIDSCENE_USE_QWEN3_VL];
88
+ const isUiTars = provider[MIDSCENE_USE_VLM_UI_TARS];
89
+ const isGemini = provider[MIDSCENE_USE_GEMINI];
90
+
91
+ const enabledModes = [
92
+ isDoubao && MIDSCENE_USE_DOUBAO_VISION,
93
+ isQwen && MIDSCENE_USE_QWEN_VL,
94
+ isQwen3 && MIDSCENE_USE_QWEN3_VL,
95
+ isUiTars && MIDSCENE_USE_VLM_UI_TARS,
96
+ isGemini && MIDSCENE_USE_GEMINI,
97
+ ].filter(Boolean);
98
+
99
+ if (enabledModes.length > 1) {
100
+ throw new Error(
101
+ `Only one vision mode can be enabled at a time. Currently enabled modes: ${enabledModes.join(', ')}. Please disable all but one mode.`,
102
+ );
103
+ }
104
+
105
+ // Simple modes that directly map to model family
106
+ if (isQwen3) return 'qwen3-vl';
107
+ if (isQwen) return 'qwen2.5-vl';
108
+ if (isDoubao) return 'doubao-vision';
109
+ if (isGemini) return 'gemini';
110
+
111
+ // UI-TARS with version detection
112
+ if (isUiTars) {
113
+ if (isUiTars === '1') {
114
+ return 'vlm-ui-tars';
115
+ } else if (isUiTars === 'DOUBAO' || isUiTars === 'DOUBAO-1.5') {
116
+ return 'vlm-ui-tars-doubao-1.5';
117
+ } else {
118
+ // Handle other UI-TARS versions
119
+ return 'vlm-ui-tars-doubao';
120
+ }
121
+ }
122
+
123
+ return undefined;
124
+ };
125
+
126
+ const getModelDescription = (
127
+ modelFamily: TModelFamily | undefined,
128
+ uiTarsModelVersion: UITarsModelVersion | undefined,
129
+ ) => {
130
+ if (uiTarsModelVersion) {
131
+ return `UI-TARS=${uiTarsModelVersion}`;
132
+ }
133
+ if (modelFamily) {
134
+ return `${modelFamily} mode`;
135
+ }
136
+ return '';
137
+ };
138
+
139
+ /**
140
+ * Parse OpenAI SDK config
141
+ */
142
+ export const parseOpenaiSdkConfig = ({
143
+ keys,
144
+ provider,
145
+ useLegacyLogic = false,
146
+ }: {
147
+ keys: TModelConfigKeys;
148
+ provider: Record<string, string | undefined>;
149
+ useLegacyLogic?: boolean;
150
+ }): IModelConfig => {
151
+ initDebugConfig();
152
+ const debugLog = getDebug('ai:config');
153
+
154
+ debugLog('enter parseOpenaiSdkConfig with keys:', keys);
155
+
156
+ const legacyAPIKey = useLegacyLogic ? provider[OPENAI_API_KEY] : undefined;
157
+ const legacyBaseURL = useLegacyLogic ? provider[OPENAI_BASE_URL] : undefined;
158
+ const legacySocksProxy = useLegacyLogic
159
+ ? provider[MIDSCENE_OPENAI_SOCKS_PROXY]
160
+ : undefined;
161
+ const legacyHttpProxy = useLegacyLogic
162
+ ? provider[MIDSCENE_OPENAI_HTTP_PROXY]
163
+ : undefined;
164
+ const legacyOpenaiExtraConfig = useLegacyLogic
165
+ ? provider[MIDSCENE_OPENAI_INIT_CONFIG_JSON]
166
+ : undefined;
167
+ const legacyModelFamily = useLegacyLogic
168
+ ? legacyConfigToModelFamily(provider)
169
+ : undefined;
170
+
171
+ const modelFamilyRaw = provider[keys.modelFamily] || legacyModelFamily;
172
+ const openaiApiKey: string | undefined =
173
+ provider[keys.openaiApiKey] || legacyAPIKey;
174
+ const openaiBaseURL: string | undefined =
175
+ provider[keys.openaiBaseURL] || legacyBaseURL;
176
+ const socksProxy: string | undefined =
177
+ provider[keys.socksProxy] || legacySocksProxy;
178
+ const httpProxy: string | undefined =
179
+ provider[keys.httpProxy] || legacyHttpProxy;
180
+ const modelName: string | undefined = provider[keys.modelName];
181
+ const openaiExtraConfigStr: string | undefined =
182
+ provider[keys.openaiExtraConfig];
183
+ const openaiExtraConfig = parseJson(
184
+ keys.openaiExtraConfig,
185
+ openaiExtraConfigStr || legacyOpenaiExtraConfig,
186
+ );
187
+ const extraBodyStr: string | undefined = provider[keys.extraBody];
188
+ const extraBody = parseJson(keys.extraBody, extraBodyStr);
189
+ const temperature = provider[keys.temperature]
190
+ ? Number(provider[keys.temperature])
191
+ : 0;
192
+
193
+ const modelFamily = modelFamilyRaw as unknown as TModelFamily;
194
+ validateModelFamily(modelFamily);
195
+ const uiTarsModelVersion = getUITarsModelVersion(modelFamily);
196
+
197
+ const modelDescription = getModelDescription(modelFamily, uiTarsModelVersion);
198
+
199
+ return {
200
+ socksProxy,
201
+ httpProxy,
202
+ openaiBaseURL,
203
+ openaiApiKey,
204
+ openaiExtraConfig,
205
+ extraBody,
206
+ modelFamily,
207
+ uiTarsModelVersion,
208
+ modelName: modelName!,
209
+ modelDescription,
210
+ intent: '-' as any,
211
+ timeout: provider[keys.timeout]
212
+ ? Number(provider[keys.timeout])
213
+ : undefined,
214
+ temperature,
215
+ retryCount: (() => {
216
+ if (!provider[keys.retryCount]) return 1;
217
+ const val = Number(provider[keys.retryCount]);
218
+ if (!Number.isFinite(val)) return 1;
219
+ if (val < 0)
220
+ throw new Error(`${keys.retryCount} must be non-negative, got ${val}`);
221
+ return val;
222
+ })(),
223
+ retryInterval: (() => {
224
+ if (!provider[keys.retryInterval]) return 2000;
225
+ const val = Number(provider[keys.retryInterval]);
226
+ if (!Number.isFinite(val)) return 2000;
227
+ if (val < 0)
228
+ throw new Error(
229
+ `${keys.retryInterval} must be non-negative, got ${val}`,
230
+ );
231
+ return val;
232
+ })(),
233
+ reasoningEffort: provider[keys.reasoningEffort]?.trim() || undefined,
234
+ reasoningEnabled: (() => {
235
+ const val = provider[keys.reasoningEnabled]?.trim()?.toLowerCase();
236
+ if (val === 'true' || val === '1') return true;
237
+ if (val === 'false' || val === '0') return false;
238
+ return undefined;
239
+ })(),
240
+ reasoningBudget: (() => {
241
+ const val = provider[keys.reasoningBudget]?.trim();
242
+ if (!val) return undefined;
243
+ const num = Number(val);
244
+ return Number.isFinite(num) ? num : undefined;
245
+ })(),
246
+ };
247
+ };
248
+
249
+ export const decideModelConfigFromIntentConfig = (
250
+ intent: TIntent,
251
+ configMap: Record<string, string | undefined>,
252
+ ): IModelConfig | undefined => {
253
+ const debugLog = getDebug('ai:config');
254
+
255
+ debugLog(
256
+ 'will decideModelConfig base on agent.modelConfig()',
257
+ intent,
258
+ maskConfig(configMap),
259
+ );
260
+
261
+ const keysForFn = KEYS_MAP[intent];
262
+ const modelName = configMap[keysForFn.modelName];
263
+
264
+ if (!modelName) {
265
+ debugLog('no modelName found for intent', intent);
266
+ return undefined;
267
+ }
268
+
269
+ const finalResult = parseOpenaiSdkConfig({
270
+ keys: keysForFn,
271
+ provider: configMap,
272
+ useLegacyLogic: intent === 'default',
273
+ });
274
+ finalResult.intent = intent;
275
+
276
+ debugLog(
277
+ 'decideModelConfig result by agent.modelConfig() with intent',
278
+ intent,
279
+ maskConfig({ ...finalResult }),
280
+ );
281
+
282
+ assert(
283
+ finalResult.openaiBaseURL,
284
+ `failed to get base URL of model (intent=${intent}). See https://midscenejs.com/model-strategy`,
285
+ );
286
+
287
+ if (!finalResult.modelName) {
288
+ console.warn(
289
+ `modelName is not set for intent ${intent}, this may cause unexpected behavior. See https://midscenejs.com/model-strategy`,
290
+ );
291
+ }
292
+
293
+ return finalResult;
294
+ };