FlameF0X commited on
Commit
21f27c9
·
verified ·
1 Parent(s): 3cc4c61

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +21 -12
src/streamlit_app.py CHANGED
@@ -25,11 +25,10 @@ from huggingface_hub import hf_hub_download
25
  # Hugging Face model config
26
  MODEL_REPO = "FlameF0X/o2"
27
  MODEL_FILENAME = "o2_agent_latest.pth"
28
- MODEL_CACHE_DIR = HF_HOME # Updated to match writable directory
29
 
30
  def ensure_model():
31
  try:
32
- # Use HF_HOME for cache_dir
33
  model_path = hf_hub_download(
34
  repo_id=MODEL_REPO,
35
  filename=MODEL_FILENAME,
@@ -68,28 +67,38 @@ def parse_move_input(move_input, board):
68
  if not move_input:
69
  return None
70
  move_input = move_input.strip()
 
 
71
  try:
72
  move = chess.Move.from_uci(move_input.lower())
73
  if move in board.legal_moves:
74
  return move
75
- except:
76
- pass
 
 
77
  try:
78
  move = board.parse_san(move_input)
79
  if move in board.legal_moves:
80
  return move
81
- except:
82
- pass
 
 
83
  castling_variations = {
84
- '0-0': 'O-O', '0-0-0': 'O-O-O', 'oo': 'O-O', 'ooo': 'O-O-O', 'o-o': 'O-O', 'o-o-o': 'O-O-O',
 
 
85
  }
86
- if move_input.lower() in castling_variations:
 
87
  try:
88
- move = board.parse_san(castling_variations[move_input.lower()])
89
  if move in board.legal_moves:
90
  return move
91
- except:
92
- pass
 
93
  return None
94
 
95
  # --- Session state ---
@@ -180,7 +189,7 @@ if not board.is_game_over() and board.turn == chess.WHITE:
180
  render_pgn()
181
  st.rerun()
182
  else:
183
- st.warning("Invalid move.")
184
  if st.button("Random Move"):
185
  move = random.choice(legal_moves)
186
  board.push(move)
 
25
  # Hugging Face model config
26
  MODEL_REPO = "FlameF0X/o2"
27
  MODEL_FILENAME = "o2_agent_latest.pth"
28
+ MODEL_CACHE_DIR = HF_HOME
29
 
30
  def ensure_model():
31
  try:
 
32
  model_path = hf_hub_download(
33
  repo_id=MODEL_REPO,
34
  filename=MODEL_FILENAME,
 
67
  if not move_input:
68
  return None
69
  move_input = move_input.strip()
70
+
71
+ # Try UCI
72
  try:
73
  move = chess.Move.from_uci(move_input.lower())
74
  if move in board.legal_moves:
75
  return move
76
+ except Exception as e:
77
+ st.info(f"UCI parsing failed: {e}")
78
+
79
+ # Try SAN
80
  try:
81
  move = board.parse_san(move_input)
82
  if move in board.legal_moves:
83
  return move
84
+ except Exception as e:
85
+ st.info(f"SAN parsing failed: {e}")
86
+
87
+ # Try castling aliases
88
  castling_variations = {
89
+ '0-0': 'O-O', '0-0-0': 'O-O-O',
90
+ 'oo': 'O-O', 'ooo': 'O-O-O',
91
+ 'o-o': 'O-O', 'o-o-o': 'O-O-O'
92
  }
93
+ normalized = castling_variations.get(move_input.lower())
94
+ if normalized:
95
  try:
96
+ move = board.parse_san(normalized)
97
  if move in board.legal_moves:
98
  return move
99
+ except Exception as e:
100
+ st.info(f"Castling parsing failed: {e}")
101
+
102
  return None
103
 
104
  # --- Session state ---
 
189
  render_pgn()
190
  st.rerun()
191
  else:
192
+ st.warning("Invalid move. Try again using SAN (e.g., `e4`, `Nf3`, `O-O`) or UCI (e.g., `e2e4`).")
193
  if st.button("Random Move"):
194
  move = random.choice(legal_moves)
195
  board.push(move)