@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.
@@ -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.5";
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
  };
@@ -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 { photonFromBase64, photonToBase64 } from "./transform.mjs";
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, ifInNode, ifInWorker } from "../utils.mjs";
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' : ifInNode ? 'node' : 'unknown';
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 if (ifInNode) {
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;
@@ -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) try {
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) try {
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);
@@ -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
- stream.write(`[${localISOTime}] ${message}\n`);
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.5";
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
  };
@@ -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",