fix(ai): improve API retry handling
This commit is contained in:
1 parent
a4352d6560
commit
52d5c99a92
29 files changed
+3962
-1097
No files matched your search
@@ -393,7 +393,14 @@ export interface CustomTheme {
|
||||
ddlColors: CustomThemeDdlColors;
|
||||
}
|
||||
|
||||
export const DEFAULT_CUSTOM_THEMES: CustomTheme[] = [{ id: "default", name: "Custom", colors: { ...DEFAULT_CUSTOM_THEME_COLORS }, ddlColors: { ...DEFAULT_CUSTOM_THEME_DDL_COLORS } }];
|
||||
export const DEFAULT_CUSTOM_THEMES: CustomTheme[] = [
|
||||
{
|
||||
id: "default",
|
||||
name: "Custom",
|
||||
colors: { ...DEFAULT_CUSTOM_THEME_COLORS },
|
||||
ddlColors: { ...DEFAULT_CUSTOM_THEME_DDL_COLORS },
|
||||
},
|
||||
];
|
||||
|
||||
export type SidebarObjectInfoMode = "comment-inline" | "comment-aligned" | "comment-right" | "size" | "hidden";
|
||||
|
||||
@@ -538,7 +545,11 @@ export function enforceRightSidebarPanelExclusivity(current: RightSidebarPanelSt
|
||||
return transitionRightSidebarPanels(current, panelToKeep, true, true);
|
||||
}
|
||||
|
||||
export const EDITOR_THEMES: { value: EditorTheme; label: string; dark: boolean }[] = [
|
||||
export const EDITOR_THEMES: {
|
||||
value: EditorTheme;
|
||||
label: string;
|
||||
dark: boolean;
|
||||
}[] = [
|
||||
{ value: "app", label: "Follow app theme", dark: false },
|
||||
{ value: "one-dark", label: "One Dark", dark: true },
|
||||
{ value: "vscode-dark", label: "VS Dark+", dark: true },
|
||||
@@ -790,7 +801,13 @@ function normalizeSqlSnippets(value: unknown, existing?: SqlSnippet[]): SqlSnipp
|
||||
if (seenPrefixes.has(item.prefix)) continue;
|
||||
seenPrefixes.add(item.prefix);
|
||||
// Older settings do not have this field; only an explicit false disables a snippet.
|
||||
valid.push({ id: item.id, label: item.label, prefix: item.prefix, body: item.body, enabled: item.enabled !== false });
|
||||
valid.push({
|
||||
id: item.id,
|
||||
label: item.label,
|
||||
prefix: item.prefix,
|
||||
body: item.body,
|
||||
enabled: item.enabled !== false,
|
||||
});
|
||||
}
|
||||
if (valid.length === 0) return existing ?? DEFAULT_SQL_SNIPPETS;
|
||||
return valid;
|
||||
@@ -845,7 +862,10 @@ export function normalizeEditorSettings(settings: Partial<EditorSettings>, exist
|
||||
return {
|
||||
...renamed,
|
||||
colors: { ...DEFAULT_CUSTOM_THEME_COLORS, ...renamed.colors },
|
||||
ddlColors: { ...DEFAULT_CUSTOM_THEME_DDL_COLORS, ...(renamed as any).ddlColors },
|
||||
ddlColors: {
|
||||
...DEFAULT_CUSTOM_THEME_DDL_COLORS,
|
||||
...(renamed as any).ddlColors,
|
||||
},
|
||||
};
|
||||
});
|
||||
}
|
||||
@@ -854,7 +874,10 @@ export function normalizeEditorSettings(settings: Partial<EditorSettings>, exist
|
||||
{
|
||||
id: "migrated",
|
||||
name: "Migrated",
|
||||
colors: { ...DEFAULT_CUSTOM_THEME_COLORS, ...settings.customThemeColors },
|
||||
colors: {
|
||||
...DEFAULT_CUSTOM_THEME_COLORS,
|
||||
...settings.customThemeColors,
|
||||
},
|
||||
ddlColors: { ...DEFAULT_CUSTOM_THEME_DDL_COLORS },
|
||||
},
|
||||
]
|
||||
@@ -915,17 +938,43 @@ export function normalizeEditorSettings(settings: Partial<EditorSettings>, exist
|
||||
sidebarObjectDisplay: settings.sidebarObjectDisplay === "simple" || settings.sidebarObjectDisplay === "grouped" ? settings.sidebarObjectDisplay : DEFAULT_EDITOR_SETTINGS.sidebarObjectDisplay,
|
||||
sidebarTableSearchEnabled: typeof settings.sidebarTableSearchEnabled === "boolean" ? settings.sidebarTableSearchEnabled : DEFAULT_EDITOR_SETTINGS.sidebarTableSearchEnabled,
|
||||
autoSelectActiveSidebarNode: settings.autoSelectActiveSidebarNode ?? DEFAULT_EDITOR_SETTINGS.autoSelectActiveSidebarNode,
|
||||
openTabsRestoreMode: normalizeOpenTabsRestoreMode((settings as Partial<EditorSettings>).openTabsRestoreMode, (settings as Partial<EditorSettings> & { restoreOpenTabsOnLaunch?: boolean }).restoreOpenTabsOnLaunch),
|
||||
disconnectTabHandlingMode: normalizeDisconnectTabHandlingMode((settings as Partial<EditorSettings>).disconnectTabHandlingMode, (settings as Partial<EditorSettings> & { closeQueryTabsOnDisconnect?: boolean }).closeQueryTabsOnDisconnect),
|
||||
openTabsRestoreMode: normalizeOpenTabsRestoreMode(
|
||||
(settings as Partial<EditorSettings>).openTabsRestoreMode,
|
||||
(
|
||||
settings as Partial<EditorSettings> & {
|
||||
restoreOpenTabsOnLaunch?: boolean;
|
||||
}
|
||||
).restoreOpenTabsOnLaunch,
|
||||
),
|
||||
disconnectTabHandlingMode: normalizeDisconnectTabHandlingMode(
|
||||
(settings as Partial<EditorSettings>).disconnectTabHandlingMode,
|
||||
(
|
||||
settings as Partial<EditorSettings> & {
|
||||
closeQueryTabsOnDisconnect?: boolean;
|
||||
}
|
||||
).closeQueryTabsOnDisconnect,
|
||||
),
|
||||
reuseDataTab: settings.reuseDataTab ?? DEFAULT_EDITOR_SETTINGS.reuseDataTab,
|
||||
prefillNewQueryWithSelect: typeof settings.prefillNewQueryWithSelect === "boolean" ? settings.prefillNewQueryWithSelect : DEFAULT_EDITOR_SETTINGS.prefillNewQueryWithSelect,
|
||||
updateNotificationsEnabled: settings.updateNotificationsEnabled ?? DEFAULT_EDITOR_SETTINGS.updateNotificationsEnabled,
|
||||
sidebarHiddenTablePrefixes: normalizeSidebarHiddenTablePrefixes(settings.sidebarHiddenTablePrefixes),
|
||||
sidebarObjectInfoMode: normalizeSidebarObjectInfoMode(
|
||||
settings.sidebarObjectInfoMode,
|
||||
(settings as Partial<EditorSettings> & { sidebarTableCommentLayout?: string }).sidebarTableCommentLayout,
|
||||
(settings as Partial<EditorSettings> & { sidebarHideTableComments?: boolean }).sidebarHideTableComments,
|
||||
(settings as Partial<EditorSettings> & { sidebarShowDatabaseSizes?: boolean }).sidebarShowDatabaseSizes,
|
||||
(
|
||||
settings as Partial<EditorSettings> & {
|
||||
sidebarTableCommentLayout?: string;
|
||||
}
|
||||
).sidebarTableCommentLayout,
|
||||
(
|
||||
settings as Partial<EditorSettings> & {
|
||||
sidebarHideTableComments?: boolean;
|
||||
}
|
||||
).sidebarHideTableComments,
|
||||
(
|
||||
settings as Partial<EditorSettings> & {
|
||||
sidebarShowDatabaseSizes?: boolean;
|
||||
}
|
||||
).sidebarShowDatabaseSizes,
|
||||
),
|
||||
sidebarAllowHorizontalScroll: settings.sidebarAllowHorizontalScroll ?? DEFAULT_EDITOR_SETTINGS.sidebarAllowHorizontalScroll,
|
||||
columnFormatters: normalizeColumnFormatters(settings.columnFormatters),
|
||||
@@ -996,7 +1045,9 @@ export const useSettingsStore = defineStore("settings", () => {
|
||||
const isAiConfigLoaded = ref(false);
|
||||
const aiConfigs = ref<AiConfigItem[]>([]);
|
||||
const desktopSettings = ref<DesktopSettings>({ ...DEFAULT_DESKTOP_SETTINGS });
|
||||
const mcpGlobalPolicy = ref<McpGlobalPolicy>({ ...DEFAULT_MCP_GLOBAL_POLICY });
|
||||
const mcpGlobalPolicy = ref<McpGlobalPolicy>({
|
||||
...DEFAULT_MCP_GLOBAL_POLICY,
|
||||
});
|
||||
const isDesktopSettingsLoaded = ref(false);
|
||||
const isMcpGlobalPolicyLoaded = ref(false);
|
||||
const isEditorSettingsLoaded = ref(false);
|
||||
@@ -1119,7 +1170,10 @@ export const useSettingsStore = defineStore("settings", () => {
|
||||
const savedActive = savedSelection?.active;
|
||||
const savedConfig = savedActive ? aiConfigs.value.find((config) => config.id === savedActive.configId) : undefined;
|
||||
if (savedConfig && savedActive?.modelId.trim()) {
|
||||
activeModel.value = { configId: savedConfig.id, modelId: savedActive.modelId.trim() };
|
||||
activeModel.value = {
|
||||
configId: savedConfig.id,
|
||||
modelId: savedActive.modelId.trim(),
|
||||
};
|
||||
} else {
|
||||
const fallback = aiConfigs.value.find((config) => config.isDefault) || aiConfigs.value[0];
|
||||
activeModel.value = fallback?.model.trim() ? { configId: fallback.id, modelId: fallback.model.trim() } : null;
|
||||
@@ -1175,7 +1229,10 @@ export const useSettingsStore = defineStore("settings", () => {
|
||||
await api.saveAiConfigItem(normalized);
|
||||
aiConfigs.value.push(normalized);
|
||||
if (aiConfigs.value.length === 1 && normalized.model.trim()) {
|
||||
activeModel.value = { configId: normalized.id, modelId: normalized.model };
|
||||
activeModel.value = {
|
||||
configId: normalized.id,
|
||||
modelId: normalized.model,
|
||||
};
|
||||
persistAiChatSelection();
|
||||
}
|
||||
}
|
||||
@@ -1214,7 +1271,10 @@ export const useSettingsStore = defineStore("settings", () => {
|
||||
}
|
||||
|
||||
function updateActiveModel(model: { configId: string; modelId: string }) {
|
||||
activeModel.value = { configId: model.configId, modelId: model.modelId.trim() };
|
||||
activeModel.value = {
|
||||
configId: model.configId,
|
||||
modelId: model.modelId.trim(),
|
||||
};
|
||||
persistAiChatSelection();
|
||||
}
|
||||
|
||||
@@ -1412,7 +1472,9 @@ export const useSettingsStore = defineStore("settings", () => {
|
||||
}
|
||||
|
||||
function deleteCustomColumnFormatter(id: string) {
|
||||
const customColumnFormatters = { ...editorSettings.value.customColumnFormatters };
|
||||
const customColumnFormatters = {
|
||||
...editorSettings.value.customColumnFormatters,
|
||||
};
|
||||
delete customColumnFormatters[id];
|
||||
const columnFormatters = Object.fromEntries(
|
||||
Object.entries(editorSettings.value.columnFormatters).filter(([, formatter]) => {
|
||||
|
||||
Reference in new issue
Block a user