MCPcopy
hub / github.com/7836246/cursor2api / applyEnvOverrides

Function applyEnvOverrides

src/config.ts:125–216  ·  view source on GitHub ↗

* 应用环境变量覆盖(环境变量优先级最高,不受热重载影响)

(cfg: AppConfig)

Source from the content-addressed store, hash-verified

123 * 应用环境变量覆盖(环境变量优先级最高,不受热重载影响)
124 */
125function applyEnvOverrides(cfg: AppConfig): void {
126 if (process.env.PORT) cfg.port = parseInt(process.env.PORT);
127 if (process.env.TIMEOUT) cfg.timeout = parseInt(process.env.TIMEOUT);
128 if (process.env.PROXY) cfg.proxy = process.env.PROXY;
129 if (process.env.CURSOR_MODEL) cfg.cursorModel = process.env.CURSOR_MODEL;
130 if (process.env.MAX_AUTO_CONTINUE !== undefined) cfg.maxAutoContinue = parseInt(process.env.MAX_AUTO_CONTINUE);
131 if (process.env.MAX_HISTORY_MESSAGES !== undefined) cfg.maxHistoryMessages = parseInt(process.env.MAX_HISTORY_MESSAGES);
132 if (process.env.MAX_HISTORY_TOKENS !== undefined) cfg.maxHistoryTokens = parseInt(process.env.MAX_HISTORY_TOKENS);
133 if (process.env.AUTH_TOKEN) {
134 cfg.authTokens = process.env.AUTH_TOKEN.split(',').map(s => s.trim()).filter(Boolean);
135 }
136 // 压缩环境变量覆盖
137 if (process.env.COMPRESSION_ENABLED !== undefined) {
138 if (!cfg.compression) cfg.compression = { enabled: false, level: 1, keepRecent: 10, earlyMsgMaxChars: 4000 };
139 cfg.compression.enabled = process.env.COMPRESSION_ENABLED !== 'false' && process.env.COMPRESSION_ENABLED !== '0';
140 }
141 if (process.env.COMPRESSION_LEVEL) {
142 if (!cfg.compression) cfg.compression = { enabled: false, level: 1, keepRecent: 10, earlyMsgMaxChars: 4000 };
143 const lvl = parseInt(process.env.COMPRESSION_LEVEL);
144 if (lvl >= 1 && lvl <= 3) cfg.compression.level = lvl as 1 | 2 | 3;
145 }
146 // Thinking 环境变量覆盖(最高优先级)
147 if (process.env.THINKING_ENABLED !== undefined) {
148 cfg.thinking = {
149 enabled: process.env.THINKING_ENABLED !== 'false' && process.env.THINKING_ENABLED !== '0',
150 };
151 }
152 // Logging 环境变量覆盖
153 if (process.env.LOG_FILE_ENABLED !== undefined) {
154 if (!cfg.logging) cfg.logging = { file_enabled: false, dir: './logs', max_days: 7, persist_mode: 'summary', db_enabled: false, db_path: './logs/cursor2api.db' };
155 cfg.logging.file_enabled = process.env.LOG_FILE_ENABLED === 'true' || process.env.LOG_FILE_ENABLED === '1';
156 }
157 if (process.env.LOG_DIR) {
158 if (!cfg.logging) cfg.logging = { file_enabled: false, dir: './logs', max_days: 7, persist_mode: 'summary', db_enabled: false, db_path: './logs/cursor2api.db' };
159 cfg.logging.dir = process.env.LOG_DIR;
160 }
161 if (process.env.LOG_PERSIST_MODE) {
162 if (!cfg.logging) cfg.logging = { file_enabled: false, dir: './logs', max_days: 7, persist_mode: 'summary', db_enabled: false, db_path: './logs/cursor2api.db' };
163 cfg.logging.persist_mode = process.env.LOG_PERSIST_MODE === 'full'
164 ? 'full'
165 : process.env.LOG_PERSIST_MODE === 'summary'
166 ? 'summary'
167 : 'compact';
168 }
169 if (process.env.LOG_DB_ENABLED !== undefined) {
170 if (!cfg.logging) cfg.logging = { file_enabled: false, dir: './logs', max_days: 7, persist_mode: 'summary', db_enabled: false, db_path: './logs/cursor2api.db' };
171 cfg.logging.db_enabled = process.env.LOG_DB_ENABLED === 'true' || process.env.LOG_DB_ENABLED === '1';
172 }
173 if (process.env.LOG_DB_PATH) {
174 if (!cfg.logging) cfg.logging = { file_enabled: false, dir: './logs', max_days: 7, persist_mode: 'summary', db_enabled: false, db_path: './logs/cursor2api.db' };
175 cfg.logging.db_path = process.env.LOG_DB_PATH;
176 }
177 // 工具透传模式环境变量覆盖
178 if (process.env.TOOLS_PASSTHROUGH !== undefined) {
179 if (!cfg.tools) cfg.tools = { schemaMode: 'full', descriptionMaxLength: 0 };
180 cfg.tools.passthrough = process.env.TOOLS_PASSTHROUGH === 'true' || process.env.TOOLS_PASSTHROUGH === '1';
181 }
182 // 工具禁用模式环境变量覆盖

Callers 2

getConfigFunction · 0.85
initConfigWatcherFunction · 0.85

Calls 1

warnMethod · 0.80

Tested by

no test coverage detected