//
//  Copyright 2026 The InfiniFlow Authors. All Rights Reserved.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

package common

import (
	"os"
	"strings"
)

func GetEnv(key string) string {
	return os.Getenv(key)
}

func GetEnvSmall(key string) string {
	return strings.ToLower(GetEnv(key))
}

// environment variables
const (
	EnvDeepDocURL                        = "DEEPDOC_URL"
	EnvTensorrtDLAServer                 = "TENSORRT_DLA_SVR"
	EnvRAGFlowTTSCacheTTLSeconds         = "RAGFLOW_TTS_CACHE_TTL_SECONDS"
	EnvComponentExecTimeout              = "COMPONENT_EXEC_TIMEOUT"
	EnvDocEngine                         = "DOC_ENGINE"
	EnvMaxFileNumPerUser                 = "MAX_FILE_NUM_PER_USER"
	EnvRAGFlowDictPath                   = "RAGFLOW_DICT_PATH"
	EnvDefaultSuperuserEmail             = "DEFAULT_SUPERUSER_EMAIL"
	EnvDefaultSuperuserNickname          = "DEFAULT_SUPERUSER_NICKNAME"
	EnvDefaultSuperuserPassword          = "DEFAULT_SUPERUSER_PASSWORD"
	EnvDBType                            = "DB_TYPE"
	EnvDevice                            = "DEVICE"
	EnvStorageImpl                       = "STORAGE_IMPL"
	EnvStageHandCacheCap                 = "STAGEHAND_CACHE_CAP"
	EnvStageHandCacheTTLSeconds          = "STAGEHAND_CACHE_TTL_SECONDS"
	EnvStageHandCacheSweepInterval       = "STAGEHAND_CACHE_SWEEP_INTERVAL"
	EnvStageHandExtractResultFile        = "STAGEHAND_EXTRACT_RESULT_FILE"
	EnvAgentRunAccessKeyID               = "AGENTRUN_ACCESS_KEY_ID"
	EnvAgentRunAccessKeySecret           = "AGENTRUN_ACCESS_KEY_SECRET"
	EnvAgentRunAccountID                 = "AGENTRUN_ACCOUNT_ID"
	EnvAgentRunRegion                    = "AGENTRUN_REGION"
	EnvAgentRunTemplateName              = "AGENTRUN_TEMPLATE_NAME"
	EnvAgentRunExecuteHost               = "AGENTRUN_EXECUTE_HOST"
	EnvAgentRunTimeout                   = "AGENTRUN_TIMEOUT"
	EnvE2BTemplate                       = "E2B_TEMPLATE"
	EnvE2BTemplateName                   = "E2B_TEMPLATE_NAME"
	EnvE2BTimeout                        = "E2B_TIMEOUT"
	EnvE2BAPIURL                         = "E2B_API_URL"
	EnvE2BApiKey                         = "E2B_API_KEY"
	EnvE2BAccessToken                    = "E2B_ACCESS_TOKEN"
	EnvE2BDomain                         = "E2B_DOMAIN"
	EnvTenkiApiKey                       = "TENKI_API_KEY"
	EnvTenkiAPIURL                       = "TENKI_API_URL"
	EnvTenkiImage                        = "TENKI_IMAGE"
	EnvTenkiTimeout                      = "TENKI_TIMEOUT"
	EnvTenkiAllowOutbound                = "TENKI_ALLOW_OUTBOUND"
	EnvLocalPythonBin                    = "LOCAL_PYTHON_BIN"
	EnvLocalNodeBin                      = "LOCAL_NODE_BIN"
	EnvLocalWorkDir                      = "LOCAL_WORK_DIR"
	EnvLocalTimeout                      = "LOCAL_TIMEOUT"
	EnvLocalMaxMemoryMB                  = "LOCAL_MAX_MEMORY_MB"
	EnvLocalMaxOutputBytes               = "LOCAL_MAX_OUTPUT_BYTES"
	EnvLocalMaxArtifacts                 = "LOCAL_MAX_ARTIFACTS"
	EnvLocalMaxArtifactBytes             = "LOCAL_MAX_ARTIFACT_BYTES"
	EnvPath                              = "PATH"
	EnvOMPNumThreads                     = "OMP_NUM_THREADS"
	EnvOpenBLASNumThreads                = "OPENBLAS_NUM_THREADS"
	EnvMKLNumThreads                     = "MKL_NUM_THREADS"
	EnvVECLIBMaximumThreads              = "VECLIB_MAXIMUM_THREADS"
	EnvNumEXPRNumThreads                 = "NUMEXPR_NUM_THREADS"
	EnvXDGCacheHome                      = "XDG_CACHE_HOME"
	EnvOpenAIApiKey                      = "OPENAI_API_KEY"
	EnvOpenAIBaseURL                     = "OPENAI_BASE_URL"
	EnvOpenAIModel                       = "OPENAI_MODEL"
	EnvStageHandExtractSchemaJSON        = "STAGEHAND_EXTRACT_SCHEMA_JSON"
	EnvSandboxProviderType               = "SANDBOX_PROVIDER_TYPE"
	EnvSandboxExecutorManagerURL         = "SANDBOX_EXECUTOR_MANAGER_URL"
	EnvSandboxExecutorManagerTimeout     = "SANDBOX_EXECUTOR_MANAGER_TIMEOUT"
	EnvSandboxExecutorManagerPoolSize    = "SANDBOX_EXECUTOR_MANAGER_POOL_SIZE"
	EnvSandboxExecutorManagerMaxRetries  = "SANDBOX_EXECUTOR_MANAGER_MAX_RETRIES"
	EnvSandboxBasePythonImage            = "SANDBOX_BASE_PYTHON_IMAGE"
	EnvSandboxBaseNodeJSImage            = "SANDBOX_BASE_NODEJS_IMAGE"
	EnvSandboxArtifactBucket             = "SANDBOX_ARTIFACT_BUCKET"
	EnvSSHHost                           = "SSH_HOST"
	EnvSSHPort                           = "SSH_PORT"
	EnvSSHUsername                       = "SSH_USERNAME"
	EnvSSHPassword                       = "SSH_PASSWORD"
	EnvSSHPrivateKey                     = "SSH_PRIVATE_KEY"
	EnvSSHPrivateKeyPath                 = "SSH_PRIVATE_KEY_PATH"
	EnvSSHPassphrase                     = "SSH_PASSPHRASE"
	EnvSSHPythonBin                      = "SSH_PYTHON_BIN"
	EnvSSHNodeBin                        = "SSH_NODE_BIN"
	EnvSSHWorkDir                        = "SSH_WORK_DIR"
	EnvSSHTimeout                        = "SSH_TIMEOUT"
	EnvSSHMaxOutputBytes                 = "SSH_MAX_OUTPUT_BYTES"
	EnvSSHMaxArtifacts                   = "SSH_MAX_ARTIFACTS"
	EnvSSHMaxArtifactBytes               = "SSH_MAX_ARTIFACT_BYTES"
	EnvSSHKnownHosts                     = "SSH_KNOWN_HOSTS"
	EnvTrinoUseTls                       = "TRINO_USE_TLS"
	EnvSSHEnableAPIURL                   = "SSH_ENABLE_API_URL"
	EnvAllowAnyHost                      = "ALLOW_ANY_HOST"
	EnvTavilyApiKey                      = "TAVILY_API_KEY"
	EnvQueritAPIKey                      = "QUERIT_API_KEY"
	EnvHome                              = "HOME"
	EnvUserProfile                       = "USERPROFILE"
	EnvHttpHTTPProxy                     = "http_proxy"
	EnvHttpHTTPSProxy                    = "https_proxy"
	EnvBatchSingle                       = "BATCH_SINGLE"
	EnvBatchCount                        = "BATCH_COUNT"
	EnvBatchLogLevel                     = "BATCH_LOG_LEVEL"
	EnvBatchSkipOCR                      = "BATCH_SKIP_OCR"
	EnvBatchCompareOnly                  = "BATCH_COMPARE_ONLY"
	EnvBatchCompareFilter                = "BATCH_COMPARE_FILTER"
	EnvBatchCompareCSV                   = "BATCH_COMPARE_CSV"
	EnvPYOCRSuffix                       = "PY_OCR_SUFFIX"
	EnvOSSDeepDocURL                     = "OSSDEEPDOC_URL"
	EnvUpdateGolden                      = "UPDATE_GOLDEN"
	EnvBatchParityFilter                 = "BATCH_PARITY_FILTER"
	EnvDumpCount                         = "DUMP_COUNT"
	EnvBatchCSV                          = "BATCH_CSV"
	EnvESTest                            = "ES_TEST"
	EnvESHost                            = "ES_HOST"
	EnvESUsername                        = "ES_USERNAME"
	EnvESPassword                        = "ES_PASSWORD"
	EnvESIndexPrefix                     = "ES_INDEX_PREFIX"
	EnvGiteeListModelsIntegration        = "GITEE_LIST_MODELS_INTEGRATION"
	EnvGiteeBaseUrl                      = "GITEE_BASE_URL"
	EnvGiteeApiKey                       = "GITEE_API_KEY"
	EnvRAGFlowApiTiming                  = "RAGFLOW_API_TIMING"
	EnvInfinityURI                       = "INFINITY_URI"
	EnvDoclingServerURL                  = "DOCLING_SERVER_URL"
	EnvDoclingApiKey                     = "DOCLING_API_KEY"
	EnvMineruApiServer                   = "MINERU_APISERVER"
	EnvMineruApiKey                      = "MINERU_API_KEY"
	EnvMineruBackend                     = "MINERU_BACKEND"
	EnvOpenDataLoaderApiServer           = "OPENDATALOADER_APISERVER"
	EnvOpenDataLoaderApiKey              = "OPENDATALOADER_API_KEY"
	EnvPaddleOCRBaseUrl                  = "PADDLEOCR_BASE_URL"
	EnvPaddleOCRApiURL                   = "PADDLEOCR_API_URL"
	EnvPaddleOCRAccessToken              = "PADDLEOCR_ACCESS_TOKEN"
	EnvPaddleOCRAlgorithm                = "PADDLEOCR_ALGORITHM"
	EnvSOMarkBaseUrl                     = "SOMARK_BASE_URL"
	EnvSOMarkApiKey                      = "SOMARK_API_KEY"
	EnvSOMarkImageFormat                 = "SOMARK_IMAGE_FORMAT"
	EnvSOMarkFormulaFormat               = "SOMARK_FORMULA_FORMAT"
	EnvSOMarkTableFormat                 = "SOMARK_TABLE_FORMAT"
	EnvSOMarkCSFormat                    = "SOMARK_CS_FORMAT"
	EnvSOMarkEnableTextCrossPage         = "SOMARK_ENABLE_TEXT_CROSS_PAGE"
	EnvSOMarkEnableTableCrossPage        = "SOMARK_ENABLE_TABLE_CROSS_PAGE"
	EnvSOMarkEnableTitleLevelRecognition = "SOMARK_ENABLE_TITLE_LEVEL_RECOGNITION"
	EnvSOMarkEnableInlineImage           = "SOMARK_ENABLE_INLINE_IMAGE"
	EnvSOMarkEnableTableImage            = "SOMARK_ENABLE_TABLE_IMAGE"
	EnvSOMarkEnableImageUnderstanding    = "SOMARK_ENABLE_IMAGE_UNDERSTANDING"
	EnvSOMarkKeepHeaderFooter            = "SOMARK_KEEP_HEADER_FOOTER"
	EnvTCADPApiServerURL                 = "TCADP_APISERVER_URL"
	EnvTCADPApiKey                       = "TCADP_API_KEY"
	EnvRAGFlowSecretKey                  = "RAGFLOW_SECRET_KEY"
	EnvRegisterEnabled                   = "REGISTER_ENABLED"
	EnvDisablePasswordLogin              = "DISABLE_PASSWORD_LOGIN"
	EnvMinioHost                         = "MINIO_HOST"
	EnvMinioRegion                       = "MINIO_REGION"
	EnvLang                              = "LANG"
	EnvLanguage                          = "LANGUAGE"
	EnvChunkFeedbackEnabled              = "CHUNK_FEEDBACK_ENABLED"
	EnvChunkFeedbackWeighting            = "CHUNK_FEEDBACK_WEIGHTING"
	EnvComposeProfiles                   = "COMPOSE_PROFILES"
	EnvTEIModel                          = "TEI_MODEL"
	EnvTEIBaseURL                        = "TEI_BASE_URL"
	EnvRAGFlowConfDir                    = "RAGFLOW_CONF_DIR"
	EnvRAGProjectBaseURL                 = "RAG_PROJECT_BASE"
	EnvRAGDeployBaseURL                  = "RAG_DEPLOY_BASE"
	EnvRAGFlowTestEnvIntOrUnset          = "RAGFLOW_TEST_ENVINTOR_UNSET"
	EnvRAGFlowTestEnvIntOr               = "RAGFLOW_TEST_ENVINTOR"
	EnvRAGFlowTestEnvOr                  = "RAGFLOW_TEST_ENVOR"
	EnvRAGFlowTestEnvOrUnset             = "RAGFLOW_TEST_ENVOR_UNSET"
	EnvKeenableAPIURL                    = "KEENABLE_API_URL"
	EnvBoxWebOAuthRedirectURI            = "BOX_WEB_OAUTH_REDIRECT_URI"
	EnvGmailWebOAuthRedirectURI          = "GMAIL_WEB_OAUTH_REDIRECT_URI"
	EnvGoogleDriveWebOAuthRedirectURI    = "GOOGLE_DRIVE_WEB_OAUTH_REDIRECT_URI"
	EnvSpacyModelDir                     = "SPACY_MODEL_DIR"
)
