🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@aico-test/shared

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aico-test/shared - npm Package Compare versions

Comparing version
8.0.0
to
10.0.0
+15
dist/es/common.d.ts
declare const defaultRunDirName = "midscene_run";
declare const isNodeEnv: boolean;
declare const getMidsceneRunDir: () => string;
declare const getMidsceneRunBaseDir: () => string;
/**
* Get the path to the midscene_run directory or a subdirectory within it.
* Creates the directory if it doesn't exist.
*
* @param subdir - Optional subdirectory name (e.g., 'log', 'report')
* @returns The absolute path to the requested directory
*/
declare const getMidsceneRunSubDir: (subdir: "dump" | "cache" | "report" | "tmp" | "log" | "output") => string;
declare const logDir: string;
export { defaultRunDirName, getMidsceneRunBaseDir, getMidsceneRunDir, getMidsceneRunSubDir, isNodeEnv, logDir };
// src/common.ts
import { existsSync, mkdirSync } from "fs";
import { tmpdir } from "os";
import path from "path";
// src/env.ts
var MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
var MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
var MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
var MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
var MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
var MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
var MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
var MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
var MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
var MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
var MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
var OPENAI_API_KEY = "OPENAI_API_KEY";
var OPENAI_BASE_URL = "OPENAI_BASE_URL";
var OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
var MIDSCENE_CACHE = "MIDSCENE_CACHE";
var MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
var MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
var MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
var MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
var MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
var MATCH_BY_POSITION = "MATCH_BY_POSITION";
var MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
var MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
var MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
var MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
var AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
var AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
var AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
var AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
var MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
var ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
var MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
var OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
var allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || void 0,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || void 0,
[MIDSCENE_FORCE_DEEP_THINK]: process.env[MIDSCENE_FORCE_DEEP_THINK] || void 0,
[MIDSCENE_LANGSMITH_DEBUG]: process.env[MIDSCENE_LANGSMITH_DEBUG] || void 0,
[MIDSCENE_DEBUG_AI_PROFILE]: process.env[MIDSCENE_DEBUG_AI_PROFILE] || void 0,
[MIDSCENE_DEBUG_AI_RESPONSE]: process.env[MIDSCENE_DEBUG_AI_RESPONSE] || void 0,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]: process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || void 0,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || void 0,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || void 0,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || void 0,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || void 0,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || void 0,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || void 0,
[MIDSCENE_REPORT_TAG_NAME]: process.env[MIDSCENE_REPORT_TAG_NAME] || void 0,
[MIDSCENE_OPENAI_SOCKS_PROXY]: process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || void 0,
[MIDSCENE_OPENAI_HTTPS_PROXY]: process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || void 0,
[MIDSCENE_USE_AZURE_OPENAI]: process.env[MIDSCENE_USE_AZURE_OPENAI] || void 0,
[MIDSCENE_AZURE_OPENAI_SCOPE]: process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || void 0,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_USE_ANTHROPIC_SDK]: process.env[MIDSCENE_USE_ANTHROPIC_SDK] || void 0,
[MIDSCENE_USE_VLM_UI_TARS]: process.env[MIDSCENE_USE_VLM_UI_TARS] || void 0,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || void 0,
[MIDSCENE_USE_DOUBAO_VISION]: process.env[MIDSCENE_USE_DOUBAO_VISION] || void 0,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || void 0,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || void 0,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || void 0,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || void 0,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || void 0,
[AZURE_OPENAI_API_VERSION]: process.env[AZURE_OPENAI_API_VERSION] || void 0,
[AZURE_OPENAI_DEPLOYMENT]: process.env[AZURE_OPENAI_DEPLOYMENT] || void 0,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]: process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || void 0,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || void 0
};
};
var globalConfig = null;
var getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
var getAIConfig = (configKey) => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
"MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead"
);
}
return getGlobalConfig()[configKey]?.trim();
};
// src/common.ts
var defaultRunDirName = "midscene_run";
var isNodeEnv = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
var getMidsceneRunDir = () => {
if (!isNodeEnv) {
return "";
}
return getAIConfig(MIDSCENE_RUN_DIR) || defaultRunDirName;
};
var getMidsceneRunBaseDir = () => {
if (!isNodeEnv) {
return "";
}
let basePath = path.resolve(process.cwd(), getMidsceneRunDir());
if (!existsSync(basePath)) {
try {
mkdirSync(basePath, { recursive: true });
} catch (error) {
basePath = path.join(tmpdir(), defaultRunDirName);
mkdirSync(basePath, { recursive: true });
}
}
return basePath;
};
var getMidsceneRunSubDir = (subdir) => {
if (!isNodeEnv) {
return "";
}
const basePath = getMidsceneRunBaseDir();
const logPath = path.join(basePath, subdir);
if (!existsSync(logPath)) {
mkdirSync(logPath, { recursive: true });
}
return logPath;
};
var logDir = isNodeEnv ? getMidsceneRunSubDir("log") : "";
export {
defaultRunDirName,
getMidsceneRunBaseDir,
getMidsceneRunDir,
getMidsceneRunSubDir,
isNodeEnv,
logDir
};
declare const MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
declare const MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
declare const MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
declare const MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
declare const MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
declare const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
declare const MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
declare const MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
declare const MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
declare const MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
declare const MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
declare const OPENAI_API_KEY = "OPENAI_API_KEY";
declare const OPENAI_BASE_URL = "OPENAI_BASE_URL";
declare const OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
declare const MIDSCENE_CACHE = "MIDSCENE_CACHE";
declare const MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
declare const MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
declare const MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
declare const MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
declare const MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
declare const MATCH_BY_POSITION = "MATCH_BY_POSITION";
declare const MIDSCENE_API_TYPE = "MIDSCENE-API-TYPE";
declare const MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
declare const MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
declare const MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
declare const MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
declare const AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
declare const AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
declare const AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
declare const AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
declare const MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
declare const ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
declare const MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
declare const OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
declare const allConfigFromEnv: () => {
MIDSCENE_OPENAI_INIT_CONFIG_JSON: string | undefined;
MIDSCENE_MODEL_NAME: string | undefined;
MIDSCENE_DEBUG_MODE: string | undefined;
MIDSCENE_FORCE_DEEP_THINK: string | undefined;
MIDSCENE_LANGSMITH_DEBUG: string | undefined;
MIDSCENE_DEBUG_AI_PROFILE: string | undefined;
MIDSCENE_DEBUG_AI_RESPONSE: string | undefined;
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG: string | undefined;
OPENAI_API_KEY: string | undefined;
OPENAI_BASE_URL: string | undefined;
OPENAI_MAX_TOKENS: string | undefined;
OPENAI_USE_AZURE: string | undefined;
MIDSCENE_CACHE: string | undefined;
MATCH_BY_POSITION: string | undefined;
MIDSCENE_REPORT_TAG_NAME: string | undefined;
MIDSCENE_OPENAI_SOCKS_PROXY: string | undefined;
MIDSCENE_OPENAI_HTTPS_PROXY: string | undefined;
MIDSCENE_USE_AZURE_OPENAI: string | undefined;
MIDSCENE_AZURE_OPENAI_SCOPE: string | undefined;
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON: string | undefined;
MIDSCENE_USE_ANTHROPIC_SDK: string | undefined;
MIDSCENE_USE_VLM_UI_TARS: string | undefined;
MIDSCENE_USE_QWEN_VL: string | undefined;
MIDSCENE_USE_DOUBAO_VISION: string | undefined;
MIDSCENE_USE_GEMINI: string | undefined;
MIDSCENE_USE_VL_MODEL: string | undefined;
ANTHROPIC_API_KEY: string | undefined;
AZURE_OPENAI_ENDPOINT: string | undefined;
AZURE_OPENAI_KEY: string | undefined;
AZURE_OPENAI_API_VERSION: string | undefined;
AZURE_OPENAI_DEPLOYMENT: string | undefined;
MIDSCENE_MCP_USE_PUPPETEER_MODE: string | undefined;
MIDSCENE_RUN_DIR: string | undefined;
};
declare enum UITarsModelVersion {
V1_0 = "1.0",
V1_5 = "1.5",
DOUBAO_1_5_15B = "doubao-1.5-15B",
DOUBAO_1_5_20B = "doubao-1.5-20B"
}
declare const uiTarsModelVersion: () => UITarsModelVersion | false;
declare const vlLocateMode: () => "qwen-vl" | "doubao-vision" | "gemini" | "vl-model" | "vlm-ui-tars" | false;
declare const getAIConfig: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => string | undefined;
declare const getAIConfigInBoolean: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => boolean;
declare const getAIConfigInJson: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => any;
declare const overrideAIConfig: (newConfig: Partial<ReturnType<typeof allConfigFromEnv>>, extendMode?: boolean) => void;
export { ANTHROPIC_API_KEY, AZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_KEY, MATCH_BY_POSITION, MIDSCENE_API_TYPE, MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_AZURE_OPENAI_SCOPE, MIDSCENE_CACHE, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_AI_PROFILE, MIDSCENE_DEBUG_AI_RESPONSE, MIDSCENE_DEBUG_MODE, MIDSCENE_FORCE_DEEP_THINK, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_USE_PUPPETEER_MODE, MIDSCENE_MODEL_NAME, MIDSCENE_OPENAI_HTTPS_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_ANTHROPIC_SDK, MIDSCENE_USE_AZURE_OPENAI, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MAX_TOKENS, OPENAI_USE_AZURE, UITarsModelVersion, allConfigFromEnv, getAIConfig, getAIConfigInBoolean, getAIConfigInJson, overrideAIConfig, uiTarsModelVersion, vlLocateMode };
// src/env.ts
var MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
var MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
var MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
var MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
var MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
var MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
var MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
var MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
var MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
var MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
var MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
var OPENAI_API_KEY = "OPENAI_API_KEY";
var OPENAI_BASE_URL = "OPENAI_BASE_URL";
var OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
var MIDSCENE_CACHE = "MIDSCENE_CACHE";
var MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
var MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
var MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
var MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
var MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
var MATCH_BY_POSITION = "MATCH_BY_POSITION";
var MIDSCENE_API_TYPE = "MIDSCENE-API-TYPE";
var MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
var MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
var MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
var MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
var AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
var AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
var AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
var AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
var MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
var ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
var MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
var OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
var allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || void 0,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || void 0,
[MIDSCENE_FORCE_DEEP_THINK]: process.env[MIDSCENE_FORCE_DEEP_THINK] || void 0,
[MIDSCENE_LANGSMITH_DEBUG]: process.env[MIDSCENE_LANGSMITH_DEBUG] || void 0,
[MIDSCENE_DEBUG_AI_PROFILE]: process.env[MIDSCENE_DEBUG_AI_PROFILE] || void 0,
[MIDSCENE_DEBUG_AI_RESPONSE]: process.env[MIDSCENE_DEBUG_AI_RESPONSE] || void 0,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]: process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || void 0,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || void 0,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || void 0,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || void 0,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || void 0,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || void 0,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || void 0,
[MIDSCENE_REPORT_TAG_NAME]: process.env[MIDSCENE_REPORT_TAG_NAME] || void 0,
[MIDSCENE_OPENAI_SOCKS_PROXY]: process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || void 0,
[MIDSCENE_OPENAI_HTTPS_PROXY]: process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || void 0,
[MIDSCENE_USE_AZURE_OPENAI]: process.env[MIDSCENE_USE_AZURE_OPENAI] || void 0,
[MIDSCENE_AZURE_OPENAI_SCOPE]: process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || void 0,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_USE_ANTHROPIC_SDK]: process.env[MIDSCENE_USE_ANTHROPIC_SDK] || void 0,
[MIDSCENE_USE_VLM_UI_TARS]: process.env[MIDSCENE_USE_VLM_UI_TARS] || void 0,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || void 0,
[MIDSCENE_USE_DOUBAO_VISION]: process.env[MIDSCENE_USE_DOUBAO_VISION] || void 0,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || void 0,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || void 0,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || void 0,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || void 0,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || void 0,
[AZURE_OPENAI_API_VERSION]: process.env[AZURE_OPENAI_API_VERSION] || void 0,
[AZURE_OPENAI_DEPLOYMENT]: process.env[AZURE_OPENAI_DEPLOYMENT] || void 0,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]: process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || void 0,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || void 0
};
};
var globalConfig = null;
var getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
var UITarsModelVersion = /* @__PURE__ */ ((UITarsModelVersion2) => {
UITarsModelVersion2["V1_0"] = "1.0";
UITarsModelVersion2["V1_5"] = "1.5";
UITarsModelVersion2["DOUBAO_1_5_15B"] = "doubao-1.5-15B";
UITarsModelVersion2["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
return UITarsModelVersion2;
})(UITarsModelVersion || {});
var uiTarsModelVersion = () => {
if (vlLocateMode() !== "vlm-ui-tars") {
return false;
}
const versionConfig = getAIConfigInJson(MIDSCENE_USE_VLM_UI_TARS);
if (versionConfig === "1" || versionConfig === 1) {
return "1.0" /* V1_0 */;
}
if (versionConfig === "DOUBAO-1.5") {
return "doubao-1.5-20B" /* DOUBAO_1_5_20B */;
}
return `${versionConfig}`;
};
var vlLocateMode = () => {
const enabledModes = [
getAIConfigInBoolean(MIDSCENE_USE_DOUBAO_VISION) && "MIDSCENE_USE_DOUBAO_VISION",
getAIConfigInBoolean(MIDSCENE_USE_QWEN_VL) && "MIDSCENE_USE_QWEN_VL",
getAIConfigInBoolean(MIDSCENE_USE_VLM_UI_TARS) && "MIDSCENE_USE_VLM_UI_TARS",
getAIConfigInBoolean(MIDSCENE_USE_GEMINI) && "MIDSCENE_USE_GEMINI"
].filter(Boolean);
if (enabledModes.length > 1) {
throw new Error(
`Only one vision mode can be enabled at a time. Currently enabled modes: ${enabledModes.join(", ")}. Please disable all but one mode.`
);
}
if (getAIConfigInBoolean(MIDSCENE_USE_QWEN_VL)) {
return "qwen-vl";
}
if (getAIConfigInBoolean(MIDSCENE_USE_DOUBAO_VISION)) {
return "doubao-vision";
}
if (getAIConfigInBoolean(MIDSCENE_USE_GEMINI)) {
return "gemini";
}
if (getAIConfigInBoolean(MIDSCENE_USE_VL_MODEL)) {
return "vl-model";
}
if (getAIConfigInBoolean(MIDSCENE_USE_VLM_UI_TARS)) {
return "vlm-ui-tars";
}
return false;
};
var getAIConfig = (configKey) => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
"MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead"
);
}
return getGlobalConfig()[configKey]?.trim();
};
var getAIConfigInBoolean = (configKey) => {
const config = getAIConfig(configKey) || "";
if (/^(true|1)$/i.test(config)) {
return true;
}
if (/^(false|0)$/i.test(config)) {
return false;
}
return !!config.trim();
};
var getAIConfigInJson = (configKey) => {
const config = getAIConfig(configKey);
try {
return config ? JSON.parse(config) : void 0;
} catch (error) {
throw new Error(
`Failed to parse json config: ${configKey}. ${error.message}`,
{
cause: error
}
);
}
};
var overrideAIConfig = (newConfig, extendMode = false) => {
for (const key in newConfig) {
if (typeof key !== "string") {
throw new Error(`Failed to override AI config, invalid key: ${key}`);
}
if (typeof newConfig[key] === "object") {
throw new Error(
`Failed to override AI config, invalid value for key: ${key}, value: ${newConfig[key]}`
);
}
}
const currentConfig = getGlobalConfig();
globalConfig = extendMode ? { ...currentConfig, ...newConfig } : { ...newConfig };
};
export {
ANTHROPIC_API_KEY,
AZURE_OPENAI_API_VERSION,
AZURE_OPENAI_DEPLOYMENT,
AZURE_OPENAI_ENDPOINT,
AZURE_OPENAI_KEY,
MATCH_BY_POSITION,
MIDSCENE_API_TYPE,
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON,
MIDSCENE_AZURE_OPENAI_SCOPE,
MIDSCENE_CACHE,
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG,
MIDSCENE_DEBUG_AI_PROFILE,
MIDSCENE_DEBUG_AI_RESPONSE,
MIDSCENE_DEBUG_MODE,
MIDSCENE_FORCE_DEEP_THINK,
MIDSCENE_LANGSMITH_DEBUG,
MIDSCENE_MCP_USE_PUPPETEER_MODE,
MIDSCENE_MODEL_NAME,
MIDSCENE_OPENAI_HTTPS_PROXY,
MIDSCENE_OPENAI_INIT_CONFIG_JSON,
MIDSCENE_OPENAI_SOCKS_PROXY,
MIDSCENE_REPORT_TAG_NAME,
MIDSCENE_RUN_DIR,
MIDSCENE_USE_ANTHROPIC_SDK,
MIDSCENE_USE_AZURE_OPENAI,
MIDSCENE_USE_DOUBAO_VISION,
MIDSCENE_USE_GEMINI,
MIDSCENE_USE_QWEN_VL,
MIDSCENE_USE_VLM_UI_TARS,
MIDSCENE_USE_VL_MODEL,
OPENAI_API_KEY,
OPENAI_BASE_URL,
OPENAI_MAX_TOKENS,
OPENAI_USE_AZURE,
UITarsModelVersion,
allConfigFromEnv,
getAIConfig,
getAIConfigInBoolean,
getAIConfigInJson,
overrideAIConfig,
uiTarsModelVersion,
vlLocateMode
};
declare const defaultRunDirName = "midscene_run";
declare const isNodeEnv: boolean;
declare const getMidsceneRunDir: () => string;
declare const getMidsceneRunBaseDir: () => string;
/**
* Get the path to the midscene_run directory or a subdirectory within it.
* Creates the directory if it doesn't exist.
*
* @param subdir - Optional subdirectory name (e.g., 'log', 'report')
* @returns The absolute path to the requested directory
*/
declare const getMidsceneRunSubDir: (subdir: "dump" | "cache" | "report" | "tmp" | "log" | "output") => string;
declare const logDir: string;
export { defaultRunDirName, getMidsceneRunBaseDir, getMidsceneRunDir, getMidsceneRunSubDir, isNodeEnv, logDir };
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/common.ts
var common_exports = {};
__export(common_exports, {
defaultRunDirName: () => defaultRunDirName,
getMidsceneRunBaseDir: () => getMidsceneRunBaseDir,
getMidsceneRunDir: () => getMidsceneRunDir,
getMidsceneRunSubDir: () => getMidsceneRunSubDir,
isNodeEnv: () => isNodeEnv,
logDir: () => logDir
});
module.exports = __toCommonJS(common_exports);
var import_node_fs = require("fs");
var import_node_os = require("os");
var import_node_path = __toESM(require("path"));
// src/env.ts
var MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
var MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
var MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
var MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
var MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
var MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
var MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
var MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
var MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
var MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
var MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
var OPENAI_API_KEY = "OPENAI_API_KEY";
var OPENAI_BASE_URL = "OPENAI_BASE_URL";
var OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
var MIDSCENE_CACHE = "MIDSCENE_CACHE";
var MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
var MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
var MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
var MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
var MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
var MATCH_BY_POSITION = "MATCH_BY_POSITION";
var MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
var MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
var MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
var MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
var AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
var AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
var AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
var AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
var MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
var ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
var MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
var OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
var allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || void 0,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || void 0,
[MIDSCENE_FORCE_DEEP_THINK]: process.env[MIDSCENE_FORCE_DEEP_THINK] || void 0,
[MIDSCENE_LANGSMITH_DEBUG]: process.env[MIDSCENE_LANGSMITH_DEBUG] || void 0,
[MIDSCENE_DEBUG_AI_PROFILE]: process.env[MIDSCENE_DEBUG_AI_PROFILE] || void 0,
[MIDSCENE_DEBUG_AI_RESPONSE]: process.env[MIDSCENE_DEBUG_AI_RESPONSE] || void 0,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]: process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || void 0,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || void 0,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || void 0,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || void 0,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || void 0,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || void 0,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || void 0,
[MIDSCENE_REPORT_TAG_NAME]: process.env[MIDSCENE_REPORT_TAG_NAME] || void 0,
[MIDSCENE_OPENAI_SOCKS_PROXY]: process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || void 0,
[MIDSCENE_OPENAI_HTTPS_PROXY]: process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || void 0,
[MIDSCENE_USE_AZURE_OPENAI]: process.env[MIDSCENE_USE_AZURE_OPENAI] || void 0,
[MIDSCENE_AZURE_OPENAI_SCOPE]: process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || void 0,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_USE_ANTHROPIC_SDK]: process.env[MIDSCENE_USE_ANTHROPIC_SDK] || void 0,
[MIDSCENE_USE_VLM_UI_TARS]: process.env[MIDSCENE_USE_VLM_UI_TARS] || void 0,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || void 0,
[MIDSCENE_USE_DOUBAO_VISION]: process.env[MIDSCENE_USE_DOUBAO_VISION] || void 0,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || void 0,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || void 0,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || void 0,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || void 0,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || void 0,
[AZURE_OPENAI_API_VERSION]: process.env[AZURE_OPENAI_API_VERSION] || void 0,
[AZURE_OPENAI_DEPLOYMENT]: process.env[AZURE_OPENAI_DEPLOYMENT] || void 0,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]: process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || void 0,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || void 0
};
};
var globalConfig = null;
var getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
var getAIConfig = (configKey) => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
"MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead"
);
}
return getGlobalConfig()[configKey]?.trim();
};
// src/common.ts
var defaultRunDirName = "midscene_run";
var isNodeEnv = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
var getMidsceneRunDir = () => {
if (!isNodeEnv) {
return "";
}
return getAIConfig(MIDSCENE_RUN_DIR) || defaultRunDirName;
};
var getMidsceneRunBaseDir = () => {
if (!isNodeEnv) {
return "";
}
let basePath = import_node_path.default.resolve(process.cwd(), getMidsceneRunDir());
if (!(0, import_node_fs.existsSync)(basePath)) {
try {
(0, import_node_fs.mkdirSync)(basePath, { recursive: true });
} catch (error) {
basePath = import_node_path.default.join((0, import_node_os.tmpdir)(), defaultRunDirName);
(0, import_node_fs.mkdirSync)(basePath, { recursive: true });
}
}
return basePath;
};
var getMidsceneRunSubDir = (subdir) => {
if (!isNodeEnv) {
return "";
}
const basePath = getMidsceneRunBaseDir();
const logPath = import_node_path.default.join(basePath, subdir);
if (!(0, import_node_fs.existsSync)(logPath)) {
(0, import_node_fs.mkdirSync)(logPath, { recursive: true });
}
return logPath;
};
var logDir = isNodeEnv ? getMidsceneRunSubDir("log") : "";
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
defaultRunDirName,
getMidsceneRunBaseDir,
getMidsceneRunDir,
getMidsceneRunSubDir,
isNodeEnv,
logDir
});
declare const MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
declare const MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
declare const MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
declare const MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
declare const MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
declare const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
declare const MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
declare const MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
declare const MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
declare const MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
declare const MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
declare const OPENAI_API_KEY = "OPENAI_API_KEY";
declare const OPENAI_BASE_URL = "OPENAI_BASE_URL";
declare const OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
declare const MIDSCENE_CACHE = "MIDSCENE_CACHE";
declare const MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
declare const MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
declare const MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
declare const MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
declare const MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
declare const MATCH_BY_POSITION = "MATCH_BY_POSITION";
declare const MIDSCENE_API_TYPE = "MIDSCENE-API-TYPE";
declare const MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
declare const MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
declare const MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
declare const MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
declare const AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
declare const AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
declare const AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
declare const AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
declare const MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
declare const ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
declare const MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
declare const OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
declare const allConfigFromEnv: () => {
MIDSCENE_OPENAI_INIT_CONFIG_JSON: string | undefined;
MIDSCENE_MODEL_NAME: string | undefined;
MIDSCENE_DEBUG_MODE: string | undefined;
MIDSCENE_FORCE_DEEP_THINK: string | undefined;
MIDSCENE_LANGSMITH_DEBUG: string | undefined;
MIDSCENE_DEBUG_AI_PROFILE: string | undefined;
MIDSCENE_DEBUG_AI_RESPONSE: string | undefined;
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG: string | undefined;
OPENAI_API_KEY: string | undefined;
OPENAI_BASE_URL: string | undefined;
OPENAI_MAX_TOKENS: string | undefined;
OPENAI_USE_AZURE: string | undefined;
MIDSCENE_CACHE: string | undefined;
MATCH_BY_POSITION: string | undefined;
MIDSCENE_REPORT_TAG_NAME: string | undefined;
MIDSCENE_OPENAI_SOCKS_PROXY: string | undefined;
MIDSCENE_OPENAI_HTTPS_PROXY: string | undefined;
MIDSCENE_USE_AZURE_OPENAI: string | undefined;
MIDSCENE_AZURE_OPENAI_SCOPE: string | undefined;
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON: string | undefined;
MIDSCENE_USE_ANTHROPIC_SDK: string | undefined;
MIDSCENE_USE_VLM_UI_TARS: string | undefined;
MIDSCENE_USE_QWEN_VL: string | undefined;
MIDSCENE_USE_DOUBAO_VISION: string | undefined;
MIDSCENE_USE_GEMINI: string | undefined;
MIDSCENE_USE_VL_MODEL: string | undefined;
ANTHROPIC_API_KEY: string | undefined;
AZURE_OPENAI_ENDPOINT: string | undefined;
AZURE_OPENAI_KEY: string | undefined;
AZURE_OPENAI_API_VERSION: string | undefined;
AZURE_OPENAI_DEPLOYMENT: string | undefined;
MIDSCENE_MCP_USE_PUPPETEER_MODE: string | undefined;
MIDSCENE_RUN_DIR: string | undefined;
};
declare enum UITarsModelVersion {
V1_0 = "1.0",
V1_5 = "1.5",
DOUBAO_1_5_15B = "doubao-1.5-15B",
DOUBAO_1_5_20B = "doubao-1.5-20B"
}
declare const uiTarsModelVersion: () => UITarsModelVersion | false;
declare const vlLocateMode: () => "qwen-vl" | "doubao-vision" | "gemini" | "vl-model" | "vlm-ui-tars" | false;
declare const getAIConfig: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => string | undefined;
declare const getAIConfigInBoolean: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => boolean;
declare const getAIConfigInJson: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => any;
declare const overrideAIConfig: (newConfig: Partial<ReturnType<typeof allConfigFromEnv>>, extendMode?: boolean) => void;
export { ANTHROPIC_API_KEY, AZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_KEY, MATCH_BY_POSITION, MIDSCENE_API_TYPE, MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_AZURE_OPENAI_SCOPE, MIDSCENE_CACHE, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_AI_PROFILE, MIDSCENE_DEBUG_AI_RESPONSE, MIDSCENE_DEBUG_MODE, MIDSCENE_FORCE_DEEP_THINK, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_USE_PUPPETEER_MODE, MIDSCENE_MODEL_NAME, MIDSCENE_OPENAI_HTTPS_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_ANTHROPIC_SDK, MIDSCENE_USE_AZURE_OPENAI, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MAX_TOKENS, OPENAI_USE_AZURE, UITarsModelVersion, allConfigFromEnv, getAIConfig, getAIConfigInBoolean, getAIConfigInJson, overrideAIConfig, uiTarsModelVersion, vlLocateMode };
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/env.ts
var env_exports = {};
__export(env_exports, {
ANTHROPIC_API_KEY: () => ANTHROPIC_API_KEY,
AZURE_OPENAI_API_VERSION: () => AZURE_OPENAI_API_VERSION,
AZURE_OPENAI_DEPLOYMENT: () => AZURE_OPENAI_DEPLOYMENT,
AZURE_OPENAI_ENDPOINT: () => AZURE_OPENAI_ENDPOINT,
AZURE_OPENAI_KEY: () => AZURE_OPENAI_KEY,
MATCH_BY_POSITION: () => MATCH_BY_POSITION,
MIDSCENE_API_TYPE: () => MIDSCENE_API_TYPE,
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON: () => MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON,
MIDSCENE_AZURE_OPENAI_SCOPE: () => MIDSCENE_AZURE_OPENAI_SCOPE,
MIDSCENE_CACHE: () => MIDSCENE_CACHE,
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG: () => MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG,
MIDSCENE_DEBUG_AI_PROFILE: () => MIDSCENE_DEBUG_AI_PROFILE,
MIDSCENE_DEBUG_AI_RESPONSE: () => MIDSCENE_DEBUG_AI_RESPONSE,
MIDSCENE_DEBUG_MODE: () => MIDSCENE_DEBUG_MODE,
MIDSCENE_FORCE_DEEP_THINK: () => MIDSCENE_FORCE_DEEP_THINK,
MIDSCENE_LANGSMITH_DEBUG: () => MIDSCENE_LANGSMITH_DEBUG,
MIDSCENE_MCP_USE_PUPPETEER_MODE: () => MIDSCENE_MCP_USE_PUPPETEER_MODE,
MIDSCENE_MODEL_NAME: () => MIDSCENE_MODEL_NAME,
MIDSCENE_OPENAI_HTTPS_PROXY: () => MIDSCENE_OPENAI_HTTPS_PROXY,
MIDSCENE_OPENAI_INIT_CONFIG_JSON: () => MIDSCENE_OPENAI_INIT_CONFIG_JSON,
MIDSCENE_OPENAI_SOCKS_PROXY: () => MIDSCENE_OPENAI_SOCKS_PROXY,
MIDSCENE_REPORT_TAG_NAME: () => MIDSCENE_REPORT_TAG_NAME,
MIDSCENE_RUN_DIR: () => MIDSCENE_RUN_DIR,
MIDSCENE_USE_ANTHROPIC_SDK: () => MIDSCENE_USE_ANTHROPIC_SDK,
MIDSCENE_USE_AZURE_OPENAI: () => MIDSCENE_USE_AZURE_OPENAI,
MIDSCENE_USE_DOUBAO_VISION: () => MIDSCENE_USE_DOUBAO_VISION,
MIDSCENE_USE_GEMINI: () => MIDSCENE_USE_GEMINI,
MIDSCENE_USE_QWEN_VL: () => MIDSCENE_USE_QWEN_VL,
MIDSCENE_USE_VLM_UI_TARS: () => MIDSCENE_USE_VLM_UI_TARS,
MIDSCENE_USE_VL_MODEL: () => MIDSCENE_USE_VL_MODEL,
OPENAI_API_KEY: () => OPENAI_API_KEY,
OPENAI_BASE_URL: () => OPENAI_BASE_URL,
OPENAI_MAX_TOKENS: () => OPENAI_MAX_TOKENS,
OPENAI_USE_AZURE: () => OPENAI_USE_AZURE,
UITarsModelVersion: () => UITarsModelVersion,
allConfigFromEnv: () => allConfigFromEnv,
getAIConfig: () => getAIConfig,
getAIConfigInBoolean: () => getAIConfigInBoolean,
getAIConfigInJson: () => getAIConfigInJson,
overrideAIConfig: () => overrideAIConfig,
uiTarsModelVersion: () => uiTarsModelVersion,
vlLocateMode: () => vlLocateMode
});
module.exports = __toCommonJS(env_exports);
var MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
var MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
var MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
var MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
var MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
var MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
var MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
var MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
var MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
var MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
var MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
var OPENAI_API_KEY = "OPENAI_API_KEY";
var OPENAI_BASE_URL = "OPENAI_BASE_URL";
var OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
var MIDSCENE_CACHE = "MIDSCENE_CACHE";
var MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
var MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
var MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
var MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
var MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
var MATCH_BY_POSITION = "MATCH_BY_POSITION";
var MIDSCENE_API_TYPE = "MIDSCENE-API-TYPE";
var MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
var MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
var MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
var MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
var AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
var AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
var AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
var AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
var MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
var ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
var MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
var OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
var allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || void 0,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || void 0,
[MIDSCENE_FORCE_DEEP_THINK]: process.env[MIDSCENE_FORCE_DEEP_THINK] || void 0,
[MIDSCENE_LANGSMITH_DEBUG]: process.env[MIDSCENE_LANGSMITH_DEBUG] || void 0,
[MIDSCENE_DEBUG_AI_PROFILE]: process.env[MIDSCENE_DEBUG_AI_PROFILE] || void 0,
[MIDSCENE_DEBUG_AI_RESPONSE]: process.env[MIDSCENE_DEBUG_AI_RESPONSE] || void 0,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]: process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || void 0,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || void 0,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || void 0,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || void 0,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || void 0,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || void 0,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || void 0,
[MIDSCENE_REPORT_TAG_NAME]: process.env[MIDSCENE_REPORT_TAG_NAME] || void 0,
[MIDSCENE_OPENAI_SOCKS_PROXY]: process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || void 0,
[MIDSCENE_OPENAI_HTTPS_PROXY]: process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || void 0,
[MIDSCENE_USE_AZURE_OPENAI]: process.env[MIDSCENE_USE_AZURE_OPENAI] || void 0,
[MIDSCENE_AZURE_OPENAI_SCOPE]: process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || void 0,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_USE_ANTHROPIC_SDK]: process.env[MIDSCENE_USE_ANTHROPIC_SDK] || void 0,
[MIDSCENE_USE_VLM_UI_TARS]: process.env[MIDSCENE_USE_VLM_UI_TARS] || void 0,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || void 0,
[MIDSCENE_USE_DOUBAO_VISION]: process.env[MIDSCENE_USE_DOUBAO_VISION] || void 0,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || void 0,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || void 0,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || void 0,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || void 0,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || void 0,
[AZURE_OPENAI_API_VERSION]: process.env[AZURE_OPENAI_API_VERSION] || void 0,
[AZURE_OPENAI_DEPLOYMENT]: process.env[AZURE_OPENAI_DEPLOYMENT] || void 0,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]: process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || void 0,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || void 0
};
};
var globalConfig = null;
var getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
var UITarsModelVersion = /* @__PURE__ */ ((UITarsModelVersion2) => {
UITarsModelVersion2["V1_0"] = "1.0";
UITarsModelVersion2["V1_5"] = "1.5";
UITarsModelVersion2["DOUBAO_1_5_15B"] = "doubao-1.5-15B";
UITarsModelVersion2["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
return UITarsModelVersion2;
})(UITarsModelVersion || {});
var uiTarsModelVersion = () => {
if (vlLocateMode() !== "vlm-ui-tars") {
return false;
}
const versionConfig = getAIConfigInJson(MIDSCENE_USE_VLM_UI_TARS);
if (versionConfig === "1" || versionConfig === 1) {
return "1.0" /* V1_0 */;
}
if (versionConfig === "DOUBAO-1.5") {
return "doubao-1.5-20B" /* DOUBAO_1_5_20B */;
}
return `${versionConfig}`;
};
var vlLocateMode = () => {
const enabledModes = [
getAIConfigInBoolean(MIDSCENE_USE_DOUBAO_VISION) && "MIDSCENE_USE_DOUBAO_VISION",
getAIConfigInBoolean(MIDSCENE_USE_QWEN_VL) && "MIDSCENE_USE_QWEN_VL",
getAIConfigInBoolean(MIDSCENE_USE_VLM_UI_TARS) && "MIDSCENE_USE_VLM_UI_TARS",
getAIConfigInBoolean(MIDSCENE_USE_GEMINI) && "MIDSCENE_USE_GEMINI"
].filter(Boolean);
if (enabledModes.length > 1) {
throw new Error(
`Only one vision mode can be enabled at a time. Currently enabled modes: ${enabledModes.join(", ")}. Please disable all but one mode.`
);
}
if (getAIConfigInBoolean(MIDSCENE_USE_QWEN_VL)) {
return "qwen-vl";
}
if (getAIConfigInBoolean(MIDSCENE_USE_DOUBAO_VISION)) {
return "doubao-vision";
}
if (getAIConfigInBoolean(MIDSCENE_USE_GEMINI)) {
return "gemini";
}
if (getAIConfigInBoolean(MIDSCENE_USE_VL_MODEL)) {
return "vl-model";
}
if (getAIConfigInBoolean(MIDSCENE_USE_VLM_UI_TARS)) {
return "vlm-ui-tars";
}
return false;
};
var getAIConfig = (configKey) => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
"MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead"
);
}
return getGlobalConfig()[configKey]?.trim();
};
var getAIConfigInBoolean = (configKey) => {
const config = getAIConfig(configKey) || "";
if (/^(true|1)$/i.test(config)) {
return true;
}
if (/^(false|0)$/i.test(config)) {
return false;
}
return !!config.trim();
};
var getAIConfigInJson = (configKey) => {
const config = getAIConfig(configKey);
try {
return config ? JSON.parse(config) : void 0;
} catch (error) {
throw new Error(
`Failed to parse json config: ${configKey}. ${error.message}`,
{
cause: error
}
);
}
};
var overrideAIConfig = (newConfig, extendMode = false) => {
for (const key in newConfig) {
if (typeof key !== "string") {
throw new Error(`Failed to override AI config, invalid key: ${key}`);
}
if (typeof newConfig[key] === "object") {
throw new Error(
`Failed to override AI config, invalid value for key: ${key}, value: ${newConfig[key]}`
);
}
}
const currentConfig = getGlobalConfig();
globalConfig = extendMode ? { ...currentConfig, ...newConfig } : { ...newConfig };
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
ANTHROPIC_API_KEY,
AZURE_OPENAI_API_VERSION,
AZURE_OPENAI_DEPLOYMENT,
AZURE_OPENAI_ENDPOINT,
AZURE_OPENAI_KEY,
MATCH_BY_POSITION,
MIDSCENE_API_TYPE,
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON,
MIDSCENE_AZURE_OPENAI_SCOPE,
MIDSCENE_CACHE,
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG,
MIDSCENE_DEBUG_AI_PROFILE,
MIDSCENE_DEBUG_AI_RESPONSE,
MIDSCENE_DEBUG_MODE,
MIDSCENE_FORCE_DEEP_THINK,
MIDSCENE_LANGSMITH_DEBUG,
MIDSCENE_MCP_USE_PUPPETEER_MODE,
MIDSCENE_MODEL_NAME,
MIDSCENE_OPENAI_HTTPS_PROXY,
MIDSCENE_OPENAI_INIT_CONFIG_JSON,
MIDSCENE_OPENAI_SOCKS_PROXY,
MIDSCENE_REPORT_TAG_NAME,
MIDSCENE_RUN_DIR,
MIDSCENE_USE_ANTHROPIC_SDK,
MIDSCENE_USE_AZURE_OPENAI,
MIDSCENE_USE_DOUBAO_VISION,
MIDSCENE_USE_GEMINI,
MIDSCENE_USE_QWEN_VL,
MIDSCENE_USE_VLM_UI_TARS,
MIDSCENE_USE_VL_MODEL,
OPENAI_API_KEY,
OPENAI_BASE_URL,
OPENAI_MAX_TOKENS,
OPENAI_USE_AZURE,
UITarsModelVersion,
allConfigFromEnv,
getAIConfig,
getAIConfigInBoolean,
getAIConfigInJson,
overrideAIConfig,
uiTarsModelVersion,
vlLocateMode
});
declare const defaultRunDirName = "midscene_run";
declare const isNodeEnv: boolean;
declare const getMidsceneRunDir: () => string;
declare const getMidsceneRunBaseDir: () => string;
/**
* Get the path to the midscene_run directory or a subdirectory within it.
* Creates the directory if it doesn't exist.
*
* @param subdir - Optional subdirectory name (e.g., 'log', 'report')
* @returns The absolute path to the requested directory
*/
declare const getMidsceneRunSubDir: (subdir: "dump" | "cache" | "report" | "tmp" | "log" | "output") => string;
declare const logDir: string;
export { defaultRunDirName, getMidsceneRunBaseDir, getMidsceneRunDir, getMidsceneRunSubDir, isNodeEnv, logDir };
declare const MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
declare const MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
declare const MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
declare const MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
declare const MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
declare const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
declare const MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
declare const MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
declare const MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
declare const MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
declare const MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
declare const OPENAI_API_KEY = "OPENAI_API_KEY";
declare const OPENAI_BASE_URL = "OPENAI_BASE_URL";
declare const OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
declare const MIDSCENE_CACHE = "MIDSCENE_CACHE";
declare const MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
declare const MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
declare const MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
declare const MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
declare const MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
declare const MATCH_BY_POSITION = "MATCH_BY_POSITION";
declare const MIDSCENE_API_TYPE = "MIDSCENE-API-TYPE";
declare const MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
declare const MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
declare const MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
declare const MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
declare const AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
declare const AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
declare const AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
declare const AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
declare const MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
declare const ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
declare const MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
declare const OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
declare const allConfigFromEnv: () => {
MIDSCENE_OPENAI_INIT_CONFIG_JSON: string | undefined;
MIDSCENE_MODEL_NAME: string | undefined;
MIDSCENE_DEBUG_MODE: string | undefined;
MIDSCENE_FORCE_DEEP_THINK: string | undefined;
MIDSCENE_LANGSMITH_DEBUG: string | undefined;
MIDSCENE_DEBUG_AI_PROFILE: string | undefined;
MIDSCENE_DEBUG_AI_RESPONSE: string | undefined;
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG: string | undefined;
OPENAI_API_KEY: string | undefined;
OPENAI_BASE_URL: string | undefined;
OPENAI_MAX_TOKENS: string | undefined;
OPENAI_USE_AZURE: string | undefined;
MIDSCENE_CACHE: string | undefined;
MATCH_BY_POSITION: string | undefined;
MIDSCENE_REPORT_TAG_NAME: string | undefined;
MIDSCENE_OPENAI_SOCKS_PROXY: string | undefined;
MIDSCENE_OPENAI_HTTPS_PROXY: string | undefined;
MIDSCENE_USE_AZURE_OPENAI: string | undefined;
MIDSCENE_AZURE_OPENAI_SCOPE: string | undefined;
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON: string | undefined;
MIDSCENE_USE_ANTHROPIC_SDK: string | undefined;
MIDSCENE_USE_VLM_UI_TARS: string | undefined;
MIDSCENE_USE_QWEN_VL: string | undefined;
MIDSCENE_USE_DOUBAO_VISION: string | undefined;
MIDSCENE_USE_GEMINI: string | undefined;
MIDSCENE_USE_VL_MODEL: string | undefined;
ANTHROPIC_API_KEY: string | undefined;
AZURE_OPENAI_ENDPOINT: string | undefined;
AZURE_OPENAI_KEY: string | undefined;
AZURE_OPENAI_API_VERSION: string | undefined;
AZURE_OPENAI_DEPLOYMENT: string | undefined;
MIDSCENE_MCP_USE_PUPPETEER_MODE: string | undefined;
MIDSCENE_RUN_DIR: string | undefined;
};
declare enum UITarsModelVersion {
V1_0 = "1.0",
V1_5 = "1.5",
DOUBAO_1_5_15B = "doubao-1.5-15B",
DOUBAO_1_5_20B = "doubao-1.5-20B"
}
declare const uiTarsModelVersion: () => UITarsModelVersion | false;
declare const vlLocateMode: () => "qwen-vl" | "doubao-vision" | "gemini" | "vl-model" | "vlm-ui-tars" | false;
declare const getAIConfig: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => string | undefined;
declare const getAIConfigInBoolean: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => boolean;
declare const getAIConfigInJson: (configKey: keyof ReturnType<typeof allConfigFromEnv>) => any;
declare const overrideAIConfig: (newConfig: Partial<ReturnType<typeof allConfigFromEnv>>, extendMode?: boolean) => void;
export { ANTHROPIC_API_KEY, AZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_KEY, MATCH_BY_POSITION, MIDSCENE_API_TYPE, MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_AZURE_OPENAI_SCOPE, MIDSCENE_CACHE, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_AI_PROFILE, MIDSCENE_DEBUG_AI_RESPONSE, MIDSCENE_DEBUG_MODE, MIDSCENE_FORCE_DEEP_THINK, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_USE_PUPPETEER_MODE, MIDSCENE_MODEL_NAME, MIDSCENE_OPENAI_HTTPS_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_ANTHROPIC_SDK, MIDSCENE_USE_AZURE_OPENAI, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MAX_TOKENS, OPENAI_USE_AZURE, UITarsModelVersion, allConfigFromEnv, getAIConfig, getAIConfigInBoolean, getAIConfigInJson, overrideAIConfig, uiTarsModelVersion, vlLocateMode };
// config keys
export const MIDSCENE_OPENAI_INIT_CONFIG_JSON =
'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
export const MIDSCENE_MODEL_NAME = 'MIDSCENE_MODEL_NAME';
export const MIDSCENE_LANGSMITH_DEBUG = 'MIDSCENE_LANGSMITH_DEBUG';
export const MIDSCENE_DEBUG_AI_PROFILE = 'MIDSCENE_DEBUG_AI_PROFILE';
export const MIDSCENE_DEBUG_AI_RESPONSE = 'MIDSCENE_DEBUG_AI_RESPONSE';
export const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG =
'MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG';
export const MIDSCENE_DEBUG_MODE = 'MIDSCENE_DEBUG_MODE';
export const MIDSCENE_MCP_USE_PUPPETEER_MODE =
'MIDSCENE_MCP_USE_PUPPETEER_MODE';
export const MIDSCENE_FORCE_DEEP_THINK = 'MIDSCENE_FORCE_DEEP_THINK';
export const MIDSCENE_OPENAI_SOCKS_PROXY = 'MIDSCENE_OPENAI_SOCKS_PROXY';
export const MIDSCENE_OPENAI_HTTPS_PROXY = 'MIDSCENE_OPENAI_HTTPS_PROXY';
export const OPENAI_API_KEY = 'OPENAI_API_KEY';
export const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
export const OPENAI_MAX_TOKENS = 'OPENAI_MAX_TOKENS';
export const MIDSCENE_CACHE = 'MIDSCENE_CACHE';
export const MIDSCENE_USE_VLM_UI_TARS = 'MIDSCENE_USE_VLM_UI_TARS';
export const MIDSCENE_USE_QWEN_VL = 'MIDSCENE_USE_QWEN_VL';
export const MIDSCENE_USE_DOUBAO_VISION = 'MIDSCENE_USE_DOUBAO_VISION';
export const MIDSCENE_USE_GEMINI = 'MIDSCENE_USE_GEMINI';
export const MIDSCENE_USE_VL_MODEL = 'MIDSCENE_USE_VL_MODEL';
export const MATCH_BY_POSITION = 'MATCH_BY_POSITION';
export const MIDSCENE_API_TYPE = 'MIDSCENE-API-TYPE';
export const MIDSCENE_REPORT_TAG_NAME = 'MIDSCENE_REPORT_TAG_NAME';
export const MIDSCENE_USE_AZURE_OPENAI = 'MIDSCENE_USE_AZURE_OPENAI';
export const MIDSCENE_AZURE_OPENAI_SCOPE = 'MIDSCENE_AZURE_OPENAI_SCOPE';
export const MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON =
'MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON';
export const AZURE_OPENAI_ENDPOINT = 'AZURE_OPENAI_ENDPOINT';
export const AZURE_OPENAI_KEY = 'AZURE_OPENAI_KEY';
export const AZURE_OPENAI_API_VERSION = 'AZURE_OPENAI_API_VERSION';
export const AZURE_OPENAI_DEPLOYMENT = 'AZURE_OPENAI_DEPLOYMENT';
export const MIDSCENE_USE_ANTHROPIC_SDK = 'MIDSCENE_USE_ANTHROPIC_SDK';
export const ANTHROPIC_API_KEY = 'ANTHROPIC_API_KEY';
export const MIDSCENE_RUN_DIR = 'MIDSCENE_RUN_DIR';
// @deprecated
export const OPENAI_USE_AZURE = 'OPENAI_USE_AZURE';
export const allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]:
process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || undefined,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || undefined,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || undefined,
[MIDSCENE_FORCE_DEEP_THINK]:
process.env[MIDSCENE_FORCE_DEEP_THINK] || undefined,
[MIDSCENE_LANGSMITH_DEBUG]:
process.env[MIDSCENE_LANGSMITH_DEBUG] || undefined,
[MIDSCENE_DEBUG_AI_PROFILE]:
process.env[MIDSCENE_DEBUG_AI_PROFILE] || undefined,
[MIDSCENE_DEBUG_AI_RESPONSE]:
process.env[MIDSCENE_DEBUG_AI_RESPONSE] || undefined,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]:
process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || undefined,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || undefined,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || undefined,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || undefined,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || undefined,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || undefined,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || undefined,
[MIDSCENE_REPORT_TAG_NAME]:
process.env[MIDSCENE_REPORT_TAG_NAME] || undefined,
[MIDSCENE_OPENAI_SOCKS_PROXY]:
process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || undefined,
[MIDSCENE_OPENAI_HTTPS_PROXY]:
process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || undefined,
[MIDSCENE_USE_AZURE_OPENAI]:
process.env[MIDSCENE_USE_AZURE_OPENAI] || undefined,
[MIDSCENE_AZURE_OPENAI_SCOPE]:
process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || undefined,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]:
process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || undefined,
[MIDSCENE_USE_ANTHROPIC_SDK]:
process.env[MIDSCENE_USE_ANTHROPIC_SDK] || undefined,
[MIDSCENE_USE_VLM_UI_TARS]:
process.env[MIDSCENE_USE_VLM_UI_TARS] || undefined,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || undefined,
[MIDSCENE_USE_DOUBAO_VISION]:
process.env[MIDSCENE_USE_DOUBAO_VISION] || undefined,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || undefined,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || undefined,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || undefined,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || undefined,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || undefined,
[AZURE_OPENAI_API_VERSION]:
process.env[AZURE_OPENAI_API_VERSION] || undefined,
[AZURE_OPENAI_DEPLOYMENT]:
process.env[AZURE_OPENAI_DEPLOYMENT] || undefined,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]:
process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || undefined,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || undefined,
};
};
let globalConfig: Partial<ReturnType<typeof allConfigFromEnv>> | null = null;
const getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
// import { UITarsModelVersion } from '@ui-tars/shared/constants';
export enum UITarsModelVersion {
V1_0 = '1.0',
V1_5 = '1.5',
DOUBAO_1_5_15B = 'doubao-1.5-15B',
DOUBAO_1_5_20B = 'doubao-1.5-20B',
}
export const uiTarsModelVersion = (): UITarsModelVersion | false => {
if (vlLocateMode() !== 'vlm-ui-tars') {
return false;
}
const versionConfig = getAIConfigInJson(MIDSCENE_USE_VLM_UI_TARS);
if (versionConfig === '1' || versionConfig === 1) {
return UITarsModelVersion.V1_0;
}
if (versionConfig === 'DOUBAO-1.5') {
return UITarsModelVersion.DOUBAO_1_5_20B;
}
return `${versionConfig}` as UITarsModelVersion;
};
export const vlLocateMode = ():
| 'qwen-vl'
| 'doubao-vision'
| 'gemini'
| 'vl-model' // not actually in use
| 'vlm-ui-tars'
| false => {
const enabledModes = [
getAIConfigInBoolean(MIDSCENE_USE_DOUBAO_VISION) &&
'MIDSCENE_USE_DOUBAO_VISION',
getAIConfigInBoolean(MIDSCENE_USE_QWEN_VL) && 'MIDSCENE_USE_QWEN_VL',
getAIConfigInBoolean(MIDSCENE_USE_VLM_UI_TARS) &&
'MIDSCENE_USE_VLM_UI_TARS',
getAIConfigInBoolean(MIDSCENE_USE_GEMINI) && 'MIDSCENE_USE_GEMINI',
].filter(Boolean);
if (enabledModes.length > 1) {
throw new Error(
`Only one vision mode can be enabled at a time. Currently enabled modes: ${enabledModes.join(', ')}. Please disable all but one mode.`,
);
}
if (getAIConfigInBoolean(MIDSCENE_USE_QWEN_VL)) {
return 'qwen-vl';
}
if (getAIConfigInBoolean(MIDSCENE_USE_DOUBAO_VISION)) {
return 'doubao-vision';
}
if (getAIConfigInBoolean(MIDSCENE_USE_GEMINI)) {
return 'gemini';
}
if (getAIConfigInBoolean(MIDSCENE_USE_VL_MODEL)) {
return 'vl-model';
}
if (getAIConfigInBoolean(MIDSCENE_USE_VLM_UI_TARS)) {
return 'vlm-ui-tars';
}
return false;
};
export const getAIConfig = (
configKey: keyof ReturnType<typeof allConfigFromEnv>,
): string | undefined => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
'MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead',
);
}
return getGlobalConfig()[configKey]?.trim();
};
export const getAIConfigInBoolean = (
configKey: keyof ReturnType<typeof allConfigFromEnv>,
) => {
const config = getAIConfig(configKey) || '';
if (/^(true|1)$/i.test(config)) {
return true;
}
if (/^(false|0)$/i.test(config)) {
return false;
}
return !!config.trim();
};
export const getAIConfigInJson = (
configKey: keyof ReturnType<typeof allConfigFromEnv>,
) => {
const config = getAIConfig(configKey);
try {
return config ? JSON.parse(config) : undefined;
} catch (error: any) {
throw new Error(
`Failed to parse json config: ${configKey}. ${error.message}`,
{
cause: error,
},
);
}
};
export const overrideAIConfig = (
newConfig: Partial<ReturnType<typeof allConfigFromEnv>>,
extendMode = false, // true: merge with global config, false: override global config
) => {
for (const key in newConfig) {
if (typeof key !== 'string') {
throw new Error(`Failed to override AI config, invalid key: ${key}`);
}
if (typeof newConfig[key as keyof typeof newConfig] === 'object') {
throw new Error(
`Failed to override AI config, invalid value for key: ${key}, value: ${newConfig[key as keyof typeof newConfig]}`,
);
}
}
const currentConfig = getGlobalConfig();
globalConfig = extendMode
? { ...currentConfig, ...newConfig }
: { ...newConfig };
};
+7
-1

