Files
2026-07-13 12:52:40 +08:00

64 lines
2.1 KiB
TypeScript

import type { ChatSessionConfig } from "@/lib/chat-schema";
import { readModelSelectionStorageFromWindow } from "@/lib/model-selection";
import { normalizeProviderId } from "@/lib/provider-id";
export const CHAT_TRANSPORT_UNAVAILABLE_MESSAGE =
"Chat connection is unavailable. Reopen the app window to restore realtime chat.";
export const CHAT_WS_ENDPOINT_RETRY_ATTEMPTS = 60;
export const CHAT_WS_ENDPOINT_RETRY_DELAY_MS = 100;
export const CHAT_WS_RECONNECT_BASE_DELAY_MS = 300;
export const CHAT_WS_RECONNECT_MAX_DELAY_MS = 3000;
export const CHAT_WS_REQUEST_TIMEOUT_MS = 120000;
export const OAUTH_MANAGED_PROVIDERS = new Set([
"cline",
"oca",
"openai-codex",
]);
// Default Cline model — keep in sync with @cline/llms CLINE_DEFAULT_MODEL
const CLINE_DEFAULT_MODEL = "anthropic/claude-sonnet-4.6";
export const DEFAULT_CHAT_CONFIG: ChatSessionConfig = {
sessionId: undefined,
workspaceRoot: "",
cwd: "",
provider: "cline",
model: CLINE_DEFAULT_MODEL,
apiKey: process.env.CLINE_API_KEY || "",
mode: "act",
systemPrompt: undefined,
maxIterations: undefined,
thinking: undefined,
reasoningEffort: undefined,
enableTools: true,
enableSpawn: undefined,
enableTeams: undefined,
autoApproveTools: true,
missionStepInterval: undefined,
missionTimeIntervalMs: undefined,
};
export function getInitialChatConfig(): ChatSessionConfig {
const selection = readModelSelectionStorageFromWindow();
const rememberedProvider = normalizeProviderId(selection.lastProvider);
const rememberedModelForProvider = rememberedProvider
? (selection.lastModelByProvider[rememberedProvider] ??
selection.lastModelByProvider[selection.lastProvider.trim()])
: undefined;
const rememberedModelForDefaultProvider =
selection.lastModelByProvider[DEFAULT_CHAT_CONFIG.provider];
const provider = rememberedProvider || DEFAULT_CHAT_CONFIG.provider;
const model =
rememberedModelForProvider ||
(provider === DEFAULT_CHAT_CONFIG.provider
? rememberedModelForDefaultProvider
: undefined) ||
DEFAULT_CHAT_CONFIG.model;
return {
...DEFAULT_CHAT_CONFIG,
provider,
model,
};
}