mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
Error message sanitization (Hard Rule #12): - claude-auth/export, codex-auth/export, gemini-cli-auth/export routes: replace raw err.message with sanitizeErrorMessage() from open-sse/utils/error.ts - imageGeneration, musicGeneration, videoGeneration handlers: import sanitizeErrorMessage and replace all err.message in return values - veoaifree-web executor: replace raw upstream response data in errResp() calls with static strings OAuth callback page (callback/page.tsx): - Remove useSearchParams/Suspense dependency that caused hydration failures in popup windows navigating back from Google OAuth (COOP header severs opener) - Use window.location.search directly in useEffect with three send methods: postMessage, BroadcastChannel, localStorage - Fix postMessage target from "*" to window.location.origin (semgrep finding) - Move setCurrentUrl call to manual-only branch to avoid unnecessary renders copilot-web executor: - Move accessToken from WebSocket URL query string to Authorization header (avoids credential exposure in server logs) - Add MAX_POOL_SIZE=100 cap to sessionPool with LRU eviction of oldest entry CodeQL ReDoS fixes (js/polynomial-redos #233-240): - Replace while(s.endsWith("/")) s=s.slice(0,-1) pattern (O(n²) allocations) with index-based loop (O(n) time, single final slice) in: bin/cli/api.mjs, all 6 cli-helper config generators, opencode-provider Gemini OAuth: - mapTokens: add idToken field to fix "missing id_token" export error
24 lines
608 B
TypeScript
24 lines
608 B
TypeScript
import path from "node:path";
|
|
import os from "node:os";
|
|
|
|
const CONFIG_PATH = path.join(os.homedir(), ".cline", "data", "globalState.json");
|
|
|
|
export function generateClineConfig(options: {
|
|
baseUrl: string;
|
|
apiKey: string;
|
|
model?: string;
|
|
}): string {
|
|
let base = options.baseUrl;
|
|
let end = base.length;
|
|
while (end > 0 && base[end - 1] === "/") end--;
|
|
base = end < base.length ? base.slice(0, end) : base;
|
|
if (base.endsWith("/v1")) base = base.slice(0, -3);
|
|
|
|
const config = {
|
|
openAiBaseUrl: `${base}/v1`,
|
|
openAiApiKey: options.apiKey,
|
|
};
|
|
|
|
return JSON.stringify(config, null, 2);
|
|
}
|