@midscene/shared 1.10.5 → 1.10.6-beta-20260717061640.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.
- package/dist/es/env/constants.mjs +9 -5
- package/dist/es/env/parse-model-config.mjs +7 -1
- package/dist/es/env/types.mjs +7 -1
- package/dist/es/img/box-select.mjs +46 -1
- package/dist/es/img/get-photon.mjs +3 -6
- package/dist/es/img/info.mjs +19 -1
- package/dist/es/img/transform.mjs +56 -6
- package/dist/es/logger.mjs +23 -2
- package/dist/es/zod-schema-utils.mjs +0 -1
- package/dist/lib/env/constants.js +8 -4
- package/dist/lib/env/parse-model-config.js +7 -1
- package/dist/lib/env/types.js +15 -0
- package/dist/lib/img/box-select.js +46 -0
- package/dist/lib/img/get-photon.js +2 -5
- package/dist/lib/img/info.js +20 -1
- package/dist/lib/img/transform.js +56 -6
- package/dist/lib/logger.js +23 -2
- package/dist/lib/zod-schema-utils.js +0 -1
- package/dist/types/env/constants.d.ts +1 -0
- package/dist/types/env/types.d.ts +14 -2
- package/dist/types/img/get-photon.d.ts +13 -13
- package/dist/types/img/transform.d.ts +1 -1
- package/dist/types/recorder.d.ts +14 -0
- package/dist/types/zod-schema-utils.d.ts +1 -3
- package/package.json +1 -2
- package/src/env/constants.ts +8 -0
- package/src/env/parse-model-config.ts +8 -0
- package/src/env/types.ts +18 -0
- package/src/img/box-select.ts +92 -2
- package/src/img/get-photon.ts +17 -25
- package/src/img/info.ts +21 -1
- package/src/img/transform.ts +112 -70
- package/src/logger.ts +38 -3
- package/src/recorder.ts +15 -0
- package/src/zod-schema-utils.ts +1 -8
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MIDSCENE_INSIGHT_MODEL_API_KEY, MIDSCENE_INSIGHT_MODEL_BASE_URL, MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON, MIDSCENE_INSIGHT_MODEL_FAMILY, MIDSCENE_INSIGHT_MODEL_HTTP_PROXY, MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON, MIDSCENE_INSIGHT_MODEL_NAME, MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET, MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT, MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED, MIDSCENE_INSIGHT_MODEL_RETRY_COUNT, MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL, MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY, MIDSCENE_INSIGHT_MODEL_TEMPERATURE, MIDSCENE_INSIGHT_MODEL_TIMEOUT, MIDSCENE_MODEL_API_KEY, MIDSCENE_MODEL_BASE_URL, MIDSCENE_MODEL_EXTRA_BODY_JSON, MIDSCENE_MODEL_FAMILY, MIDSCENE_MODEL_HTTP_PROXY, MIDSCENE_MODEL_INIT_CONFIG_JSON, MIDSCENE_MODEL_NAME, MIDSCENE_MODEL_REASONING_BUDGET, MIDSCENE_MODEL_REASONING_EFFORT, MIDSCENE_MODEL_REASONING_ENABLED, MIDSCENE_MODEL_RETRY_COUNT, MIDSCENE_MODEL_RETRY_INTERVAL, MIDSCENE_MODEL_SOCKS_PROXY, MIDSCENE_MODEL_TEMPERATURE, MIDSCENE_MODEL_TIMEOUT, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_API_KEY, MIDSCENE_PLANNING_MODEL_BASE_URL, MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON, MIDSCENE_PLANNING_MODEL_FAMILY, MIDSCENE_PLANNING_MODEL_HTTP_PROXY, MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_MODEL_REASONING_BUDGET, MIDSCENE_PLANNING_MODEL_REASONING_EFFORT, MIDSCENE_PLANNING_MODEL_REASONING_ENABLED, MIDSCENE_PLANNING_MODEL_RETRY_COUNT, MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL, MIDSCENE_PLANNING_MODEL_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_TEMPERATURE, MIDSCENE_PLANNING_MODEL_TIMEOUT, OPENAI_API_KEY, OPENAI_BASE_URL } from "./types.mjs";
|
|
1
|
+
import { MIDSCENE_INSIGHT_MODEL_API_KEY, MIDSCENE_INSIGHT_MODEL_BASE_URL, MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON, MIDSCENE_INSIGHT_MODEL_FAMILY, MIDSCENE_INSIGHT_MODEL_HTTP_PROXY, MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON, MIDSCENE_INSIGHT_MODEL_NAME, MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET, MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT, MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED, MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT, MIDSCENE_INSIGHT_MODEL_RETRY_COUNT, MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL, MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY, MIDSCENE_INSIGHT_MODEL_TEMPERATURE, MIDSCENE_INSIGHT_MODEL_TIMEOUT, MIDSCENE_MODEL_API_KEY, MIDSCENE_MODEL_BASE_URL, MIDSCENE_MODEL_EXTRA_BODY_JSON, MIDSCENE_MODEL_FAMILY, MIDSCENE_MODEL_HTTP_PROXY, MIDSCENE_MODEL_INIT_CONFIG_JSON, MIDSCENE_MODEL_NAME, MIDSCENE_MODEL_REASONING_BUDGET, MIDSCENE_MODEL_REASONING_EFFORT, MIDSCENE_MODEL_REASONING_ENABLED, MIDSCENE_MODEL_RESPONSE_FORMAT, MIDSCENE_MODEL_RETRY_COUNT, MIDSCENE_MODEL_RETRY_INTERVAL, MIDSCENE_MODEL_SOCKS_PROXY, MIDSCENE_MODEL_TEMPERATURE, MIDSCENE_MODEL_TIMEOUT, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_API_KEY, MIDSCENE_PLANNING_MODEL_BASE_URL, MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON, MIDSCENE_PLANNING_MODEL_FAMILY, MIDSCENE_PLANNING_MODEL_HTTP_PROXY, MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_MODEL_REASONING_BUDGET, MIDSCENE_PLANNING_MODEL_REASONING_EFFORT, MIDSCENE_PLANNING_MODEL_REASONING_ENABLED, MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT, MIDSCENE_PLANNING_MODEL_RETRY_COUNT, MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL, MIDSCENE_PLANNING_MODEL_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_TEMPERATURE, MIDSCENE_PLANNING_MODEL_TIMEOUT, OPENAI_API_KEY, OPENAI_BASE_URL } from "./types.mjs";
|
|
2
2
|
const INSIGHT_MODEL_CONFIG_KEYS = {
|
|
3
3
|
modelName: MIDSCENE_INSIGHT_MODEL_NAME,
|
|
4
4
|
socksProxy: MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY,
|
|
@@ -14,7 +14,8 @@ const INSIGHT_MODEL_CONFIG_KEYS = {
|
|
|
14
14
|
retryInterval: MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL,
|
|
15
15
|
reasoningEffort: MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT,
|
|
16
16
|
reasoningEnabled: MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED,
|
|
17
|
-
reasoningBudget: MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET
|
|
17
|
+
reasoningBudget: MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET,
|
|
18
|
+
responseFormat: MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT
|
|
18
19
|
};
|
|
19
20
|
const PLANNING_MODEL_CONFIG_KEYS = {
|
|
20
21
|
modelName: MIDSCENE_PLANNING_MODEL_NAME,
|
|
@@ -31,7 +32,8 @@ const PLANNING_MODEL_CONFIG_KEYS = {
|
|
|
31
32
|
retryInterval: MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL,
|
|
32
33
|
reasoningEffort: MIDSCENE_PLANNING_MODEL_REASONING_EFFORT,
|
|
33
34
|
reasoningEnabled: MIDSCENE_PLANNING_MODEL_REASONING_ENABLED,
|
|
34
|
-
reasoningBudget: MIDSCENE_PLANNING_MODEL_REASONING_BUDGET
|
|
35
|
+
reasoningBudget: MIDSCENE_PLANNING_MODEL_REASONING_BUDGET,
|
|
36
|
+
responseFormat: MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT
|
|
35
37
|
};
|
|
36
38
|
const DEFAULT_MODEL_CONFIG_KEYS = {
|
|
37
39
|
modelName: MIDSCENE_MODEL_NAME,
|
|
@@ -48,7 +50,8 @@ const DEFAULT_MODEL_CONFIG_KEYS = {
|
|
|
48
50
|
retryInterval: MIDSCENE_MODEL_RETRY_INTERVAL,
|
|
49
51
|
reasoningEffort: MIDSCENE_MODEL_REASONING_EFFORT,
|
|
50
52
|
reasoningEnabled: MIDSCENE_MODEL_REASONING_ENABLED,
|
|
51
|
-
reasoningBudget: MIDSCENE_MODEL_REASONING_BUDGET
|
|
53
|
+
reasoningBudget: MIDSCENE_MODEL_REASONING_BUDGET,
|
|
54
|
+
responseFormat: MIDSCENE_MODEL_RESPONSE_FORMAT
|
|
52
55
|
};
|
|
53
56
|
const DEFAULT_MODEL_CONFIG_KEYS_LEGACY = {
|
|
54
57
|
modelName: MIDSCENE_MODEL_NAME,
|
|
@@ -65,6 +68,7 @@ const DEFAULT_MODEL_CONFIG_KEYS_LEGACY = {
|
|
|
65
68
|
retryInterval: MIDSCENE_MODEL_RETRY_INTERVAL,
|
|
66
69
|
reasoningEffort: MIDSCENE_MODEL_REASONING_EFFORT,
|
|
67
70
|
reasoningEnabled: MIDSCENE_MODEL_REASONING_ENABLED,
|
|
68
|
-
reasoningBudget: MIDSCENE_MODEL_REASONING_BUDGET
|
|
71
|
+
reasoningBudget: MIDSCENE_MODEL_REASONING_BUDGET,
|
|
72
|
+
responseFormat: MIDSCENE_MODEL_RESPONSE_FORMAT
|
|
69
73
|
};
|
|
70
74
|
export { DEFAULT_MODEL_CONFIG_KEYS, DEFAULT_MODEL_CONFIG_KEYS_LEGACY, INSIGHT_MODEL_CONFIG_KEYS, PLANNING_MODEL_CONFIG_KEYS };
|
|
@@ -5,7 +5,7 @@ import { assert } from "../utils.mjs";
|
|
|
5
5
|
import { maskConfig, parseJson } from "./helper.mjs";
|
|
6
6
|
import { initDebugConfig } from "./init-debug.mjs";
|
|
7
7
|
const MODEL_CONFIG_DOC_URL = 'https://midscenejs.com/model-common-config.html';
|
|
8
|
-
const getCurrentVersion = ()=>"1.10.
|
|
8
|
+
const getCurrentVersion = ()=>"1.10.6-beta-20260717061640.0";
|
|
9
9
|
const getInvalidModelFamilyMessage = (modelFamily)=>`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.`;
|
|
10
10
|
const KEYS_MAP = {
|
|
11
11
|
insight: INSIGHT_MODEL_CONFIG_KEYS,
|
|
@@ -127,6 +127,12 @@ const parseOpenaiSdkConfig = ({ keys, provider, useLegacyLogic = false })=>{
|
|
|
127
127
|
if (!val) return;
|
|
128
128
|
const num = Number(val);
|
|
129
129
|
return Number.isFinite(num) ? num : void 0;
|
|
130
|
+
})(),
|
|
131
|
+
responseFormat: (()=>{
|
|
132
|
+
const val = provider[keys.responseFormat]?.trim()?.toLowerCase();
|
|
133
|
+
if (!val || 'auto' === val) return 'auto';
|
|
134
|
+
if ('none' === val) return 'none';
|
|
135
|
+
throw new Error(`${keys.responseFormat} must be one of: none, auto. Got: ${val}`);
|
|
130
136
|
})()
|
|
131
137
|
};
|
|
132
138
|
};
|
package/dist/es/env/types.mjs
CHANGED
|
@@ -21,6 +21,7 @@ const MIDSCENE_MODEL_RETRY_INTERVAL = 'MIDSCENE_MODEL_RETRY_INTERVAL';
|
|
|
21
21
|
const MIDSCENE_MODEL_REASONING_EFFORT = 'MIDSCENE_MODEL_REASONING_EFFORT';
|
|
22
22
|
const MIDSCENE_MODEL_REASONING_ENABLED = 'MIDSCENE_MODEL_REASONING_ENABLED';
|
|
23
23
|
const MIDSCENE_MODEL_REASONING_BUDGET = 'MIDSCENE_MODEL_REASONING_BUDGET';
|
|
24
|
+
const MIDSCENE_MODEL_RESPONSE_FORMAT = 'MIDSCENE_MODEL_RESPONSE_FORMAT';
|
|
24
25
|
const OPENAI_API_KEY = 'OPENAI_API_KEY';
|
|
25
26
|
const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
|
|
26
27
|
const MIDSCENE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
|
|
@@ -62,6 +63,7 @@ const MIDSCENE_INSIGHT_MODEL_FAMILY = 'MIDSCENE_INSIGHT_MODEL_FAMILY';
|
|
|
62
63
|
const MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT = 'MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT';
|
|
63
64
|
const MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED = 'MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED';
|
|
64
65
|
const MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET = 'MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET';
|
|
66
|
+
const MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT = 'MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT';
|
|
65
67
|
const MIDSCENE_PLANNING_MODEL_NAME = 'MIDSCENE_PLANNING_MODEL_NAME';
|
|
66
68
|
const MIDSCENE_PLANNING_MODEL_SOCKS_PROXY = 'MIDSCENE_PLANNING_MODEL_SOCKS_PROXY';
|
|
67
69
|
const MIDSCENE_PLANNING_MODEL_HTTP_PROXY = 'MIDSCENE_PLANNING_MODEL_HTTP_PROXY';
|
|
@@ -77,6 +79,7 @@ const MIDSCENE_PLANNING_MODEL_FAMILY = 'MIDSCENE_PLANNING_MODEL_FAMILY';
|
|
|
77
79
|
const MIDSCENE_PLANNING_MODEL_REASONING_EFFORT = 'MIDSCENE_PLANNING_MODEL_REASONING_EFFORT';
|
|
78
80
|
const MIDSCENE_PLANNING_MODEL_REASONING_ENABLED = 'MIDSCENE_PLANNING_MODEL_REASONING_ENABLED';
|
|
79
81
|
const MIDSCENE_PLANNING_MODEL_REASONING_BUDGET = 'MIDSCENE_PLANNING_MODEL_REASONING_BUDGET';
|
|
82
|
+
const MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT = 'MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT';
|
|
80
83
|
const MIDSCENE_MODEL_FAMILY = 'MIDSCENE_MODEL_FAMILY';
|
|
81
84
|
const UNUSED_ENV_KEYS = [
|
|
82
85
|
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG
|
|
@@ -131,6 +134,7 @@ const MODEL_ENV_KEYS = [
|
|
|
131
134
|
MIDSCENE_MODEL_REASONING_EFFORT,
|
|
132
135
|
MIDSCENE_MODEL_REASONING_ENABLED,
|
|
133
136
|
MIDSCENE_MODEL_REASONING_BUDGET,
|
|
137
|
+
MIDSCENE_MODEL_RESPONSE_FORMAT,
|
|
134
138
|
MIDSCENE_USE_VLM_UI_TARS,
|
|
135
139
|
MIDSCENE_USE_QWEN_VL,
|
|
136
140
|
MIDSCENE_USE_QWEN3_VL,
|
|
@@ -157,6 +161,7 @@ const MODEL_ENV_KEYS = [
|
|
|
157
161
|
MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT,
|
|
158
162
|
MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED,
|
|
159
163
|
MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET,
|
|
164
|
+
MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT,
|
|
160
165
|
MIDSCENE_PLANNING_MODEL_NAME,
|
|
161
166
|
MIDSCENE_PLANNING_MODEL_SOCKS_PROXY,
|
|
162
167
|
MIDSCENE_PLANNING_MODEL_HTTP_PROXY,
|
|
@@ -172,6 +177,7 @@ const MODEL_ENV_KEYS = [
|
|
|
172
177
|
MIDSCENE_PLANNING_MODEL_REASONING_EFFORT,
|
|
173
178
|
MIDSCENE_PLANNING_MODEL_REASONING_ENABLED,
|
|
174
179
|
MIDSCENE_PLANNING_MODEL_REASONING_BUDGET,
|
|
180
|
+
MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT,
|
|
175
181
|
MIDSCENE_MODEL_FAMILY
|
|
176
182
|
];
|
|
177
183
|
const ALL_ENV_KEYS = [
|
|
@@ -206,4 +212,4 @@ var types_UITarsModelVersion = /*#__PURE__*/ function(UITarsModelVersion) {
|
|
|
206
212
|
UITarsModelVersion["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
|
|
207
213
|
return UITarsModelVersion;
|
|
208
214
|
}({});
|
|
209
|
-
export { ALL_ENV_KEYS, BASIC_ENV_KEYS, BOOLEAN_ENV_KEYS, DOCKER_CONTAINER, GLOBAL_ENV_KEYS, MATCH_BY_POSITION, MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, MIDSCENE_CACHE, MIDSCENE_CACHE_MAX_FILENAME_LENGTH, MIDSCENE_CHROME_PATH, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_MODE, MIDSCENE_DEBUG_MODEL_PROFILE, MIDSCENE_DEBUG_MODEL_RESPONSE, MIDSCENE_INSIGHT_MODEL_API_KEY, MIDSCENE_INSIGHT_MODEL_BASE_URL, MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON, MIDSCENE_INSIGHT_MODEL_FAMILY, MIDSCENE_INSIGHT_MODEL_HTTP_PROXY, MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON, MIDSCENE_INSIGHT_MODEL_NAME, MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET, MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT, MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED, MIDSCENE_INSIGHT_MODEL_RETRY_COUNT, MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL, MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY, MIDSCENE_INSIGHT_MODEL_TEMPERATURE, MIDSCENE_INSIGHT_MODEL_TIMEOUT, MIDSCENE_IOS_DEVICE_CLASS_OVERRIDE, MIDSCENE_IOS_DEVICE_UDID, MIDSCENE_IOS_SIMULATOR_UDID, MIDSCENE_LANGFUSE_DEBUG, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_CHROME_PATH, MIDSCENE_MODEL_API_KEY, MIDSCENE_MODEL_BASE_URL, MIDSCENE_MODEL_EXTRA_BODY_JSON, MIDSCENE_MODEL_FAMILY, MIDSCENE_MODEL_HTTP_PROXY, MIDSCENE_MODEL_INIT_CONFIG_JSON, MIDSCENE_MODEL_NAME, MIDSCENE_MODEL_REASONING_BUDGET, MIDSCENE_MODEL_REASONING_EFFORT, MIDSCENE_MODEL_REASONING_ENABLED, MIDSCENE_MODEL_RETRY_COUNT, MIDSCENE_MODEL_RETRY_INTERVAL, MIDSCENE_MODEL_SOCKS_PROXY, MIDSCENE_MODEL_TEMPERATURE, MIDSCENE_MODEL_TIMEOUT, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_API_KEY, MIDSCENE_PLANNING_MODEL_BASE_URL, MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON, MIDSCENE_PLANNING_MODEL_FAMILY, MIDSCENE_PLANNING_MODEL_HTTP_PROXY, MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_MODEL_REASONING_BUDGET, MIDSCENE_PLANNING_MODEL_REASONING_EFFORT, MIDSCENE_PLANNING_MODEL_REASONING_ENABLED, MIDSCENE_PLANNING_MODEL_RETRY_COUNT, MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL, MIDSCENE_PLANNING_MODEL_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_TEMPERATURE, MIDSCENE_PLANNING_MODEL_TIMEOUT, MIDSCENE_PREFERRED_LANGUAGE, MIDSCENE_REPLANNING_CYCLE_LIMIT, MIDSCENE_REPORT_QUIET, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN3_VL, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, MODEL_ENV_KEYS, MODEL_FAMILY_VALUES, NUMBER_ENV_KEYS, OPENAI_API_KEY, OPENAI_BASE_URL, STRING_ENV_KEYS, types_UITarsModelVersion as UITarsModelVersion, UNUSED_ENV_KEYS };
|
|
215
|
+
export { ALL_ENV_KEYS, BASIC_ENV_KEYS, BOOLEAN_ENV_KEYS, DOCKER_CONTAINER, GLOBAL_ENV_KEYS, MATCH_BY_POSITION, MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, MIDSCENE_CACHE, MIDSCENE_CACHE_MAX_FILENAME_LENGTH, MIDSCENE_CHROME_PATH, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_MODE, MIDSCENE_DEBUG_MODEL_PROFILE, MIDSCENE_DEBUG_MODEL_RESPONSE, MIDSCENE_INSIGHT_MODEL_API_KEY, MIDSCENE_INSIGHT_MODEL_BASE_URL, MIDSCENE_INSIGHT_MODEL_EXTRA_BODY_JSON, MIDSCENE_INSIGHT_MODEL_FAMILY, MIDSCENE_INSIGHT_MODEL_HTTP_PROXY, MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON, MIDSCENE_INSIGHT_MODEL_NAME, MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET, MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT, MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED, MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT, MIDSCENE_INSIGHT_MODEL_RETRY_COUNT, MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL, MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY, MIDSCENE_INSIGHT_MODEL_TEMPERATURE, MIDSCENE_INSIGHT_MODEL_TIMEOUT, MIDSCENE_IOS_DEVICE_CLASS_OVERRIDE, MIDSCENE_IOS_DEVICE_UDID, MIDSCENE_IOS_SIMULATOR_UDID, MIDSCENE_LANGFUSE_DEBUG, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_CHROME_PATH, MIDSCENE_MODEL_API_KEY, MIDSCENE_MODEL_BASE_URL, MIDSCENE_MODEL_EXTRA_BODY_JSON, MIDSCENE_MODEL_FAMILY, MIDSCENE_MODEL_HTTP_PROXY, MIDSCENE_MODEL_INIT_CONFIG_JSON, MIDSCENE_MODEL_NAME, MIDSCENE_MODEL_REASONING_BUDGET, MIDSCENE_MODEL_REASONING_EFFORT, MIDSCENE_MODEL_REASONING_ENABLED, MIDSCENE_MODEL_RESPONSE_FORMAT, MIDSCENE_MODEL_RETRY_COUNT, MIDSCENE_MODEL_RETRY_INTERVAL, MIDSCENE_MODEL_SOCKS_PROXY, MIDSCENE_MODEL_TEMPERATURE, MIDSCENE_MODEL_TIMEOUT, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_API_KEY, MIDSCENE_PLANNING_MODEL_BASE_URL, MIDSCENE_PLANNING_MODEL_EXTRA_BODY_JSON, MIDSCENE_PLANNING_MODEL_FAMILY, MIDSCENE_PLANNING_MODEL_HTTP_PROXY, MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_MODEL_REASONING_BUDGET, MIDSCENE_PLANNING_MODEL_REASONING_EFFORT, MIDSCENE_PLANNING_MODEL_REASONING_ENABLED, MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT, MIDSCENE_PLANNING_MODEL_RETRY_COUNT, MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL, MIDSCENE_PLANNING_MODEL_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_TEMPERATURE, MIDSCENE_PLANNING_MODEL_TIMEOUT, MIDSCENE_PREFERRED_LANGUAGE, MIDSCENE_REPLANNING_CYCLE_LIMIT, MIDSCENE_REPORT_QUIET, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN3_VL, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, MODEL_ENV_KEYS, MODEL_FAMILY_VALUES, NUMBER_ENV_KEYS, OPENAI_API_KEY, OPENAI_BASE_URL, STRING_ENV_KEYS, types_UITarsModelVersion as UITarsModelVersion, UNUSED_ENV_KEYS };
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import node_assert from "node:assert";
|
|
2
2
|
import { NodeType } from "../constants/index.mjs";
|
|
3
|
+
import { ifInNode } from "../utils.mjs";
|
|
3
4
|
import get_photon from "./get-photon.mjs";
|
|
4
|
-
import
|
|
5
|
+
import get_sharp from "./get-sharp.mjs";
|
|
6
|
+
import { createImgBase64ByFormat, parseBase64, photonFromBase64, photonToBase64 } from "./transform.mjs";
|
|
5
7
|
const DIGIT_FONT = {
|
|
6
8
|
0: [
|
|
7
9
|
[
|
|
@@ -914,8 +916,45 @@ const createSvgOverlay = async (elements, imageWidth, imageHeight, boxPadding =
|
|
|
914
916
|
}
|
|
915
917
|
return overlayPixels;
|
|
916
918
|
};
|
|
919
|
+
async function decodeImageWithSharp(inputImgBase64, size) {
|
|
920
|
+
const { body } = parseBase64(inputImgBase64);
|
|
921
|
+
const Sharp = await get_sharp();
|
|
922
|
+
let pipeline = Sharp(Buffer.from(body, 'base64'));
|
|
923
|
+
if (size) pipeline = pipeline.resize(size.width, size.height, {
|
|
924
|
+
fit: 'fill',
|
|
925
|
+
kernel: 'nearest'
|
|
926
|
+
});
|
|
927
|
+
const { data, info } = await pipeline.ensureAlpha().raw().toBuffer({
|
|
928
|
+
resolveWithObject: true
|
|
929
|
+
});
|
|
930
|
+
if (!info.width || !info.height || 4 !== info.channels) throw new Error('Image processing failed to produce RGBA pixels');
|
|
931
|
+
return {
|
|
932
|
+
pixels: new Uint8Array(data),
|
|
933
|
+
width: info.width,
|
|
934
|
+
height: info.height
|
|
935
|
+
};
|
|
936
|
+
}
|
|
937
|
+
async function encodeRgbaWithSharp(pixels, width, height) {
|
|
938
|
+
const Sharp = await get_sharp();
|
|
939
|
+
const output = await Sharp(Buffer.from(pixels), {
|
|
940
|
+
raw: {
|
|
941
|
+
width,
|
|
942
|
+
height,
|
|
943
|
+
channels: 4
|
|
944
|
+
}
|
|
945
|
+
}).jpeg({
|
|
946
|
+
quality: 90,
|
|
947
|
+
chromaSubsampling: '4:4:4'
|
|
948
|
+
}).toBuffer();
|
|
949
|
+
return createImgBase64ByFormat('jpeg', output.toString('base64'));
|
|
950
|
+
}
|
|
917
951
|
const compositeElementInfoImg = async (options)=>{
|
|
918
952
|
node_assert(options.inputImgBase64, 'inputImgBase64 is required');
|
|
953
|
+
if (ifInNode) {
|
|
954
|
+
const { pixels, width, height } = await decodeImageWithSharp(options.inputImgBase64, options.size);
|
|
955
|
+
const overlayPixels = await createSvgOverlay(options.elementsPositionInfo, width, height, options.annotationPadding, options.borderThickness, options.prompt, options.centerPoint);
|
|
956
|
+
return encodeRgbaWithSharp(blendPixels(pixels, overlayPixels, width, height), width, height);
|
|
957
|
+
}
|
|
919
958
|
const { PhotonImage, SamplingFilter, resize } = await get_photon();
|
|
920
959
|
let width = 0;
|
|
921
960
|
let height = 0;
|
|
@@ -955,6 +994,12 @@ const compositeElementInfoImg = async (options)=>{
|
|
|
955
994
|
};
|
|
956
995
|
const compositePointMarkerImg = async (options)=>{
|
|
957
996
|
node_assert(options.inputImgBase64, 'inputImgBase64 is required');
|
|
997
|
+
if (ifInNode) {
|
|
998
|
+
const { pixels, width, height } = await decodeImageWithSharp(options.inputImgBase64, options.size);
|
|
999
|
+
const overlayPixels = new Uint8Array(width * height * 4);
|
|
1000
|
+
drawPointMarker(overlayPixels, width, height, options.point, options.radius ?? 14, options.indexId ?? 1);
|
|
1001
|
+
return encodeRgbaWithSharp(blendPixels(pixels, overlayPixels, width, height), width, height);
|
|
1002
|
+
}
|
|
958
1003
|
const { PhotonImage, SamplingFilter, resize } = await get_photon();
|
|
959
1004
|
let width = 0;
|
|
960
1005
|
let height = 0;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { getDebug } from "../logger.mjs";
|
|
2
|
-
import { ifInBrowser,
|
|
2
|
+
import { ifInBrowser, ifInWorker } from "../utils.mjs";
|
|
3
3
|
const debug = getDebug('img');
|
|
4
4
|
let photonModule = null;
|
|
5
5
|
let isInitialized = false;
|
|
6
6
|
let usingCanvasFallback = false;
|
|
7
7
|
async function getPhoton() {
|
|
8
8
|
if (photonModule && isInitialized) return photonModule;
|
|
9
|
-
const env = ifInBrowser ? 'browser' : ifInWorker ? 'worker' :
|
|
9
|
+
const env = ifInBrowser ? 'browser' : ifInWorker ? 'worker' : 'unknown';
|
|
10
10
|
debug(`Loading photon module in ${env} environment`);
|
|
11
11
|
try {
|
|
12
12
|
if (ifInBrowser || ifInWorker) {
|
|
@@ -14,10 +14,7 @@ async function getPhoton() {
|
|
|
14
14
|
if ('function' == typeof photon.default) await photon.default();
|
|
15
15
|
debug('Photon loaded: @silvia-odwyer/photon (browser/worker)');
|
|
16
16
|
photonModule = photon;
|
|
17
|
-
} else
|
|
18
|
-
photonModule = await import("@silvia-odwyer/photon-node");
|
|
19
|
-
debug('Photon loaded: @silvia-odwyer/photon-node (node)');
|
|
20
|
-
}
|
|
17
|
+
} else throw new Error('Photon is only available in browser environments');
|
|
21
18
|
if (!photonModule?.PhotonImage) throw new Error('PhotonImage is not available');
|
|
22
19
|
if (!photonModule.PhotonImage.new_from_byteslice && !photonModule.PhotonImage.new_from_base64) throw new Error('PhotonImage.new_from_byteslice or new_from_base64 is not available');
|
|
23
20
|
isInitialized = true;
|
package/dist/es/img/info.mjs
CHANGED
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
import node_assert from "node:assert";
|
|
2
2
|
import { Buffer } from "node:buffer";
|
|
3
|
+
import { ifInNode } from "../utils.mjs";
|
|
3
4
|
import get_photon from "./get-photon.mjs";
|
|
5
|
+
import get_sharp from "./get-sharp.mjs";
|
|
4
6
|
async function imageInfoOfBase64(imageBase64) {
|
|
5
|
-
const { PhotonImage } = await get_photon();
|
|
6
7
|
const base64Data = imageBase64.replace(/^data:image\/\w+;base64,/, '').replace(/\s/g, '');
|
|
7
8
|
node_assert(base64Data, 'Invalid image: empty base64 data');
|
|
8
9
|
node_assert(/^[A-Za-z0-9+/]+={0,2}$/.test(base64Data) && base64Data.length % 4 !== 1, 'Invalid image: malformed base64 data');
|
|
9
10
|
const imageBuffer = Buffer.from(base64Data, 'base64');
|
|
10
11
|
node_assert(isValidImageBuffer(imageBuffer), 'Invalid image: unsupported format');
|
|
12
|
+
if (ifInNode) {
|
|
13
|
+
let metadata;
|
|
14
|
+
try {
|
|
15
|
+
const Sharp = await get_sharp();
|
|
16
|
+
metadata = await Sharp(imageBuffer).metadata();
|
|
17
|
+
} catch (error) {
|
|
18
|
+
throw new Error(`Invalid image: failed to decode base64 data (${error instanceof Error ? error.message : String(error)})`, {
|
|
19
|
+
cause: error
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
node_assert(metadata.width && metadata.height, 'Invalid image: cannot get width or height');
|
|
23
|
+
return {
|
|
24
|
+
width: metadata.width,
|
|
25
|
+
height: metadata.height
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const { PhotonImage } = await get_photon();
|
|
11
29
|
let result;
|
|
12
30
|
try {
|
|
13
31
|
result = PhotonImage.new_from_base64(base64Data);
|
|
@@ -19,7 +19,7 @@ async function resizeAndConvertImgBuffer(inputFormat, inputData, newSize) {
|
|
|
19
19
|
node_assert(newSize && newSize.width > 0 && newSize.height > 0, 'newSize must be positive');
|
|
20
20
|
const resizeStartTime = Date.now();
|
|
21
21
|
imgDebug(`resizeImg start, target size: ${newSize.width}x${newSize.height}`);
|
|
22
|
-
if (ifInNode)
|
|
22
|
+
if (ifInNode) {
|
|
23
23
|
const Sharp = await get_sharp();
|
|
24
24
|
const metadata = await Sharp(inputData).metadata();
|
|
25
25
|
const { width: originalWidth, height: originalHeight } = metadata;
|
|
@@ -37,8 +37,6 @@ async function resizeAndConvertImgBuffer(inputFormat, inputData, newSize) {
|
|
|
37
37
|
buffer: resizedBuffer,
|
|
38
38
|
format: 'jpeg'
|
|
39
39
|
};
|
|
40
|
-
} catch (error) {
|
|
41
|
-
imgDebug('Sharp failed, falling back to Photon:', error);
|
|
42
40
|
}
|
|
43
41
|
const { PhotonImage, SamplingFilter, resize } = await get_photon();
|
|
44
42
|
const inputBytes = new Uint8Array(inputData);
|
|
@@ -186,6 +184,39 @@ async function paddingToMatchBlock(image, blockSize = 28) {
|
|
|
186
184
|
};
|
|
187
185
|
}
|
|
188
186
|
async function paddingToMatchBlockByBase64(imageBase64, blockSize = 28) {
|
|
187
|
+
if (ifInNode) {
|
|
188
|
+
const { body } = parseBase64(imageBase64);
|
|
189
|
+
const inputBuffer = Buffer.from(body, 'base64');
|
|
190
|
+
const Sharp = await get_sharp();
|
|
191
|
+
const metadata = await Sharp(inputBuffer).metadata();
|
|
192
|
+
const width = metadata.width;
|
|
193
|
+
const height = metadata.height;
|
|
194
|
+
if (!width || !height) throw new Error('Failed to get image dimensions');
|
|
195
|
+
const targetWidth = Math.ceil(width / blockSize) * blockSize;
|
|
196
|
+
const targetHeight = Math.ceil(height / blockSize) * blockSize;
|
|
197
|
+
if (targetWidth === width && targetHeight === height) return {
|
|
198
|
+
width,
|
|
199
|
+
height,
|
|
200
|
+
imageBase64
|
|
201
|
+
};
|
|
202
|
+
const output = await Sharp(inputBuffer).extend({
|
|
203
|
+
right: targetWidth - width,
|
|
204
|
+
bottom: targetHeight - height,
|
|
205
|
+
background: {
|
|
206
|
+
r: 255,
|
|
207
|
+
g: 255,
|
|
208
|
+
b: 255,
|
|
209
|
+
alpha: 1
|
|
210
|
+
}
|
|
211
|
+
}).jpeg({
|
|
212
|
+
quality: 90
|
|
213
|
+
}).toBuffer();
|
|
214
|
+
return {
|
|
215
|
+
width: targetWidth,
|
|
216
|
+
height: targetHeight,
|
|
217
|
+
imageBase64: createImgBase64ByFormat('jpeg', output.toString('base64'))
|
|
218
|
+
};
|
|
219
|
+
}
|
|
189
220
|
const photonImage = await photonFromBase64(imageBase64);
|
|
190
221
|
try {
|
|
191
222
|
const paddedResult = await paddingToMatchBlock(photonImage, blockSize);
|
|
@@ -201,6 +232,27 @@ async function paddingToMatchBlockByBase64(imageBase64, blockSize = 28) {
|
|
|
201
232
|
}
|
|
202
233
|
}
|
|
203
234
|
async function cropByRect(imageBase64, rect) {
|
|
235
|
+
if (ifInNode) {
|
|
236
|
+
const { body } = parseBase64(imageBase64);
|
|
237
|
+
const Sharp = await get_sharp();
|
|
238
|
+
const left = Math.trunc(rect.left);
|
|
239
|
+
const top = Math.trunc(rect.top);
|
|
240
|
+
const width = Math.trunc(rect.left + rect.width) - left;
|
|
241
|
+
const height = Math.trunc(rect.top + rect.height) - top;
|
|
242
|
+
const output = await Sharp(Buffer.from(body, 'base64')).extract({
|
|
243
|
+
left,
|
|
244
|
+
top,
|
|
245
|
+
width,
|
|
246
|
+
height
|
|
247
|
+
}).jpeg({
|
|
248
|
+
quality: 90
|
|
249
|
+
}).toBuffer();
|
|
250
|
+
return {
|
|
251
|
+
width,
|
|
252
|
+
height,
|
|
253
|
+
imageBase64: createImgBase64ByFormat('jpeg', output.toString('base64'))
|
|
254
|
+
};
|
|
255
|
+
}
|
|
204
256
|
const { crop } = await get_photon();
|
|
205
257
|
const photonImage = await photonFromBase64(imageBase64);
|
|
206
258
|
const { left, top, width, height } = rect;
|
|
@@ -276,7 +328,7 @@ async function scaleImage(imageBase64, scale) {
|
|
|
276
328
|
const buffer = Buffer.from(body, 'base64');
|
|
277
329
|
const scaleStartTime = Date.now();
|
|
278
330
|
imgDebug(`scaleImage start, scale factor: ${scale}`);
|
|
279
|
-
if (ifInNode)
|
|
331
|
+
if (ifInNode) {
|
|
280
332
|
const Sharp = await get_sharp();
|
|
281
333
|
const metadata = await Sharp(buffer).metadata();
|
|
282
334
|
const originalWidth = metadata.width || 0;
|
|
@@ -298,8 +350,6 @@ async function scaleImage(imageBase64, scale) {
|
|
|
298
350
|
height: newHeight,
|
|
299
351
|
imageBase64: base64
|
|
300
352
|
};
|
|
301
|
-
} catch (error) {
|
|
302
|
-
imgDebug('Sharp failed, falling back to Photon:', error);
|
|
303
353
|
}
|
|
304
354
|
const { PhotonImage, SamplingFilter, resize } = await get_photon();
|
|
305
355
|
const inputBytes = new Uint8Array(buffer);
|
package/dist/es/logger.mjs
CHANGED
|
@@ -6,21 +6,32 @@ import { getMidsceneRunSubDir } from "./common.mjs";
|
|
|
6
6
|
import { ifInNode } from "./utils.mjs";
|
|
7
7
|
const topicPrefix = 'midscene';
|
|
8
8
|
const logStreams = new Map();
|
|
9
|
+
const backpressuredLogStreams = new Set();
|
|
10
|
+
const unavailableLogStreams = new Set();
|
|
9
11
|
const debugInstances = new Map();
|
|
10
12
|
function getLogStream(topic) {
|
|
11
13
|
const topicFileName = topic.replace(/:/g, '-');
|
|
14
|
+
if (unavailableLogStreams.has(topicFileName)) return null;
|
|
12
15
|
if (!logStreams.has(topicFileName)) {
|
|
13
16
|
const logFile = node_path.join(getMidsceneRunSubDir('log'), `${topicFileName}.log`);
|
|
14
17
|
const stream = node_fs.createWriteStream(logFile, {
|
|
15
18
|
flags: 'a'
|
|
16
19
|
});
|
|
20
|
+
stream.on('error', ()=>{
|
|
21
|
+
unavailableLogStreams.add(topicFileName);
|
|
22
|
+
backpressuredLogStreams.delete(topicFileName);
|
|
23
|
+
if (logStreams.get(topicFileName) === stream) logStreams.delete(topicFileName);
|
|
24
|
+
});
|
|
17
25
|
logStreams.set(topicFileName, stream);
|
|
18
26
|
}
|
|
19
|
-
return logStreams.get(topicFileName);
|
|
27
|
+
return logStreams.get(topicFileName) ?? null;
|
|
20
28
|
}
|
|
21
29
|
function writeLogToFile(topic, message) {
|
|
22
30
|
if (!ifInNode) return;
|
|
31
|
+
const topicFileName = topic.replace(/:/g, '-');
|
|
32
|
+
if (backpressuredLogStreams.has(topicFileName)) return;
|
|
23
33
|
const stream = getLogStream(topic);
|
|
34
|
+
if (!stream) return;
|
|
24
35
|
const now = new Date();
|
|
25
36
|
const isoDate = now.toLocaleDateString('sv-SE');
|
|
26
37
|
const isoTime = now.toLocaleTimeString('sv-SE');
|
|
@@ -31,7 +42,17 @@ function writeLogToFile(topic, message) {
|
|
|
31
42
|
const minutes = (Math.abs(timezoneOffsetMinutes) % 60).toString().padStart(2, '0');
|
|
32
43
|
const timezoneString = `${sign}${hours}:${minutes}`;
|
|
33
44
|
const localISOTime = `${isoDate}T${isoTime}.${milliseconds}${timezoneString}`;
|
|
34
|
-
|
|
45
|
+
try {
|
|
46
|
+
if (!stream.write(`[${localISOTime}] ${message}\n`)) {
|
|
47
|
+
backpressuredLogStreams.add(topicFileName);
|
|
48
|
+
stream.once('drain', ()=>{
|
|
49
|
+
backpressuredLogStreams.delete(topicFileName);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
} catch {
|
|
53
|
+
unavailableLogStreams.add(topicFileName);
|
|
54
|
+
backpressuredLogStreams.delete(topicFileName);
|
|
55
|
+
}
|
|
35
56
|
}
|
|
36
57
|
function getDebug(topic, options) {
|
|
37
58
|
const fullTopic = `${topicPrefix}:${topic}`;
|
|
@@ -13,7 +13,6 @@ function isMidsceneLocatorField(field) {
|
|
|
13
13
|
if (actualField._def?.typeName === 'ZodObject') {
|
|
14
14
|
const shape = actualField._def.shape?.();
|
|
15
15
|
if (shape) {
|
|
16
|
-
if ('midscene_location_field_flag' in shape) return true;
|
|
17
16
|
if ('prompt' in shape && shape.prompt) return true;
|
|
18
17
|
}
|
|
19
18
|
}
|
|
@@ -45,7 +45,8 @@ const INSIGHT_MODEL_CONFIG_KEYS = {
|
|
|
45
45
|
retryInterval: external_types_js_namespaceObject.MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL,
|
|
46
46
|
reasoningEffort: external_types_js_namespaceObject.MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT,
|
|
47
47
|
reasoningEnabled: external_types_js_namespaceObject.MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED,
|
|
48
|
-
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET
|
|
48
|
+
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET,
|
|
49
|
+
responseFormat: external_types_js_namespaceObject.MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT
|
|
49
50
|
};
|
|
50
51
|
const PLANNING_MODEL_CONFIG_KEYS = {
|
|
51
52
|
modelName: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_NAME,
|
|
@@ -62,7 +63,8 @@ const PLANNING_MODEL_CONFIG_KEYS = {
|
|
|
62
63
|
retryInterval: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL,
|
|
63
64
|
reasoningEffort: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_REASONING_EFFORT,
|
|
64
65
|
reasoningEnabled: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_REASONING_ENABLED,
|
|
65
|
-
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_REASONING_BUDGET
|
|
66
|
+
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_REASONING_BUDGET,
|
|
67
|
+
responseFormat: external_types_js_namespaceObject.MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT
|
|
66
68
|
};
|
|
67
69
|
const DEFAULT_MODEL_CONFIG_KEYS = {
|
|
68
70
|
modelName: external_types_js_namespaceObject.MIDSCENE_MODEL_NAME,
|
|
@@ -79,7 +81,8 @@ const DEFAULT_MODEL_CONFIG_KEYS = {
|
|
|
79
81
|
retryInterval: external_types_js_namespaceObject.MIDSCENE_MODEL_RETRY_INTERVAL,
|
|
80
82
|
reasoningEffort: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_EFFORT,
|
|
81
83
|
reasoningEnabled: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_ENABLED,
|
|
82
|
-
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_BUDGET
|
|
84
|
+
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_BUDGET,
|
|
85
|
+
responseFormat: external_types_js_namespaceObject.MIDSCENE_MODEL_RESPONSE_FORMAT
|
|
83
86
|
};
|
|
84
87
|
const DEFAULT_MODEL_CONFIG_KEYS_LEGACY = {
|
|
85
88
|
modelName: external_types_js_namespaceObject.MIDSCENE_MODEL_NAME,
|
|
@@ -96,7 +99,8 @@ const DEFAULT_MODEL_CONFIG_KEYS_LEGACY = {
|
|
|
96
99
|
retryInterval: external_types_js_namespaceObject.MIDSCENE_MODEL_RETRY_INTERVAL,
|
|
97
100
|
reasoningEffort: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_EFFORT,
|
|
98
101
|
reasoningEnabled: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_ENABLED,
|
|
99
|
-
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_BUDGET
|
|
102
|
+
reasoningBudget: external_types_js_namespaceObject.MIDSCENE_MODEL_REASONING_BUDGET,
|
|
103
|
+
responseFormat: external_types_js_namespaceObject.MIDSCENE_MODEL_RESPONSE_FORMAT
|
|
100
104
|
};
|
|
101
105
|
exports.DEFAULT_MODEL_CONFIG_KEYS = __webpack_exports__.DEFAULT_MODEL_CONFIG_KEYS;
|
|
102
106
|
exports.DEFAULT_MODEL_CONFIG_KEYS_LEGACY = __webpack_exports__.DEFAULT_MODEL_CONFIG_KEYS_LEGACY;
|
|
@@ -37,7 +37,7 @@ const external_utils_js_namespaceObject = require("../utils.js");
|
|
|
37
37
|
const external_helper_js_namespaceObject = require("./helper.js");
|
|
38
38
|
const external_init_debug_js_namespaceObject = require("./init-debug.js");
|
|
39
39
|
const MODEL_CONFIG_DOC_URL = 'https://midscenejs.com/model-common-config.html';
|
|
40
|
-
const getCurrentVersion = ()=>"1.10.
|
|
40
|
+
const getCurrentVersion = ()=>"1.10.6-beta-20260717061640.0";
|
|
41
41
|
const getInvalidModelFamilyMessage = (modelFamily)=>`Invalid MIDSCENE_MODEL_FAMILY value: ${modelFamily}. Current version v${getCurrentVersion()} accepts the following model families: ${external_types_js_namespaceObject.MODEL_FAMILY_VALUES.join(', ')}. You can also visit ${MODEL_CONFIG_DOC_URL} for the latest configuration information.`;
|
|
42
42
|
const KEYS_MAP = {
|
|
43
43
|
insight: external_constants_js_namespaceObject.INSIGHT_MODEL_CONFIG_KEYS,
|
|
@@ -159,6 +159,12 @@ const parseOpenaiSdkConfig = ({ keys, provider, useLegacyLogic = false })=>{
|
|
|
159
159
|
if (!val) return;
|
|
160
160
|
const num = Number(val);
|
|
161
161
|
return Number.isFinite(num) ? num : void 0;
|
|
162
|
+
})(),
|
|
163
|
+
responseFormat: (()=>{
|
|
164
|
+
const val = provider[keys.responseFormat]?.trim()?.toLowerCase();
|
|
165
|
+
if (!val || 'auto' === val) return 'auto';
|
|
166
|
+
if ('none' === val) return 'none';
|
|
167
|
+
throw new Error(`${keys.responseFormat} must be one of: none, auto. Got: ${val}`);
|
|
162
168
|
})()
|
|
163
169
|
};
|
|
164
170
|
};
|
package/dist/lib/env/types.js
CHANGED
|
@@ -51,6 +51,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
51
51
|
MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET: ()=>MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET,
|
|
52
52
|
MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT: ()=>MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT,
|
|
53
53
|
MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED: ()=>MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED,
|
|
54
|
+
MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT: ()=>MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT,
|
|
54
55
|
MIDSCENE_INSIGHT_MODEL_RETRY_COUNT: ()=>MIDSCENE_INSIGHT_MODEL_RETRY_COUNT,
|
|
55
56
|
MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL: ()=>MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL,
|
|
56
57
|
MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY: ()=>MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY,
|
|
@@ -72,6 +73,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
72
73
|
MIDSCENE_MODEL_REASONING_BUDGET: ()=>MIDSCENE_MODEL_REASONING_BUDGET,
|
|
73
74
|
MIDSCENE_MODEL_REASONING_EFFORT: ()=>MIDSCENE_MODEL_REASONING_EFFORT,
|
|
74
75
|
MIDSCENE_MODEL_REASONING_ENABLED: ()=>MIDSCENE_MODEL_REASONING_ENABLED,
|
|
76
|
+
MIDSCENE_MODEL_RESPONSE_FORMAT: ()=>MIDSCENE_MODEL_RESPONSE_FORMAT,
|
|
75
77
|
MIDSCENE_MODEL_RETRY_COUNT: ()=>MIDSCENE_MODEL_RETRY_COUNT,
|
|
76
78
|
MIDSCENE_MODEL_RETRY_INTERVAL: ()=>MIDSCENE_MODEL_RETRY_INTERVAL,
|
|
77
79
|
MIDSCENE_MODEL_SOCKS_PROXY: ()=>MIDSCENE_MODEL_SOCKS_PROXY,
|
|
@@ -90,6 +92,7 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
90
92
|
MIDSCENE_PLANNING_MODEL_REASONING_BUDGET: ()=>MIDSCENE_PLANNING_MODEL_REASONING_BUDGET,
|
|
91
93
|
MIDSCENE_PLANNING_MODEL_REASONING_EFFORT: ()=>MIDSCENE_PLANNING_MODEL_REASONING_EFFORT,
|
|
92
94
|
MIDSCENE_PLANNING_MODEL_REASONING_ENABLED: ()=>MIDSCENE_PLANNING_MODEL_REASONING_ENABLED,
|
|
95
|
+
MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT: ()=>MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT,
|
|
93
96
|
MIDSCENE_PLANNING_MODEL_RETRY_COUNT: ()=>MIDSCENE_PLANNING_MODEL_RETRY_COUNT,
|
|
94
97
|
MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL: ()=>MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL,
|
|
95
98
|
MIDSCENE_PLANNING_MODEL_SOCKS_PROXY: ()=>MIDSCENE_PLANNING_MODEL_SOCKS_PROXY,
|
|
@@ -138,6 +141,7 @@ const MIDSCENE_MODEL_RETRY_INTERVAL = 'MIDSCENE_MODEL_RETRY_INTERVAL';
|
|
|
138
141
|
const MIDSCENE_MODEL_REASONING_EFFORT = 'MIDSCENE_MODEL_REASONING_EFFORT';
|
|
139
142
|
const MIDSCENE_MODEL_REASONING_ENABLED = 'MIDSCENE_MODEL_REASONING_ENABLED';
|
|
140
143
|
const MIDSCENE_MODEL_REASONING_BUDGET = 'MIDSCENE_MODEL_REASONING_BUDGET';
|
|
144
|
+
const MIDSCENE_MODEL_RESPONSE_FORMAT = 'MIDSCENE_MODEL_RESPONSE_FORMAT';
|
|
141
145
|
const OPENAI_API_KEY = 'OPENAI_API_KEY';
|
|
142
146
|
const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
|
|
143
147
|
const MIDSCENE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
|
|
@@ -179,6 +183,7 @@ const MIDSCENE_INSIGHT_MODEL_FAMILY = 'MIDSCENE_INSIGHT_MODEL_FAMILY';
|
|
|
179
183
|
const MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT = 'MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT';
|
|
180
184
|
const MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED = 'MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED';
|
|
181
185
|
const MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET = 'MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET';
|
|
186
|
+
const MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT = 'MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT';
|
|
182
187
|
const MIDSCENE_PLANNING_MODEL_NAME = 'MIDSCENE_PLANNING_MODEL_NAME';
|
|
183
188
|
const MIDSCENE_PLANNING_MODEL_SOCKS_PROXY = 'MIDSCENE_PLANNING_MODEL_SOCKS_PROXY';
|
|
184
189
|
const MIDSCENE_PLANNING_MODEL_HTTP_PROXY = 'MIDSCENE_PLANNING_MODEL_HTTP_PROXY';
|
|
@@ -194,6 +199,7 @@ const MIDSCENE_PLANNING_MODEL_FAMILY = 'MIDSCENE_PLANNING_MODEL_FAMILY';
|
|
|
194
199
|
const MIDSCENE_PLANNING_MODEL_REASONING_EFFORT = 'MIDSCENE_PLANNING_MODEL_REASONING_EFFORT';
|
|
195
200
|
const MIDSCENE_PLANNING_MODEL_REASONING_ENABLED = 'MIDSCENE_PLANNING_MODEL_REASONING_ENABLED';
|
|
196
201
|
const MIDSCENE_PLANNING_MODEL_REASONING_BUDGET = 'MIDSCENE_PLANNING_MODEL_REASONING_BUDGET';
|
|
202
|
+
const MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT = 'MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT';
|
|
197
203
|
const MIDSCENE_MODEL_FAMILY = 'MIDSCENE_MODEL_FAMILY';
|
|
198
204
|
const UNUSED_ENV_KEYS = [
|
|
199
205
|
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG
|
|
@@ -248,6 +254,7 @@ const MODEL_ENV_KEYS = [
|
|
|
248
254
|
MIDSCENE_MODEL_REASONING_EFFORT,
|
|
249
255
|
MIDSCENE_MODEL_REASONING_ENABLED,
|
|
250
256
|
MIDSCENE_MODEL_REASONING_BUDGET,
|
|
257
|
+
MIDSCENE_MODEL_RESPONSE_FORMAT,
|
|
251
258
|
MIDSCENE_USE_VLM_UI_TARS,
|
|
252
259
|
MIDSCENE_USE_QWEN_VL,
|
|
253
260
|
MIDSCENE_USE_QWEN3_VL,
|
|
@@ -274,6 +281,7 @@ const MODEL_ENV_KEYS = [
|
|
|
274
281
|
MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT,
|
|
275
282
|
MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED,
|
|
276
283
|
MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET,
|
|
284
|
+
MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT,
|
|
277
285
|
MIDSCENE_PLANNING_MODEL_NAME,
|
|
278
286
|
MIDSCENE_PLANNING_MODEL_SOCKS_PROXY,
|
|
279
287
|
MIDSCENE_PLANNING_MODEL_HTTP_PROXY,
|
|
@@ -289,6 +297,7 @@ const MODEL_ENV_KEYS = [
|
|
|
289
297
|
MIDSCENE_PLANNING_MODEL_REASONING_EFFORT,
|
|
290
298
|
MIDSCENE_PLANNING_MODEL_REASONING_ENABLED,
|
|
291
299
|
MIDSCENE_PLANNING_MODEL_REASONING_BUDGET,
|
|
300
|
+
MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT,
|
|
292
301
|
MIDSCENE_MODEL_FAMILY
|
|
293
302
|
];
|
|
294
303
|
const ALL_ENV_KEYS = [
|
|
@@ -350,6 +359,7 @@ exports.MIDSCENE_INSIGHT_MODEL_NAME = __webpack_exports__.MIDSCENE_INSIGHT_MODEL
|
|
|
350
359
|
exports.MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET;
|
|
351
360
|
exports.MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT;
|
|
352
361
|
exports.MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED;
|
|
362
|
+
exports.MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT;
|
|
353
363
|
exports.MIDSCENE_INSIGHT_MODEL_RETRY_COUNT = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_RETRY_COUNT;
|
|
354
364
|
exports.MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL;
|
|
355
365
|
exports.MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY = __webpack_exports__.MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY;
|
|
@@ -371,6 +381,7 @@ exports.MIDSCENE_MODEL_NAME = __webpack_exports__.MIDSCENE_MODEL_NAME;
|
|
|
371
381
|
exports.MIDSCENE_MODEL_REASONING_BUDGET = __webpack_exports__.MIDSCENE_MODEL_REASONING_BUDGET;
|
|
372
382
|
exports.MIDSCENE_MODEL_REASONING_EFFORT = __webpack_exports__.MIDSCENE_MODEL_REASONING_EFFORT;
|
|
373
383
|
exports.MIDSCENE_MODEL_REASONING_ENABLED = __webpack_exports__.MIDSCENE_MODEL_REASONING_ENABLED;
|
|
384
|
+
exports.MIDSCENE_MODEL_RESPONSE_FORMAT = __webpack_exports__.MIDSCENE_MODEL_RESPONSE_FORMAT;
|
|
374
385
|
exports.MIDSCENE_MODEL_RETRY_COUNT = __webpack_exports__.MIDSCENE_MODEL_RETRY_COUNT;
|
|
375
386
|
exports.MIDSCENE_MODEL_RETRY_INTERVAL = __webpack_exports__.MIDSCENE_MODEL_RETRY_INTERVAL;
|
|
376
387
|
exports.MIDSCENE_MODEL_SOCKS_PROXY = __webpack_exports__.MIDSCENE_MODEL_SOCKS_PROXY;
|
|
@@ -389,6 +400,7 @@ exports.MIDSCENE_PLANNING_MODEL_NAME = __webpack_exports__.MIDSCENE_PLANNING_MOD
|
|
|
389
400
|
exports.MIDSCENE_PLANNING_MODEL_REASONING_BUDGET = __webpack_exports__.MIDSCENE_PLANNING_MODEL_REASONING_BUDGET;
|
|
390
401
|
exports.MIDSCENE_PLANNING_MODEL_REASONING_EFFORT = __webpack_exports__.MIDSCENE_PLANNING_MODEL_REASONING_EFFORT;
|
|
391
402
|
exports.MIDSCENE_PLANNING_MODEL_REASONING_ENABLED = __webpack_exports__.MIDSCENE_PLANNING_MODEL_REASONING_ENABLED;
|
|
403
|
+
exports.MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT = __webpack_exports__.MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT;
|
|
392
404
|
exports.MIDSCENE_PLANNING_MODEL_RETRY_COUNT = __webpack_exports__.MIDSCENE_PLANNING_MODEL_RETRY_COUNT;
|
|
393
405
|
exports.MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL = __webpack_exports__.MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL;
|
|
394
406
|
exports.MIDSCENE_PLANNING_MODEL_SOCKS_PROXY = __webpack_exports__.MIDSCENE_PLANNING_MODEL_SOCKS_PROXY;
|
|
@@ -441,6 +453,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
441
453
|
"MIDSCENE_INSIGHT_MODEL_REASONING_BUDGET",
|
|
442
454
|
"MIDSCENE_INSIGHT_MODEL_REASONING_EFFORT",
|
|
443
455
|
"MIDSCENE_INSIGHT_MODEL_REASONING_ENABLED",
|
|
456
|
+
"MIDSCENE_INSIGHT_MODEL_RESPONSE_FORMAT",
|
|
444
457
|
"MIDSCENE_INSIGHT_MODEL_RETRY_COUNT",
|
|
445
458
|
"MIDSCENE_INSIGHT_MODEL_RETRY_INTERVAL",
|
|
446
459
|
"MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY",
|
|
@@ -462,6 +475,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
462
475
|
"MIDSCENE_MODEL_REASONING_BUDGET",
|
|
463
476
|
"MIDSCENE_MODEL_REASONING_EFFORT",
|
|
464
477
|
"MIDSCENE_MODEL_REASONING_ENABLED",
|
|
478
|
+
"MIDSCENE_MODEL_RESPONSE_FORMAT",
|
|
465
479
|
"MIDSCENE_MODEL_RETRY_COUNT",
|
|
466
480
|
"MIDSCENE_MODEL_RETRY_INTERVAL",
|
|
467
481
|
"MIDSCENE_MODEL_SOCKS_PROXY",
|
|
@@ -480,6 +494,7 @@ for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
|
480
494
|
"MIDSCENE_PLANNING_MODEL_REASONING_BUDGET",
|
|
481
495
|
"MIDSCENE_PLANNING_MODEL_REASONING_EFFORT",
|
|
482
496
|
"MIDSCENE_PLANNING_MODEL_REASONING_ENABLED",
|
|
497
|
+
"MIDSCENE_PLANNING_MODEL_RESPONSE_FORMAT",
|
|
483
498
|
"MIDSCENE_PLANNING_MODEL_RETRY_COUNT",
|
|
484
499
|
"MIDSCENE_PLANNING_MODEL_RETRY_INTERVAL",
|
|
485
500
|
"MIDSCENE_PLANNING_MODEL_SOCKS_PROXY",
|