@@ -13,3 +13,9 @@ declare const TEXT_SIZE_THRESHOLD = 9;

}
declare const PLAYGROUND_SERVER_PORT = 5800;
declare const SCRCPY_SERVER_PORT = 5700;
declare const DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT = 5000;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT = 2000;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME = 300;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY = 2;
export { CONTAINER_MINI_HEIGHT, CONTAINER_MINI_WIDTH, NodeType, TEXT_MAX_SIZE, TEXT_SIZE_THRESHOLD };
export { CONTAINER_MINI_HEIGHT, CONTAINER_MINI_WIDTH, DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT, DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY, DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME, DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT, NodeType, PLAYGROUND_SERVER_PORT, SCRCPY_SERVER_PORT, TEXT_MAX_SIZE, TEXT_SIZE_THRESHOLD };

@@ -15,8 +15,20 @@ // src/constants/index.ts

})(NodeType || {});
var PLAYGROUND_SERVER_PORT = 5800;
var SCRCPY_SERVER_PORT = 5700;
var DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT = 5e3;
var DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT = 2e3;
var DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME = 300;
var DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY = 2;
export {
CONTAINER_MINI_HEIGHT,
CONTAINER_MINI_WIDTH,
DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT,
DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY,
DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME,
DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT,
NodeType,
PLAYGROUND_SERVER_PORT,
SCRCPY_SERVER_PORT,
TEXT_MAX_SIZE,
TEXT_SIZE_THRESHOLD
};
+12
-17
import { Buffer } from 'node:buffer';
import Jimp from 'jimp';
import { R as Rect } from './index-305e7a7e.js';
import { NodeType } from './constants.js';
import { R as Rect, B as BaseElement } from './index-305e7a7e.js';
import './constants.js';

