mgbam commited on
Commit
f30f44c
·
verified ·
1 Parent(s): 0dab0c0

Update mcp/workspace.py

Browse files
Files changed (1) hide show
  1. mcp/workspace.py +48 -8
mcp/workspace.py CHANGED
@@ -1,15 +1,55 @@
1
  # mcp/workspace.py
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  import streamlit as st
 
 
 
 
4
 
5
- def get_workspace():
6
- # Use Streamlit session state for per-user saved searches
7
- if "saved_queries" not in st.session_state:
8
- st.session_state["saved_queries"] = []
9
- return st.session_state["saved_queries"]
10
 
11
- def save_query(query, result):
 
 
 
 
 
 
 
 
12
  ws = get_workspace()
13
- # Only keep the last 10 searches for simplicity
 
 
 
14
  ws.insert(0, {"query": query, "result": result})
15
- ws[:] = ws[:10] # Cap at 10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # mcp/workspace.py
2
 
3
+ #!/usr/bin/env python3
4
+ """MedGenesis – lightweight per‑user workspace helper
5
+
6
+ Persists the user’s most recent queries/results in **Streamlit `session_state`**.
7
+ Keeps only the last *N* (default = 10) items to avoid bloat.
8
+ Provides three public helpers:
9
+ • `get_workspace()` → returns the list (for sidebar rendering)
10
+ • `save_query(q,res)` → prepends new item & trims to max_len
11
+ • `clear_workspace()` → wipe slate (user button use‑case)
12
+ """
13
+
14
+ from __future__ import annotations
15
+
16
  import streamlit as st
17
+ from typing import List, Dict
18
+
19
+ _KEY = "saved_queries"
20
+ _MAX = 10 # adjust if you want deeper history
21
 
 
 
 
 
 
22
 
23
+ def get_workspace() -> List[Dict]:
24
+ """Return the current saved‑query list (initialises if absent)."""
25
+ if _KEY not in st.session_state:
26
+ st.session_state[_KEY] = []
27
+ return st.session_state[_KEY]
28
+
29
+
30
+ def save_query(query: str, result: Dict, *, max_len: int = _MAX) -> None:
31
+ """Prepend a (query, result) record, trim list to *max_len*."""
32
  ws = get_workspace()
33
+
34
+ # Deduplicate identical query strings (keep newest on top)
35
+ ws[:] = [item for item in ws if item["query"] != query]
36
+
37
  ws.insert(0, {"query": query, "result": result})
38
+ del ws[max_len:] # in‑place trim
39
+
40
+
41
+ def clear_workspace() -> None:
42
+ """Remove all saved queries for current user session."""
43
+ st.session_state[_KEY] = []
44
+
45
+
46
+ # ------------------------------------------------------------------
47
+ # 👟 Quick manual test (run: python -m mcp.workspace)
48
+ # ------------------------------------------------------------------
49
+ if __name__ == "__main__":
50
+ print("Before:", get_workspace())
51
+ save_query("demo", {"answer": 42})
52
+ print("After :", get_workspace())
53
+ clear_workspace()
54
+ print("Cleared:", get_workspace())
55
+