local-deep-research 0.4.4__py3-none-any.whl → 0.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- local_deep_research/__init__.py +7 -0
- local_deep_research/__version__.py +1 -1
- local_deep_research/advanced_search_system/answer_decoding/__init__.py +5 -0
- local_deep_research/advanced_search_system/answer_decoding/browsecomp_answer_decoder.py +421 -0
- local_deep_research/advanced_search_system/candidate_exploration/README.md +219 -0
- local_deep_research/advanced_search_system/candidate_exploration/__init__.py +25 -0
- local_deep_research/advanced_search_system/candidate_exploration/adaptive_explorer.py +329 -0
- local_deep_research/advanced_search_system/candidate_exploration/base_explorer.py +341 -0
- local_deep_research/advanced_search_system/candidate_exploration/constraint_guided_explorer.py +436 -0
- local_deep_research/advanced_search_system/candidate_exploration/diversity_explorer.py +457 -0
- local_deep_research/advanced_search_system/candidate_exploration/parallel_explorer.py +250 -0
- local_deep_research/advanced_search_system/candidate_exploration/progressive_explorer.py +255 -0
- local_deep_research/advanced_search_system/candidates/__init__.py +5 -0
- local_deep_research/advanced_search_system/candidates/base_candidate.py +59 -0
- local_deep_research/advanced_search_system/constraint_checking/README.md +150 -0
- local_deep_research/advanced_search_system/constraint_checking/__init__.py +35 -0
- local_deep_research/advanced_search_system/constraint_checking/base_constraint_checker.py +122 -0
- local_deep_research/advanced_search_system/constraint_checking/constraint_checker.py +223 -0
- local_deep_research/advanced_search_system/constraint_checking/constraint_satisfaction_tracker.py +387 -0
- local_deep_research/advanced_search_system/constraint_checking/dual_confidence_checker.py +424 -0
- local_deep_research/advanced_search_system/constraint_checking/evidence_analyzer.py +174 -0
- local_deep_research/advanced_search_system/constraint_checking/intelligent_constraint_relaxer.py +503 -0
- local_deep_research/advanced_search_system/constraint_checking/rejection_engine.py +143 -0
- local_deep_research/advanced_search_system/constraint_checking/strict_checker.py +259 -0
- local_deep_research/advanced_search_system/constraint_checking/threshold_checker.py +213 -0
- local_deep_research/advanced_search_system/constraints/__init__.py +6 -0
- local_deep_research/advanced_search_system/constraints/base_constraint.py +58 -0
- local_deep_research/advanced_search_system/constraints/constraint_analyzer.py +143 -0
- local_deep_research/advanced_search_system/evidence/__init__.py +12 -0
- local_deep_research/advanced_search_system/evidence/base_evidence.py +57 -0
- local_deep_research/advanced_search_system/evidence/evaluator.py +159 -0
- local_deep_research/advanced_search_system/evidence/requirements.py +122 -0
- local_deep_research/advanced_search_system/filters/base_filter.py +3 -1
- local_deep_research/advanced_search_system/filters/cross_engine_filter.py +8 -2
- local_deep_research/advanced_search_system/filters/journal_reputation_filter.py +43 -29
- local_deep_research/advanced_search_system/findings/repository.py +54 -17
- local_deep_research/advanced_search_system/knowledge/standard_knowledge.py +3 -1
- local_deep_research/advanced_search_system/query_generation/adaptive_query_generator.py +405 -0
- local_deep_research/advanced_search_system/questions/__init__.py +16 -0
- local_deep_research/advanced_search_system/questions/atomic_fact_question.py +171 -0
- local_deep_research/advanced_search_system/questions/browsecomp_question.py +287 -0
- local_deep_research/advanced_search_system/questions/decomposition_question.py +13 -4
- local_deep_research/advanced_search_system/questions/entity_aware_question.py +184 -0
- local_deep_research/advanced_search_system/questions/standard_question.py +9 -3
- local_deep_research/advanced_search_system/search_optimization/cross_constraint_manager.py +624 -0
- local_deep_research/advanced_search_system/source_management/diversity_manager.py +613 -0
- local_deep_research/advanced_search_system/strategies/__init__.py +42 -0
- local_deep_research/advanced_search_system/strategies/adaptive_decomposition_strategy.py +564 -0
- local_deep_research/advanced_search_system/strategies/base_strategy.py +4 -4
- local_deep_research/advanced_search_system/strategies/browsecomp_entity_strategy.py +1031 -0
- local_deep_research/advanced_search_system/strategies/browsecomp_optimized_strategy.py +778 -0
- local_deep_research/advanced_search_system/strategies/concurrent_dual_confidence_strategy.py +446 -0
- local_deep_research/advanced_search_system/strategies/constrained_search_strategy.py +1348 -0
- local_deep_research/advanced_search_system/strategies/constraint_parallel_strategy.py +522 -0
- local_deep_research/advanced_search_system/strategies/direct_search_strategy.py +217 -0
- local_deep_research/advanced_search_system/strategies/dual_confidence_strategy.py +320 -0
- local_deep_research/advanced_search_system/strategies/dual_confidence_with_rejection.py +219 -0
- local_deep_research/advanced_search_system/strategies/early_stop_constrained_strategy.py +369 -0
- local_deep_research/advanced_search_system/strategies/entity_aware_source_strategy.py +140 -0
- local_deep_research/advanced_search_system/strategies/evidence_based_strategy.py +1248 -0
- local_deep_research/advanced_search_system/strategies/evidence_based_strategy_v2.py +1337 -0
- local_deep_research/advanced_search_system/strategies/focused_iteration_strategy.py +537 -0
- local_deep_research/advanced_search_system/strategies/improved_evidence_based_strategy.py +782 -0
- local_deep_research/advanced_search_system/strategies/iterative_reasoning_strategy.py +760 -0
- local_deep_research/advanced_search_system/strategies/iterdrag_strategy.py +55 -21
- local_deep_research/advanced_search_system/strategies/llm_driven_modular_strategy.py +865 -0
- local_deep_research/advanced_search_system/strategies/modular_strategy.py +1142 -0
- local_deep_research/advanced_search_system/strategies/parallel_constrained_strategy.py +506 -0
- local_deep_research/advanced_search_system/strategies/parallel_search_strategy.py +34 -16
- local_deep_research/advanced_search_system/strategies/rapid_search_strategy.py +29 -9
- local_deep_research/advanced_search_system/strategies/recursive_decomposition_strategy.py +492 -0
- local_deep_research/advanced_search_system/strategies/smart_decomposition_strategy.py +284 -0
- local_deep_research/advanced_search_system/strategies/smart_query_strategy.py +515 -0
- local_deep_research/advanced_search_system/strategies/source_based_strategy.py +48 -24
- local_deep_research/advanced_search_system/strategies/standard_strategy.py +34 -14
- local_deep_research/advanced_search_system/tools/base_tool.py +7 -2
- local_deep_research/api/benchmark_functions.py +6 -2
- local_deep_research/api/research_functions.py +10 -4
- local_deep_research/benchmarks/__init__.py +9 -7
- local_deep_research/benchmarks/benchmark_functions.py +6 -2
- local_deep_research/benchmarks/cli/benchmark_commands.py +27 -10
- local_deep_research/benchmarks/cli.py +38 -13
- local_deep_research/benchmarks/comparison/__init__.py +4 -2
- local_deep_research/benchmarks/comparison/evaluator.py +316 -239
- local_deep_research/benchmarks/datasets/__init__.py +1 -1
- local_deep_research/benchmarks/datasets/base.py +91 -72
- local_deep_research/benchmarks/datasets/browsecomp.py +54 -33
- local_deep_research/benchmarks/datasets/custom_dataset_template.py +19 -19
- local_deep_research/benchmarks/datasets/simpleqa.py +14 -14
- local_deep_research/benchmarks/datasets/utils.py +48 -29
- local_deep_research/benchmarks/datasets.py +4 -11
- local_deep_research/benchmarks/efficiency/__init__.py +8 -4
- local_deep_research/benchmarks/efficiency/resource_monitor.py +223 -171
- local_deep_research/benchmarks/efficiency/speed_profiler.py +62 -48
- local_deep_research/benchmarks/evaluators/browsecomp.py +3 -1
- local_deep_research/benchmarks/evaluators/composite.py +6 -2
- local_deep_research/benchmarks/evaluators/simpleqa.py +36 -13
- local_deep_research/benchmarks/graders.py +32 -10
- local_deep_research/benchmarks/metrics/README.md +1 -1
- local_deep_research/benchmarks/metrics/calculation.py +25 -10
- local_deep_research/benchmarks/metrics/reporting.py +7 -3
- local_deep_research/benchmarks/metrics/visualization.py +42 -23
- local_deep_research/benchmarks/metrics.py +1 -1
- local_deep_research/benchmarks/optimization/__init__.py +3 -1
- local_deep_research/benchmarks/optimization/api.py +7 -1
- local_deep_research/benchmarks/optimization/optuna_optimizer.py +75 -26
- local_deep_research/benchmarks/runners.py +48 -15
- local_deep_research/citation_handler.py +65 -92
- local_deep_research/citation_handlers/__init__.py +15 -0
- local_deep_research/citation_handlers/base_citation_handler.py +70 -0
- local_deep_research/citation_handlers/forced_answer_citation_handler.py +179 -0
- local_deep_research/citation_handlers/precision_extraction_handler.py +550 -0
- local_deep_research/citation_handlers/standard_citation_handler.py +80 -0
- local_deep_research/config/llm_config.py +271 -169
- local_deep_research/config/search_config.py +14 -5
- local_deep_research/defaults/__init__.py +0 -1
- local_deep_research/metrics/__init__.py +13 -0
- local_deep_research/metrics/database.py +58 -0
- local_deep_research/metrics/db_models.py +115 -0
- local_deep_research/metrics/migrate_add_provider_to_token_usage.py +148 -0
- local_deep_research/metrics/migrate_call_stack_tracking.py +105 -0
- local_deep_research/metrics/migrate_enhanced_tracking.py +75 -0
- local_deep_research/metrics/migrate_research_ratings.py +31 -0
- local_deep_research/metrics/models.py +61 -0
- local_deep_research/metrics/pricing/__init__.py +12 -0
- local_deep_research/metrics/pricing/cost_calculator.py +237 -0
- local_deep_research/metrics/pricing/pricing_cache.py +143 -0
- local_deep_research/metrics/pricing/pricing_fetcher.py +240 -0
- local_deep_research/metrics/query_utils.py +51 -0
- local_deep_research/metrics/search_tracker.py +380 -0
- local_deep_research/metrics/token_counter.py +1078 -0
- local_deep_research/migrate_db.py +3 -1
- local_deep_research/report_generator.py +22 -8
- local_deep_research/search_system.py +390 -9
- local_deep_research/test_migration.py +15 -5
- local_deep_research/utilities/db_utils.py +7 -4
- local_deep_research/utilities/es_utils.py +115 -104
- local_deep_research/utilities/llm_utils.py +15 -5
- local_deep_research/utilities/log_utils.py +151 -0
- local_deep_research/utilities/search_cache.py +387 -0
- local_deep_research/utilities/search_utilities.py +14 -6
- local_deep_research/utilities/threading_utils.py +92 -0
- local_deep_research/utilities/url_utils.py +6 -0
- local_deep_research/web/api.py +347 -0
- local_deep_research/web/app.py +13 -17
- local_deep_research/web/app_factory.py +71 -66
- local_deep_research/web/database/migrate_to_ldr_db.py +12 -4
- local_deep_research/web/database/migrations.py +5 -3
- local_deep_research/web/database/models.py +51 -2
- local_deep_research/web/database/schema_upgrade.py +49 -29
- local_deep_research/web/models/database.py +51 -61
- local_deep_research/web/routes/api_routes.py +56 -22
- local_deep_research/web/routes/benchmark_routes.py +4 -1
- local_deep_research/web/routes/globals.py +22 -0
- local_deep_research/web/routes/history_routes.py +71 -46
- local_deep_research/web/routes/metrics_routes.py +1155 -0
- local_deep_research/web/routes/research_routes.py +227 -41
- local_deep_research/web/routes/settings_routes.py +156 -55
- local_deep_research/web/services/research_service.py +310 -103
- local_deep_research/web/services/resource_service.py +36 -11
- local_deep_research/web/services/settings_manager.py +55 -17
- local_deep_research/web/services/settings_service.py +12 -4
- local_deep_research/web/services/socket_service.py +295 -188
- local_deep_research/web/static/css/custom_dropdown.css +180 -0
- local_deep_research/web/static/css/styles.css +39 -1
- local_deep_research/web/static/js/components/detail.js +633 -267
- local_deep_research/web/static/js/components/details.js +751 -0
- local_deep_research/web/static/js/components/fallback/formatting.js +11 -11
- local_deep_research/web/static/js/components/fallback/ui.js +23 -23
- local_deep_research/web/static/js/components/history.js +76 -76
- local_deep_research/web/static/js/components/logpanel.js +61 -13
- local_deep_research/web/static/js/components/progress.js +13 -2
- local_deep_research/web/static/js/components/research.js +99 -12
- local_deep_research/web/static/js/components/results.js +239 -106
- local_deep_research/web/static/js/main.js +40 -40
- local_deep_research/web/static/js/services/audio.js +1 -1
- local_deep_research/web/static/js/services/formatting.js +11 -11
- local_deep_research/web/static/js/services/keyboard.js +157 -0
- local_deep_research/web/static/js/services/pdf.js +80 -80
- local_deep_research/web/static/sounds/README.md +1 -1
- local_deep_research/web/templates/base.html +1 -0
- local_deep_research/web/templates/components/log_panel.html +7 -1
- local_deep_research/web/templates/components/mobile_nav.html +1 -1
- local_deep_research/web/templates/components/sidebar.html +3 -0
- local_deep_research/web/templates/pages/cost_analytics.html +1245 -0
- local_deep_research/web/templates/pages/details.html +325 -24
- local_deep_research/web/templates/pages/history.html +1 -1
- local_deep_research/web/templates/pages/metrics.html +1929 -0
- local_deep_research/web/templates/pages/progress.html +2 -2
- local_deep_research/web/templates/pages/research.html +53 -17
- local_deep_research/web/templates/pages/results.html +12 -1
- local_deep_research/web/templates/pages/star_reviews.html +803 -0
- local_deep_research/web/utils/formatters.py +9 -3
- local_deep_research/web_search_engines/default_search_engines.py +5 -3
- local_deep_research/web_search_engines/engines/full_search.py +8 -2
- local_deep_research/web_search_engines/engines/meta_search_engine.py +59 -20
- local_deep_research/web_search_engines/engines/search_engine_arxiv.py +19 -6
- local_deep_research/web_search_engines/engines/search_engine_brave.py +6 -2
- local_deep_research/web_search_engines/engines/search_engine_ddg.py +3 -1
- local_deep_research/web_search_engines/engines/search_engine_elasticsearch.py +81 -58
- local_deep_research/web_search_engines/engines/search_engine_github.py +46 -15
- local_deep_research/web_search_engines/engines/search_engine_google_pse.py +16 -6
- local_deep_research/web_search_engines/engines/search_engine_guardian.py +39 -15
- local_deep_research/web_search_engines/engines/search_engine_local.py +58 -25
- local_deep_research/web_search_engines/engines/search_engine_local_all.py +15 -5
- local_deep_research/web_search_engines/engines/search_engine_pubmed.py +63 -21
- local_deep_research/web_search_engines/engines/search_engine_searxng.py +37 -11
- local_deep_research/web_search_engines/engines/search_engine_semantic_scholar.py +27 -9
- local_deep_research/web_search_engines/engines/search_engine_serpapi.py +12 -4
- local_deep_research/web_search_engines/engines/search_engine_wayback.py +31 -10
- local_deep_research/web_search_engines/engines/search_engine_wikipedia.py +12 -3
- local_deep_research/web_search_engines/search_engine_base.py +83 -35
- local_deep_research/web_search_engines/search_engine_factory.py +25 -8
- local_deep_research/web_search_engines/search_engines_config.py +9 -3
- {local_deep_research-0.4.4.dist-info → local_deep_research-0.5.0.dist-info}/METADATA +7 -1
- local_deep_research-0.5.0.dist-info/RECORD +265 -0
- local_deep_research-0.4.4.dist-info/RECORD +0 -177
- {local_deep_research-0.4.4.dist-info → local_deep_research-0.5.0.dist-info}/WHEEL +0 -0
- {local_deep_research-0.4.4.dist-info → local_deep_research-0.5.0.dist-info}/entry_points.txt +0 -0
- {local_deep_research-0.4.4.dist-info → local_deep_research-0.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -50,6 +50,30 @@
|
|
50
50
|
// Track initialization to prevent unwanted saves during initial setup
|
51
51
|
let isInitializing = true;
|
52
52
|
|
53
|
+
/**
|
54
|
+
* Select a research mode (both visual and radio button)
|
55
|
+
* @param {HTMLElement} modeElement - The mode option element that was selected
|
56
|
+
*/
|
57
|
+
function selectMode(modeElement) {
|
58
|
+
// Update visual appearance
|
59
|
+
modeOptions.forEach(m => {
|
60
|
+
m.classList.remove('active');
|
61
|
+
m.setAttribute('aria-checked', 'false');
|
62
|
+
m.setAttribute('tabindex', '-1');
|
63
|
+
});
|
64
|
+
|
65
|
+
modeElement.classList.add('active');
|
66
|
+
modeElement.setAttribute('aria-checked', 'true');
|
67
|
+
modeElement.setAttribute('tabindex', '0');
|
68
|
+
|
69
|
+
// Update the corresponding radio button
|
70
|
+
const modeValue = modeElement.getAttribute('data-mode');
|
71
|
+
const radioButton = document.getElementById(`mode-${modeValue}`);
|
72
|
+
if (radioButton) {
|
73
|
+
radioButton.checked = true;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
53
77
|
// Model provider options from README
|
54
78
|
const MODEL_PROVIDERS = [
|
55
79
|
{ value: 'OLLAMA', label: 'Ollama (Local)' },
|
@@ -119,8 +143,9 @@
|
|
119
143
|
const lastProvider = localStorage.getItem('lastUsedProvider');
|
120
144
|
const lastModel = localStorage.getItem('lastUsedModel');
|
121
145
|
const lastSearchEngine = localStorage.getItem('lastUsedSearchEngine');
|
146
|
+
const lastStrategy = localStorage.getItem('lastUsedStrategy') || 'source-based';
|
122
147
|
|
123
|
-
console.log('Local storage values:', { provider: lastProvider, model: lastModel, searchEngine: lastSearchEngine });
|
148
|
+
console.log('Local storage values:', { provider: lastProvider, model: lastModel, searchEngine: lastSearchEngine, strategy: lastStrategy });
|
124
149
|
|
125
150
|
// Apply local storage values if available
|
126
151
|
if (lastProvider && modelProviderSelect) {
|
@@ -132,11 +157,27 @@
|
|
132
157
|
}
|
133
158
|
}
|
134
159
|
|
160
|
+
// Apply saved strategy
|
161
|
+
const strategySelect = document.getElementById('strategy');
|
162
|
+
if (strategySelect && lastStrategy) {
|
163
|
+
console.log('Setting strategy from localStorage:', lastStrategy);
|
164
|
+
strategySelect.value = lastStrategy;
|
165
|
+
}
|
166
|
+
|
135
167
|
// Initialize the UI first (immediate operations)
|
136
168
|
setupEventListeners();
|
137
169
|
populateModelProviders();
|
138
170
|
initializeDropdowns();
|
139
171
|
|
172
|
+
// Auto-focus the query input
|
173
|
+
if (queryInput) {
|
174
|
+
queryInput.focus();
|
175
|
+
// Move cursor to end if there's existing text
|
176
|
+
if (queryInput.value) {
|
177
|
+
queryInput.setSelectionRange(queryInput.value.length, queryInput.value.length);
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
140
181
|
// Set initial state of the advanced options panel based on localStorage
|
141
182
|
const savedState = localStorage.getItem('advancedOptionsOpen') === 'true';
|
142
183
|
if (savedState && advancedPanel) {
|
@@ -452,14 +493,54 @@
|
|
452
493
|
// Form submission
|
453
494
|
form.addEventListener('submit', handleResearchSubmit);
|
454
495
|
|
455
|
-
// Mode selection
|
496
|
+
// Mode selection - updated for accessibility
|
456
497
|
modeOptions.forEach(mode => {
|
457
498
|
mode.addEventListener('click', function() {
|
458
|
-
|
459
|
-
|
499
|
+
selectMode(this);
|
500
|
+
});
|
501
|
+
|
502
|
+
mode.addEventListener('keydown', function(event) {
|
503
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
504
|
+
event.preventDefault();
|
505
|
+
selectMode(this);
|
506
|
+
} else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {
|
507
|
+
event.preventDefault();
|
508
|
+
const previousMode = this.previousElementSibling;
|
509
|
+
if (previousMode && previousMode.classList.contains('mode-option')) {
|
510
|
+
selectMode(previousMode);
|
511
|
+
previousMode.focus();
|
512
|
+
}
|
513
|
+
} else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {
|
514
|
+
event.preventDefault();
|
515
|
+
const nextMode = this.nextElementSibling;
|
516
|
+
if (nextMode && nextMode.classList.contains('mode-option')) {
|
517
|
+
selectMode(nextMode);
|
518
|
+
nextMode.focus();
|
519
|
+
}
|
520
|
+
}
|
460
521
|
});
|
461
522
|
});
|
462
523
|
|
524
|
+
// Add keyboard shortcuts for textarea
|
525
|
+
if (queryInput) {
|
526
|
+
queryInput.addEventListener('keydown', function(event) {
|
527
|
+
if (event.key === 'Enter') {
|
528
|
+
if (event.shiftKey) {
|
529
|
+
// Allow default behavior (new line)
|
530
|
+
return;
|
531
|
+
} else if (event.ctrlKey || event.metaKey) {
|
532
|
+
// Ctrl+Enter or Cmd+Enter = Submit form (common pattern)
|
533
|
+
event.preventDefault();
|
534
|
+
handleResearchSubmit(new Event('submit'));
|
535
|
+
} else {
|
536
|
+
// Just Enter = Submit form (keeping existing behavior)
|
537
|
+
event.preventDefault();
|
538
|
+
handleResearchSubmit(new Event('submit'));
|
539
|
+
}
|
540
|
+
}
|
541
|
+
});
|
542
|
+
}
|
543
|
+
|
463
544
|
// Model provider change
|
464
545
|
if (modelProviderSelect) {
|
465
546
|
modelProviderSelect.addEventListener('change', function() {
|
@@ -734,14 +815,14 @@
|
|
734
815
|
console.log('No OPENAI_ENDPOINT models found, checking for models with "Custom" in label');
|
735
816
|
models = allModels.filter(model => {
|
736
817
|
if (!model || typeof model !== 'object') return false;
|
737
|
-
|
818
|
+
|
738
819
|
// Skip provider options
|
739
820
|
if (model.value && !model.id && !model.name) return false;
|
740
|
-
|
821
|
+
|
741
822
|
const modelLabel = (model.label || '').toLowerCase();
|
742
823
|
return modelLabel.includes('custom');
|
743
824
|
});
|
744
|
-
|
825
|
+
|
745
826
|
console.log(`Found ${models.length} models with "Custom" in label`);
|
746
827
|
}
|
747
828
|
|
@@ -755,7 +836,7 @@
|
|
755
836
|
|
756
837
|
const modelProvider = (model.provider || '').toUpperCase();
|
757
838
|
const modelId = (model.id || model.value || '').toLowerCase();
|
758
|
-
return modelProvider === 'OPENAI' ||
|
839
|
+
return modelProvider === 'OPENAI' ||
|
759
840
|
modelId.includes('gpt');
|
760
841
|
});
|
761
842
|
}
|
@@ -1760,9 +1841,9 @@
|
|
1760
1841
|
startBtn.disabled = true;
|
1761
1842
|
startBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Starting...';
|
1762
1843
|
|
1763
|
-
// Get the selected research mode
|
1764
|
-
const
|
1765
|
-
const mode =
|
1844
|
+
// Get the selected research mode from radio button (more reliable)
|
1845
|
+
const selectedModeRadio = document.querySelector('input[name="research_mode"]:checked');
|
1846
|
+
const mode = selectedModeRadio ? selectedModeRadio.value : 'quick';
|
1766
1847
|
|
1767
1848
|
// Get values from form fields
|
1768
1849
|
const query = queryInput.value.trim();
|
@@ -1781,6 +1862,10 @@
|
|
1781
1862
|
parseInt(questionsPerIterationInput.value, 10) : 3;
|
1782
1863
|
const enableNotifications = notificationToggle ? notificationToggle.checked : true;
|
1783
1864
|
|
1865
|
+
// Get strategy value
|
1866
|
+
const strategySelect = document.getElementById('strategy');
|
1867
|
+
const strategy = strategySelect ? strategySelect.value : 'source-based';
|
1868
|
+
|
1784
1869
|
// Validate the query
|
1785
1870
|
if (!query) {
|
1786
1871
|
// Show error if query is empty
|
@@ -1801,7 +1886,8 @@
|
|
1801
1886
|
custom_endpoint: customEndpoint,
|
1802
1887
|
search_engine: searchEngine,
|
1803
1888
|
iterations: iterations,
|
1804
|
-
questions_per_iteration: questionsPerIteration
|
1889
|
+
questions_per_iteration: questionsPerIteration,
|
1890
|
+
strategy: strategy
|
1805
1891
|
};
|
1806
1892
|
|
1807
1893
|
console.log('Submitting research with data:', formData);
|
@@ -1829,6 +1915,7 @@
|
|
1829
1915
|
localStorage.setItem('lastModel', model);
|
1830
1916
|
localStorage.setItem('lastSearchEngine', searchEngine);
|
1831
1917
|
localStorage.setItem('enableNotifications', enableNotifications);
|
1918
|
+
localStorage.setItem('lastUsedStrategy', strategy);
|
1832
1919
|
|
1833
1920
|
// Redirect to the progress page
|
1834
1921
|
window.location.href = `/research/progress/${data.research_id}`;
|