import { Config } from "effect" export function truthy(key: string) { const value = process.env[key]?.toLowerCase() return value === "true" || value === "1" } const copy = process.env["KIRINCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"] const fff = process.env["KIRINCODE_DISABLE_FFF"] function enabledByExperimental(key: string) { return process.env[key] === undefined ? truthy("KIRINCODE_EXPERIMENTAL") : truthy(key) } export const Flag = { OTEL_EXPORTER_OTLP_ENDPOINT: process.env["OTEL_EXPORTER_OTLP_ENDPOINT"], OTEL_EXPORTER_OTLP_HEADERS: process.env["OTEL_EXPORTER_OTLP_HEADERS"], KIRINCODE_AUTO_HEAP_SNAPSHOT: truthy("KIRINCODE_AUTO_HEAP_SNAPSHOT"), KIRINCODE_GIT_BASH_PATH: process.env["KIRINCODE_GIT_BASH_PATH"], KIRINCODE_CONFIG: process.env["KIRINCODE_CONFIG"], KIRINCODE_CONFIG_CONTENT: process.env["KIRINCODE_CONFIG_CONTENT"], KIRINCODE_DISABLE_AUTOUPDATE: truthy("KIRINCODE_DISABLE_AUTOUPDATE"), KIRINCODE_ALWAYS_NOTIFY_UPDATE: truthy("KIRINCODE_ALWAYS_NOTIFY_UPDATE"), KIRINCODE_DISABLE_PRUNE: truthy("KIRINCODE_DISABLE_PRUNE"), KIRINCODE_DISABLE_TERMINAL_TITLE: truthy("KIRINCODE_DISABLE_TERMINAL_TITLE"), KIRINCODE_SHOW_TTFD: truthy("KIRINCODE_SHOW_TTFD"), KIRINCODE_DISABLE_AUTOCOMPACT: truthy("KIRINCODE_DISABLE_AUTOCOMPACT"), KIRINCODE_DISABLE_MODELS_FETCH: truthy("KIRINCODE_DISABLE_MODELS_FETCH"), KIRINCODE_DISABLE_MOUSE: truthy("KIRINCODE_DISABLE_MOUSE"), KIRINCODE_FAKE_VCS: process.env["KIRINCODE_FAKE_VCS"], KIRINCODE_SERVER_PASSWORD: process.env["KIRINCODE_SERVER_PASSWORD"], KIRINCODE_SERVER_USERNAME: process.env["KIRINCODE_SERVER_USERNAME"], KIRINCODE_DISABLE_FFF: fff === undefined ? process.platform === "win32" : truthy("KIRINCODE_DISABLE_FFF"), // Experimental KIRINCODE_EXPERIMENTAL_FILEWATCHER: Config.boolean("KIRINCODE_EXPERIMENTAL_FILEWATCHER").pipe( Config.withDefault(false), ), KIRINCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: Config.boolean("KIRINCODE_EXPERIMENTAL_DISABLE_FILEWATCHER").pipe( Config.withDefault(false), ), KIRINCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT: copy === undefined ? process.platform === "win32" : truthy("KIRINCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT"), KIRINCODE_MODELS_URL: process.env["KIRINCODE_MODELS_URL"], KIRINCODE_MODELS_PATH: process.env["KIRINCODE_MODELS_PATH"], KIRINCODE_DB: process.env["KIRINCODE_DB"], KIRINCODE_WORKSPACE_ID: process.env["KIRINCODE_WORKSPACE_ID"], KIRINCODE_EXPERIMENTAL_WORKSPACES: enabledByExperimental("KIRINCODE_EXPERIMENTAL_WORKSPACES"), // Evaluated at access time (not module load) because tests, the CLI, and // external tooling set these env vars at runtime. get KIRINCODE_DISABLE_PROJECT_CONFIG() { return truthy("KIRINCODE_DISABLE_PROJECT_CONFIG") }, get KIRINCODE_EXPERIMENTAL_REFERENCES() { return enabledByExperimental("KIRINCODE_EXPERIMENTAL_REFERENCES") }, get KIRINCODE_TUI_CONFIG() { return process.env["KIRINCODE_TUI_CONFIG"] }, get KIRINCODE_CONFIG_DIR() { return process.env["KIRINCODE_CONFIG_DIR"] }, get KIRINCODE_PURE() { return truthy("KIRINCODE_PURE") }, get KIRINCODE_PERMISSION() { return process.env["KIRINCODE_PERMISSION"] }, get KIRINCODE_PLUGIN_META_FILE() { return process.env["KIRINCODE_PLUGIN_META_FILE"] }, get KIRINCODE_CLIENT() { return process.env["KIRINCODE_CLIENT"] ?? "cli" }, }