Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -4,7 +4,7 @@ from components.sidebar import render_sidebar
|
|
4 |
from components.paper_list import render_paper_list
|
5 |
from components.notebook_view import render_notebook
|
6 |
from components.graph_view import render_graph
|
7 |
-
from orchestrator.gemini import gemini_generate
|
8 |
|
9 |
def main():
|
10 |
st.set_page_config(
|
@@ -13,10 +13,10 @@ def main():
|
|
13 |
initial_sidebar_state="expanded"
|
14 |
)
|
15 |
|
16 |
-
# Sidebar:
|
17 |
-
query, num_results, theme, search_clicked, gemini_prompt
|
|
|
18 |
|
19 |
-
# Optional theme
|
20 |
if theme == "Dark":
|
21 |
st.markdown(
|
22 |
"""
|
@@ -28,7 +28,34 @@ def main():
|
|
28 |
unsafe_allow_html=True,
|
29 |
)
|
30 |
|
31 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
if search_clicked and query:
|
33 |
dispatcher = Dispatcher()
|
34 |
with st.spinner("Searching MCP servers..."):
|
@@ -43,19 +70,11 @@ def main():
|
|
43 |
summary = gemini_generate(first_paper["abstract"])
|
44 |
st.success(summary)
|
45 |
|
46 |
-
# Show notebook and graph
|
47 |
notebook_cells = dispatcher.get_notebook_cells(first_paper["id"])
|
48 |
render_notebook(notebook_cells)
|
49 |
|
50 |
graph_data = dispatcher.get_graph(first_paper["id"])
|
51 |
render_graph(graph_data)
|
52 |
|
53 |
-
# Gemini research Q&A, even if user hasn't hit 'Search'
|
54 |
-
if gemini_prompt:
|
55 |
-
st.header("💡 Gemini Research Q&A")
|
56 |
-
with st.spinner("Gemini is thinking..."):
|
57 |
-
answer = gemini_generate(gemini_prompt)
|
58 |
-
st.success(answer)
|
59 |
-
|
60 |
if __name__ == "__main__":
|
61 |
main()
|
|
|
4 |
from components.paper_list import render_paper_list
|
5 |
from components.notebook_view import render_notebook
|
6 |
from components.graph_view import render_graph
|
7 |
+
from orchestrator.gemini import gemini_generate, gemini_generate_code
|
8 |
|
9 |
def main():
|
10 |
st.set_page_config(
|
|
|
13 |
initial_sidebar_state="expanded"
|
14 |
)
|
15 |
|
16 |
+
# Sidebar: (note new returned variables)
|
17 |
+
(query, num_results, theme, search_clicked, gemini_prompt,
|
18 |
+
mcp_codegen_prompt, codegen_clicked) = render_sidebar()
|
19 |
|
|
|
20 |
if theme == "Dark":
|
21 |
st.markdown(
|
22 |
"""
|
|
|
28 |
unsafe_allow_html=True,
|
29 |
)
|
30 |
|
31 |
+
# -- Gemini Q&A --
|
32 |
+
if gemini_prompt:
|
33 |
+
st.header("💡 Gemini Research Q&A")
|
34 |
+
with st.spinner("Gemini is thinking..."):
|
35 |
+
answer = gemini_generate(gemini_prompt)
|
36 |
+
st.success(answer)
|
37 |
+
|
38 |
+
# -- MCP Code Generation "WOW" Feature --
|
39 |
+
if mcp_codegen_prompt and codegen_clicked:
|
40 |
+
st.header("🛠️ Gemini MCP Server Code Generation")
|
41 |
+
with st.spinner("Gemini is coding your MCP server..."):
|
42 |
+
# You can change the system instruction for advanced results:
|
43 |
+
system_instruction = (
|
44 |
+
"You are an expert in Model Context Protocol (MCP) server development. "
|
45 |
+
"Generate clean, production-ready Python code for an MCP server as described by the user. "
|
46 |
+
"Use best practices and include all necessary imports and comments."
|
47 |
+
)
|
48 |
+
code_result = gemini_generate_code(system_instruction, mcp_codegen_prompt)
|
49 |
+
st.code(code_result, language="python")
|
50 |
+
# Add download and copy to clipboard
|
51 |
+
st.download_button("Download code as mcp_server.py", code_result, file_name="mcp_server.py", mime="text/x-python")
|
52 |
+
try:
|
53 |
+
import streamlit_copy_to_clipboard as stc
|
54 |
+
stc.copy_to_clipboard(code_result, "Copy to clipboard")
|
55 |
+
except ImportError:
|
56 |
+
st.info("Install `streamlit-copy-to-clipboard` for copy button.")
|
57 |
+
|
58 |
+
# -- Search and Display Papers --
|
59 |
if search_clicked and query:
|
60 |
dispatcher = Dispatcher()
|
61 |
with st.spinner("Searching MCP servers..."):
|
|
|
70 |
summary = gemini_generate(first_paper["abstract"])
|
71 |
st.success(summary)
|
72 |
|
|
|
73 |
notebook_cells = dispatcher.get_notebook_cells(first_paper["id"])
|
74 |
render_notebook(notebook_cells)
|
75 |
|
76 |
graph_data = dispatcher.get_graph(first_paper["id"])
|
77 |
render_graph(graph_data)
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
if __name__ == "__main__":
|
80 |
main()
|