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
@@ -2,30 +2,223 @@
|
|
2
2
|
|
3
3
|
{% block title %}Research Details - Deep Research System{% endblock %}
|
4
4
|
|
5
|
+
{% block extra_head %}
|
6
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
7
|
+
<style>
|
8
|
+
.metrics-section {
|
9
|
+
margin-top: 2rem;
|
10
|
+
}
|
11
|
+
|
12
|
+
.metrics-grid {
|
13
|
+
display: grid;
|
14
|
+
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
15
|
+
gap: 1rem;
|
16
|
+
margin-bottom: 2rem;
|
17
|
+
}
|
18
|
+
|
19
|
+
.metric-card {
|
20
|
+
padding: 1rem;
|
21
|
+
background: var(--card-bg);
|
22
|
+
border: 1px solid var(--border-color);
|
23
|
+
border-radius: 0.5rem;
|
24
|
+
text-align: center;
|
25
|
+
}
|
26
|
+
|
27
|
+
.metric-value {
|
28
|
+
font-size: 1.5rem;
|
29
|
+
font-weight: bold;
|
30
|
+
color: var(--primary-color);
|
31
|
+
margin: 0.5rem 0;
|
32
|
+
}
|
33
|
+
|
34
|
+
.metric-label {
|
35
|
+
color: var(--text-secondary);
|
36
|
+
font-size: 0.875rem;
|
37
|
+
text-transform: uppercase;
|
38
|
+
letter-spacing: 0.05em;
|
39
|
+
}
|
40
|
+
|
41
|
+
.chart-container {
|
42
|
+
position: relative;
|
43
|
+
height: 300px;
|
44
|
+
margin-top: 1rem;
|
45
|
+
}
|
46
|
+
|
47
|
+
.phase-stats {
|
48
|
+
display: grid;
|
49
|
+
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
50
|
+
gap: 1rem;
|
51
|
+
margin-top: 1rem;
|
52
|
+
}
|
53
|
+
|
54
|
+
.phase-stat-item {
|
55
|
+
padding: 0.75rem;
|
56
|
+
background: var(--card-bg);
|
57
|
+
border: 1px solid var(--border-color);
|
58
|
+
border-radius: 0.375rem;
|
59
|
+
text-align: center;
|
60
|
+
}
|
61
|
+
|
62
|
+
.phase-name {
|
63
|
+
font-weight: 600;
|
64
|
+
color: var(--text-primary);
|
65
|
+
margin-bottom: 0.25rem;
|
66
|
+
}
|
67
|
+
|
68
|
+
.phase-tokens {
|
69
|
+
color: var(--primary-color);
|
70
|
+
font-weight: 500;
|
71
|
+
}
|
72
|
+
|
73
|
+
.phase-calls {
|
74
|
+
color: var(--text-secondary);
|
75
|
+
font-size: 0.875rem;
|
76
|
+
}
|
77
|
+
|
78
|
+
.search-engine-item {
|
79
|
+
display: flex;
|
80
|
+
justify-content: space-between;
|
81
|
+
align-items: center;
|
82
|
+
padding: 0.75rem;
|
83
|
+
margin-bottom: 0.5rem;
|
84
|
+
background: var(--card-bg);
|
85
|
+
border: 1px solid var(--border-color);
|
86
|
+
border-radius: 0.375rem;
|
87
|
+
transition: background-color 0.2s;
|
88
|
+
}
|
89
|
+
|
90
|
+
.search-engine-item:hover {
|
91
|
+
background-color: var(--border-color);
|
92
|
+
}
|
93
|
+
|
94
|
+
.search-engine-info {
|
95
|
+
display: flex;
|
96
|
+
flex-direction: column;
|
97
|
+
}
|
98
|
+
|
99
|
+
.search-engine-name {
|
100
|
+
font-weight: 600;
|
101
|
+
color: var(--text-primary);
|
102
|
+
}
|
103
|
+
|
104
|
+
.search-engine-stats {
|
105
|
+
font-size: 0.875rem;
|
106
|
+
color: var(--text-secondary);
|
107
|
+
margin-top: 0.25rem;
|
108
|
+
}
|
109
|
+
|
110
|
+
.search-timeline-item {
|
111
|
+
display: flex;
|
112
|
+
justify-content: space-between;
|
113
|
+
align-items: center;
|
114
|
+
padding: 0.75rem;
|
115
|
+
margin-bottom: 0.5rem;
|
116
|
+
background: var(--card-bg);
|
117
|
+
border: 1px solid var(--border-color);
|
118
|
+
border-radius: 0.375rem;
|
119
|
+
border-left: 3px solid var(--primary-color);
|
120
|
+
}
|
121
|
+
|
122
|
+
.search-timeline-query {
|
123
|
+
font-weight: 500;
|
124
|
+
color: var(--text-primary);
|
125
|
+
margin-bottom: 0.25rem;
|
126
|
+
}
|
127
|
+
|
128
|
+
.search-timeline-meta {
|
129
|
+
font-size: 0.875rem;
|
130
|
+
color: var(--text-secondary);
|
131
|
+
}
|
132
|
+
|
133
|
+
.search-timeline-results {
|
134
|
+
text-align: right;
|
135
|
+
font-size: 0.875rem;
|
136
|
+
}
|
137
|
+
|
138
|
+
.search-status-success {
|
139
|
+
color: #22c55e;
|
140
|
+
}
|
141
|
+
|
142
|
+
.search-status-error {
|
143
|
+
color: #ef4444;
|
144
|
+
}
|
145
|
+
|
146
|
+
.loading-spinner {
|
147
|
+
text-align: center;
|
148
|
+
padding: 3rem;
|
149
|
+
}
|
150
|
+
|
151
|
+
.error-message {
|
152
|
+
text-align: center;
|
153
|
+
padding: 2rem;
|
154
|
+
color: var(--error-color, #dc3545);
|
155
|
+
}
|
156
|
+
|
157
|
+
.charts-grid {
|
158
|
+
display: grid;
|
159
|
+
grid-template-columns: 1fr 1fr;
|
160
|
+
gap: 2rem;
|
161
|
+
margin-bottom: 2rem;
|
162
|
+
}
|
163
|
+
|
164
|
+
@media (max-width: 768px) {
|
165
|
+
.charts-grid {
|
166
|
+
grid-template-columns: 1fr;
|
167
|
+
gap: 1.5rem;
|
168
|
+
}
|
169
|
+
}
|
170
|
+
</style>
|
171
|
+
{% endblock %}
|
172
|
+
|
5
173
|
{% block content %}
|
6
174
|
<div class="page active" id="research-details">
|
7
175
|
<div class="page-header">
|
8
176
|
<div class="results-header">
|
9
177
|
<h1>Research Details</h1>
|
10
178
|
<div class="results-actions">
|
11
|
-
<button class="btn btn-outline" id="
|
179
|
+
<button class="btn btn-outline" id="view-results-btn"><i class="fas fa-file-text"></i> View Results</button>
|
180
|
+
<button class="btn btn-outline" id="back-to-history"><i class="fas fa-arrow-left"></i> Back to History</button>
|
12
181
|
</div>
|
13
182
|
</div>
|
14
183
|
</div>
|
184
|
+
|
185
|
+
<div id="loading" class="loading-spinner">
|
186
|
+
<i class="fas fa-spinner fa-spin fa-2x"></i>
|
187
|
+
<p>Loading research details...</p>
|
188
|
+
</div>
|
189
|
+
|
190
|
+
<div id="error" class="error-message" style="display: none;">
|
191
|
+
<i class="fas fa-exclamation-circle fa-2x"></i>
|
192
|
+
<p>Error loading research details</p>
|
193
|
+
</div>
|
194
|
+
|
195
|
+
<div id="details-content" style="display: none;">
|
15
196
|
<div class="card">
|
16
197
|
<div class="card-content">
|
17
198
|
<div class="research-metadata">
|
18
199
|
<div class="metadata-item">
|
19
200
|
<span class="metadata-label">Query:</span>
|
20
|
-
<span id="
|
201
|
+
<span id="research-query" class="metadata-value"></span>
|
21
202
|
</div>
|
22
203
|
<div class="metadata-item">
|
23
|
-
<span class="metadata-label">
|
24
|
-
<span id="
|
204
|
+
<span class="metadata-label">Mode:</span>
|
205
|
+
<span id="research-mode" class="metadata-value"></span>
|
25
206
|
</div>
|
26
207
|
<div class="metadata-item">
|
27
|
-
<span class="metadata-label">
|
28
|
-
<span id="
|
208
|
+
<span class="metadata-label">Date:</span>
|
209
|
+
<span id="research-date" class="metadata-value"></span>
|
210
|
+
</div>
|
211
|
+
<div class="metadata-item">
|
212
|
+
<span class="metadata-label">Model:</span>
|
213
|
+
<span id="model-used" class="metadata-value"></span>
|
214
|
+
</div>
|
215
|
+
<div class="metadata-item">
|
216
|
+
<span class="metadata-label">Strategy:</span>
|
217
|
+
<span id="research-strategy" class="metadata-value">-</span>
|
218
|
+
</div>
|
219
|
+
<div class="metadata-item">
|
220
|
+
<span class="metadata-label">Total Cost:</span>
|
221
|
+
<span id="total-cost" class="metadata-value">$0.00</span>
|
29
222
|
</div>
|
30
223
|
<div class="metadata-item">
|
31
224
|
<span class="metadata-label">Progress:</span>
|
@@ -38,36 +231,144 @@
|
|
38
231
|
</div>
|
39
232
|
</div>
|
40
233
|
|
41
|
-
<div class="
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
234
|
+
<div class="detail-actions" id="detail-actions">
|
235
|
+
<!-- Conditionally shown based on research status -->
|
236
|
+
</div>
|
237
|
+
</div>
|
238
|
+
</div>
|
239
|
+
|
240
|
+
<!-- Token Metrics Section -->
|
241
|
+
<div class="card metrics-section" id="token-metrics-section" style="display: none;">
|
242
|
+
<div class="card-header">
|
243
|
+
<h2><i class="fas fa-chart-line"></i> Token Usage Timeline</h2>
|
244
|
+
</div>
|
245
|
+
<div class="card-content">
|
246
|
+
<!-- Metrics Summary -->
|
247
|
+
<div class="metrics-grid" id="metrics-summary">
|
248
|
+
<div class="metric-card">
|
249
|
+
<div class="metric-label">Total Tokens</div>
|
250
|
+
<div class="metric-value" id="total-tokens">0</div>
|
251
|
+
</div>
|
252
|
+
<div class="metric-card">
|
253
|
+
<div class="metric-label">Input Tokens</div>
|
254
|
+
<div class="metric-value" id="prompt-tokens">0</div>
|
255
|
+
</div>
|
256
|
+
<div class="metric-card">
|
257
|
+
<div class="metric-label">Output Tokens</div>
|
258
|
+
<div class="metric-value" id="completion-tokens">0</div>
|
259
|
+
</div>
|
260
|
+
<div class="metric-card">
|
261
|
+
<div class="metric-label">LLM Calls</div>
|
262
|
+
<div class="metric-value" id="llm-calls">0</div>
|
263
|
+
</div>
|
264
|
+
<div class="metric-card">
|
265
|
+
<div class="metric-label">Avg Response Time</div>
|
266
|
+
<div class="metric-value" id="avg-response-time">0ms</div>
|
267
|
+
</div>
|
268
|
+
<div class="metric-card">
|
269
|
+
<div class="metric-label">Success Rate</div>
|
270
|
+
<div class="metric-value" id="success-rate">0%</div>
|
271
|
+
</div>
|
272
|
+
</div>
|
273
|
+
|
274
|
+
<!-- Charts Section -->
|
275
|
+
<div class="charts-grid">
|
276
|
+
<!-- Token Consumption Chart -->
|
277
|
+
<div>
|
278
|
+
<h3><i class="fas fa-clock"></i> Token Consumption Over Time</h3>
|
279
|
+
<div class="chart-container" style="height: 250px;">
|
280
|
+
<canvas id="timeline-chart"></canvas>
|
281
|
+
</div>
|
282
|
+
</div>
|
283
|
+
|
284
|
+
<!-- Search Results Chart -->
|
285
|
+
<div>
|
286
|
+
<h3><i class="fas fa-chart-line"></i> Search Results Over Time</h3>
|
287
|
+
<div class="chart-container" style="height: 250px;">
|
288
|
+
<canvas id="search-chart"></canvas>
|
47
289
|
</div>
|
48
290
|
</div>
|
49
291
|
</div>
|
50
292
|
|
51
|
-
|
52
|
-
|
293
|
+
<!-- Phase Breakdown -->
|
294
|
+
<div style="margin-top: 2rem;">
|
295
|
+
<h3><i class="fas fa-layer-group"></i> Breakdown by Research Phase</h3>
|
296
|
+
<div class="phase-stats" id="phase-breakdown">
|
297
|
+
<!-- Populated dynamically -->
|
298
|
+
</div>
|
299
|
+
</div>
|
300
|
+
|
301
|
+
<!-- Call Stack Analysis -->
|
302
|
+
<div style="margin-top: 2rem;" id="call-stack-section">
|
303
|
+
<h3><i class="fas fa-code"></i> LLM Call Stack Analysis</h3>
|
304
|
+
<div style="margin-top: 1rem;">
|
305
|
+
<div id="call-stack-traces" style="max-height: 400px; overflow-y: auto;">
|
306
|
+
<!-- Populated dynamically -->
|
307
|
+
</div>
|
308
|
+
</div>
|
309
|
+
</div>
|
310
|
+
</div>
|
311
|
+
</div>
|
312
|
+
|
313
|
+
<!-- Search Analytics Section -->
|
314
|
+
<div class="card metrics-section" id="search-metrics-section" style="display: none;">
|
315
|
+
<div class="card-header">
|
316
|
+
<h2><i class="fas fa-search"></i> Search Analytics</h2>
|
317
|
+
</div>
|
318
|
+
<div class="card-content">
|
319
|
+
<!-- Search Summary -->
|
320
|
+
<div class="metrics-grid" id="search-summary">
|
321
|
+
<div class="metric-card">
|
322
|
+
<div class="metric-label">Total Searches</div>
|
323
|
+
<div class="metric-value" id="total-searches">0</div>
|
324
|
+
</div>
|
325
|
+
<div class="metric-card">
|
326
|
+
<div class="metric-label">Total Results</div>
|
327
|
+
<div class="metric-value" id="total-search-results">0</div>
|
328
|
+
</div>
|
329
|
+
<div class="metric-card">
|
330
|
+
<div class="metric-label">Avg Response Time</div>
|
331
|
+
<div class="metric-value" id="avg-search-response-time">0ms</div>
|
332
|
+
</div>
|
333
|
+
<div class="metric-card">
|
334
|
+
<div class="metric-label">Search Success Rate</div>
|
335
|
+
<div class="metric-value" id="search-success-rate">0%</div>
|
336
|
+
</div>
|
337
|
+
</div>
|
338
|
+
|
339
|
+
<!-- Search Engine Performance -->
|
340
|
+
<div style="margin-top: 2rem;">
|
341
|
+
<h3><i class="fas fa-tachometer-alt"></i> Search Engine Performance</h3>
|
342
|
+
<div id="search-engine-performance" style="margin-top: 1rem;">
|
343
|
+
<!-- Populated dynamically -->
|
344
|
+
</div>
|
345
|
+
</div>
|
346
|
+
|
347
|
+
<!-- Search Engine Breakdown -->
|
348
|
+
<div style="margin-top: 2rem;">
|
349
|
+
<h3><i class="fas fa-search"></i> Search Engine Performance</h3>
|
350
|
+
<div id="search-engine-breakdown" style="margin-top: 1rem;">
|
351
|
+
<!-- Populated dynamically -->
|
352
|
+
</div>
|
353
|
+
</div>
|
354
|
+
|
355
|
+
|
356
|
+
<!-- Search Timeline -->
|
357
|
+
<div style="margin-top: 2rem;">
|
358
|
+
<h3><i class="fas fa-clock"></i> Search Timeline</h3>
|
359
|
+
<div id="search-timeline" style="margin-top: 1rem; max-height: 400px; overflow-y: auto;">
|
360
|
+
<!-- Populated dynamically -->
|
361
|
+
</div>
|
53
362
|
</div>
|
54
363
|
</div>
|
55
364
|
</div>
|
365
|
+
</div> <!-- End details-content -->
|
56
366
|
</div>
|
57
367
|
{% endblock %}
|
58
368
|
|
59
369
|
{% block templates %}
|
60
|
-
<template id="log-entry-template">
|
61
|
-
<div class="log-entry">
|
62
|
-
<div class="log-entry-time"></div>
|
63
|
-
<div class="log-entry-content">
|
64
|
-
<div class="log-entry-message"></div>
|
65
|
-
<div class="log-entry-progress"></div>
|
66
|
-
</div>
|
67
|
-
</div>
|
68
|
-
</template>
|
69
370
|
{% endblock %}
|
70
371
|
|
71
372
|
{% block page_scripts %}
|
72
373
|
<script src="{{ url_for('research.serve_static', path='js/components/details.js') }}"></script>
|
73
|
-
{% endblock %}
|
374
|
+
{% endblock %}
|