clean up unused options

This commit is contained in:
perf3ct 2025-04-01 20:38:03 +00:00
parent afe1de5ed3
commit 49076e3cf6
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232
6 changed files with 57 additions and 98 deletions

View File

@ -757,9 +757,6 @@ export default class LlmChatPanel extends BasicWidget {
return; return;
} }
// Get the default embedding provider
const defaultProvider = options.get('embeddingsDefaultProvider') || 'openai';
// Get provider precedence // Get provider precedence
const precedenceStr = options.get('aiProviderPrecedence') || 'openai,anthropic,ollama'; const precedenceStr = options.get('aiProviderPrecedence') || 'openai,anthropic,ollama';
let precedenceList: string[] = []; let precedenceList: string[] = [];
@ -800,8 +797,6 @@ export default class LlmChatPanel extends BasicWidget {
enabledProviders.push('local'); enabledProviders.push('local');
// Perform validation checks // Perform validation checks
const defaultInPrecedence = precedenceList.includes(defaultProvider);
const defaultIsEnabled = enabledProviders.includes(defaultProvider);
const allPrecedenceEnabled = precedenceList.every((p: string) => enabledProviders.includes(p)); const allPrecedenceEnabled = precedenceList.every((p: string) => enabledProviders.includes(p));
// Get embedding queue status // Get embedding queue status
@ -820,19 +815,11 @@ export default class LlmChatPanel extends BasicWidget {
const hasEmbeddingsInQueue = queuedNotes > 0; const hasEmbeddingsInQueue = queuedNotes > 0;
// Show warning if there are issues // Show warning if there are issues
if (!defaultInPrecedence || !defaultIsEnabled || !allPrecedenceEnabled || hasEmbeddingsInQueue) { if (!allPrecedenceEnabled || hasEmbeddingsInQueue) {
let message = '<i class="bx bx-error-circle me-2"></i><strong>AI Provider Configuration Issues</strong>'; let message = '<i class="bx bx-error-circle me-2"></i><strong>AI Provider Configuration Issues</strong>';
message += '<ul class="mb-1 ps-4">'; message += '<ul class="mb-1 ps-4">';
if (!defaultInPrecedence) {
message += `<li>The default embedding provider "${defaultProvider}" is not in your provider precedence list.</li>`;
}
if (!defaultIsEnabled) {
message += `<li>The default embedding provider "${defaultProvider}" is not enabled.</li>`;
}
if (!allPrecedenceEnabled) { if (!allPrecedenceEnabled) {
const disabledProviders = precedenceList.filter((p: string) => !enabledProviders.includes(p)); const disabledProviders = precedenceList.filter((p: string) => !enabledProviders.includes(p));
message += `<li>The following providers in your precedence list are not enabled: ${disabledProviders.join(', ')}.</li>`; message += `<li>The following providers in your precedence list are not enabled: ${disabledProviders.join(', ')}.</li>`;

View File

@ -132,9 +132,8 @@ export default class AiSettingsWidget extends OptionsWidget {
this.setupChangeHandler('.enable-automatic-indexing', 'enableAutomaticIndexing', false, true); this.setupChangeHandler('.enable-automatic-indexing', 'enableAutomaticIndexing', false, true);
this.setupChangeHandler('.embedding-similarity-threshold', 'embeddingSimilarityThreshold'); this.setupChangeHandler('.embedding-similarity-threshold', 'embeddingSimilarityThreshold');
this.setupChangeHandler('.max-notes-per-llm-query', 'maxNotesPerLlmQuery'); this.setupChangeHandler('.max-notes-per-llm-query', 'maxNotesPerLlmQuery');
this.setupChangeHandler('.embedding-default-provider', 'embeddingsDefaultProvider', true);
this.setupChangeHandler('.embedding-dimension-strategy', 'embeddingDimensionStrategy');
this.setupChangeHandler('.embedding-provider-precedence', 'embeddingProviderPrecedence', true); this.setupChangeHandler('.embedding-provider-precedence', 'embeddingProviderPrecedence', true);
this.setupChangeHandler('.embedding-dimension-strategy', 'embeddingDimensionStrategy');
// No sortable behavior needed anymore // No sortable behavior needed anymore

View File

@ -83,36 +83,32 @@ const ALLOWED_OPTIONS = new Set<OptionNames>([
// AI/LLM integration options // AI/LLM integration options
"aiEnabled", "aiEnabled",
"aiTemperature",
"aiSystemPrompt",
"aiProviderPrecedence",
"openaiApiKey", "openaiApiKey",
"openaiBaseUrl",
"openaiDefaultModel", "openaiDefaultModel",
"openaiEmbeddingModel", "openaiEmbeddingModel",
"openaiBaseUrl",
"anthropicApiKey", "anthropicApiKey",
"anthropicDefaultModel",
"voyageEmbeddingModel",
"voyageApiKey",
"anthropicBaseUrl", "anthropicBaseUrl",
"ollamaEnabled", "anthropicDefaultModel",
"voyageApiKey",
"voyageEmbeddingModel",
"ollamaBaseUrl", "ollamaBaseUrl",
"ollamaDefaultModel", "ollamaDefaultModel",
"ollamaEmbeddingModel", "ollamaEmbeddingModel",
"aiProviderPrecedence",
"aiTemperature",
"aiSystemPrompt",
// Embedding options
"embeddingAutoUpdateEnabled", "embeddingAutoUpdateEnabled",
"embeddingBatchSize", "embeddingDimensionStrategy",
"embeddingUpdateInterval",
"embeddingDefaultDimension",
"embeddingsDefaultProvider",
"embeddingProviderPrecedence", "embeddingProviderPrecedence",
"embeddingSimilarityThreshold", "embeddingSimilarityThreshold",
"maxNotesPerLlmQuery", "embeddingBatchSize",
"embeddingUpdateInterval",
"enableAutomaticIndexing", "enableAutomaticIndexing",
"embeddingGenerationLocation", "maxNotesPerLlmQuery",
"embeddingDimensionStrategy",
"splitEditorOrientation", // Embedding options
"embeddingDefaultDimension",
"mfaEnabled", "mfaEnabled",
"mfaMethod" "mfaMethod"
]); ]);

View File

@ -115,9 +115,6 @@ export class AIServiceManager implements IAIServiceManager {
return null; return null;
} }
// Get default embedding provider
const defaultProviderName = await options.getOption('embeddingsDefaultProvider') || 'openai';
// Parse provider precedence list (similar to updateProviderOrder) // Parse provider precedence list (similar to updateProviderOrder)
let precedenceList: string[] = []; let precedenceList: string[] = [];
const precedenceOption = await options.getOption('aiProviderPrecedence'); const precedenceOption = await options.getOption('aiProviderPrecedence');
@ -138,28 +135,14 @@ export class AIServiceManager implements IAIServiceManager {
const enabledProviders = await getEnabledEmbeddingProviders(); const enabledProviders = await getEnabledEmbeddingProviders();
const enabledProviderNames = enabledProviders.map(p => p.name); const enabledProviderNames = enabledProviders.map(p => p.name);
// Check if default provider is in precedence list
const defaultInPrecedence = precedenceList.includes(defaultProviderName);
// Check if default provider is enabled
const defaultIsEnabled = enabledProviderNames.includes(defaultProviderName);
// Check if all providers in precedence list are enabled // Check if all providers in precedence list are enabled
const allPrecedenceEnabled = precedenceList.every(p => const allPrecedenceEnabled = precedenceList.every(p =>
enabledProviderNames.includes(p) || p === 'local'); enabledProviderNames.includes(p) || p === 'local');
// Return warning message if there are issues // Return warning message if there are issues
if (!defaultInPrecedence || !defaultIsEnabled || !allPrecedenceEnabled) { if (!allPrecedenceEnabled) {
let message = 'There are issues with your AI provider configuration:'; let message = 'There are issues with your AI provider configuration:';
if (!defaultInPrecedence) {
message += `\n• The default embedding provider "${defaultProviderName}" is not in your provider precedence list.`;
}
if (!defaultIsEnabled) {
message += `\n• The default embedding provider "${defaultProviderName}" is not enabled.`;
}
if (!allPrecedenceEnabled) { if (!allPrecedenceEnabled) {
const disabledProviders = precedenceList.filter(p => const disabledProviders = precedenceList.filter(p =>
!enabledProviderNames.includes(p) && p !== 'local'); !enabledProviderNames.includes(p) && p !== 'local');
@ -354,7 +337,21 @@ export class AIServiceManager implements IAIServiceManager {
return; return;
} }
const preferredProvider = options.getOption('embeddingsDefaultProvider') || 'openai'; // Get provider precedence list
const precedenceOption = await options.getOption('embeddingProviderPrecedence');
let precedenceList: string[] = [];
if (precedenceOption) {
if (precedenceOption.startsWith('[') && precedenceOption.endsWith(']')) {
precedenceList = JSON.parse(precedenceOption);
} else if (typeof precedenceOption === 'string') {
if (precedenceOption.includes(',')) {
precedenceList = precedenceOption.split(',').map(p => p.trim());
} else {
precedenceList = [precedenceOption];
}
}
}
// Check if we have enabled providers // Check if we have enabled providers
const enabledProviders = await getEnabledEmbeddingProviders(); const enabledProviders = await getEnabledEmbeddingProviders();
@ -364,13 +361,6 @@ export class AIServiceManager implements IAIServiceManager {
return; return;
} }
// Validate that preferred provider is enabled
const isPreferredEnabled = enabledProviders.some(p => p.name === preferredProvider);
if (!isPreferredEnabled) {
log.info(`Preferred provider "${preferredProvider}" is not enabled. Using first available.`);
}
// Initialize embedding providers // Initialize embedding providers
log.info('Embedding providers initialized successfully'); log.info('Embedding providers initialized successfully');
} catch (error: any) { } catch (error: any) {

View File

@ -20,44 +20,32 @@ export class ProviderManager {
*/ */
async getPreferredEmbeddingProvider(): Promise<any> { async getPreferredEmbeddingProvider(): Promise<any> {
try { try {
// First try user's configured default provider // Try to get providers based on precedence list
const providerId = await options.getOption('embeddingsDefaultProvider'); const precedenceOption = await options.getOption('embeddingProviderPrecedence');
if (providerId) { let precedenceList: string[] = [];
if (precedenceOption) {
if (precedenceOption.startsWith('[') && precedenceOption.endsWith(']')) {
precedenceList = JSON.parse(precedenceOption);
} else if (typeof precedenceOption === 'string') {
if (precedenceOption.includes(',')) {
precedenceList = precedenceOption.split(',').map(p => p.trim());
} else {
precedenceList = [precedenceOption];
}
}
}
// Try each provider in the precedence list
for (const providerId of precedenceList) {
const provider = await getEmbeddingProvider(providerId); const provider = await getEmbeddingProvider(providerId);
if (provider) { if (provider) {
log.info(`Using configured embedding provider: ${providerId}`); log.info(`Using embedding provider from precedence list: ${providerId}`);
return provider; return provider;
} }
} }
// Then try OpenAI // If no provider from precedence list is available, try any enabled provider
const openaiKey = await options.getOption('openaiApiKey');
if (openaiKey) {
const provider = await getEmbeddingProvider('openai');
if (provider) {
log.info('Using OpenAI embeddings provider');
return provider;
}
}
// Try Anthropic
const anthropicKey = await options.getOption('anthropicApiKey');
if (anthropicKey) {
const provider = await getEmbeddingProvider('anthropic');
if (provider) {
log.info('Using Anthropic embeddings provider');
return provider;
}
}
// Try Ollama
const provider = await getEmbeddingProvider('ollama');
if (provider) {
log.info('Using Ollama embeddings provider');
return provider;
}
// If no preferred providers, get any enabled provider
const providers = await getEnabledEmbeddingProviders(); const providers = await getEnabledEmbeddingProviders();
if (providers.length > 0) { if (providers.length > 0) {
log.info(`Using available embedding provider: ${providers[0].name}`); log.info(`Using available embedding provider: ${providers[0].name}`);

View File

@ -197,12 +197,11 @@ const defaultOptions: DefaultOption[] = [
{ name: "aiTemperature", value: "0.7", isSynced: true }, { name: "aiTemperature", value: "0.7", isSynced: true },
{ name: "aiSystemPrompt", value: "", isSynced: true }, { name: "aiSystemPrompt", value: "", isSynced: true },
{ name: "aiProviderPrecedence", value: "openai,anthropic,ollama", isSynced: true }, { name: "aiProviderPrecedence", value: "openai,anthropic,ollama", isSynced: true },
{ name: "embeddingsDefaultProvider", value: "openai", isSynced: true }, { name: "embeddingDimensionStrategy", value: "auto", isSynced: true },
{ name: "embeddingProviderPrecedence", value: "openai,voyage,ollama", isSynced: true }, { name: "embeddingProviderPrecedence", value: "openai,voyage,ollama,local", isSynced: true },
{ name: "embeddingDimensionStrategy", value: "native", isSynced: true }, { name: "embeddingSimilarityThreshold", value: "0.75", isSynced: true },
{ name: "enableAutomaticIndexing", value: "true", isSynced: true }, { name: "enableAutomaticIndexing", value: "true", isSynced: true },
{ name: "embeddingSimilarityThreshold", value: "0.65", isSynced: true }, { name: "maxNotesPerLlmQuery", value: "3", isSynced: true },
{ name: "maxNotesPerLlmQuery", value: "10", isSynced: true },
{ name: "embeddingBatchSize", value: "10", isSynced: true }, { name: "embeddingBatchSize", value: "10", isSynced: true },
{ name: "embeddingUpdateInterval", value: "5000", isSynced: true }, { name: "embeddingUpdateInterval", value: "5000", isSynced: true },
{ name: "embeddingDefaultDimension", value: "1536", isSynced: true }, { name: "embeddingDefaultDimension", value: "1536", isSynced: true },