@midscene/shared 1.2.1-beta-20260109075435.0 → 1.2.1-beta-20260112112154.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.
@@ -37,13 +37,6 @@ class GlobalConfigManager {
37
37
  if ('string' == typeof value) return value.trim();
38
38
  return value;
39
39
  }
40
- getEnvConfigInNumber(key) {
41
- const allConfig = this.getAllEnvConfig();
42
- if (!NUMBER_ENV_KEYS.includes(key)) throw new Error(`getEnvConfigInNumber with key ${key} is not supported`);
43
- const value = allConfig[key];
44
- this.keysHaveBeenRead[key] = true;
45
- return Number(value || '');
46
- }
47
40
  getEnvConfigInBoolean(key) {
48
41
  const allConfig = this.getAllEnvConfig();
49
42
  if (!BOOLEAN_ENV_KEYS.includes(key)) throw new Error(`getEnvConfigInBoolean with key ${key} is not supported`);
@@ -54,6 +47,17 @@ class GlobalConfigManager {
54
47
  if (/^(false|0)$/i.test(value)) return false;
55
48
  return !!value.trim();
56
49
  }
50
+ getEnvConfigValueAsNumber(key) {
51
+ if (!STRING_ENV_KEYS.includes(key) && !NUMBER_ENV_KEYS.includes(key)) throw new Error(`getEnvConfigValueAsNumber with key ${key} is not supported.`);
52
+ const allConfig = this.getAllEnvConfig();
53
+ const value = allConfig[key];
54
+ this.keysHaveBeenRead[key] = true;
55
+ if ('string' != typeof value) return;
56
+ const trimmed = value.trim();
57
+ if (!trimmed) return;
58
+ const numValue = Number(trimmed);
59
+ return Number.isNaN(numValue) ? void 0 : numValue;
60
+ }
57
61
  registerModelConfigManager(globalModelConfigManager) {
58
62
  this.globalModelConfigManager = globalModelConfigManager;
59
63
  }
@@ -78,6 +78,7 @@ const BOOLEAN_ENV_KEYS = [
78
78
  MIDSCENE_LANGFUSE_DEBUG
79
79
  ];
80
80
  const NUMBER_ENV_KEYS = [
81
+ MIDSCENE_MODEL_MAX_TOKENS,
81
82
  MIDSCENE_CACHE_MAX_FILENAME_LENGTH,
82
83
  MIDSCENE_REPLANNING_CYCLE_LIMIT
83
84
  ];
@@ -65,13 +65,6 @@ class GlobalConfigManager {
65
65
  if ('string' == typeof value) return value.trim();
66
66
  return value;
67
67
  }
68
- getEnvConfigInNumber(key) {
69
- const allConfig = this.getAllEnvConfig();
70
- if (!external_types_js_namespaceObject.NUMBER_ENV_KEYS.includes(key)) throw new Error(`getEnvConfigInNumber with key ${key} is not supported`);
71
- const value = allConfig[key];
72
- this.keysHaveBeenRead[key] = true;
73
- return Number(value || '');
74
- }
75
68
  getEnvConfigInBoolean(key) {
76
69
  const allConfig = this.getAllEnvConfig();
77
70
  if (!external_types_js_namespaceObject.BOOLEAN_ENV_KEYS.includes(key)) throw new Error(`getEnvConfigInBoolean with key ${key} is not supported`);
@@ -82,6 +75,17 @@ class GlobalConfigManager {
82
75
  if (/^(false|0)$/i.test(value)) return false;
83
76
  return !!value.trim();
84
77
  }
78
+ getEnvConfigValueAsNumber(key) {
79
+ if (!external_types_js_namespaceObject.STRING_ENV_KEYS.includes(key) && !external_types_js_namespaceObject.NUMBER_ENV_KEYS.includes(key)) throw new Error(`getEnvConfigValueAsNumber with key ${key} is not supported.`);
80
+ const allConfig = this.getAllEnvConfig();
81
+ const value = allConfig[key];
82
+ this.keysHaveBeenRead[key] = true;
83
+ if ('string' != typeof value) return;
84
+ const trimmed = value.trim();
85
+ if (!trimmed) return;
86
+ const numValue = Number(trimmed);
87
+ return Number.isNaN(numValue) ? void 0 : numValue;
88
+ }
85
89
  registerModelConfigManager(globalModelConfigManager) {
86
90
  this.globalModelConfigManager = globalModelConfigManager;
87
91
  }
@@ -178,6 +178,7 @@ const BOOLEAN_ENV_KEYS = [
178
178
  MIDSCENE_LANGFUSE_DEBUG
179
179
  ];
180
180
  const NUMBER_ENV_KEYS = [
181
+ MIDSCENE_MODEL_MAX_TOKENS,
181
182
  MIDSCENE_CACHE_MAX_FILENAME_LENGTH,
182
183
  MIDSCENE_REPLANNING_CYCLE_LIMIT
183
184
  ];
@@ -15,14 +15,15 @@ export declare class GlobalConfigManager {
15
15
  */
16
16
  getAllEnvConfig(): Record<string, string | undefined>;
17
17
  getEnvConfigValue(key: (typeof STRING_ENV_KEYS)[number]): string | undefined;
18
- /**
19
- * read number only from process.env
20
- */
21
- getEnvConfigInNumber(key: (typeof NUMBER_ENV_KEYS)[number]): number;
22
18
  /**
23
19
  * read boolean only from process.env
24
20
  */
25
21
  getEnvConfigInBoolean(key: (typeof BOOLEAN_ENV_KEYS)[number]): boolean;
22
+ /**
23
+ * Read environment variable value and convert it to number.
24
+ * Returns undefined if the value is not set or cannot be converted to a valid number.
25
+ */
26
+ getEnvConfigValueAsNumber(key: (typeof STRING_ENV_KEYS)[number] | (typeof NUMBER_ENV_KEYS)[number]): number | undefined;
26
27
  registerModelConfigManager(globalModelConfigManager: ModelConfigManager): void;
27
28
  /**
28
29
  * @deprecated use the modelConfig param in Agent constructor instead
@@ -88,21 +88,21 @@ export declare const UNUSED_ENV_KEYS: string[];
88
88
  */
89
89
  export declare const BASIC_ENV_KEYS: readonly ["MIDSCENE_DEBUG_MODE", "MIDSCENE_DEBUG_MODEL_PROFILE", "MIDSCENE_DEBUG_MODEL_RESPONSE", "MIDSCENE_RUN_DIR"];
90
90
  export declare const BOOLEAN_ENV_KEYS: readonly ["MIDSCENE_CACHE", "MIDSCENE_FORCE_DEEP_THINK", "MIDSCENE_MCP_USE_PUPPETEER_MODE", "MIDSCENE_MCP_ANDROID_MODE", "MIDSCENE_LANGSMITH_DEBUG", "MIDSCENE_LANGFUSE_DEBUG"];
91
- export declare const NUMBER_ENV_KEYS: readonly ["MIDSCENE_CACHE_MAX_FILENAME_LENGTH", "MIDSCENE_REPLANNING_CYCLE_LIMIT"];
91
+ export declare const NUMBER_ENV_KEYS: readonly ["MIDSCENE_MODEL_MAX_TOKENS", "MIDSCENE_CACHE_MAX_FILENAME_LENGTH", "MIDSCENE_REPLANNING_CYCLE_LIMIT"];
92
92
  export declare const STRING_ENV_KEYS: readonly ["MIDSCENE_MODEL_MAX_TOKENS", "OPENAI_MAX_TOKENS", "MIDSCENE_ADB_PATH", "MIDSCENE_ADB_REMOTE_HOST", "MIDSCENE_ADB_REMOTE_PORT", "MIDSCENE_ANDROID_IME_STRATEGY", "MIDSCENE_IOS_DEVICE_UDID", "MIDSCENE_IOS_SIMULATOR_UDID", "MIDSCENE_REPORT_TAG_NAME", "MIDSCENE_PREFERRED_LANGUAGE", "MATCH_BY_POSITION", "MIDSCENE_MCP_CHROME_PATH", "DOCKER_CONTAINER"];
93
93
  /**
94
94
  * Non model related env keys, used for globally controlling the behavior of midscene
95
95
  * Can not be override by agent.modelConfig but can be override by overrideAIConfig
96
96
  * Can be access at any time
97
97
  */
98
- export declare const GLOBAL_ENV_KEYS: readonly ["MIDSCENE_CACHE", "MIDSCENE_FORCE_DEEP_THINK", "MIDSCENE_MCP_USE_PUPPETEER_MODE", "MIDSCENE_MCP_ANDROID_MODE", "MIDSCENE_LANGSMITH_DEBUG", "MIDSCENE_LANGFUSE_DEBUG", "MIDSCENE_CACHE_MAX_FILENAME_LENGTH", "MIDSCENE_REPLANNING_CYCLE_LIMIT", "MIDSCENE_MODEL_MAX_TOKENS", "OPENAI_MAX_TOKENS", "MIDSCENE_ADB_PATH", "MIDSCENE_ADB_REMOTE_HOST", "MIDSCENE_ADB_REMOTE_PORT", "MIDSCENE_ANDROID_IME_STRATEGY", "MIDSCENE_IOS_DEVICE_UDID", "MIDSCENE_IOS_SIMULATOR_UDID", "MIDSCENE_REPORT_TAG_NAME", "MIDSCENE_PREFERRED_LANGUAGE", "MATCH_BY_POSITION", "MIDSCENE_MCP_CHROME_PATH", "DOCKER_CONTAINER"];
98
+ export declare const GLOBAL_ENV_KEYS: readonly ["MIDSCENE_CACHE", "MIDSCENE_FORCE_DEEP_THINK", "MIDSCENE_MCP_USE_PUPPETEER_MODE", "MIDSCENE_MCP_ANDROID_MODE", "MIDSCENE_LANGSMITH_DEBUG", "MIDSCENE_LANGFUSE_DEBUG", "MIDSCENE_MODEL_MAX_TOKENS", "MIDSCENE_CACHE_MAX_FILENAME_LENGTH", "MIDSCENE_REPLANNING_CYCLE_LIMIT", "MIDSCENE_MODEL_MAX_TOKENS", "OPENAI_MAX_TOKENS", "MIDSCENE_ADB_PATH", "MIDSCENE_ADB_REMOTE_HOST", "MIDSCENE_ADB_REMOTE_PORT", "MIDSCENE_ANDROID_IME_STRATEGY", "MIDSCENE_IOS_DEVICE_UDID", "MIDSCENE_IOS_SIMULATOR_UDID", "MIDSCENE_REPORT_TAG_NAME", "MIDSCENE_PREFERRED_LANGUAGE", "MATCH_BY_POSITION", "MIDSCENE_MCP_CHROME_PATH", "DOCKER_CONTAINER"];
99
99
  /**
100
100
  * Model related eve keys, used for declare which model to use.
101
101
  * Can be override by both agent.modelConfig and overrideAIConfig
102
102
  * Can only be access after agent.constructor
103
103
  */
104
104
  export declare const MODEL_ENV_KEYS: readonly ["MIDSCENE_MODEL_NAME", "MIDSCENE_MODEL_INIT_CONFIG_JSON", "MIDSCENE_MODEL_API_KEY", "MIDSCENE_MODEL_BASE_URL", "MIDSCENE_MODEL_SOCKS_PROXY", "MIDSCENE_MODEL_HTTP_PROXY", "MIDSCENE_MODEL_TIMEOUT", "MIDSCENE_MODEL_TEMPERATURE", "MIDSCENE_USE_VLM_UI_TARS", "MIDSCENE_USE_QWEN_VL", "MIDSCENE_USE_QWEN3_VL", "MIDSCENE_USE_DOUBAO_VISION", "MIDSCENE_USE_GEMINI", "MIDSCENE_USE_VL_MODEL", "OPENAI_API_KEY", "OPENAI_BASE_URL", "MIDSCENE_OPENAI_INIT_CONFIG_JSON", "MIDSCENE_OPENAI_HTTP_PROXY", "MIDSCENE_OPENAI_SOCKS_PROXY", "MIDSCENE_INSIGHT_MODEL_NAME", "MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY", "MIDSCENE_INSIGHT_MODEL_HTTP_PROXY", "MIDSCENE_INSIGHT_MODEL_BASE_URL", "MIDSCENE_INSIGHT_MODEL_API_KEY", "MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON", "MIDSCENE_INSIGHT_MODEL_TIMEOUT", "MIDSCENE_INSIGHT_MODEL_TEMPERATURE", "MIDSCENE_PLANNING_MODEL_NAME", "MIDSCENE_PLANNING_MODEL_SOCKS_PROXY", "MIDSCENE_PLANNING_MODEL_HTTP_PROXY", "MIDSCENE_PLANNING_MODEL_BASE_URL", "MIDSCENE_PLANNING_MODEL_API_KEY", "MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON", "MIDSCENE_PLANNING_MODEL_TIMEOUT", "MIDSCENE_PLANNING_MODEL_TEMPERATURE", "MIDSCENE_MODEL_FAMILY"];
105
- export declare const ALL_ENV_KEYS: readonly [...string[], "MIDSCENE_DEBUG_MODE", "MIDSCENE_DEBUG_MODEL_PROFILE", "MIDSCENE_DEBUG_MODEL_RESPONSE", "MIDSCENE_RUN_DIR", "MIDSCENE_CACHE", "MIDSCENE_FORCE_DEEP_THINK", "MIDSCENE_MCP_USE_PUPPETEER_MODE", "MIDSCENE_MCP_ANDROID_MODE", "MIDSCENE_LANGSMITH_DEBUG", "MIDSCENE_LANGFUSE_DEBUG", "MIDSCENE_CACHE_MAX_FILENAME_LENGTH", "MIDSCENE_REPLANNING_CYCLE_LIMIT", "MIDSCENE_MODEL_MAX_TOKENS", "OPENAI_MAX_TOKENS", "MIDSCENE_ADB_PATH", "MIDSCENE_ADB_REMOTE_HOST", "MIDSCENE_ADB_REMOTE_PORT", "MIDSCENE_ANDROID_IME_STRATEGY", "MIDSCENE_IOS_DEVICE_UDID", "MIDSCENE_IOS_SIMULATOR_UDID", "MIDSCENE_REPORT_TAG_NAME", "MIDSCENE_PREFERRED_LANGUAGE", "MATCH_BY_POSITION", "MIDSCENE_MCP_CHROME_PATH", "DOCKER_CONTAINER", "MIDSCENE_MODEL_NAME", "MIDSCENE_MODEL_INIT_CONFIG_JSON", "MIDSCENE_MODEL_API_KEY", "MIDSCENE_MODEL_BASE_URL", "MIDSCENE_MODEL_SOCKS_PROXY", "MIDSCENE_MODEL_HTTP_PROXY", "MIDSCENE_MODEL_TIMEOUT", "MIDSCENE_MODEL_TEMPERATURE", "MIDSCENE_USE_VLM_UI_TARS", "MIDSCENE_USE_QWEN_VL", "MIDSCENE_USE_QWEN3_VL", "MIDSCENE_USE_DOUBAO_VISION", "MIDSCENE_USE_GEMINI", "MIDSCENE_USE_VL_MODEL", "OPENAI_API_KEY", "OPENAI_BASE_URL", "MIDSCENE_OPENAI_INIT_CONFIG_JSON", "MIDSCENE_OPENAI_HTTP_PROXY", "MIDSCENE_OPENAI_SOCKS_PROXY", "MIDSCENE_INSIGHT_MODEL_NAME", "MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY", "MIDSCENE_INSIGHT_MODEL_HTTP_PROXY", "MIDSCENE_INSIGHT_MODEL_BASE_URL", "MIDSCENE_INSIGHT_MODEL_API_KEY", "MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON", "MIDSCENE_INSIGHT_MODEL_TIMEOUT", "MIDSCENE_INSIGHT_MODEL_TEMPERATURE", "MIDSCENE_PLANNING_MODEL_NAME", "MIDSCENE_PLANNING_MODEL_SOCKS_PROXY", "MIDSCENE_PLANNING_MODEL_HTTP_PROXY", "MIDSCENE_PLANNING_MODEL_BASE_URL", "MIDSCENE_PLANNING_MODEL_API_KEY", "MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON", "MIDSCENE_PLANNING_MODEL_TIMEOUT", "MIDSCENE_PLANNING_MODEL_TEMPERATURE", "MIDSCENE_MODEL_FAMILY"];
105
+ export declare const ALL_ENV_KEYS: readonly [...string[], "MIDSCENE_DEBUG_MODE", "MIDSCENE_DEBUG_MODEL_PROFILE", "MIDSCENE_DEBUG_MODEL_RESPONSE", "MIDSCENE_RUN_DIR", "MIDSCENE_CACHE", "MIDSCENE_FORCE_DEEP_THINK", "MIDSCENE_MCP_USE_PUPPETEER_MODE", "MIDSCENE_MCP_ANDROID_MODE", "MIDSCENE_LANGSMITH_DEBUG", "MIDSCENE_LANGFUSE_DEBUG", "MIDSCENE_MODEL_MAX_TOKENS", "MIDSCENE_CACHE_MAX_FILENAME_LENGTH", "MIDSCENE_REPLANNING_CYCLE_LIMIT", "MIDSCENE_MODEL_MAX_TOKENS", "OPENAI_MAX_TOKENS", "MIDSCENE_ADB_PATH", "MIDSCENE_ADB_REMOTE_HOST", "MIDSCENE_ADB_REMOTE_PORT", "MIDSCENE_ANDROID_IME_STRATEGY", "MIDSCENE_IOS_DEVICE_UDID", "MIDSCENE_IOS_SIMULATOR_UDID", "MIDSCENE_REPORT_TAG_NAME", "MIDSCENE_PREFERRED_LANGUAGE", "MATCH_BY_POSITION", "MIDSCENE_MCP_CHROME_PATH", "DOCKER_CONTAINER", "MIDSCENE_MODEL_NAME", "MIDSCENE_MODEL_INIT_CONFIG_JSON", "MIDSCENE_MODEL_API_KEY", "MIDSCENE_MODEL_BASE_URL", "MIDSCENE_MODEL_SOCKS_PROXY", "MIDSCENE_MODEL_HTTP_PROXY", "MIDSCENE_MODEL_TIMEOUT", "MIDSCENE_MODEL_TEMPERATURE", "MIDSCENE_USE_VLM_UI_TARS", "MIDSCENE_USE_QWEN_VL", "MIDSCENE_USE_QWEN3_VL", "MIDSCENE_USE_DOUBAO_VISION", "MIDSCENE_USE_GEMINI", "MIDSCENE_USE_VL_MODEL", "OPENAI_API_KEY", "OPENAI_BASE_URL", "MIDSCENE_OPENAI_INIT_CONFIG_JSON", "MIDSCENE_OPENAI_HTTP_PROXY", "MIDSCENE_OPENAI_SOCKS_PROXY", "MIDSCENE_INSIGHT_MODEL_NAME", "MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY", "MIDSCENE_INSIGHT_MODEL_HTTP_PROXY", "MIDSCENE_INSIGHT_MODEL_BASE_URL", "MIDSCENE_INSIGHT_MODEL_API_KEY", "MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON", "MIDSCENE_INSIGHT_MODEL_TIMEOUT", "MIDSCENE_INSIGHT_MODEL_TEMPERATURE", "MIDSCENE_PLANNING_MODEL_NAME", "MIDSCENE_PLANNING_MODEL_SOCKS_PROXY", "MIDSCENE_PLANNING_MODEL_HTTP_PROXY", "MIDSCENE_PLANNING_MODEL_BASE_URL", "MIDSCENE_PLANNING_MODEL_API_KEY", "MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON", "MIDSCENE_PLANNING_MODEL_TIMEOUT", "MIDSCENE_PLANNING_MODEL_TEMPERATURE", "MIDSCENE_MODEL_FAMILY"];
106
106
  export type TEnvKeys = (typeof ALL_ENV_KEYS)[number];
107
107
  export type TGlobalConfig = Record<TEnvKeys, string | undefined>;
108
108
  export type TVlModeValues = 'qwen2.5-vl' | 'qwen3-vl' | 'doubao-vision' | 'gemini' | 'vlm-ui-tars' | 'vlm-ui-tars-doubao' | 'vlm-ui-tars-doubao-1.5';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@midscene/shared",
3
- "version": "1.2.1-beta-20260109075435.0",
3
+ "version": "1.2.1-beta-20260112112154.0",
4
4
  "repository": "https://github.com/web-infra-dev/midscene",
5
5
  "homepage": "https://midscenejs.com/",
6
6
  "types": "./dist/types/index.d.ts",
@@ -79,20 +79,6 @@ export class GlobalConfigManager {
79
79
  return value;
80
80
  }
81
81
 
82
- /**
83
- * read number only from process.env
84
- */
85
- getEnvConfigInNumber(key: (typeof NUMBER_ENV_KEYS)[number]): number {
86
- const allConfig = this.getAllEnvConfig();
87
-
88
- if (!NUMBER_ENV_KEYS.includes(key)) {
89
- throw new Error(`getEnvConfigInNumber with key ${key} is not supported`);
90
- }
91
- const value = allConfig[key];
92
- this.keysHaveBeenRead[key] = true;
93
- return Number(value || '');
94
- }
95
-
96
82
  /**
97
83
  * read boolean only from process.env
98
84
  */
@@ -118,6 +104,37 @@ export class GlobalConfigManager {
118
104
  return !!value.trim();
119
105
  }
120
106
 
107
+ /**
108
+ * Read environment variable value and convert it to number.
109
+ * Returns undefined if the value is not set or cannot be converted to a valid number.
110
+ */
111
+ getEnvConfigValueAsNumber(
112
+ key: (typeof STRING_ENV_KEYS)[number] | (typeof NUMBER_ENV_KEYS)[number],
113
+ ): number | undefined {
114
+ if (
115
+ !STRING_ENV_KEYS.includes(key as never) &&
116
+ !NUMBER_ENV_KEYS.includes(key as never)
117
+ ) {
118
+ throw new Error(
119
+ `getEnvConfigValueAsNumber with key ${key} is not supported.`,
120
+ );
121
+ }
122
+
123
+ const allConfig = this.getAllEnvConfig();
124
+ const value = allConfig[key];
125
+ this.keysHaveBeenRead[key] = true;
126
+
127
+ if (typeof value !== 'string') {
128
+ return undefined;
129
+ }
130
+ const trimmed = value.trim();
131
+ if (!trimmed) {
132
+ return undefined;
133
+ }
134
+ const numValue = Number(trimmed);
135
+ return Number.isNaN(numValue) ? undefined : numValue;
136
+ }
137
+
121
138
  registerModelConfigManager(globalModelConfigManager: ModelConfigManager) {
122
139
  this.globalModelConfigManager = globalModelConfigManager;
123
140
  }
package/src/env/types.ts CHANGED
@@ -141,6 +141,7 @@ export const BOOLEAN_ENV_KEYS = [
141
141
  ] as const;
142
142
 
143
143
  export const NUMBER_ENV_KEYS = [
144
+ MIDSCENE_MODEL_MAX_TOKENS,
144
145
  MIDSCENE_CACHE_MAX_FILENAME_LENGTH,
145
146
  MIDSCENE_REPLANNING_CYCLE_LIMIT,
146
147
  ] as const;