Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions desktop/src/main/resources/welcome/modules/app-state.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class AppState {
return {
defaultModel: 'GPT4o',
parsingModel: 'GPT4oMini',
imageModel: '',
workingDir: '',
temperature: 0.3,
autoFix: false,
Expand Down
89 changes: 56 additions & 33 deletions desktop/src/main/resources/welcome/modules/models.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,38 +8,13 @@ class ModelManager {
}


populateModelSelections() {
console.log('[populateModelSelections] Called');

const modelSelect = this.document.getElementById('model-selection');
const parsingModelSelect = this.document.getElementById('parsing-model');

if (!modelSelect || !parsingModelSelect) {
console.warn('[populateModelSelections] Model select elements not found.');
return;
}
// Ensure we have appState and availableModels
const currentModels = this.getAvailableModels();
if (!this.appState || !currentModels) {
console.warn('[populateModelSelections] Missing required dependencies.');
return;
}


const savedDefaultModel = this.appState.taskSettings.defaultModel;
const savedParsingModel = this.appState.taskSettings.parsingModel;

this.clearModelSelections(modelSelect, parsingModelSelect);
this.addAvailableModels(modelSelect, parsingModelSelect);
this.setSelectedModels(modelSelect, parsingModelSelect, savedDefaultModel, savedParsingModel);
}

clearModelSelections(modelSelect, parsingModelSelect) {
clearModelSelections(modelSelect, parsingModelSelect, imageModelSelect) {
modelSelect.innerHTML = '';
parsingModelSelect.innerHTML = '';
imageModelSelect.innerHTML = '';
}

addAvailableModels(modelSelect, parsingModelSelect) {
addAvailableModels(modelSelect, parsingModelSelect, imageModelSelect) {
const addedModels = new Set();
const currentModels = this.getAvailableModels();

Expand All @@ -49,7 +24,7 @@ class ModelManager {
if (key && currentModels[provider]) {
currentModels[provider].forEach(model => {
if (!addedModels.has(model.id)) {
this.addModelOption(modelSelect, parsingModelSelect, model, provider);
this.addModelOption(modelSelect, parsingModelSelect, imageModelSelect, model, provider);
addedModels.add(model.id);
}
});
Expand All @@ -58,11 +33,40 @@ class ModelManager {
}

if (modelSelect.options.length === 0) {
this.addDefaultOptions(modelSelect, parsingModelSelect);
this.addDefaultOptions(modelSelect, parsingModelSelect, imageModelSelect);
}
}

populateModelSelections() {
console.log('[populateModelSelections] Called');

const modelSelect = this.document.getElementById('model-selection');
const parsingModelSelect = this.document.getElementById('parsing-model');
const imageModelSelect = this.document.getElementById('image-model');

if (!modelSelect || !parsingModelSelect) {
console.warn('[populateModelSelections] Model select elements not found.');
return;
}
// Ensure we have appState and availableModels
const currentModels = this.getAvailableModels();
if (!this.appState || !currentModels) {
console.warn('[populateModelSelections] Missing required dependencies.');
return;
}


const savedDefaultModel = this.appState.taskSettings.defaultModel;
const savedParsingModel = this.appState.taskSettings.parsingModel;
const savedImageModel = this.appState.taskSettings.imageModel;

this.clearModelSelections(modelSelect, parsingModelSelect, imageModelSelect);
this.addAvailableModels(modelSelect, parsingModelSelect, imageModelSelect);

this.setSelectedModels(modelSelect, parsingModelSelect, savedDefaultModel, imageModelSelect, savedParsingModel, savedImageModel);
}

addModelOption(modelSelect, parsingModelSelect, model, provider) {
addModelOption(modelSelect, parsingModelSelect, imageModelSelect, model, provider) {
const option = document.createElement('option');
option.value = model.id;
option.textContent = `${model.name} (${provider})`;
Expand All @@ -74,9 +78,15 @@ class ModelManager {
parsingOption.textContent = `${model.name} (${provider})`;
parsingOption.title = model.description;
parsingModelSelect.appendChild(parsingOption);

const imageOption = document.createElement('option');
imageOption.value = model.id;
imageOption.textContent = `${model.name} (${provider})`;
imageOption.title = model.description;
imageModelSelect.appendChild(imageOption);
}

addDefaultOptions(modelSelect, parsingModelSelect) {
addDefaultOptions(modelSelect, parsingModelSelect, imageModelSelect) {
const defaultOption = document.createElement('option');
defaultOption.value = 'GPT4o';
defaultOption.textContent = 'GPT-4o (OpenAI) - Configure API key';
Expand All @@ -86,9 +96,14 @@ class ModelManager {
defaultParsingOption.value = 'GPT4oMini';
defaultParsingOption.textContent = 'GPT-4o Mini (OpenAI) - Configure API key';
parsingModelSelect.appendChild(defaultParsingOption);

const defaultImageOption = document.createElement('option');
defaultImageOption.value = 'DALL-E-3';
defaultImageOption.textContent = 'DALL-E 3 (OpenAI) - Configure API key';
imageModelSelect.appendChild(defaultImageOption);
}

setSelectedModels(modelSelect, parsingModelSelect, savedDefaultModel, savedParsingModel) {
setSelectedModels(modelSelect, parsingModelSelect, savedDefaultModel, imageModelSelect, savedParsingModel, savedImageModel) {
if (savedDefaultModel && Array.from(modelSelect.options).some(opt => opt.value === savedDefaultModel)) {
modelSelect.value = savedDefaultModel;
} else if (modelSelect.options.length > 0) {
Expand All @@ -102,6 +117,14 @@ class ModelManager {
parsingModelSelect.selectedIndex = 0;
this.appState.updateTaskSetting('parsingModel', parsingModelSelect.value);
}

if (savedImageModel && Array.from(imageModelSelect.options).some(opt => opt.value === savedImageModel)) {
imageModelSelect.value = savedImageModel;
} else if (imageModelSelect.options.length > 0) {
imageModelSelect.selectedIndex = 0;
this.appState.updateTaskSetting('parsingModel', imageModelSelect.value);
}

}
}

Expand Down
1 change: 1 addition & 0 deletions desktop/src/main/resources/welcome/modules/state.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class AppState {
return {
defaultModel: this.localStorage.getItem('defaultModel') || 'GPT4o',
parsingModel: this.localStorage.getItem('parsingModel') || 'GPT4oMini',
imageModel: this.localStorage.getItem('imageModel') || '',
workingDir: this.localStorage.getItem('workingDir') || '.',
autoFix: this.localStorage.getItem('autoFix') === 'true',
temperature: parseFloat(this.localStorage.getItem('temperature')) || 0.2,
Expand Down
Loading
Loading