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