function truthy(key: string) { const value = process.env[key]?.toLowerCase() return value === "true" || value === "1" } export namespace Flag { export const OPENSCIENCE_AUTO_SHARE = truthy("OPENSCIENCE_AUTO_SHARE") export const OPENSCIENCE_GIT_BASH_PATH = process.env["OPENSCIENCE_GIT_BASH_PATH"] export const OPENSCIENCE_CONFIG = process.env["OPENSCIENCE_CONFIG"] export declare const OPENSCIENCE_CONFIG_DIR: string | undefined export const OPENSCIENCE_CONFIG_CONTENT = process.env["OPENSCIENCE_CONFIG_CONTENT"] export const OPENSCIENCE_DISABLE_AUTOUPDATE = truthy("OPENSCIENCE_DISABLE_AUTOUPDATE") export const OPENSCIENCE_DISABLE_PRUNE = truthy("OPENSCIENCE_DISABLE_PRUNE") export const OPENSCIENCE_DISABLE_TERMINAL_TITLE = truthy("OPENSCIENCE_DISABLE_TERMINAL_TITLE") export const OPENSCIENCE_PERMISSION = process.env["OPENSCIENCE_PERMISSION"] export const OPENSCIENCE_DISABLE_DEFAULT_PLUGINS = truthy("OPENSCIENCE_DISABLE_DEFAULT_PLUGINS") export const OPENSCIENCE_DISABLE_LSP_DOWNLOAD = truthy("OPENSCIENCE_DISABLE_LSP_DOWNLOAD") export const OPENSCIENCE_ENABLE_EXPERIMENTAL_MODELS = truthy("OPENSCIENCE_ENABLE_EXPERIMENTAL_MODELS") export const OPENSCIENCE_DISABLE_AUTOCOMPACT = truthy("OPENSCIENCE_DISABLE_AUTOCOMPACT") export const OPENSCIENCE_DISABLE_MODELS_FETCH = truthy("OPENSCIENCE_DISABLE_MODELS_FETCH") export const OPENSCIENCE_DISABLE_CLAUDE_CODE = truthy("OPENSCIENCE_DISABLE_CLAUDE_CODE") export const OPENSCIENCE_DISABLE_CLAUDE_CODE_PROMPT = OPENSCIENCE_DISABLE_CLAUDE_CODE || truthy("OPENSCIENCE_DISABLE_CLAUDE_CODE_PROMPT") export const OPENSCIENCE_DISABLE_CLAUDE_CODE_SKILLS = OPENSCIENCE_DISABLE_CLAUDE_CODE || truthy("OPENSCIENCE_DISABLE_CLAUDE_CODE_SKILLS") export const OPENSCIENCE_DISABLE_BUNDLED_SKILLS = truthy("OPENSCIENCE_DISABLE_BUNDLED_SKILLS") export declare const OPENSCIENCE_DISABLE_PROJECT_CONFIG: boolean export const OPENSCIENCE_FAKE_VCS = process.env["OPENSCIENCE_FAKE_VCS"] export const OPENSCIENCE_CLIENT = process.env["OPENSCIENCE_CLIENT"] ?? "cli" export const OPENSCIENCE_TRUST_PROXY = truthy("OPENSCIENCE_TRUST_PROXY") // Experimental export const OPENSCIENCE_EXPERIMENTAL = truthy("OPENSCIENCE_EXPERIMENTAL") export const OPENSCIENCE_EXPERIMENTAL_FILEWATCHER = truthy("OPENSCIENCE_EXPERIMENTAL_FILEWATCHER") export const OPENSCIENCE_EXPERIMENTAL_DISABLE_FILEWATCHER = truthy("OPENSCIENCE_EXPERIMENTAL_DISABLE_FILEWATCHER") export const OPENSCIENCE_EXPERIMENTAL_ICON_DISCOVERY = OPENSCIENCE_EXPERIMENTAL || truthy("OPENSCIENCE_EXPERIMENTAL_ICON_DISCOVERY") export const OPENSCIENCE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT = truthy( "OPENSCIENCE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT", ) export const OPENSCIENCE_ENABLE_EXA = truthy("OPENSCIENCE_ENABLE_EXA") || OPENSCIENCE_EXPERIMENTAL || truthy("OPENSCIENCE_EXPERIMENTAL_EXA") export const OPENSCIENCE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS = number( "OPENSCIENCE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS", ) export const OPENSCIENCE_EXPERIMENTAL_OUTPUT_TOKEN_MAX = number("OPENSCIENCE_EXPERIMENTAL_OUTPUT_TOKEN_MAX") export const OPENSCIENCE_EXPERIMENTAL_OXFMT = OPENSCIENCE_EXPERIMENTAL || truthy("OPENSCIENCE_EXPERIMENTAL_OXFMT") export const OPENSCIENCE_EXPERIMENTAL_LSP_TY = truthy("OPENSCIENCE_EXPERIMENTAL_LSP_TY") export const OPENSCIENCE_EXPERIMENTAL_LSP_TOOL = OPENSCIENCE_EXPERIMENTAL || truthy("OPENSCIENCE_EXPERIMENTAL_LSP_TOOL") export const OPENSCIENCE_DISABLE_FILETIME_CHECK = truthy("OPENSCIENCE_DISABLE_FILETIME_CHECK") export const OPENSCIENCE_EXPERIMENTAL_PLAN_MODE = OPENSCIENCE_EXPERIMENTAL || truthy("OPENSCIENCE_EXPERIMENTAL_PLAN_MODE") export const OPENSCIENCE_EXPERIMENTAL_MARKDOWN = truthy("OPENSCIENCE_EXPERIMENTAL_MARKDOWN") export const OPENSCIENCE_MODELS_URL = process.env["OPENSCIENCE_MODELS_URL"] function number(key: string) { const value = process.env[key] if (!value) return undefined const parsed = Number(value) return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined } } // Dynamic getter for OPENSCIENCE_DISABLE_PROJECT_CONFIG // This must be evaluated at access time, not module load time, // because external tooling may set this env var at runtime Object.defineProperty(Flag, "OPENSCIENCE_DISABLE_PROJECT_CONFIG", { get() { return truthy("OPENSCIENCE_DISABLE_PROJECT_CONFIG") }, enumerable: true, configurable: false, }) // Dynamic getter for OPENSCIENCE_CONFIG_DIR // This must be evaluated at access time, not module load time, // because external tooling may set this env var at runtime Object.defineProperty(Flag, "OPENSCIENCE_CONFIG_DIR", { get() { return process.env["OPENSCIENCE_CONFIG_DIR"] }, enumerable: true, configurable: false, })