diff --git a/open-sse/config/credentialLoader.ts b/open-sse/config/credentialLoader.ts index 0f6cbd8eeb..5cd2a06ac4 100644 --- a/open-sse/config/credentialLoader.ts +++ b/open-sse/config/credentialLoader.ts @@ -16,6 +16,7 @@ import { readFileSync, existsSync } from "fs"; import { join } from "path"; +import { resolveDataDir } from "../../src/lib/dataPaths"; // Fields that can be overridden per provider const CREDENTIAL_FIELDS = ["clientId", "clientSecret", "tokenUrl", "authUrl", "refreshUrl"]; @@ -30,8 +31,7 @@ let cachedProviders = null; * Priority: DATA_DIR env → ./data (project root) */ function resolveCredentialsPath() { - const dataDir = process.env.DATA_DIR || join(process.cwd(), "data"); - return join(dataDir, "provider-credentials.json"); + return join(resolveDataDir(), "provider-credentials.json"); } /** @@ -93,7 +93,11 @@ export function loadProviderCredentials(providers) { `[CREDENTIALS] ${isReload ? "Reloaded" : "Loaded"} external credentials: ${overrideCount} field(s) from ${credPath}` ); } catch (err) { - console.log(`[CREDENTIALS] Error reading credentials file: ${err.message}. Using defaults.`); + const reason = + err instanceof SyntaxError + ? "Invalid JSON format" + : (err as NodeJS.ErrnoException).code || "read error"; + console.log(`[CREDENTIALS] Error reading credentials file (${reason}). Using defaults.`); } cachedProviders = providers; diff --git a/open-sse/services/autoCombo/persistence.ts b/open-sse/services/autoCombo/persistence.ts index c940c0032b..7dae3521a9 100644 --- a/open-sse/services/autoCombo/persistence.ts +++ b/open-sse/services/autoCombo/persistence.ts @@ -7,6 +7,7 @@ import fs from "fs"; import path from "path"; +import { resolveDataDir } from "../../../src/lib/dataPaths"; export interface AdaptationState { comboId: string; @@ -23,7 +24,7 @@ export interface AdaptationState { lastUpdated: string; } -const PERSISTENCE_DIR = path.join(process.cwd(), "data"); +const PERSISTENCE_DIR = resolveDataDir(); const STATE_FILE = path.join(PERSISTENCE_DIR, "auto_combo_state.json"); let stateCache = new Map(); diff --git a/open-sse/transformer/responsesTransformer.ts b/open-sse/transformer/responsesTransformer.ts index 0d20255682..29d1dc9b9b 100644 --- a/open-sse/transformer/responsesTransformer.ts +++ b/open-sse/transformer/responsesTransformer.ts @@ -1,5 +1,6 @@ import * as fs from "fs"; import * as path from "path"; +import { resolveDataDir } from "../../src/lib/dataPaths"; /** * Responses API Transformer * Converts OpenAI Chat Completions SSE to Codex Responses API SSE format @@ -39,7 +40,7 @@ export function createResponsesLogger(model, logsDir = null) { const timestamp = new Date().toISOString().replace(/[:.]/g, "").slice(0, 15); const uniqueId = Math.random().toString(36).slice(2, 8); - const baseDir = logsDir || (typeof process !== "undefined" ? process.cwd() : "."); + const baseDir = logsDir || resolveDataDir(); const logDir = path.join(baseDir, "logs", `responses_${model}_${timestamp}_${uniqueId}`); try { diff --git a/open-sse/utils/requestLogger.ts b/open-sse/utils/requestLogger.ts index 9b83b0431b..be4f7e91ce 100644 --- a/open-sse/utils/requestLogger.ts +++ b/open-sse/utils/requestLogger.ts @@ -16,10 +16,8 @@ async function ensureNodeModules() { try { fs = await import("fs"); path = await import("path"); - LOGS_DIR = path.join( - typeof process !== "undefined" && process.cwd ? process.cwd() : ".", - "logs" - ); + const { resolveDataDir } = await import("../../src/lib/dataPaths"); + LOGS_DIR = path.join(resolveDataDir(), "logs"); } catch { // Running in non-Node environment (Worker, Browser, etc.) }