@@ -42,2 +42,8 @@ interface Size {

declare function base64Encoded(image: string, withHeader?: boolean): string;
/**
* Check if the Buffer is a valid PNG image
* @param buffer The Buffer to check
* @returns true if the Buffer is a valid PNG image, otherwise false
*/
declare function isValidPNGImageBuffer(buffer: Buffer): boolean;

@@ -112,16 +118,5 @@ /**

type ElementType = {
locator?: string;
rect: Rect;
center?: [number, number];
id?: string;
indexId: number;
attributes?: {
nodeType: NodeType;
[key: string]: string;
};
};
declare const compositeElementInfoImg: (options: {
inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
size?: {

@@ -135,4 +130,4 @@ width: number;

inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfoWithoutText: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
elementsPositionInfoWithoutText: Array<BaseElement>;
}) => Promise<{

@@ -159,2 +154,2 @@ compositeElementInfoImgBase64: string;

export { base64Encoded, bufferFromBase64, compositeElementInfoImg, cropByRect, drawBoxOnImage, imageInfo, imageInfoOfBase64, jimpFromBase64, jimpToBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, processImageElementInfo, resizeImg, resizeImgBase64, saveBase64Image, savePositionImg, transformImgPathToBase64, trimImage, zoomForGPT4o };
export { base64Encoded, bufferFromBase64, compositeElementInfoImg, cropByRect, drawBoxOnImage, imageInfo, imageInfoOfBase64, isValidPNGImageBuffer, jimpFromBase64, jimpToBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, processImageElementInfo, resizeImg, resizeImgBase64, saveBase64Image, savePositionImg, transformImgPathToBase64, trimImage, zoomForGPT4o };

@@ -57,2 +57,9 @@ // src/img/info.ts

}
function isValidPNGImageBuffer(buffer) {
if (!buffer || buffer.length < 8) {
return false;
}
const isPNG = buffer[0] === 137 && buffer[1] === 80 && buffer[2] === 78 && buffer[3] === 71;
return isPNG;
}

@@ -214,2 +221,14 @@ // src/img/transform.ts

var cachedFont = null;
var loadFonts = async () => {
const Jimp = await getJimp();
try {
const fonts = await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE);
return fonts;
} catch (error) {
console.warn("Error loading font, will try to load online fonts", error);
const onlineFonts = "https://cdn.jsdelivr.net/npm/jimp-compact@0.16.1-2/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt";
const fonts = await Jimp.loadFont(onlineFonts);
return fonts;
}
};
var createSvgOverlay = async (elements, imageWidth, imageHeight, boxPadding = 5) => {

@@ -259,3 +278,7 @@ const Jimp = await getJimp();

);
const textWidth = element.indexId.toString().length * 8;
const indexId = element.indexId;
if (typeof indexId !== "number") {
continue;
}
const textWidth = indexId.toString().length * 8;
const textHeight = 12;

@@ -305,3 +328,3 @@ const rectWidth = textWidth + 5;

try {
cachedFont = cachedFont || await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE);
cachedFont = cachedFont || await loadFonts();
} catch (error) {

@@ -315,3 +338,3 @@ console.error("Error loading font", error);

{
text: element.indexId.toString(),
text: indexId.toString(),
alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER,

@@ -443,2 +466,3 @@ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE

imageInfoOfBase64,
isValidPNGImageBuffer,
jimpFromBase64,

@@ -445,0 +469,0 @@ jimpToBase64,

// src/logger.ts
import fs2 from "fs";
import fs from "fs";
import path2 from "path";

@@ -7,17 +7,129 @@ import debug from "debug";

// src/common.ts
import fs from "fs";
import { existsSync, mkdirSync } from "fs";
import { tmpdir } from "os";
import path from "path";
// src/env.ts
var MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
var MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
var MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
var MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
var MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
var MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
var MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
var MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
var MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
var MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
var MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
var OPENAI_API_KEY = "OPENAI_API_KEY";
var OPENAI_BASE_URL = "OPENAI_BASE_URL";
var OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
var MIDSCENE_CACHE = "MIDSCENE_CACHE";
var MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
var MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
var MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
var MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
var MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
var MATCH_BY_POSITION = "MATCH_BY_POSITION";
var MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
var MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
var MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
var MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
var AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
var AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
var AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
var AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
var MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
var ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
var MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
var OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
var allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || void 0,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || void 0,
[MIDSCENE_FORCE_DEEP_THINK]: process.env[MIDSCENE_FORCE_DEEP_THINK] || void 0,
[MIDSCENE_LANGSMITH_DEBUG]: process.env[MIDSCENE_LANGSMITH_DEBUG] || void 0,
[MIDSCENE_DEBUG_AI_PROFILE]: process.env[MIDSCENE_DEBUG_AI_PROFILE] || void 0,
[MIDSCENE_DEBUG_AI_RESPONSE]: process.env[MIDSCENE_DEBUG_AI_RESPONSE] || void 0,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]: process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || void 0,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || void 0,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || void 0,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || void 0,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || void 0,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || void 0,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || void 0,
[MIDSCENE_REPORT_TAG_NAME]: process.env[MIDSCENE_REPORT_TAG_NAME] || void 0,
[MIDSCENE_OPENAI_SOCKS_PROXY]: process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || void 0,
[MIDSCENE_OPENAI_HTTPS_PROXY]: process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || void 0,
[MIDSCENE_USE_AZURE_OPENAI]: process.env[MIDSCENE_USE_AZURE_OPENAI] || void 0,
[MIDSCENE_AZURE_OPENAI_SCOPE]: process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || void 0,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_USE_ANTHROPIC_SDK]: process.env[MIDSCENE_USE_ANTHROPIC_SDK] || void 0,
[MIDSCENE_USE_VLM_UI_TARS]: process.env[MIDSCENE_USE_VLM_UI_TARS] || void 0,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || void 0,
[MIDSCENE_USE_DOUBAO_VISION]: process.env[MIDSCENE_USE_DOUBAO_VISION] || void 0,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || void 0,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || void 0,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || void 0,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || void 0,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || void 0,
[AZURE_OPENAI_API_VERSION]: process.env[AZURE_OPENAI_API_VERSION] || void 0,
[AZURE_OPENAI_DEPLOYMENT]: process.env[AZURE_OPENAI_DEPLOYMENT] || void 0,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]: process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || void 0,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || void 0
};
};
var globalConfig = null;
var getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
var getAIConfig = (configKey) => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
"MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead"
);
}
return getGlobalConfig()[configKey]?.trim();
};
// src/common.ts
var defaultRunDirName = "midscene_run";
var isNodeEnv = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
var getMidsceneRunLogPath = () => {
const basePath = path.join(process.cwd(), "midscene_run");
if (!fs.existsSync(basePath)) {
fs.mkdirSync(basePath, { recursive: true });
var getMidsceneRunDir = () => {
if (!isNodeEnv) {
return "";
}
const logPath = path.join(basePath, "log");
if (!fs.existsSync(logPath)) {
fs.mkdirSync(logPath, { recursive: true });
return getAIConfig(MIDSCENE_RUN_DIR) || defaultRunDirName;
};
var getMidsceneRunBaseDir = () => {
if (!isNodeEnv) {
return "";
}
let basePath = path.resolve(process.cwd(), getMidsceneRunDir());
if (!existsSync(basePath)) {
try {
mkdirSync(basePath, { recursive: true });
} catch (error) {
basePath = path.join(tmpdir(), defaultRunDirName);
mkdirSync(basePath, { recursive: true });
}
}
return basePath;
};
var getMidsceneRunSubDir = (subdir) => {
if (!isNodeEnv) {
return "";
}
const basePath = getMidsceneRunBaseDir();
const logPath = path.join(basePath, subdir);
if (!existsSync(logPath)) {
mkdirSync(logPath, { recursive: true });
}
return logPath;
};
var logDir = isNodeEnv ? getMidsceneRunLogPath() : "";
var logDir = isNodeEnv ? getMidsceneRunSubDir("log") : "";

@@ -31,3 +143,3 @@ // src/logger.ts

const logFile = path2.join(logDir, `${topicFileName}.log`);
const stream = fs2.createWriteStream(logFile, { flags: "a" });
const stream = fs.createWriteStream(logFile, { flags: "a" });
logStreams.set(topicFileName, stream);

@@ -48,3 +160,6 @@ }

const message = args.map(
(arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
(arg) => typeof arg === "object" ? JSON.stringify(
arg,
(key, value) => typeof value === "bigint" ? `${value.toString()}n` : value
) : String(arg)
).join(" ");

@@ -51,0 +166,0 @@ if (isNodeEnv) {

@@ -14,3 +14,5 @@ declare const ifInBrowser: boolean;

declare function getGlobalScope(): GlobalScope;
declare function setIsMcp(value: boolean): void;
declare function logMsg(...message: Parameters<typeof console.log>): void;
export { assert, generateHashId, getGlobalScope, ifInBrowser, uuid };
export { assert, generateHashId, getGlobalScope, ifInBrowser, logMsg, setIsMcp, uuid };

@@ -51,2 +51,11 @@ // src/utils.ts

}
var isMcp = false;
function setIsMcp(value) {
isMcp = value;
}
function logMsg(...message) {
if (!isMcp) {
console.log(...message);
}
}
export {

@@ -57,3 +66,5 @@ assert,

ifInBrowser,
logMsg,
setIsMcp,
uuid
};

@@ -13,3 +13,9 @@ declare const TEXT_SIZE_THRESHOLD = 9;

}
declare const PLAYGROUND_SERVER_PORT = 5800;
declare const SCRCPY_SERVER_PORT = 5700;
declare const DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT = 5000;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT = 2000;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME = 300;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY = 2;
export { CONTAINER_MINI_HEIGHT, CONTAINER_MINI_WIDTH, NodeType, TEXT_MAX_SIZE, TEXT_SIZE_THRESHOLD };
export { CONTAINER_MINI_HEIGHT, CONTAINER_MINI_WIDTH, DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT, DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY, DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME, DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT, NodeType, PLAYGROUND_SERVER_PORT, SCRCPY_SERVER_PORT, TEXT_MAX_SIZE, TEXT_SIZE_THRESHOLD };

@@ -25,3 +25,9 @@ "use strict";

CONTAINER_MINI_WIDTH: () => CONTAINER_MINI_WIDTH,
DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT: () => DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT,
DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY: () => DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY,
DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME: () => DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME,
DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT: () => DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT,
NodeType: () => NodeType,
PLAYGROUND_SERVER_PORT: () => PLAYGROUND_SERVER_PORT,
SCRCPY_SERVER_PORT: () => SCRCPY_SERVER_PORT,
TEXT_MAX_SIZE: () => TEXT_MAX_SIZE,

@@ -44,2 +50,8 @@ TEXT_SIZE_THRESHOLD: () => TEXT_SIZE_THRESHOLD

})(NodeType || {});
var PLAYGROUND_SERVER_PORT = 5800;
var SCRCPY_SERVER_PORT = 5700;
var DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT = 5e3;
var DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT = 2e3;
var DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME = 300;
var DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY = 2;
// Annotate the CommonJS export names for ESM import in node:

@@ -49,5 +61,11 @@ 0 && (module.exports = {

CONTAINER_MINI_WIDTH,
DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT,
DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY,
DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME,
DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT,
NodeType,
PLAYGROUND_SERVER_PORT,
SCRCPY_SERVER_PORT,
TEXT_MAX_SIZE,
TEXT_SIZE_THRESHOLD
});
import { Buffer } from 'node:buffer';
import Jimp from 'jimp';
import { R as Rect } from './index-305e7a7e.js';
import { NodeType } from './constants.js';
import { R as Rect, B as BaseElement } from './index-305e7a7e.js';
import './constants.js';

@@ -42,2 +42,8 @@ interface Size {

declare function base64Encoded(image: string, withHeader?: boolean): string;
/**
* Check if the Buffer is a valid PNG image
* @param buffer The Buffer to check
* @returns true if the Buffer is a valid PNG image, otherwise false
*/
declare function isValidPNGImageBuffer(buffer: Buffer): boolean;

@@ -112,16 +118,5 @@ /**

type ElementType = {
locator?: string;
rect: Rect;
center?: [number, number];
id?: string;
indexId: number;
attributes?: {
nodeType: NodeType;
[key: string]: string;
};
};
declare const compositeElementInfoImg: (options: {
inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
size?: {

@@ -135,4 +130,4 @@ width: number;

inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfoWithoutText: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
elementsPositionInfoWithoutText: Array<BaseElement>;
}) => Promise<{

@@ -159,2 +154,2 @@ compositeElementInfoImgBase64: string;

export { base64Encoded, bufferFromBase64, compositeElementInfoImg, cropByRect, drawBoxOnImage, imageInfo, imageInfoOfBase64, jimpFromBase64, jimpToBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, processImageElementInfo, resizeImg, resizeImgBase64, saveBase64Image, savePositionImg, transformImgPathToBase64, trimImage, zoomForGPT4o };
export { base64Encoded, bufferFromBase64, compositeElementInfoImg, cropByRect, drawBoxOnImage, imageInfo, imageInfoOfBase64, isValidPNGImageBuffer, jimpFromBase64, jimpToBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, processImageElementInfo, resizeImg, resizeImgBase64, saveBase64Image, savePositionImg, transformImgPathToBase64, trimImage, zoomForGPT4o };

@@ -40,2 +40,3 @@ "use strict";

imageInfoOfBase64: () => imageInfoOfBase64,
isValidPNGImageBuffer: () => isValidPNGImageBuffer,
jimpFromBase64: () => jimpFromBase64,

@@ -112,2 +113,9 @@ jimpToBase64: () => jimpToBase64,

}
function isValidPNGImageBuffer(buffer) {
if (!buffer || buffer.length < 8) {
return false;
}
const isPNG = buffer[0] === 137 && buffer[1] === 80 && buffer[2] === 78 && buffer[3] === 71;
return isPNG;
}

@@ -269,2 +277,14 @@ // src/img/transform.ts

var cachedFont = null;
var loadFonts = async () => {
const Jimp = await getJimp();
try {
const fonts = await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE);
return fonts;
} catch (error) {
console.warn("Error loading font, will try to load online fonts", error);
const onlineFonts = "https://cdn.jsdelivr.net/npm/jimp-compact@0.16.1-2/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt";
const fonts = await Jimp.loadFont(onlineFonts);
return fonts;
}
};
var createSvgOverlay = async (elements, imageWidth, imageHeight, boxPadding = 5) => {

@@ -314,3 +334,7 @@ const Jimp = await getJimp();

);
const textWidth = element.indexId.toString().length * 8;
const indexId = element.indexId;
if (typeof indexId !== "number") {
continue;
}
const textWidth = indexId.toString().length * 8;
const textHeight = 12;

@@ -360,3 +384,3 @@ const rectWidth = textWidth + 5;

try {
cachedFont = cachedFont || await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE);
cachedFont = cachedFont || await loadFonts();
} catch (error) {

@@ -370,3 +394,3 @@ console.error("Error loading font", error);

{
text: element.indexId.toString(),
text: indexId.toString(),
alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER,

@@ -499,2 +523,3 @@ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE

imageInfoOfBase64,
isValidPNGImageBuffer,
jimpFromBase64,

@@ -501,0 +526,0 @@ jimpToBase64,

@@ -43,17 +43,129 @@ "use strict";

// src/common.ts
var import_node_fs = __toESM(require("fs"));
var import_node_fs = require("fs");
var import_node_os = require("os");
var import_node_path = __toESM(require("path"));
// src/env.ts
var MIDSCENE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_OPENAI_INIT_CONFIG_JSON";
var MIDSCENE_MODEL_NAME = "MIDSCENE_MODEL_NAME";
var MIDSCENE_LANGSMITH_DEBUG = "MIDSCENE_LANGSMITH_DEBUG";
var MIDSCENE_DEBUG_AI_PROFILE = "MIDSCENE_DEBUG_AI_PROFILE";
var MIDSCENE_DEBUG_AI_RESPONSE = "MIDSCENE_DEBUG_AI_RESPONSE";
var MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = "MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG";
var MIDSCENE_DEBUG_MODE = "MIDSCENE_DEBUG_MODE";
var MIDSCENE_MCP_USE_PUPPETEER_MODE = "MIDSCENE_MCP_USE_PUPPETEER_MODE";
var MIDSCENE_FORCE_DEEP_THINK = "MIDSCENE_FORCE_DEEP_THINK";
var MIDSCENE_OPENAI_SOCKS_PROXY = "MIDSCENE_OPENAI_SOCKS_PROXY";
var MIDSCENE_OPENAI_HTTPS_PROXY = "MIDSCENE_OPENAI_HTTPS_PROXY";
var OPENAI_API_KEY = "OPENAI_API_KEY";
var OPENAI_BASE_URL = "OPENAI_BASE_URL";
var OPENAI_MAX_TOKENS = "OPENAI_MAX_TOKENS";
var MIDSCENE_CACHE = "MIDSCENE_CACHE";
var MIDSCENE_USE_VLM_UI_TARS = "MIDSCENE_USE_VLM_UI_TARS";
var MIDSCENE_USE_QWEN_VL = "MIDSCENE_USE_QWEN_VL";
var MIDSCENE_USE_DOUBAO_VISION = "MIDSCENE_USE_DOUBAO_VISION";
var MIDSCENE_USE_GEMINI = "MIDSCENE_USE_GEMINI";
var MIDSCENE_USE_VL_MODEL = "MIDSCENE_USE_VL_MODEL";
var MATCH_BY_POSITION = "MATCH_BY_POSITION";
var MIDSCENE_REPORT_TAG_NAME = "MIDSCENE_REPORT_TAG_NAME";
var MIDSCENE_USE_AZURE_OPENAI = "MIDSCENE_USE_AZURE_OPENAI";
var MIDSCENE_AZURE_OPENAI_SCOPE = "MIDSCENE_AZURE_OPENAI_SCOPE";
var MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = "MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON";
var AZURE_OPENAI_ENDPOINT = "AZURE_OPENAI_ENDPOINT";
var AZURE_OPENAI_KEY = "AZURE_OPENAI_KEY";
var AZURE_OPENAI_API_VERSION = "AZURE_OPENAI_API_VERSION";
var AZURE_OPENAI_DEPLOYMENT = "AZURE_OPENAI_DEPLOYMENT";
var MIDSCENE_USE_ANTHROPIC_SDK = "MIDSCENE_USE_ANTHROPIC_SDK";
var ANTHROPIC_API_KEY = "ANTHROPIC_API_KEY";
var MIDSCENE_RUN_DIR = "MIDSCENE_RUN_DIR";
var OPENAI_USE_AZURE = "OPENAI_USE_AZURE";
var allConfigFromEnv = () => {
return {
[MIDSCENE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_MODEL_NAME]: process.env[MIDSCENE_MODEL_NAME] || void 0,
[MIDSCENE_DEBUG_MODE]: process.env[MIDSCENE_DEBUG_MODE] || void 0,
[MIDSCENE_FORCE_DEEP_THINK]: process.env[MIDSCENE_FORCE_DEEP_THINK] || void 0,
[MIDSCENE_LANGSMITH_DEBUG]: process.env[MIDSCENE_LANGSMITH_DEBUG] || void 0,
[MIDSCENE_DEBUG_AI_PROFILE]: process.env[MIDSCENE_DEBUG_AI_PROFILE] || void 0,
[MIDSCENE_DEBUG_AI_RESPONSE]: process.env[MIDSCENE_DEBUG_AI_RESPONSE] || void 0,
[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG]: process.env[MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG] || void 0,
[OPENAI_API_KEY]: process.env[OPENAI_API_KEY] || void 0,
[OPENAI_BASE_URL]: process.env[OPENAI_BASE_URL] || void 0,
[OPENAI_MAX_TOKENS]: process.env[OPENAI_MAX_TOKENS] || void 0,
[OPENAI_USE_AZURE]: process.env[OPENAI_USE_AZURE] || void 0,
[MIDSCENE_CACHE]: process.env[MIDSCENE_CACHE] || void 0,
[MATCH_BY_POSITION]: process.env[MATCH_BY_POSITION] || void 0,
[MIDSCENE_REPORT_TAG_NAME]: process.env[MIDSCENE_REPORT_TAG_NAME] || void 0,
[MIDSCENE_OPENAI_SOCKS_PROXY]: process.env[MIDSCENE_OPENAI_SOCKS_PROXY] || void 0,
[MIDSCENE_OPENAI_HTTPS_PROXY]: process.env[MIDSCENE_OPENAI_HTTPS_PROXY] || void 0,
[MIDSCENE_USE_AZURE_OPENAI]: process.env[MIDSCENE_USE_AZURE_OPENAI] || void 0,
[MIDSCENE_AZURE_OPENAI_SCOPE]: process.env[MIDSCENE_AZURE_OPENAI_SCOPE] || void 0,
[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON]: process.env[MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON] || void 0,
[MIDSCENE_USE_ANTHROPIC_SDK]: process.env[MIDSCENE_USE_ANTHROPIC_SDK] || void 0,
[MIDSCENE_USE_VLM_UI_TARS]: process.env[MIDSCENE_USE_VLM_UI_TARS] || void 0,
[MIDSCENE_USE_QWEN_VL]: process.env[MIDSCENE_USE_QWEN_VL] || void 0,
[MIDSCENE_USE_DOUBAO_VISION]: process.env[MIDSCENE_USE_DOUBAO_VISION] || void 0,
[MIDSCENE_USE_GEMINI]: process.env[MIDSCENE_USE_GEMINI] || void 0,
[MIDSCENE_USE_VL_MODEL]: process.env[MIDSCENE_USE_VL_MODEL] || void 0,
[ANTHROPIC_API_KEY]: process.env[ANTHROPIC_API_KEY] || void 0,
[AZURE_OPENAI_ENDPOINT]: process.env[AZURE_OPENAI_ENDPOINT] || void 0,
[AZURE_OPENAI_KEY]: process.env[AZURE_OPENAI_KEY] || void 0,
[AZURE_OPENAI_API_VERSION]: process.env[AZURE_OPENAI_API_VERSION] || void 0,
[AZURE_OPENAI_DEPLOYMENT]: process.env[AZURE_OPENAI_DEPLOYMENT] || void 0,
[MIDSCENE_MCP_USE_PUPPETEER_MODE]: process.env[MIDSCENE_MCP_USE_PUPPETEER_MODE] || void 0,
[MIDSCENE_RUN_DIR]: process.env[MIDSCENE_RUN_DIR] || void 0
};
};
var globalConfig = null;
var getGlobalConfig = () => {
if (globalConfig === null) {
globalConfig = allConfigFromEnv();
}
return globalConfig;
};
var getAIConfig = (configKey) => {
if (configKey === MATCH_BY_POSITION) {
throw new Error(
"MATCH_BY_POSITION is deprecated, use MIDSCENE_USE_VL_MODEL instead"
);
}
return getGlobalConfig()[configKey]?.trim();
};
// src/common.ts
var defaultRunDirName = "midscene_run";
var isNodeEnv = typeof process !== "undefined" && process.versions != null && process.versions.node != null;
var getMidsceneRunLogPath = () => {
const basePath = import_node_path.default.join(process.cwd(), "midscene_run");
if (!import_node_fs.default.existsSync(basePath)) {
import_node_fs.default.mkdirSync(basePath, { recursive: true });
var getMidsceneRunDir = () => {
if (!isNodeEnv) {
return "";
}
const logPath = import_node_path.default.join(basePath, "log");
if (!import_node_fs.default.existsSync(logPath)) {
import_node_fs.default.mkdirSync(logPath, { recursive: true });
return getAIConfig(MIDSCENE_RUN_DIR) || defaultRunDirName;
};
var getMidsceneRunBaseDir = () => {
if (!isNodeEnv) {
return "";
}
let basePath = import_node_path.default.resolve(process.cwd(), getMidsceneRunDir());
if (!(0, import_node_fs.existsSync)(basePath)) {
try {
(0, import_node_fs.mkdirSync)(basePath, { recursive: true });
} catch (error) {
basePath = import_node_path.default.join((0, import_node_os.tmpdir)(), defaultRunDirName);
(0, import_node_fs.mkdirSync)(basePath, { recursive: true });
}
}
return basePath;
};
var getMidsceneRunSubDir = (subdir) => {
if (!isNodeEnv) {
return "";
}
const basePath = getMidsceneRunBaseDir();
const logPath = import_node_path.default.join(basePath, subdir);
if (!(0, import_node_fs.existsSync)(logPath)) {
(0, import_node_fs.mkdirSync)(logPath, { recursive: true });
}
return logPath;
};
var logDir = isNodeEnv ? getMidsceneRunLogPath() : "";
var logDir = isNodeEnv ? getMidsceneRunSubDir("log") : "";

@@ -83,3 +195,6 @@ // src/logger.ts

const message = args.map(
(arg) => typeof arg === "object" ? JSON.stringify(arg) : String(arg)
(arg) => typeof arg === "object" ? JSON.stringify(
arg,
(key, value) => typeof value === "bigint" ? `${value.toString()}n` : value
) : String(arg)
).join(" ");

@@ -86,0 +201,0 @@ if (isNodeEnv) {

@@ -14,3 +14,5 @@ declare const ifInBrowser: boolean;

declare function getGlobalScope(): GlobalScope;
declare function setIsMcp(value: boolean): void;
declare function logMsg(...message: Parameters<typeof console.log>): void;
export { assert, generateHashId, getGlobalScope, ifInBrowser, uuid };
export { assert, generateHashId, getGlobalScope, ifInBrowser, logMsg, setIsMcp, uuid };

@@ -27,2 +27,4 @@ "use strict";

ifInBrowser: () => ifInBrowser,
logMsg: () => logMsg,
setIsMcp: () => setIsMcp,
uuid: () => uuid

@@ -80,2 +82,11 @@ });

}
var isMcp = false;
function setIsMcp(value) {
isMcp = value;
}
function logMsg(...message) {
if (!isMcp) {
console.log(...message);
}
}
// Annotate the CommonJS export names for ESM import in node:

@@ -87,3 +98,5 @@ 0 && (module.exports = {

ifInBrowser,
logMsg,
setIsMcp,
uuid
});

@@ -13,3 +13,9 @@ declare const TEXT_SIZE_THRESHOLD = 9;

}
declare const PLAYGROUND_SERVER_PORT = 5800;
declare const SCRCPY_SERVER_PORT = 5700;
declare const DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT = 5000;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT = 2000;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME = 300;
declare const DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY = 2;
export { CONTAINER_MINI_HEIGHT, CONTAINER_MINI_WIDTH, NodeType, TEXT_MAX_SIZE, TEXT_SIZE_THRESHOLD };
export { CONTAINER_MINI_HEIGHT, CONTAINER_MINI_WIDTH, DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT, DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY, DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME, DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT, NodeType, PLAYGROUND_SERVER_PORT, SCRCPY_SERVER_PORT, TEXT_MAX_SIZE, TEXT_SIZE_THRESHOLD };
import { Buffer } from 'node:buffer';
import Jimp from 'jimp';
import { R as Rect } from './index-305e7a7e.js';
import { NodeType } from './constants.js';
import { R as Rect, B as BaseElement } from './index-305e7a7e.js';
import './constants.js';

@@ -42,2 +42,8 @@ interface Size {

declare function base64Encoded(image: string, withHeader?: boolean): string;
/**
* Check if the Buffer is a valid PNG image
* @param buffer The Buffer to check
* @returns true if the Buffer is a valid PNG image, otherwise false
*/
declare function isValidPNGImageBuffer(buffer: Buffer): boolean;

@@ -112,16 +118,5 @@ /**

type ElementType = {
locator?: string;
rect: Rect;
center?: [number, number];
id?: string;
indexId: number;
attributes?: {
nodeType: NodeType;
[key: string]: string;
};
};
declare const compositeElementInfoImg: (options: {
inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
size?: {

@@ -135,4 +130,4 @@ width: number;

inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfoWithoutText: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
elementsPositionInfoWithoutText: Array<BaseElement>;
}) => Promise<{

@@ -159,2 +154,2 @@ compositeElementInfoImgBase64: string;

export { base64Encoded, bufferFromBase64, compositeElementInfoImg, cropByRect, drawBoxOnImage, imageInfo, imageInfoOfBase64, jimpFromBase64, jimpToBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, processImageElementInfo, resizeImg, resizeImgBase64, saveBase64Image, savePositionImg, transformImgPathToBase64, trimImage, zoomForGPT4o };
export { base64Encoded, bufferFromBase64, compositeElementInfoImg, cropByRect, drawBoxOnImage, imageInfo, imageInfoOfBase64, isValidPNGImageBuffer, jimpFromBase64, jimpToBase64, paddingToMatchBlock, paddingToMatchBlockByBase64, processImageElementInfo, resizeImg, resizeImgBase64, saveBase64Image, savePositionImg, transformImgPathToBase64, trimImage, zoomForGPT4o };

@@ -14,3 +14,5 @@ declare const ifInBrowser: boolean;

declare function getGlobalScope(): GlobalScope;
declare function setIsMcp(value: boolean): void;
declare function logMsg(...message: Parameters<typeof console.log>): void;
export { assert, generateHashId, getGlobalScope, ifInBrowser, uuid };
export { assert, generateHashId, getGlobalScope, ifInBrowser, logMsg, setIsMcp, uuid };
{
"name": "@aico-test/shared",
"version": "8.0.0",
"version": "10.0.0",
"repository": "https://github.com/web-infra-dev/midscene",
"homepage": "https://midscenejs.com/",
"types": "./dist/types/index.d.ts",

@@ -16,3 +18,5 @@ "main": "./dist/lib/index.js",

"./keyboard-layout": "./dist/lib/us-keyboard-layout.js",
"./logger": "./dist/lib/logger.js"
"./logger": "./dist/lib/logger.js",
"./common": "./dist/lib/common.js",
"./env": "./dist/lib/env.js"
},

@@ -47,2 +51,8 @@ "typesVersions": {

"./dist/types/logger.d.ts"
],
"common": [
"./dist/types/common.d.ts"
],
"env": [
"./dist/types/env.d.ts"
]

@@ -84,2 +94,3 @@ }

"@types/node": "^18.0.0",
"@ui-tars/shared": "1.2.0",
"dotenv": "16.4.5",

@@ -86,0 +97,0 @@ "rimraf": "~3.0.2",

@@ -1,4 +0,7 @@

import fs from 'node:fs';
import { existsSync, mkdirSync } from 'node:fs';
import { tmpdir } from 'node:os';
import path from 'node:path';
import { MIDSCENE_RUN_DIR, getAIConfig } from './env';
export const defaultRunDirName = 'midscene_run';
// Define locally for now to avoid import issues

@@ -10,2 +13,31 @@ export const isNodeEnv =

export const getMidsceneRunDir = () => {
if (!isNodeEnv) {
return '';
}
return getAIConfig(MIDSCENE_RUN_DIR) || defaultRunDirName;
};
export const getMidsceneRunBaseDir = () => {
if (!isNodeEnv) {
return '';
}
let basePath = path.resolve(process.cwd(), getMidsceneRunDir());
// Create a base directory
if (!existsSync(basePath)) {
try {
mkdirSync(basePath, { recursive: true });
} catch (error) {
// console.error(`Failed to create ${runDirName} directory: ${error}`);
basePath = path.join(tmpdir(), defaultRunDirName);
mkdirSync(basePath, { recursive: true });
}
}
return basePath;
};
/**

@@ -18,14 +50,14 @@ * Get the path to the midscene_run directory or a subdirectory within it.

*/
export const getMidsceneRunLogPath = (): string => {
const basePath = path.join(process.cwd(), 'midscene_run');
// Create a base directory
if (!fs.existsSync(basePath)) {
fs.mkdirSync(basePath, { recursive: true });
export const getMidsceneRunSubDir = (
subdir: 'dump' | 'cache' | 'report' | 'tmp' | 'log' | 'output',
): string => {
if (!isNodeEnv) {
return '';
}
// Create a log directory
const logPath = path.join(basePath, 'log');
if (!fs.existsSync(logPath)) {
fs.mkdirSync(logPath, { recursive: true });
const basePath = getMidsceneRunBaseDir();
const logPath = path.join(basePath, subdir);
if (!existsSync(logPath)) {
mkdirSync(logPath, { recursive: true });
}

@@ -36,2 +68,2 @@

export const logDir = isNodeEnv ? getMidsceneRunLogPath() : '';
export const logDir = isNodeEnv ? getMidsceneRunSubDir('log') : '';

@@ -16,1 +16,9 @@ export const TEXT_SIZE_THRESHOLD = 9;

}
export const PLAYGROUND_SERVER_PORT = 5800;
export const SCRCPY_SERVER_PORT = 5700;
export const DEFAULT_WAIT_FOR_NAVIGATION_TIMEOUT = 5000;
export const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIMEOUT = 2000;
export const DEFAULT_WAIT_FOR_NETWORK_IDLE_TIME = 300;
export const DEFAULT_WAIT_FOR_NETWORK_IDLE_CONCURRENCY = 2;
import assert from 'node:assert';
import type Jimp from 'jimp';
import type { NodeType } from '../constants';
import type { Rect } from '../types';
import type { BaseElement } from '../types';
import getJimp from './get-jimp';
import { bufferFromBase64, imageInfoOfBase64 } from './index';
// Define picture path
type ElementType = {
locator?: string;
rect: Rect;
center?: [number, number];
id?: string;
indexId: number;
attributes?: {
nodeType: NodeType;
[key: string]: string;
};
let cachedFont: any = null;
const loadFonts = async () => {
const Jimp = await getJimp();
try {
const fonts = await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE);
return fonts;
} catch (error) {
console.warn('Error loading font, will try to load online fonts', error);
const onlineFonts =
'https://cdn.jsdelivr.net/npm/jimp-compact@0.16.1-2/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt';
const fonts = await Jimp.loadFont(onlineFonts);
return fonts;
}
};
let cachedFont: any = null;
const createSvgOverlay = async (
elements: Array<ElementType>,
elements: Array<BaseElement>,
imageWidth: number,

@@ -81,3 +82,7 @@ imageHeight: number,

// Calculate text position
const textWidth = element.indexId.toString().length * 8;
const indexId = element.indexId;
if (typeof indexId !== 'number') {
continue;
}
const textWidth = indexId.toString().length * 8;
const textHeight = 12;

@@ -168,3 +173,3 @@ const rectWidth = textWidth + 5;

try {
cachedFont = cachedFont || (await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE));
cachedFont = cachedFont || (await loadFonts());
} catch (error) {

@@ -178,3 +183,3 @@ console.error('Error loading font', error);

{
text: element.indexId.toString(),
text: indexId.toString(),
alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER,

@@ -193,3 +198,3 @@ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,

inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
size?: { width: number; height: number };

@@ -262,4 +267,4 @@ annotationPadding?: number;

inputImgBase64: string;
elementsPositionInfo: Array<ElementType>;
elementsPositionInfoWithoutText: Array<ElementType>;
elementsPositionInfo: Array<BaseElement>;
elementsPositionInfoWithoutText: Array<BaseElement>;
}) => {

@@ -266,0 +271,0 @@ // Get the size of the original image

@@ -6,2 +6,3 @@ export {

base64Encoded,
isValidPNGImageBuffer,
} from './info';

@@ -8,0 +9,0 @@ export {

@@ -91,1 +91,21 @@ import assert from 'node:assert';

}
/**
* Check if the Buffer is a valid PNG image
* @param buffer The Buffer to check
* @returns true if the Buffer is a valid PNG image, otherwise false
*/
export function isValidPNGImageBuffer(buffer: Buffer): boolean {
if (!buffer || buffer.length < 8) {
return false;
}
// Check if the Buffer is a valid PNG image (signature: 89 50 4E 47...)
const isPNG =
buffer[0] === 0x89 &&
buffer[1] === 0x50 &&
buffer[2] === 0x4e &&
buffer[3] === 0x47;
return isPNG;
}

@@ -37,3 +37,7 @@ import fs from 'node:fs';

.map((arg) =>
typeof arg === 'object' ? JSON.stringify(arg) : String(arg),
typeof arg === 'object'
? JSON.stringify(arg, (key, value) =>
typeof value === 'bigint' ? `${value.toString()}n` : value,
)
: String(arg),
)

@@ -40,0 +44,0 @@ .join(' ');

@@ -77,1 +77,14 @@ import { sha256 } from 'js-sha256';

}
let isMcp = false;
export function setIsMcp(value: boolean) {
isMcp = value;
}
//mcp need use obj format to console msg: https://github.com/modelcontextprotocol/typescript-sdk/issues/244
export function logMsg(...message: Parameters<typeof console.log>) {
if (!isMcp) {
console.log(...message);
}
}