mgbam commited on
Commit
f94ca0e
·
verified ·
1 Parent(s): e9bd6d3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -13
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: user query, num results, theme, gemini prompt, etc.
17
- query, num_results, theme, search_clicked, gemini_prompt = render_sidebar()
 
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
- # Search and display papers
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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()