const trimSlash = (s) => s.replace(/\/+$/, ""); const env = (k, d) => process.env[k]?.trim() ?? d; export const resolveUpstream = (key) => { switch (key) { case "orchestrator": return { baseUrl: trimSlash(`http://${env("ORCHESTRATOR_HOST", "127.0.0.1")}:${env("ORCHESTRATOR_PORT", "37145")}`), auth: { kind: "bearer", token: env("ORCHESTRATOR_TOKEN", "") }, }; case "repos_devtools": return { baseUrl: trimSlash(`http://${env("REPOS_DEVTOOLS_HOST", "127.0.0.1")}:${env("REPOS_DEVTOOLS_PORT", "37140")}`), auth: { kind: "bearer", token: env("REPOS_DEVTOOLS_TOKEN", "") }, }; case "ia_dev_gateway": return { baseUrl: trimSlash(`http://${env("IA_DEV_GATEWAY_HOST", "127.0.0.1")}:${env("IA_DEV_GATEWAY_PORT", "37144")}`), auth: { kind: "bearer", token: env("IA_DEV_GATEWAY_TOKEN", "") }, }; case "anythingllm_devtools": return { baseUrl: trimSlash(`http://${env("ANYTHINGLLM_DEVTOOLS_HOST", "127.0.0.1")}:${env("ANYTHINGLLM_DEVTOOLS_PORT", "37146")}`), auth: { kind: "bearer", token: env("ANYTHINGLLM_DEVTOOLS_TOKEN", "") }, }; case "tools_bridge": return { baseUrl: trimSlash(`http://${env("TOOLS_BRIDGE_HOST", "127.0.0.1")}:${env("TOOLS_BRIDGE_PORT", "37147")}`), auth: { kind: "bearer", token: env("TOOLS_BRIDGE_TOKEN", "") }, }; case "langextract": return { baseUrl: trimSlash(`http://${env("LANGEXTRACT_API_HOST", "127.0.0.1")}:${env("LANGEXTRACT_API_PORT", "37141")}`), auth: { kind: "bearer", token: env("LANGEXTRACT_SERVICE_TOKEN", "") }, }; case "regex_search": return { baseUrl: trimSlash(`http://${env("REGEX_SEARCH_HOST", "127.0.0.1")}:${env("REGEX_SEARCH_PORT", "37143")}`), auth: { kind: "bearer", token: env("REGEX_SEARCH_TOKEN", "") }, }; case "claw_proxy": return { baseUrl: trimSlash(`http://${env("CLAW_PROXY_HOST", "127.0.0.1")}:${env("CLAW_PROXY_PORT", "37142")}`), auth: { kind: "bearer", token: env("CLAW_PROXY_TOKEN", "") }, }; case "local_office": return { baseUrl: trimSlash(env("LOCAL_OFFICE_URL", "http://127.0.0.1:8000")), auth: { kind: "header", name: "X-API-Key", value: env("LOCAL_OFFICE_API_KEY", ""), }, }; default: return null; } }; export const listUpstreamKeys = () => [ "orchestrator", "repos_devtools", "ia_dev_gateway", "anythingllm_devtools", "tools_bridge", "langextract", "regex_search", "claw_proxy", "local_office", ];